본문 바로가기
책&강의 학습/올인원 패키지 :딥러닝&인공지능

[패스트캠퍼스 수강 후기] 인공지능강의 100% 환급 챌린지 37회차 미션

by 소한보 2020. 8. 4.

Part4-35. 합성곱 신경망(CNN) - 05. (STEP 2) 배치 정규화 - 1,2

일반경사하강법(Vanilla Gradient Descent)


N개의 학습데이터가 있을때 N개의 Gradient의 평균을 사용
한번 Gradient를 업데이트 하기 위해 모든 학습데이터를 사용하는게 일반적임

확률적경사하강법(Stochastic Gradient Descent)

큰 학습데이터를 사용한다고 가정하면 현실적이지 못함
N개의 데이터셋중에서 특정 batch size만큼 빼서 학습시켜
Batch size만큼의 Gradient의 평균을 사용
SGD의 경우 Gradient를 한번 업데이트 하기 위해서 일부의 데이터를 사용

미니배치 학습법


epoch한번에서 각 batch한번씩을 입력하게됨
1epoch에서 5batch씩 반복
epoch마다 데이터순서를 섞어주기도 함. 똑같은 순서로 들어가는것을 방지하기 위해
전체를 한번 학습하는 것을 epoch
한번 gradient를 구하는 것을 batch라고 함

Internal Covariate Shift


Fully로 학습하는 것을 가정
처음에는 정규분포를 따르나, 다음레이어는 분포가 달라질 수도 있음
계층별로 데이터분포가 달라지는 현상을 Internal Covariate Shift라고 말하며
이를 해결하기 위한 방법이 Batch Nomalization임

배치정규화(Batch Nomalization)

Fully를 activation Function에 넣어주기 전에 진행
batch별로 적용한다는 특징이 있음
어떤 배치건 관계없이 정규분포를 따르게끔 함

학습단계에서 BN


배치별로 정규화를 진행
정규화만 하고 진행하게되면 이후 ReLU를 사용할때 문제가 발생
0이하의 값이 전부 날아가는 문제가 발생
스케일과 편향을 이용해서 문제해결.
역전파 알고리즘으로 학습

정규롸로 모든 계층의 Feature가 동일한 Scale이 되어 학습률결정에 유리
미분을 할때 입력에 대해서 출력값이 커지게되면 Gradient도 커지게됨.
스케일이 큰경우 학습이 많이되고, 적으면 적게되는 문제가 발생.
일관화되면 학습률을 결정하는데 유리

추가적인 scale, bias를 학습하여 Activation에 적합한 분포로 변환가능

추론단계에서 BN


미리 학습한(학습과정에서 이동평균을 계산) 값으로 정규화 진행
이동평균의 경우 최근 N개만 사용하고 이전을 무시하기 때문에 영향력이 떨어지는 문제가 생길 수 있음
따라서 그런경우 지수평균을 사용할 수 있음
Scale과 Bias는 역전파알고리즘으로 학습

train과 test과정이 알고리즘이 다르다는 사실을 알아둘것
나중 챕터 8에서 자세히 다룰 예정

딥러닝/인공지능 올인원 패키지 Online

댓글