6.1 매개변수 갱신

 

신경망 학습의 목적은 '손실 함수의 값을 최대한 낮추는 매개변수를 찾는 것'이다. 이를 위해서 매개변수의 기울기를 이용하였고, 갱신한 매개변수 값으로 다시 갱신하고, 갱신하는 방법을 취했다. 이를 SGD, 확률적 경사 하강법이라고 하였다. 

 

 

6.1.2 확률적 경사 하강법(SGD)

 

class SGD:
    def __init__(self, lr=0.01):
        self.lr = lr
        
    def update(self, params, grads):
        for key in params.keys():
            params[key] -= self.lr * grads[key]

 

6.1.3 SGD의 단점

 

SGD는 단순하고 구현도 쉽지만 문제가 있다. 다음 예시를 보자

기울기는 다음과 같다.

위 식이 최솟값이 되는 장소는 (x, y) = (0, 0)인데, 기울기의 대부분은 (0, 0) 방향을 가리키고 있지 않다.

초기값 (x, y) = (-7.0, 2.0)에서 SGD를 적용하면 다음 그림의 경로를 따른다.

지그재그로 한참을 가게되는데, 굉장히 비효율적임을 볼 수 있다.

 

책에서는 이러한 단점을 해결하기 위한 방법으로 모멘텀, AdaGrad, Adam을 소개한다.

+ Recent posts