논문에 따르면 편견을 교정하지 않는 문제
드문 드문 기울기의 경우, 두 번째 모멘트의 안정적인 추정을 위해서는 작은 값의 β2를 선택하여 많은 기울기에서 평균을 구해야합니다. 그러나 초기 바이어스 보정의 부족이 훨씬 더 큰 초기 단계를 초래할 수있는 작은 β2의 경우이다.
일반적으로 는 보다 1에 훨씬 가깝게 설정 (작성자가 , ) 업데이트 계수 은 보다 훨씬 작습니다. .β2β1β2=0.999β1=0.91−β2=0.0011−β1=0.1
, 훈련의 첫 번째 단계 에서, 바이어스 추정을 직접 사용하는 경우 매개 변수 업데이트 의 항이 매우 클 수 있습니다.m1=0.1gtv1=0.001g2tm1/(v1−−√+ϵ)
한편, 편향 보정 추정을 사용할 때 및 , 용어는 및 덜 민감 해 .m1^=g1v1^=g21mt^/(vt^−−√+ϵ)β1β2
편향 보정 방법
알고리즘은 이동 평균을 사용하여 첫 번째와 두 번째 모멘트를 추정합니다. 치우친 추정은 임의의 추측 에서 시작 하여 점진적으로 추정을 업데이트하는 입니다. 따라서 처음 몇 단계에서 이동 평균이 초기 쪽으로 크게 편향되어 있음이 분명합니다 .m0mt=βmt−1+(1−β)gtm0
이를 수정하기 위해 이동 평균에서 초기 추측 (바이어스)의 영향을 제거 할 수 있습니다. 예를 들어 시간 1, 에서 에서 항을 꺼내고 이를 로 나누면 . 경우 , . 완전한 증거는 논문의 섹션 3에 나와 있습니다.m1=βm0+(1−β)gtβm0m1(1−β)m1^=(m1−βm0)/(1−β)m0=0mt^=mt/(1−βt)
Mark L. Stone이 잘 언급했듯이
그것은 2를 곱한 것과 같습니다 (오, 결과는 편향됩니다).
어떻게 든 이것은 정확히
초기 점에서의 그라디언트는 이러한 것들의 초기 값에 사용 된 다음 첫 번째 매개 변수 업데이트에 사용됩니다
(물론 업데이트 규칙을 변경하여 동일한 형식으로 바꿀 수 있습니다 (답변 업데이트 참조).이 줄은 주로 편견을 도입 할 필요가 없다는 것을 보여 주지만 차이를 주목할 가치가 있다고 생각합니다)
예를 들어, 시간 2에서 수정 된 첫 번째 순간
m2^=β(1−β)g1+(1−β)g21−β2=βg1+g2β+1
동일한 업데이트 규칙을 사용하여 을 초기 값으로 사용하는 경우
는 처음 몇 단계에서
쪽으로 편향됩니다 .g1m2=βg1+(1−β)g2
g1
편향 보정은 실제로 큰 문제입니다.
실제로 훈련의 처음 몇 단계에만 영향을 미치기 때문에 많은 인기있는 프레임 워크 (예 : keras , caffe )에서는 편향된 추정치 만 구현 되는 것이 큰 문제가 아닌 것 같습니다 .
내 경험에 따르면 편견 추정은 때때로 손실이 줄어들지 않는 바람직하지 않은 상황으로 이어집니다 (나는 그것을 철저히 테스트하지 않았으므로 이것이 편견 추정인지 또는 다른 것이 원인인지 정확하게 확신하지 못합니다) 및 트릭 내가 사용 하는 초기 단계 크기를 조정하기 위해 더 큰 을 사용하고 있습니다.ϵ
업데이트
재귀 업데이트 규칙을 기본적으로 는 그라디언트의 가중 평균입니다.
분모는 기하 합계 공식으로 계산할 수 있으므로 다음 업데이트와 같습니다. 규칙 (바이어스 용어를 포함하지 않음) m^t
m^t=βt−1g1+βt−2g2+...+gtβt−1+βt−2+...+1
m1←g1
수행하면서 수렴하지 (가중치 합) (가중 평균)
mt←βmt+gt
m^t←(1−β)mt1−βt
따라서 바이어스 용어를 도입하고 수정하지 않고도 수행 할 수 있습니다. 다른 알고리즘 (예 : RmsProp)과 비교할 때 편의상이 논문이 편향 보정 형식으로되어 있다고 생각합니다.