Momentum(모멘텀)
포스트 난이도: HOO_Senior
# Momentum
머신러닝(Machine learning)에서 모멘텀(Momentum)을 사용하는 이유는 로컬 최솟값에서 빠져서 제대로 된 결과를 산출하지 못할 경우를 방지하기 위해서이다. 모멘텀을 통해서 로컬 값이 아닌 전역 또는 Global 최솟값에 도달할 수 있다. 이것을 우리는 Stochastic error surface라고도 부른다.
# 모멘텀과 SGD
모멘텀을 대신하여 SGD 즉 Stochastic gradient descent를 사용하여 신경망 학습이 가능하다. 그럼에도 불구하고 모멘텀을 사용하는 이유는 손실된 값들이 발생하거나 로컬 최솟값에 빠지는 부분을 방지할 수 있기 때문이다. SGD의 경우에는 모멘텀에 비해 그래프가 가파르게 계산되어 산출되다 보니 전역 최솟값을 보이는 값들이 많이 생긴다. 하지만 모멘텀은 이러한 다소 극단적인 그래프 결과가 산출되지 않도록 부드럽게 결과를 산출해주는 역할을 수행한다. 아래는 SGD와 모멘텀을 비교한 간단한 예제 그림이다.
위와 같이 SGD는 가파르게 그래프 계산하여 산출이 되다보니 로컬 최솟값들도 많아질 뿐만 아니라 데이터를 처리하는 데 있어서 속도도 느릴 수밖에 없다. 하지만 모멘텀을 보면 로컬 최솟값이 상대적으로 줄어들기 때문에 데이터를 처리하는 속도가 SGD보다 빠르다. 한마디로 운동량 속도를 높이는데 도움이 된다는 것이며 평균 훈련 시간도 훨씬 적다. 실제로 ML을 돌려보면 같은 조건에서 모멘텀을 설정한 결과가 보다 더 빠르게 나오는 걸 알 수 있다. 필자가 실제로 모멘텀을 설정해서 비교해본 바로는 시간이 많으면 2배 정도 차이가 났었다.
# Momentum 값
머신러닝 또는 딥러닝에 있어서 필요한 기본 세팅 값들과 달리 모멘텀은 특정 값으로 많이 사용이 된다. 모멘텀의 경우에는 일반적으로 0.9로 지정하여 사용이 된다. 필자도 웬만해서는 모멘텀 값은 0.9로 지정한다.
'Computer Science > AI & Data' 카테고리의 다른 글
[Data Science] 캐글 타이타닉(Titanic Machine Learning Competition) #01 (0) | 2022.07.31 |
---|---|
[Machine Learning] Batch Size, Iteration (0) | 2022.07.29 |
[Machine Learning] Train Test Size (0) | 2022.07.27 |
[Data Science] Data Science vs Data Analyst vs Data Engineering (0) | 2022.07.18 |
[Machine Learning] Training Dataset vs Testing Dataset (0) | 2022.07.17 |
댓글