딥 러닝 모멘텀 | [딥러닝Ii] 2강. Optimizer: Momentum, Nag 30 개의 베스트 답변

당신은 주제를 찾고 있습니까 “딥 러닝 모멘텀 – [딥러닝II] 2강. optimizer: Momentum, NAG“? 다음 카테고리의 웹사이트 you.maxfit.vn 에서 귀하의 모든 질문에 답변해 드립니다: https://you.maxfit.vn/blog. 바로 아래에서 답을 찾을 수 있습니다. 작성자 한경훈 이(가) 작성한 기사에는 조회수 2,553회 및 좋아요 27개 개의 좋아요가 있습니다.

딥 러닝 모멘텀 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 [딥러닝II] 2강. optimizer: Momentum, NAG – 딥 러닝 모멘텀 주제에 대한 세부정보를 참조하세요

PPT 10 페이지 점화식에서 x_n은 x_n ‘ 로 수정합니다.
교재 : 밑바닥부터 시작하는 딥러닝 (저자 : 사이토 고키 / 번역 : 이복연 / 출판사 : 한빛미디어)
https://www.hanbit.co.kr/store/books/look.php?p_code=B8475831198
코드 : https://github.com/WegraLee/deep-learning-from-scratch
강좌 홈페이지 : https://sites.google.com/site/kyunghoonhan/deep-learning-ii
PPT 이미지 출처
p.9 : https://cs231n.github.io/neural-networks-3/

딥 러닝 모멘텀 주제에 대한 자세한 내용은 여기를 참조하세요.

32. 딥러닝 : 모멘텀 (Momentum) : 개념, 원리, 필요 이유

딥러닝 : 모멘텀 (Momentum) : 개념, 원리, 필요 이유. 얇은생각 2020. 3. 26. 07:30. 반응형. 주변 값에 얽매이지 않고 최소값에 도달 할 수있는 기회를 개선 할 수 …

+ 자세한 내용은 여기를 클릭하십시오

Source: jjeongil.tistory.com

Date Published: 10/10/2021

View: 5436

딥러닝 용어정리, Momentum, AdaGrad 설명 – All about

Momentum. Momentum 은 Gradient descent(이하 GD) 기반의 optimization algorithm 이다. 수식으로 표현하면 아래와 같다.

+ 여기에 자세히 보기

Source: light-tree.tistory.com

Date Published: 1/27/2022

View: 2216

[Deep Learning-딥러닝]가중치 조정 – Momentum – 우니Blog

모멘텀은 신경망의 학습 안정성과 속도를 높여 학습이 잘 하려고 사용됩니다. 모멘텀 은 다음과 같이 가중치를 갱신할 때 델타 규칙에 모멘텀을 추가 …

+ 여기에 자세히 보기

Source: ynebula.tistory.com

Date Published: 1/17/2021

View: 2711

Momentum 개념 및 코드 구현 – 누누와데이터

또한 처음 시작점(보통 딥러닝에서는 처음 시작점은 무작위로 주어짐)이 global minimum 보다 local minimum에 더 가까운 경우, 경사하강법에서 local …

+ 여기에 더 보기

Source: imhappynunu.tistory.com

Date Published: 6/25/2021

View: 8297

딥러닝 옵티마이저: Adam(Adaptive Momentum) – velog

윤덕호 저서 파이썬 날코딩으로 알고 짜는 딥러닝을 공부하고 개인적으로 … 모멘텀 정보와 2차 모멘텀 정보는 신경망 차원에서 관리되는 것이 아닌 …

+ 여기에 자세히 보기

Source: velog.io

Date Published: 9/22/2022

View: 9292

6장. 학습관련 기술(SGD, Momentum, Adagrad, Adam)

모멘텀(Momentum)은 관성이라는 물리학의 법칙을 응용한 방법입니다. 모멘텀 SGD는 경사 하강법에 관성을 더 해줍니다. 모멘텀은 SGD에서 계산된 접선 …

+ 여기에 더 보기

Source: m.blog.naver.com

Date Published: 8/7/2022

View: 237

[머신러닝] 모멘텀(Momentum), NAG 옵티마이저

Steve Jang; 인공지능 및 데이터과학 / 머신러닝 및 딥러닝; 2021. 6. 19. 모멘텀(Momentum). 텐서플로우 v1 버전, Momentum 옵티마이저; 케라스 Momentum 옵티마이저.

+ 자세한 내용은 여기를 클릭하십시오

Source: needjarvis.tistory.com

