[CNN] 4. 성능 높이는 방법

happy_quokka·2023년 12월 19일
0

딥러닝

목록 보기
8/18

LeNet5를 활용하여 MNIST를 학습한 방법을 FashionMNIST에 적용하면 결과가 좋지 않다. 이 성능을 높이기 위해 여러 방법들을 적용한다.

1. regularization

  • otimizer를 SGD로 사용하였는데 여기에 regularization을 적용
  • torch.optim.SGD() 의 weight_decay 파라미터로 regularization을 적용할 수 있다
  • 이 방법은 L2 regularization이다

2. batch normalization

  • batch normalization을 적용
  • 이는 conv을 진행하는 경우에만 적용
  • 따라서 conv과 activation 사이에 적용하여 activation을 진행하기 전에 값들을 normalization 해준다

3. weight initialization

  • 초기에 weight들을 초기화해주는 것이 중요하다
  • 여러 방법이 있지만 여기에서는 xavier_uniform_방법을 사용했다. 이는 전체 데이터의 분포를 보고 초기화해주는 방법이다
    https://nittaku.tistory.com/269 참고해서 공부하기

4. drop out

  • 항상 사용하는 방법은 아니지만 필요할 때 사용하면 좋다

5. activation

  • 지금은 tanh를 사용하였는데 leakyrelu나 relu를 사용하면 성능이 높아질 수 있다

결과

  • 그런데...! 성능을 높이지 않았을 때 loss가 1.736313466549492 정도였는데 성능을 높이고 나서는 2.30에 머무른다...! 끝까지 돌려보지는 않았지만 아마 regularization 때문인것 같은데 overfitting이 되는 걸까???? 아닌것 같은데에 끝까지 돌려보면 알 수 있을까...?

eval 결과 (epoch 10)

  • regularization 적용 안한 경우 evlaution score : 8890 / 10000
  • regularization 적용한 경우 evlaution score : 8812 / 10000
    • weight_decay = 0.001로 한 경우 (mean loss : 1.5975468342010777)
    • 그 이상의 값에서는 수렴이 잘되지 않는다

0개의 댓글