반응형
사이토고키의 <밑바닥부터 시작하는 딥러닝>을 공부하고 정리해보았습니다.
모멘텀 - Momentum
모멘텀은 '운동량'을 뜻하는 단어로, 물리와 관계가 있습니다. 모멘텀 기법은 수식으로 다음과 같이 쓸 수 있습니다.
SGD와 비교해보았을 때 v라는 변수가 새로 나옵니다. 이는 물리에서 말하는 속도에 해당합니다.
기울기 방향으로 힘을 받아 물체가 가속된다는 물리 법칙을 나타냅니다.
모멘텀 구현 코드
class Momentum:
def __init__(self, lr=0.01, momentum=0.9):
self.lr = lr
self.momentum = momentum
self.v = None
def update(self, params, grads):
if self.v is None:
self.v = {}
for key, val in params.items():
self.v[key] = np.zeros_like(val)
for key in params.keys():
self.v[key] = self.momentum * self.v[key] - self.lr * grads[key]
params[key] += self.v[key]
모멘텀에 의한 최적화 갱신 경로를 살펴보겠습니다.
모멘텀의 갱신 경로는 공이 그릇 바닥을 구르듯 움직입니다.
SGD와 비교하면 '지그재그 정도'가 덜합니다.
이는 x축의 힘은 아주 작지만 방향은 변하지 않아서 한 방향으로 일정하게 가속하게 가속하기 때문입니다.
거꾸로 y축의 힘은 크지만 위아래로 번갈아 받아서 상충하여 y축 방향의 속도는 안정적이지 않습니다.
전체적으로는 SGD보다 x축 방향으로 빠르게 다가가 지그재그 움직임이 줄어듭니다.
반응형
'수학 > 딥러닝 이론' 카테고리의 다른 글
[딥러닝] 매개변수 갱신 - Adam, 어느 갱신 방법을 이용할 것인가? (0) | 2020.10.02 |
---|---|
[딥러닝] 매개변수 갱신 - AdaGrad 기법 (0) | 2020.10.02 |
[딥러닝] 매개변수 갱신 - 확률적 경사 하강법(SGD) 개념과 단점 (0) | 2020.10.02 |
04-4 오차역전파법 (4) - 오차역전파법을 사용한 학습 구현 (0) | 2020.09.12 |
04-3. 오차역전파법 (3) - 활성화 함수, Affine, Softmax 계층 구현 (1) | 2020.09.12 |