Date Published: 6/30/2021

View: 2048

0021 Gradient Descent & Momentum – Deepest Documentation

하지만 이런 함수는 아주 드물고, 딥러닝에서 우리가 다루는 함수는 늘 비볼록 함수(nonconvex function)입니다. 따라서 우리가 인공신경망을 GD로 훈련하는 이상, …

+ 여기를 클릭

Source: deepestdocs.readthedocs.io

Date Published: 10/28/2021

View: 9786

신경망 학습 – (4 – 2) 모멘텀 (Momentum) – 그럼에도 불구하고

모멘텀은 운동량을 의미하며 Momentum Optimizer는 매개변수의 이동에 속도를 부여하는 것을 의미합니다. 쉽게 말해서 구슬을 떨어트리면 급한 경사에서는 …

+ 더 읽기

Source: beoks.tistory.com

Date Published: 2/5/2021

View: 554

[Deep Learning] 최적화(Optimizer): (1) Momentum – Hey Tech

본 포스팅에서는 딥러닝 최적화(optimizer) 기법 중 하나인 Momentum의 개념에 대해 알아봅니다. 먼저, Momentum 기법이 제안된 배경인 경사 하강 …

+ 자세한 내용은 여기를 클릭하십시오

Source: heytech.tistory.com

Date Published: 2/30/2022

View: 3004

주제와 관련된 이미지 딥 러닝 모멘텀

주제와 관련된 더 많은 사진을 참조하십시오 [딥러닝II] 2강. optimizer: Momentum, NAG. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

[딥러닝II] 2강. optimizer: Momentum, NAG
[딥러닝II] 2강. optimizer: Momentum, NAG

주제에 대한 기사 평가 딥 러닝 모멘텀

  • Author: 한경훈
  • Views: 조회수 2,553회
  • Likes: 좋아요 27개
  • Date Published: 2020. 9. 7.
  • Video Url link: https://www.youtube.com/watch?v=TQmCLe1BCJk

32. 딥러닝 : 모멘텀 (Momentum) : 개념, 원리, 필요 이유

반응형

주변 값에 얽매이지 않고 최소값에 도달 할 수있는 기회를 개선 할 수 있는 추가 방법을 모색해보겠습니다. 그라디언트 하강 및 확률적 그라디언트 하강은 모델을 훈련시키는 좋은 방법입니다. 그것들을 적용하면서 할 가장 간단한 확장으로 진행해야합니다.

모멘텀

모멘텀 (momentum)

모멘텀이란 무엇입니까? 모멘텀을 설명하는 쉬운 방법은 물리학적 비유를 통한 것입니다. 작은 언덕은 볼이 멈추지 않는 평평한 표면에 도달 할 때까지 롤링을 계속하지 않을 것입니다. 작은 언덕은 지역 최소값이고, 큰 계곡은 전역 최소값입니다.

운동량이 없으면 공은 원하는 최종 목적지에 도달하지 못합니다. 속도가 전혀 떨어지지 않고 작은 언덕에서 멈추었을 것입니다. 지금까지 모멘텀을 고려하지 않았습니다. 즉, 작은 언덕에 빠질 가능성이있는 알고리즘을 만들었습니다.

그래서 알고리즘에 운동량을 추가하는 방법에 대해 알아보아야 합니다. 규칙은 운동량을 포함한 w에 손실의 기울기를 활용합니다. 위 식을 참조해주세요. 지금까지 내려간 속도를 고려할 것입니다. 공이 빨리 굴러가는 경우 운동량은 높고 그렇지 않으면 운동량이 낮습니다. 볼이 얼마나 빨리 움직이는 지 알아내는 가장 좋은 방법은 전에 공이 얼마나 빨리 굴렀는지를 확인하는 것입니다. 이는 머신 러닝에 채택 된 방법이기도합니다.

이전 업데이트 단계에 계수에 곱하는 수식의 경우, 그렇지 않으면 현재 업데이트와 이전 업데이트에 동일한 중요치를 할당합니다. 일반적으로 알파 0.9 값을 적용해 업데이트를 조정합니다. 이것은 기존의 경험 법칙이며 많은 이들이 사용하는 것중 하나라고 합니다. 모멘텀을 고려한 학습 속도에 대해 살펴볼 계획입니다. 학습 속도는 알고리즘의 주요 하이퍼파라미터 중 하나입니다.

반응형

딥러닝 용어정리, Momentum, AdaGrad 설명

