Last time : BN
activations이 zero mean과 unit variance가 될수 있도록 레이어를 하나 추가하는 방법
BN 수식 : forward pass 시에 미니배치에서의 평균,표준편차를 계산해서 Normalization
SGD 안쓰고 그냥 GD쓰면? ⇒ 여전히 위의 3가지 문제가 모두 발생 ⇒ 최적화 알고리즘이 필요함
위 문제들을 해결하는방법중에 하나? ⇒ SGD + Momentum
일반 SGD가 빨간색의 형태라면 momentum을 추가했을시 파란색의 형태로 진행되어짐. ⇒ 민감한 형태의 변동(수직)은 줄여주고 덜 민감한 형태의 변동(수평)은 가속화
Local minima, saddle point를 극복
노이즈의 평균화
빨간색이 가중치 변동 벡터, 초록색이 가속도 벡터 일때 실제로는 파란색으로 가중치가 업데이트되어짐.
현재지점에서 gradient 계산 ⇒ velocity와 섞음
velocity의 초기값은 항상 0 ⇒ 이전 gradients의 weight sum이 velocity임.
훈련도중 계산되는 gradients를 활용하는 방법
velocity term 대신 grad squared term을 이용
위의 AdaGrad의 문제를 개선시킨 방법
momentum계열과 ada계열 두가지에 대해 배웟는데 이 둘을 합친 모델 Adam이 있다.
Adam은 first moment와 second moment를 이용해 이전의 정보를 유지시킨다.
근데 이렇게 두개를 연달아 사용할 경우 근데 초기 step에서 문제가 발생한다고 한다.
식을 보면 first_moment와 second_moment가 0이다. 근데 second_moment를 1회 update하고 났을 때 beta2는 decay_rate이니까 0.9 또는 0.99로 1에 가까운 수이다. 그렇기 때문에 1회 update 이후에 second moment는 여전히 0에 가깝다. 이후 update step에서 second_moment로 나누게 되는데 나눠주는 값이 작다보니까 분자가 커져서 값이 튈 수도 있다고 한다. 값이 크면 step이 커져서 이상한 곳으로 튀어버릴 수도 있다.
이를 해결하기 위해 Bias correction을 추가하면 해결됨.
Adam은 momentum과 RMSprop 두개의 특성을 모두 가지고있어 기본적으로 아주 많이 사용되는 optimization이라고 합니다.........
그래도 Adam은 문제가 없진 않다... 회전이 안되서 기울어진 타원 모양에서는 수평/수직 축으로면 늘렸다 줄였다 하기때문에 ⇒ 그렇다고 한들 다른 알고리즘도 다룰수 없는 문제다