더북(TheBook)

운동량을 조정하는 방법

모멘텀(Momentum)

경사 하강법과 마찬가지로 매번 기울기를 구하지만, 가중치를 수정하기 전에 이전 수정 방향(+, -)을 참조하여 같은 방향으로 일정한 비율만 수정하는 방법입니다. 수정이 양(+)의 방향과 음(-)의 방향으로 순차적으로 일어나는 지그재그 현상이 줄어들고, 이전 이동 값을 고려하여 일정 비율만큼 다음 값을 결정하므로 관성 효과를 얻을 수 있는 장점이 있습니다. 모멘텀은 SGD(확률적 경사 하강법)와 함께 사용합니다.

먼저 확률적 경사 하강법의 수식이 다음과 같다고 합시다.

이때 수식을 사용하여 가중치를 계산하는데, 기울기 크기와 반대 방향만큼 가중치를 업데이트합니다. 즉, 기울기가 크면 아래쪽(-) 방향으로 업데이트합니다.

또한, SGD 모멘텀(SGD with Momentum)은 확률적 경사 하강법에서 기울기()를 속도(v, velocity)로 대체하여 사용하는 방식으로, 이전 속도의 일정 부분을 반영합니다. 즉, 이전에 학습했던 속도와 현재 기울기를 반영해서 가중치를 구합니다.

예를 들어 텐서플로 2에서는 다음과 같이 모멘텀을 구현할 수 있습니다.

# SGD()의 파라미터로 모멘텀을 지정합니다.
from tensorflow.keras.optimizers import SGD
model.compile(loss='categorical_crossentropy',
              optimizer=SGD(lr=0.01, momentum=0.9),
              metrics=['accuracy'])
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.