본문 바로가기
딥러닝

밑바닥부터 시작하는 딥러닝 Chapter4 - 신경망 학습

by 오렌지마끼야또 2022. 6. 17.
728x90
반응형

 

 

 

 

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

 

딥러닝 유치원 | 일부 데이터로 속도를 빠르게 (Stochastic Gradient Descent)

배우면 바뀐다 | 패스트캠퍼스 | 더 많은 영상은 패스트캠퍼스에서 처음부터 시작하는 딥러닝 유치원 올인원 패키지를 수강하면 이어서 보실 수 있습니다. 👨‍💻 처음부터 시작하는 딥러닝

tv.naver.com

 

 

 

 

 

 

 

사진 출처

 

https://blog.naver.com/koys007/222174183838

 

https://blog.naver.com/koys007/222547486681

 

https://blog.naver.com/wideeyed/221025759001

 

 

 

 

728x90
반응형

댓글