epoch(에포크)
- 전체 트레이닝 셋이 신경망을 통과한 횟수
- 1-epoch는 전체 트레이닝 셋이 하나의 신경망에 적용되어 순전파와 역전파를 통해 신경망을 한 번 통과했다는 것을 의미
- epoch를 높일수록, 다양한 무작위 가중치로 학습을 해보는 것이므로 적합한 파라미터를 찾을 확률이 올라간다. 즉, 손실값이 내려간다.
- 지나치게 epoch를 높이게 되면, 그 학습 데이터셋에 과적합(overfitting)되어 다른 데이터에 대해선 제대로 된 예측을 하지 못할 수 있다.
1epoch : [1, 2, 3, 4], [5, 6, 7, 8], [] ...
2epoch : [45, 9, 24, 83], [5, 378, 75, 14], [] ...
위와 같이 다음 epoch를 돌릴 때 batch의 순서를 섞는 것을
train data set 을 suffling 한다 고 말한다.
validation data set 을 쓰는 이유
1000장의 이미지
- 600장 train data set
- 200장 validation data set
- 200장 test data set
모델검증과 모델평가는 분리해서 생각해야한다.
모델 검증은 모델의 성능을 평가하고, 그 결과를 토대로 모델을 튜닝하는 작업을 진행한다.
반면 모델 평가는 최종적으로 '이 모델이 실전에서 이만큼 성능을 낼 것이다!' 라는 것을 확인하는 단계이다.
그렇기 때문에 모델 검증 단계와 모델 평가 단계에서 사용하는 데이터셋은 분리되어야한다.
만약 모델 검증에 쓰였던 데이터를 모델 평가 단계에서도 사용한다면 당연히 높은 점수를 낼 것이기 때문이다.
이런 현상을 'Test Set의 정보가 모델에 새어나갔다' 혹은 '모델의 일반화 성능이 왜곡되었다' 고 한다.
정리하면, Test Set는 모델 튜닝을 모두 마치고 실전에 투입하기 전에 딱 1번(모델 평가 단계)만 사용하는 것이 좋다.
그래서 모델을 튜닝할 때는 별도의 Validation Set을 이용한다.
레이어 수 변경 -> train -> validation
노드 수 변경 -> train -> validation
activation function 변경 -> train -> validation
...
-> 이 후 가장 Accuracy (정확도)가 좋은 것을 선정하여 test
overfitting(과적합)
정상 과적합
train 95% 99%test 93% 85%
overfitting이 발생하는 이유
- train data set 수가 적을 때
- 네트워크의 사이즈가 너무 클 때
해결방법
- train data set 늘리기
- 네트워크 사이즈 줄이기
- train data set 에 노이즈 첨가하기
- drop out : train data set 을 인풋으로 넣어서 돌릴 때 임의로 연결 몇개를 끊어서 통과시키는 것.
매 인풋마다 다른 연결을 끊는다.
Cross Entropy Error(교차 엔트로피 오차)
CEE = -(0*log0.1 + 0*log0.05 + 1*log0.6 + 0*log0.01 ... ) = -log0.6 = 0.51
LOSS 가 0.51 로 가장 작은 세번째 값(2) 가 정답
Stochastic Gradient Descent(확률적 경사하강법)
GD 는 전체 데이터( ex 200건) 를 한번에 다 넣고 그에 대한 LOSS 를 구해서 네트워크를 1번 업데이트 한다.반면에 배치사이즈를 10으로 해서 돌리면 첫번째 넣은 10개에 대한 LOSS 구해서 네트워크를 업데이트하고, 또 다음 10개 넣어서 돌리고를 반복해서 20번 업데이트 한다. 이것이 SGD 이다.두가지를 봤을 때 GD의 LOSS와 SGD의 LOSS 가 다를 것이다.
그래서 업데이트의 모양이 조금 더 noisy 하다.
https://tv.naver.com/v/17933514
사진 출처
https://blog.naver.com/koys007/222174183838
https://blog.naver.com/koys007/222547486681
https://blog.naver.com/wideeyed/221025759001
'딥러닝' 카테고리의 다른 글
밑바닥부터 시작하는 딥러닝 Chapter6 - 가중치의 초깃값 (0) | 2022.06.26 |
---|---|
밑바닥부터 시작하는 딥러닝 Chapter6 - 학습 관련 기술들 (0) | 2022.06.26 |
밑바닥부터 시작하는 딥러닝 Chapter5 - 오차역전파법 (0) | 2022.06.25 |
밑바닥부터 시작하는 딥러닝 Chapter3 - 신경망 (0) | 2022.06.14 |
밑바닥부터 시작하는 딥러닝 Chapter2 - Perceptron(퍼셉트론) (0) | 2022.06.13 |
댓글