2023.12.19 DAY65
CNN의 backward에서 convolution을 진행하는 이유를 이해하기 위해 시간을 많이 썼다. 지금 생각해보면 매우 직관적이고 간단한 거였지만 처음에는 이해가 잘 안되었다. 사실 CNN은 예전에 다 배운 적이 있는데 그때 완벽히 이해하고 넘어가지 않아서 다시 공부를 해야한다는 것이 조금 아쉬웠다. 한번 할 때 제대로 했으면 좋았을텐데...라는 생각이 들었다. 지금부터라도 제대로 공부해야겠다!
오늘은 training을 할 때 사용할 수 있는 기법들과 모델의 성능을 높이는 부분을 공부하였다
📝 배운 내용
optimizer
- loss 값을 줄이기 위한 목적으로 사용
- gradient descent
- data 전체의 loss를 구하고 gradient를 계산하여 weight 갱신
- local minimum에 빠질 수 있다
- SGD
- 하나의 data에 대해 loss를 구하고 그때마다 weight 갱신
- 수렴이 느리지만 성능이 좋다
- MSGD : mini batch를 사용하여 loss 계산 후 weight 갱신
- momentum
- velocity가 포함되어 있다 -> local minimum에서 벗어날 수 있다
- 이전의 방향을 유지하려는 경향을 추가한다
- Adam
overfitting & underfitting
- overfitting
- 모델이 train set에 너무 학습된 경우
- 새로운 dataset의 성능이 좋지 않다
- underfitting
- dataset이 너무 적거나, 하이퍼 파라미터가 적절하지 못할 때 학습이 잘 되지 않는 경우
regularization
- overfitting을 방지하기 위한 것
- loss function 안에 존재
- L1, L2 regularization이 있다
dropout
- overfitting을 방지하기 위해 랜덤하게 layer의 weight를 사용하지 않는 방법
batch normalization
- convolution - batch normalization - activation 순으로 진행
- activation하기 전에 input 값을 stable하게 만들어주는 역할을 한다
모델의 성능을 높이는 방법
- 위에서 배운 방법들을 적용한다
- optimizer 변경
- regularization 적용
- batch normalization 적용
- weight initailzation
- dropout 적용
- activation 변경