제가 공부한 내용을 정리하는 글입니다. 제가 나중에 다시 보기 위해 작성하는 것이므로 본문은 편의상 반말로 작성했습니다. 잘못된 내용이 있다면 지적 부탁드립니다. 감사합니다.

Momentum

Momentum 은 Gradient descent(이하 GD) 기반의 optimization algorithm 이다. 수식으로 표현하면 아래와 같다.

L : loss function value

W : weights

η : learning rate

α : 가속도 같은 역할을 하는 hyper parameter, 0.9 등 1 이하의 값을 취함. 자세한 것은 아래에 설명.

v 는 일종의 가속도(혹은 속도) 같은 개념으로 생각하는 것이 이해에 더 도움이 될 것 같다. v 의 영향으로 인해 가중치가 감소하던 (혹은 증가하던) 방향으로 더 많이 변화하게 되는 것. 최초의 v 는 0으로 초기화 한다.

간단한 예를 이용하여 설명한다.

첫번째 스텝의 기울기가 5, 두번째 스텝의 기울기가 3인 경우 학습률 η = 0.1 일 때, 두번째 스텝에서 가중치는 -0.3 만큼 변화한다.

Momentum 을 적용한 경우는

일반적인 GD 보다 두번째 스텝에서 -0.45 만큼 가중치가 더 변하는 것을 알 수 있다. 이를 그래프로 간단하게 표현하면

GD 를 사용했다면 갔을 거리보다 Momentum 을 사용했을 때 이동하려던 방향으로 스텝을 더 멀리 뻗는다고 이해할 수 있다.(그래프는 구글에 y=x^2를 입력하여 간단하게 그렸으니 그래프의 숫자는 무시하고 형태만 본다.)

Momentum 은 아래 그림처럼 빗살무늬 모양 그릇에 공을 굴리면 움직이듯 가중치가 이동하게 된다.

AdaGrad

학습률이 너무 작으면 학습 시간이 너무 길고, 너무 크면 발산해서 학습이 제대로 이루어지지 않는다. 이런 문제를 AdaGrad 는 학습률 감소(learning rate decay) 를 통해 해결한다.

연산기호 ⊙ 는 element wise multiplecation 이다(한국말로는 행렬의 원소별 곱셈). h 에 이전 기울기의 제곱들이 누적되어 더해지게 되는데, parameter 를 업데이트 할때, 1/√h 를 통해 학습률을 조정하게 된다. 이를 통해 parameter 중 많이 움직인 element 의 학습률이 낮아지는 효과를 만든다. 즉, 학습률의 감소가 element 마다 다르게 적용됨을 의미한다.

AdaGrad 는 무한히 학습을 하다보면 어느 순간 h 가 너무 커져서 학습이 되지 않을 수 있는데, 이 문제는 RMSProp 에서 개선된다(RMSProp 은 다음 글에서 설명).

[Deep Learning-딥러닝]가중치 조정

모멘텀은 신경망의 학습 안정성과 속도를 높여 학습이 잘 하려고 사용됩니다. 모멘텀 은 다음과 같이 가중치를 갱신할 때 델타 규칙에 모멘텀을 추가로 더합니다. 모멘텀을 사용하면 가중치 값이 바로 바뀌지 않고 어느 정도 일정한 방향을 유지하면서 움직이게 됩니다. 또한 가속도처럼 같은 방향으로 더 많이 변화시켜 학습속도를 높여줘 빠른 학습을 하게 합니다.

Formula-1

m하이프는 직전의 모멘텀을 의미하며 0으로 초기화합니다. 알파는 가속도 같은 역할을 하는 하이퍼 파라미터로 1보다 작은 양의 상수를 초기화합니다. 마지막 식은 현재 모멘텀이 다음 학습을 위해서 직전의 모멘텀으로 변한다는 의미입니다.

학습이 진행됨에 따라 모멘텀이 어떻게 변하는지 알아보겠습니다.

Formula-2

위 식을 보면 이전 모멘텀이 현재 모멘텀 추가되고 현재 모멘텀은 다음 모멘텀에 더해집니다. 이처럼 모멘텀은 이전의 가중치 갱신 값들이 추가로 더해지기 때문에 가중치 갱신 값이 점점 커집니다. 학습속도가 향상되는 이유입니다.

한편, 이전의 가중치 갱신값들이 암아 계속 반영되기 때문에 어느 특정 가중치 갱신값에 의해 가중치가 좌지우지되지 않습니다. 학습 안정성이 나아지는 이유입니다.

