본문 바로가기
Computer Science/AI & Data

[Machine Learning] Momentum(모멘텀)

by Henry Cho 2022. 7. 27.
728x90

Momentum(모멘텀)


포스트 난이도: HOO_Senior

 

[Notice] 포스트 난이도에 대한 설명

안녕하세요, HOOAI의 Henry입니다. Bro들의 질문에 대한 내용을 우선적으로 포스팅이 되다 보니 각각의 포스트에 대한 난이도가 달라서 난이도에 대한 부분을 작성하면 좋겠다는 의견을 들었습니다

whoishoo.tistory.com


# Momentum

 

머신러닝(Machine learning)에서 모멘텀(Momentum)을 사용하는 이유는 로컬 최솟값에서 빠져서 제대로 된 결과를 산출하지 못할 경우를 방지하기 위해서이다. 모멘텀을 통해서 로컬 값이 아닌 전역 또는 Global 최솟값에 도달할 수 있다. 이것을 우리는 Stochastic error surface라고도 부른다.

 


# 모멘텀과 SGD

 

모멘텀을 대신하여 SGD 즉 Stochastic gradient descent를 사용하여 신경망 학습이 가능하다. 그럼에도 불구하고 모멘텀을 사용하는 이유는 손실된 값들이 발생하거나 로컬 최솟값에 빠지는 부분을 방지할 수 있기 때문이다. SGD의 경우에는 모멘텀에 비해 그래프가 가파르게 계산되어 산출되다 보니 전역 최솟값을 보이는 값들이 많이 생긴다. 하지만 모멘텀은 이러한 다소 극단적인 그래프 결과가 산출되지 않도록 부드럽게 결과를 산출해주는 역할을 수행한다. 아래는 SGD와 모멘텀을 비교한 간단한 예제 그림이다.

 

왼쪽은 SGD를 표현했으며 오른쪽은 모멘텀을 적용할 경우를 표현한 그림

 

위와 같이 SGD는 가파르게 그래프 계산하여 산출이 되다보니 로컬 최솟값들도 많아질 뿐만 아니라 데이터를 처리하는 데 있어서 속도도 느릴 수밖에 없다. 하지만 모멘텀을 보면 로컬 최솟값이 상대적으로 줄어들기 때문에 데이터를 처리하는 속도가 SGD보다 빠르다. 한마디로 운동량 속도를 높이는데 도움이 된다는 것이며 평균 훈련 시간도 훨씬 적다. 실제로 ML을 돌려보면 같은 조건에서 모멘텀을 설정한 결과가 보다 더 빠르게 나오는 걸 알 수 있다. 필자가 실제로 모멘텀을 설정해서 비교해본 바로는 시간이 많으면 2배 정도 차이가 났었다.


# Momentum 값

 

머신러닝 또는 딥러닝에 있어서 필요한 기본 세팅 값들과 달리 모멘텀은 특정 값으로 많이 사용이 된다. 모멘텀의 경우에는 일반적으로 0.9로 지정하여 사용이 된다. 필자도 웬만해서는 모멘텀 값은 0.9로 지정한다.


 

728x90

댓글