티스토리 뷰
Coursera Optimization Algorithm
잘 작동되는 모델을 찾으려고 훈련을 반복해야하는 숙명에 놓여있는 머신러닝.
훈련의 반복이니까 모델을 빠르게 학습시키는 것도 중요하다.
엄청나게 많은 큰 데이터를 훈련하는 것은 엄청 느릴 것인데 그때문에 최적화 알고리즘을 사용하여 효율성을 좋게만들어야한다.
지난 시간에 그 중 하나인 미니배치경사하강법을 알았는데 그것보다 더 효율적인 알고리즘을 배우겠다..
하지만 일단, 그에 앞서서 다음을 알아야한다.
Exponentilally weighted average (지수가중평균)
Bias Correction (편향 보정)
이번 포스트에서는 지수가중평균에 대해서 알아보자.
Exponentilally weighted average(지수가중평균)
매개변수를 바꿈으로써 약간씩 다른 효과를 얻게되고 이를 통해 가장 잘 작동하는 것을 찾는 것.
통계학에서 나왔고 신경망 훈련에 사용되는 몇몇 최적화 알고리즘의 주요 구성요소이다.
What is it?
런던의 1년 동안의 기후 데이터를 가지고 있다고 생각하자. 이 데이터의 시간 흐름에 따른 온도의 이동 평균 흐름 을 알아보고 싶다.
단순히 평균값을 구하면 될 것 같지만, 온도가 높고 낮음이 시간에 따라 크기 때문에 특정한 날짜의 기온 흐름을 계산할 때 과거의 데이터가 분석흐름을 망칠 것이다.
그러므로 계산을 할 때 과거의 데이터에서는 영향을 덜 받게, 최근의 데이터에서는 영향을 많이 받을 수 있게 영향력을 달리할 수 있는 계산을 해야한다. 그래서 사람들은 최근 데이터에 과거와 현재 데이터의 가중치를 적용하여 흐름을 계산했고 그것을 단순이동평균이라고 불렀다. 근데 우리는 이것에서 더 나아가서 과거의 영향력이 시간이 지남에 따라 지수적으로 감소 할 수 있게끔 영향력을 죽여버리고 싶다. 즉, 지수적으로 감소하는 가중치를 적용하여 오래된 데이터일수록 현재의 경향에 더 적은 영향을 미치게 하는 것이다. 그것이 Exponentilally weighted average(지수가중평균)
이다.
How can I do?
- 각 날의 데이터는 Θ 라고 생각하자.
- ex) Θ = 8월 12일의 온도
- 0~1의 값을 가지는 가중치 β 가 있다.
- ex) β = 0.9
- Vt를 그 날의 경향이라고 생각하면 경향은 아래와 같이 구할 수 있다.
V0 = 0
V1 = β*V0 + (1-β)*Θ1
V2 = β*V1 + (1-β)*Θ2-1
...
vt = β*vt-1 + (1-β)*Θt
β 를 0.9로 설정하면 10일동안의 기온 평균과 비슷해지고 빨간색 그래프를 얻게 된다.
β 를 0.98 으로 설정하면 50일동안의 기온 평균과 비슷해지고 보라색 그래프를 얻게 된다.
곡선이 부드러워졌다. 더 많은 날짜의 기온과 평균을 이용하였기때문이다. 큰 범위에서 기온 평균을 구하기 때문에 올바른 값에선 벗어날 수 밖에 없다.오래된 데이터에 가중치가 비교적 크게 잡혀있으므로 최신의 동향보다는 과거의 데이터에 비교적 더 많이 이끌리는 것이다.
즉, 지수가중평균은 β 가 커지면 더 느리게 적응한다.
그럼 β가 낮을 때는 어떨까?
β가 0.5일 때는 2일의 기온평균만 구하는 것과 비슷해진다. 그래서 노란색 그래프를 얻게된다.
노이즈가 많지만 기온 변화에 빠르게 적응한다. 즉 최신의 경향을 더 많이 캐치할 수 있는 것이다.
머신러닝에선 어떻게 쓰일까?
앞에서 식을 봤을 때 V100까지 구한다고 생각해보자.
V100을 구하려면 앞의 항이 필요할 것이다. 근데 앞의 항은 앞의 항에서 나왔고 앞의 항은 그 앞의 항에서 나오고.... 반복이다.
그럼 굳이 앞의 항들을 각각 메모리에 다 저장할 필요가 있을까?
V100로 오기까지의 앞선 항들의 값들은 모두 메모리에 저장할 필요없이 계속 메모리에 덮어씌우기만 하면 될 것이다. 그래서 아주 적은 메모리를 사용하게 되어 효율적이다. 평균을 계산하는 가장 정확하고 최선인 방법은 아니다. 그럴려면 그냥 명시적으로 10일이나 50일 구하고 10이나 50으로 나누는 것이 더 추정치가 좋다. 그런데 그럴려면 메모리가 많이 들고 복잡한 구현이 필요하다. 머신러닝은 많은 변수를 계산해야하기 때문에 많은 변수의 평균(흐름에 따른)을 내고싶으면 컴퓨터 계산비용과 메모리 효율이 좋은 이 지수 가중 평균방법
을 쓴다.
'ML' 카테고리의 다른 글
4. 모멘텀이 있는 경사하강법 (Gradient Descent with Momentum) (0) | 2023.07.24 |
---|---|
3-2. 편향 보정 (Bias Correction) (0) | 2023.07.24 |
2. 미니배치 경사하강법 (Mini-batch Gradient Descent) (0) | 2023.07.24 |
1. 경사하강법과 역전파 정리 (0) | 2023.07.24 |
불균형 데이터 다루기 - Resampling (over-sampling, under-sampling) (0) | 2021.09.11 |