모멘텀 예제를 보면 모멘텀 어떤 역할을 하는지 알아 보겠습니다.

Case1) Gradient descent

case-1

Case2) Gradient descent + Momentum

case-2

Gradient descent과 Momentum 을 함께 사용할 때 가중치 변화량이 더 크게 변합니다. 같은 방향으로 연속으로 가중치가 변화되었으므로 가중치가 더 크게 변경되었습니다. 역으로, 첫 번째와 두 번째의 가중치 방향이 반대이면 변화량이 감소합니다. 쉽게 플러스(+) 부호에서 마이너스(-) 부호로 변경되므로 변화량이 적아진다고 생각하시면 됩니다.

이는 다음과 같이 그래프로 표시할 수 있습니다.

Gradient Descent with Momentum-1

Gradient Descent with Momentum-2

Gradient Descent with Momentum-1은 가중치가 같은 방향으로 이동하는 경우를 나타낸 그림입니다.

Gradient Descent with Momentum-2은 가중치가 첫 번째 방향과 두 번째 방향이 반대로 이동할 경우를 나타낸 그립니다.

언제 멈춰야 하나 ?

훈련의 방법은 매우 주요한 만큼 훈련을 언제 멈추는지 역시 매우 중요한 일입니다. 대게 훈련 종료 시점은 미리 정해둔 학습 반복 수 또는 MSE의 수치가 주어진 기준보다 낮을 때 훈련을 종료합니다.

검증 방법에 따라 종료하는 방법도 있습니다. Cross validation(교차 검증)에서 Vdatation-sample error(검증 샘플 오차)가 증가하면 조기 종료시킵니다. 이는 모델이 Training-sample에 너무 적합하게 훈련된 모델일 경우 발생하게 됩니다. 이를 Over fitting(과적합)이라고 합니다.

감사합니다.

[참고자료]

딥러닝 첫걸음

haykin.neural-networks.3ed.2009

Momentum 개념 및 코드 구현

개념

(1) 나타난 배경

경사하강법을 시행할 때, 학습률이 너무 작은 경우, 극솟값에 다다르는 속도가 너무 느리게 되어 많은 학습이 필요하다.

또한 처음 시작점(보통 딥러닝에서는 처음 시작점은 무작위로 주어짐)이 global minimum 보다 local minimum에 더 가까운 경우, 경사하강법에서 local minimum에 도달하면, f'(x)=0이 되어 더이상의 업데이트가 진행되지 않는다.

(2) 기본 원리

볼링공이 매끈한 표면의 완만한 경사를 따라 굴러간다고 하자. 볼링공은 처음에는 느리게 출발하지만, 종단속도에 도달할 때까지는 빠르게 가속될 것이다. 이것이 보리스 폴랴크가 1964년에 제안한 Momentum 최적화의 간단한 원리이다.

반대로 표준적인 경사하강법은 경사면을 따라, 일정한 크기의 스텝으로 조금씩 내려가기 때문에, 모멘텀에 비해, 맨아래에 도착하는데 시작이 더 오래 걸릴 것이다.

공식설명

모멘텀 최적화 공식

Momentum 최적화는 이전 gradient가 얼마였는지를 상당히 중요하게 생각한다. 따라서 매 반복에서 현재 graident를 (학습률 a를 곱한 후) 모멘텀 벡터 m에 더하고, 이 값을 빼는 방식으로 가중치를 업데이트 한다.

Momentum 최적화 공식에서는 일종의 마찰 저항을 표현하고, 모멘텀이 너무 커지는 것을 막기 위해, 새로운 하이퍼 파라미터 B(베타)가 등장한다. 이 값은 0(높은 마찰 저항) 1(마찰 저항 없음) 사이로 설정이 되어야 하는데, 대략 0.9로 두는 것이 일반적이다.

실제 코드 구현

미분함수와 모멘텀 함수 정의 결과

케라스에서 활용

optimizer = keras.optimizers.SGD(lr= 0.0001, momentum=0.9) #lr는 하이퍼파라미터 a(알파)에 대한 설정 #momentum은 하이퍼파라미터 B(베타)에 대한 설정

참고

핸즈온 머신러닝 2판(오렐리앙 제롱)

딥러닝 옵티마이저: Adam(Adaptive Momentum)

Δ θ ∝ g ∝ ∂ J ∂ θ ∝ 1 u n i t ( θ ) \Delta\theta \propto g \propto {\partial J \over \partial\theta} \propto {1 \over unit(\theta)}

