Story of CowHacker

딥러닝 5.1 학습 관련 기술들 본문

공부/딥러닝

딥러닝 5.1 학습 관련 기술들

Cow_Hacker 2020. 8. 19. 18:18
728x90

이번에는 저번 글에서 알아본 SGD의 단점을 보완한 방법 중 모멘텀에 대해 알아보겠다.

 

모멘텀은 운동량을 뜻하는 단어다.

 

 

 

 

그림1

그림 1을 보면 두 개의 수식이 있는데

첫 번째 수식은 모멘텀을 수식화 한 것이고

두 번째 수식은 간소화한 수식이다.

 

이제 이것을 파이썬으로 구현해보겠다.

참고로 이 코드는 밑에 출처를 참고했다.

 

출처 : https://github.com/WegraLee/deep-learning-from-scratch

 

WegraLee/deep-learning-from-scratch

『밑바닥부터 시작하는 딥러닝』(한빛미디어, 2017). Contribute to WegraLee/deep-learning-from-scratch development by creating an account on GitHub.

github.com

 

 

모멘텀 파이썬 코드

import numpy as np

class Momentum:

    """모멘텀 SGD"""

    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]

여기서 v는 물체의 속도다.

v는 초기화 때는 아무 값도 담지 않고, 대신 update함수가 처음 호출될 때 매개변수와 같은 구조의 데이터를 딕셔너리 변수로 저장한다.

그림2

그림 2는 모멘텀을 그래프화 한 것이다.

SGD와 비교하면 지그재그 정도가 덜한 것을 볼 수 있다.

 

728x90

'공부 > 딥러닝' 카테고리의 다른 글

딥러닝 5.3 학습 관련 기술들  (0) 2020.08.20
딥러닝 5.2 학습 관련 기술들  (0) 2020.08.20
딥러닝 5.0 학습 관련 기술들  (0) 2020.08.19
딥러닝 4.5 오차역전파법  (0) 2020.08.19
딥러닝 4.4 오차역전파법  (0) 2020.08.19
Comments