본문 바로가기

implement_ml_models

implement_momentum

기존의 경사하강법

학습 속도를 가속하기 위한 방법 중 모멘텀 momentum, 다음의 수식을 따른다.

모멘텀 하이퍼파라미터는 일반적으로 0.9 근방의 값으로 설정, 두 식을 하나의 식으로 표현

이전의 가중치에 대한 연산이 추가된 모습과 학습 속도가 r(v_t-1) 만큼 가속하다는 것을 알 수 있다. 

v_t 는 이동 벡터로 아래와 같이 구한다.

이전의 모멘텀들이 누적되는 모습

  def gradient_momentum(self, x, y):
    x_b = np.c_[x, np.ones((x.shape[0],1))] # 입력 데이터에 편향값을 위한 1의 추가
    self.n_iterations = x.shape[0]
    for iterations in range(self.n_iterations):
      if iterations != 0:
        self.momentum = self.momentum + self.momentum_p * gradients
      
      gradients = (2/self.n_iterations) * x_b.T.dot(x_b.dot(self.theta) - y)
      
      self.theta = self.theta - self.eta * gradients - self.momentum

이전의 가중치를 사용한 모멘텀의 계산, 

모멘텀 역시 그 크기에 따라 가중치가 발산할 수 있어, 크기를 조절해야 한다.

gd2 = gradient_descent()
gd2.eta(0.001)
w = gd2.gradient_momentum(train_input, test_input)
w
>>>
array([[  21.23075507],
       [-164.61678918]])

'implement_ml_models' 카테고리의 다른 글

implement_nesterovAcceleratedGradient  (0) 2022.11.20
implement_stochasticGradientDescent  (0) 2022.11.19
implement_gradientdescent  (0) 2022.11.18
implement_ridge_regression(L2)  (0) 2022.11.18
implement_linear_regression  (0) 2022.11.18