Δ θ ∝ g ∝ ∂ J ∂ θ ∝ 1 u n i t ( θ ) \Delta\theta \propto g \propto {\partial J \over \partial\theta} \propto {1 \over unit(\theta)} Δ θ ∝ g ∝ ∂ θ ∂ J ​ ∝ u n i t ( θ ) 1 ​

Δ θ ∝ g ∝ ∂ J ∂ θ ∝ 1 u n i t ( θ ) \Delta\theta \propto g \propto {\partial J \over \partial\theta} \propto {1 \over unit(\theta)} Δ θ ∝ g ∝ ∂ θ ∂ J ​ ∝ u n i t ( θ ) 1 ​

Δ θ ∝ H − 1 g ∝ ∂ J ∂ θ ∂ 2 J ∂ θ 2 ∝ u n i t ( θ ) \Delta\theta \propto H^{-1}g \propto {{\partial J \over \partial\theta} \over {\partial^2 J \over \partial\theta^2}} \propto unit(\theta) Δ θ ∝ H − 1 g ∝ ∂ θ 2 ∂ 2 J ​ ∂ θ ∂ J ​ ​ ∝ u n i t ( θ )

1 ∂ 2 J ∂ θ 2 = − Δ θ ∂ J ∂ θ {1 \over {\partial^2 J \over \partial\theta^2}} = -{{\Delta \theta} \over {\partial J \over \partial\theta}} ∂ θ 2 ∂ 2 J ​ 1 ​ = − ∂ θ ∂ J ​ Δ θ ​

Δ θ t = − η R M S [ g ] t g ( t ) \Delta \theta_t = -{\eta \over RMS[g]_t}g(t) Δ θ t ​ = − R M S [ g ] t ​ η ​ g ( t )

E [ Δ θ 2 ] t = γ E [ Δ θ 2 ] t − 1 + ( 1 − γ ) Δ θ t 2 R M S [ Δ θ ] t = E [ Δ θ 2 ] t + ϵ E[\Delta \theta^2]_t = \gamma E[\Delta \theta^2]_{t-1} + (1-\gamma)\Delta \theta_t^2 \\ RMS[\Delta \theta]_t = \sqrt{E[\Delta \theta^2]_t + \epsilon} E [ Δ θ 2 ] t ​ = γ E [ Δ θ 2 ] t − 1 ​ + ( 1 − γ ) Δ θ t 2 ​ R M S [ Δ θ ] t ​ = E [ Δ θ 2 ] t ​ + ϵ ​

Deep Learning – 6장. 학습관련 기술(SGD, Momentum, Adagrad, Adam)

지그재그가 SGD보다 덜하다.

x축 힘은 아주 작지만 방향이 변하지 않아서 한 방향으로 일정하게 가속한다.

거꾸로 y축의 힘은 크지만 위아래로 번갈아 가며 받아서 일정하지 않다

그래서 x축 방향으로 빠르게 다가가 지그재그 움직임이 줄어든다

3) 아다그라드(Adagrad)

매개변수들은 각자 의미하는 바가 다른데, 모든 매개변수에 동일한 학습률(learning rate)을 적용하는 것은 비효율적입니다. 아다그라드는 각 매개변수에 서로 다른 학습률을 적용시킵니다.

처음에는 크게 학습하다가 조금씩 작게 학습시킨다.

[머신러닝] 모멘텀(Momentum), NAG 옵티마이저

모멘텀(Momentum)

모멘텀이란 물리학에서 쓰이는 용어인 운동량, 동력을 뜻하며 이를 옵티마이저 개념에 적용한 것이 모멘텀 옵티마이저이다. 우선 모멘텀을 이해하기 위해서는 이전에 등장한 경사하강법 계열들을 이해해야 하는데 이 개념이 나온 이유가 바로 경사하강법 특히 확률적 경사하강법(Stochastic Gradient Descent, SGD)에서 나온 개념이기 때문이다.

모멘텀, NAG 옵티마이저

SGD의 지그재그로 움직이며 최적화되는 것을 해결하기 위해서 나왔으며 너무 왔다갔다 해서 지역 최소값(local minimum)에 갇혀 빠져나오지 못하는 경우가 많은데 이를 위해 관성과 가속도 넣어서 지그재그가 아니라 한 방향으로 좀 더 이동할 수 있게 한 것이다.

https://eloquentarduino.github.io/2020/04/stochastic-gradient-descent-on-your-microcontroller/

현재 이동하는 방향과는 별개로 과거에 이동을 했었던 방향을 기억하여 과거의 방향으로 일정량을 추가하여 이동을 하게 되는데 기존의 파라미터 이외에 과거의 행동을 저장해야 하므로 메모리가 더 필요한 단점도 있다.

텐서플로우 v1 버전, Momentum 옵티마이저

# 사용예 1 optimizer = tf.train.MomentumOptimizer(learning_rate=0.01, momentum=0.9) train = optimizer.minimize(loss) # 사용예 2 tf.compat.v1.train.MomentumOptimizer( learning_rate, momentum, use_locking=False, name=’Momentum’, use_nesterov=False )

텐서플로우(Tensorflow)의 초창기를 보면, 다음과 같이 모멘텀이 별도로 존재해서 옵티마이저(Optimizer)를 설정하는 것을 알 수 있다. 하지만 옵티마이저는 사실상 SGD를 위한 방법이기 때문에 케라스(Keras)로 연결되는 텐서플로우 2에서는 사용 방법이 아래처럼 바뀐다.

케라스 Momentum 옵티마이저

tf.keras.optimizers.SGD( learning_rate=0.01, momentum=0.0, nesterov=False, name=’SGD’, **kwargs )

케라스의 모멘텀 옵티마이저는 SGD내에서 모멘텀을 설정하는 것이다.

NAG(Nesterov Accelerated Gradient)

NAG는 Momentum 방식을 베이스로 하며 미리 경사를 확인 할 수 있게 하고 경사에 맞춰 속도를 조절하는 방식으로 기울기를 계산하는 옵티마이저이다.

모멘텀은 이동 벡터를 계산할 때 현재 위치에서 기울기와 모멘텀 스텝을 독립적 계산 수행 후 합치지만 NAG는 모멘텀 스텝을 먼저 이동했다 가정 후 해당 위치에서 기울기를 구해 스텝을 이동한다.

모멘텀과 Nesterov의 차이

모멘텀은 관성으로 인해서 최적값을 지나칠 수 있는 단점이 있는데 NAG는 같이 관성을 이용하더라도 학습이 어느정도 진행이 되었다면 최적값을 지나치는 문제를 방지할 수 있다.

텐서플로우 v1 버전에서 사용하는 NAG 옵티마이저

tf.train.MomentumOptimizer(0.05, 0.03, use_nesterov=True)

네스테로브 옵티마이저는 모멘텀에서 파생되었기 때문에 모멘텀 옵티마이저 설정에서 옵션값으로 제공된다. 그러나 텐서플로우 v2 즉 케라스에서 설정하는 방법은 윗 케라스 소스를 보면 알겠지만 통합되었다.

케라스에서 사용하는 NAG 옵티마이저

tf.keras.optimizers.SGD( learning_rate=0.01, momentum=0.0, nesterov=False, name=’SGD’, **kwargs )

옵티마이저에서 파생된 개념이고, 옵티마이저는 SGD에서 파생되다보니 SGD 옵티마이저에서 모멘텀과 함께 옵션으로 제공하게 된다.

신경망 학습 – (4 – 2) 모멘텀 (Momentum)

신경망 학습 – 4에서는 매개변수를 갱신하는 효율적인 방법에 대해서 알아보겠습니다.

지난번에서는 학습시간을 단축시키기 위해서 미니배치를 추출하여 학습하는 SGD, 확률적 경사하강법에 대해서 알아보았습니다.

SGD는 비등방성 함수의 경우 문제점이 발생한다는 것을 알았으니 이번에는 이를 보완하기 위한 Momentum이라는 Optimizer(매개변수 갱신 방법)에 대해서 알아보도록 하겠습니다.

모멘텀이란?

모멘텀은 운동량을 의미하며 Momentum Optimizer는 매개변수의 이동에 속도를 부여하는 것을 의미합니다.

쉽게 말해서 구슬을 떨어트리면 급한 경사에서는 더 빨라지듯이 매개변수의 변화에도 속도를 부여하는 것입니다.

수식

출처 – https://m.blog.naver.com/PostView.nhn?blogId=ssdyka

위 수식을 보면 알겠지만 매개변수를 갱신 할 때마다 기존속도에 매개변수의 기울기값을 추가하고 이 속도값을 다시 매개변수에 추가하여 매개변수를 이동시킵니다. 위에서 사용되는 알파는 만약 매개변수가 0이 되어 아무런 힘을 받지 않는다면 서서히 속도를 감소시키기 위해서 사용되며 보통 0.9를 사용합니다.

SGD와 모멘텀의 비교

모멘텀을 사용할 경우 x축은 항상 같은 방향을 가르키므로 양의 가속도로 작용하여 SGD에 비해서 지그재그의 비율이 줄어들었습니다. 그러나 y축은 번갈아 상충하여 속도가 안정적이지 못합니다.

모멘텀의 장점

모멘텀은 위처럼 SGD에 비해서 효율적인 학습을 할 수 있다는 점 뿐만 아니라 SGD가 가지고 있는 또 다른 문제인 Local Minima를 해결 할 수 있습니다.

SGD의 경우 Local Minima에 빠져서 더 이상 학습을 진행할 수 없는 문제가 있습니다. 모멘텀을 사용한다면 속도의 개념때문에 깊이가 낮은 Local Minima는 위 그림처럼 뛰어넘어 계속 진행 할 수 있습니다.

[Deep Learning] 최적화(Optimizer): (1) Momentum

728×90

반응형

본 포스팅에서는 딥러닝 최적화(optimizer) 기법 중 하나인 Momentum의 개념에 대해 알아봅니다. 먼저, Momentum 기법이 제안된 배경인 경사 하강법(Gradient Descent)의 한계점에 대해 다루고 알아보도록 하겠습니다.

📚 목차

1. 경사 하강법의 한계

1.1. Local Minimum 문제

1.2. Saddle Point 문제

2. Momentum

2.1. 개념

2.2. 수식

1. 경사 하강법의 한계

경사 하강법(Gradient Descent)은 크게 2가지 한계점이 있습니다. 첫째, Local Minimum에 빠지기 쉽다는 점. 둘째, 안장점(Saddle point)를 벗어나지 못한다는 점. 각각에 대해 알아봅니다.

1.1. Local Minimum 문제

경사 하강법은 비볼록 함수의 경우, 파라미터의 초기 시작 위치에 따라 최적의 값이 달라진다는 한계가 있습니다. 그 이유에 대해 알아봅니다. 함수의 형태는 크게 볼록 함수(Convex function)와 비 볼록 함수(Non-convex function)로 나눌 수 있습니다.

1) 볼록 함수

아래 그림 1과 같이 아래 또는 위로 볼록한 함수를 볼록 함수라고 부릅니다. 이러한 볼록 함수는 초기 파라미터 값이 어떻게 설정되어도 경사 하강법을 활용하면 최적의 값에 도달할 수 있습니다. 다만, 현실에서는 대부분의 함수는 비볼록 함수 형태입니다.

그림 1. 볼록 함수 예시

2) 비볼록 함수

아래 그림 2와 같은 비볼록 함수는 경사 하강법 사용 시 파라미터 값의 시작 위치에 따라 최적의 값이 달라진다는 한계가 있습니다. 즉, Local Minimum에 빠질 수 있고 심지어는 최적의 값이라고 판단한 값이 Global minimum인지, Local minimum인지 구분할 수 없다는 한계가 있습니다.

그림 2. 비볼록 함수 예시

아래의 그림 3과 같이 Global Minimum은 목표 함수 그래프 전체를 고려했을 때 최솟값을 의미하고, Local minimum은 그래프 내 일부만 고려했을 때 최솟값을 의미합니다. 즉, 경사 하강법으로 최적의 값인 줄 알았던 값이 Global minimum보다 큰 경우를 Local minimum이라고 할 수 있습니다.

그림 3. Global minimum과 Local minimum

1.2. Saddle Point 문제

경사 하강법의 두 번째 한계점은 안장점(Saddle Point)을 벗어나지 못한다는 것입니다. 아래의 그림 4에 검정색 점이 안장점입니다. 말(horse)의 안장과 비슷한 모양 위에 있는 점이라 안장점이라고 이름 붙여졌다고 합니다. 안장점은 기울기가 \(0\)이지만 극값이 아닌 지점을 의미합니다. 아래 그림 4와 같이, A-B 사이에서 검은색 점은 최솟값(minima)이지만, C-D 사이에서 검은색 점은 최댓값(maxima)입니다. 따라서 해당 지점은 미분이 \(0\)이지만 극값을 가질 수 없습니다. 경사 하강법은 미분이 \(0\)일 경우 더이상 파라미터를 업데이트하지 않기 때문에, 이러한 안장점을 벗어나지 못하는 한계가 있습니다.

그림 4. Saddle Point

2. Momentum

본 포스팅에서는 경사하강법의 여러 한계점을 개선할 수 있는 심화 최적화 기법 중 하나인 Momentum(관성)에 대해 알아봅니다.

2.1. 개념

Momentum의 사전적 정의는 외부에서 힘을 받지 않는 한 정지해 있거나 운동 상태를 지속하려는 성질입니다. 예를 들어, 경사진 곳에서 돌을 굴리면 계속해서 아래로 굴러가려는 성질입니다. 이러한 성질을 활용하여 고안된 Momentum은 경사 하강법으로 이동할 때 관성을 부여하는 최적화 기법입니다(아래 그림 5 참고). 여기서 \(f\)는 목표함수를 의미합니다.

그림 5. Momentum

즉, Momentum은 이전에 이동했던 방향을 기억하면서 이전 기울기의 크기를 고려하여 어느 정도 추가로 이동시킵니다. 위의 그림 5와 같이, 좌측에서부터 경사하강법으로 손실 함수를 줄여나가다가 Local Minimum에 빠질 수 있는 상황에서 momentum 기법을 사용하면 이전 기울기의 크기를 고려해 추가로 이동하기 때문에 이를 빠져나갈 수 있습니다. 이후 그림 5에서 Global Minimum이라고 표시한 지점에 도달했을 때는 추가적인 관성을 받아도 더 올라갈 수 없기 때문에 이 지점이 Global Minimum이 됩니다. 이처럼 Momentum은 Local Minimum에 빠지는 경우를 대처할 수 있다는 특징이 있습니다.

2.2. 수식

Momentum을 수식으로 나타내면 아래와 같습니다.

$$ v_{t} = \gamma v_{t-1} + \eta

abla f(x_{t-1}) $$

\(v_{t}\): \(t\)번째 time step에서 \(x\)의 이동 벡터

\(\gamma\): 관성계수(momentum term) \(\approx\) 0.9

\(\eta\): 학습률(Learning rate)

\(t\)번째 이동 벡터(\(v_{t}\))는 이전 time step에서의 이동 벡터(\(v_{t-1}\))과 관성 계수를 곱한 값에서 학습률(\(eta\))과 (\(t-1\))번째 \(x\)의 Gradient 값을 더하여 구할 수 있습니다. 관성 계수는 \(1\)보다 작은 약 \(0.9\)로 일반적으로 설정합니다. 여기서 학습률이란 어떤 비율만큼 파라미터를 업데이트할지를 결정하는 값으로 0과 1 사이의 값을 가지며, 사용자가 직접 설정해야 하는 하이퍼파라미터(hyper-parameter)입니다. 즉, 학습률이 작을수록 촘촘하게 파라미터를 변화시키며 모델을 학습시킬 수 있지만 그만큼 학습 시 시간이 오래 걸립니다. 반면, 학습률이 너무 클 경우 손실 함수 그래프 자체를 벗어나는 경우가 생길 수 있기 때문에 적절한 학습률을 선택하는 것이 중요합니다.

$$ x_{t} = x_{t-1} – v_{t} $$

즉, \(t\)번째 \(x\) 값은 \((t-1)\)번째 \(x\) 값에서 \(t\)번째 이동 벡터를 뺀 값으로 계산할 수 있습니다. 이처럼 Momentum은 이동 벡터를 활용하여 이전 step에서의 기울기를 고려한 알고리즘입니다. 다음 포스팅에서는 AdaGrad, RMSprop, Adam과 같은 다른 여러 심화 최적화 기법을 다루도록 하겠습니다.

📚참고할 만한 포스팅

포스팅 내용에 오류가 있다면 아래에 댓글 남겨주시길 바랍니다.

그럼 오늘도 멋진 하루 만드시길 바랍니다 🙂

고맙습니다😊​

728×90

반응형

키워드에 대한 정보 딥 러닝 모멘텀

다음은 Bing에서 딥 러닝 모멘텀 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 [딥러닝II] 2강. optimizer: Momentum, NAG

  • 밑바닥부터 시작하는 딥러닝
  • 딥러닝
  • 인공지능
  • 인공신경망
  • 한경훈
  • 수원대
  • optimizer
  • momentum
  • nesterov
  • NAG
[딥러닝II] #2강. #optimizer: #Momentum, #NAG


YouTube에서 딥 러닝 모멘텀 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 [딥러닝II] 2강. optimizer: Momentum, NAG | 딥 러닝 모멘텀, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

Leave a Comment