이번 투고에서는 머신러닝 모델에서 옵티마이저의 역할에 대해 알아보고자 합니다. 또한, 이러한 함수의 이면에 있는 기초적인 수학에 대해서 이해하며, 활용사례와 장점, 단점에 대해서 알아봅시다.
옵티마이저란 무엇인가??
여러분들은 손실 함수(loss function)는 모델에 제공된 데이터에 대한 성능의 좋고 나쁨을 파악하기 위해 사용된다는 것을 알고 있을 겁니다. 손실 함수는 기본적으로 주어진 훈련 표본에 대한 예측 값과 계산된 값 사이의 차이를 합한 것입니다. 더 좋은 성능을 위해 뉴럴 네트워크가 손실을 최소화하도록 훈련하기 위해, 모델과 손실 함수에 관련된 가중치와 매개변수를 조정할 필요가 있습니다.
이때, 옵티마이저가 굉장히 중요한 역할을 하게 됩니다.
예를 들어봅시다.
길 모르는 언덕을 내려오는 사람을 생각해봅시다. 이 사람이 계곡으로 가는 길은 잘 모르지만 목적지에 더 가까이 내려가고 있는지 더 멀리 가고 있는지 알 수 있을 것입니다. 올바른 방향으로 계속 걸으면 계곡에 닿을 것인데 이것이 옵티마이저의 영향으로 손실 함수와 관련하여 전역 최솟값에 도달하는 것입니다.
옵티마이저 종류
머신러닝에서 가장 자주 사용되고 평가되는 옵티마이저에 대해 알아봅시다.
경사하강법(Gradient Descent)
경사 하강법은 반복 최적화 알고리즘인데요. 최솟값을 구하기 위해 손실 함수의 도함수에 의존합니다. 많은 반복과 epoch에 대해 알고리즘을 실행하면 전역 최솟값(가장 가까운 값)에 도달하는데 도움이 됩니다. 약간의 변경으로 손실 함수의 출력을 줄이기 위해 할 수 있는 것은 weight을 0.02 줄이거나, parameter을 0.005 늘리는 방법입니다.
Gradient의 역할
Gradient는 일반적으로 방정식의 기울기를 말합니다. Gradient는 부분 도함수이며, 함수의 가중치나 매개변수의 작은 변화로 손실 함수에도 변화된 양만큼 영향을 미치게 됩니다.
학습률(Learning Rate)
학습률은 알고리즘이 전역 최소값에 도달하기 위해 취하는 것으로 값이 너무 클 경우 전역 최솟값이 생략될 수 있으며, 모델은 손실 함수의 최적 값에 도달하지 못할 수 있습니다. 반면, 값이 너무 작을 경우 수렴하는데 너무 오랜 시간이 걸릴 수 있습니다. 따라서 스텝의 크기는 경사 값(Gradient value)에 따라 달라지게 됩니다.
위의 식에서 α는 학습속도, J는 비용 함수, ϴ는 갱신해야 할 파라미터입니다. ϴJ에 대한 J의 편도 함수는 gradient를 주게 되며, 전역 최솟값에 가까워질수록 곡선의 기울기/경사가 점점 더 낮아집니다. 이로 인해 미분 값이 더 작아지고 step size가 자동으로 감소한다는 것에 유의해야 합니다.
경사 하강법의 예
- Vanilla/Batch Gradient Descent: 모든 학습 데이터셋을 사용한 gradient계산(느리고 계산이 무거움)
- Stochastic Gradient Descent: 각 학습 데이터셋에 대한 경사 계산(불안정적이고 전역 최솟값을 얻은 후에도 계산을 진행하지만 메모리 효율이 높음)
- Mini Batch Gradient Descent: 학습 데이터셋을 미니 배치(32, 64,.... 보통 2의 거듭제곱)로 분할하여 동일한 gradient 계산(분산이 적으며 빠르고 메모리가 효율적임)
경사 하강법의 장점
매우 빠르고 이해하기 쉽고 직관적인 계산법입니다.
경사 하강법의 단점
데이터 셋이 매우 클 경우(항상 배치 사용) 전체 데이터 셋에 대해 경사 하강법을 실행하는 데 시간이 너무 오래 걸립니다.
Momentum Based Optimizers
최적화는 올바른 방향(아래쪽)의 이동에 초점을 맞추어 모형이 수렴하는데 도움이 되고 다른 모든 유의미한 방향의 분산을 줄입니다. 따라서, 관련 방향으로 가파르게 이동하기 위해 최적화 알고리즘에 다른 매개변수 'Y'를 추가하면 수렴으로 더 빠르게 이동할 수 있습니다. 운동량 매개변수 'Y'의 값은 일반적으로 0.9입니다. 그러나 동시에 최적의 결과를 얻으려면 여러 값을 변경해보는 시도를 해야 합니다.
Nesterov Accelerated Gradient (NAG)
모멘텀 값이 너무 높으면 최솟값을 초과여 다시 상승할 수 있습니다. 따라서 공처럼 에너지가 너무 많으면 굴러 떨어진 뒤 평평한 곳에서 멈추지 않고 반복하게 됩니다.
하지만, 알고리즘이 언제 속도를 늦춰야 하는지 안다면 최솟값에 이를 수 있습니다. NAG 알고리즘에서 시간 t의 gradient는 시간 t + 1의 추정 gradient도 고려하므로 감속 여부를 더 잘 알 수 있습니다. 기존 운동량 알고리즘보다 더 잘 작동할 거고요.
위의 식에서 (ϴ -ϒvt-1)는 parameter의 다음 근사치이고 ∇J(ϴ -ϒvt-1)는 미래의 값에 대한 gradient입니다.
NAG의 장점
움직임 또는 미래의 gradient를 이해 가능하다. 따라서 경사 값이 작거나 경사가 낮을 때는 운동량을 감소시키고 경사가 급할 때는 운동량을 증가시킬 수 있습니다.
NAG의 단점
NAG는 파라미터의 중요도와 관련하여 적응하지 않습니다. 따라서 모든 파라미터는 동일한 방법으로 갱신됩니다.
AdaGrad — Adaptive Gradient Algorithm
알고리즘이 다른 파라미터에 대해 학습 속도를 조정한다면 얼마나 좋을까요???? 일부 가중치는 최적의 동작을 하기 위해 값이 얼마나 경신되는지에 따라 학습률이 달라집니다. 빈도가 낮은 매개변수에 대해서는 학습률이 더 크게 업데이트가 되고 빈도가 낮은 매개변수에 대해서는 더 작은 업데이트가 진행되며 학습률은 항상 감소하게 됩니다.
여기서 AdaGrad는 이전 gradient 제곱의 합을 사용하여 파라미터의 학습률을 계산합니다. (∇L(ϴ)는 ϴ에 대한 cost function의 gradient 또는 부분 도함수.)
AdaGrad 장점
누락된 샘플이 있거나 본질적으로 희박한 데이터 셋에 매우 적합합니다.
AdaGrad 단점
위의 공식에 따르면 더 큰 수로 나누면(이전 gradient 합계는 시간이 지남에 따라 점점 더 커짐) 학습 속도가 감소하기 때문에 학습 속도가 느려질 수 있습니다.
RMS-Prop — Root Mean Square Propagation
RMS-Prop은 AdaGrad와 거의 유사하지만 약간의 차이가 있습니다. Gradient의 합계 대신 지수 감쇠 평균을 사용합니다. 따라서 RMS-Prop은 기본적으로 AdaGrad와와 모멘텀을 결합하는데요. 또한 모든 기울기를 운동량에 사용하는 대신 운동량 계산에 가장 최근의 기울기만 고려합니다. 이를 통해 모델은 현재 시나리오에서 학습률을 증가시켜야 하는지 감소시켜야 하는지에 대한 이해를 얻을 수 있습니다.
RMS-Prop 장점
AdaGrad는 시간 단계별로 학습 속도를 낮추지만 RMS-Prop는 각 단계별로 학습속도의 증가 또는 감소에 적응 할 수 있습니다.
RMS-Prop 단점
학습이 매우 느리다!!
Adam — Adaptive Moment Estimation
Adam Optimizer는 적용형 학습속도 기술을 사용하여 과거 gradient의 첫 번째 및 두 번째 순간부터 현재의 gradient도 계산합니다. Adam Optimizer는 운동량과 RMS-prop의 조합으로 볼 수 있으며 광범위한 문제에 가장 널리 사용되는 Optimizer입니다.
RMSProp에서처럼 첫 번째 순간에 대한 학습 속도에 영향을 미치지 않고 Adam은 gradient에서 두 번째 순간의 평균을 사용합니다. 또한 Ada은 gradient와 gradient 제곱의 지수 이동평균을 계산합니다. 따라서 Adam은 AdaGrad와 RMS-Prop의 조합으로 이루어집니다.
위의 공식에서는 α는 학습 속도, β1(일반적으로 ~ 0.9)은 첫 번째 모멘트에 대한 지수 붕괴 속도, β2는 두 번째 모멘트에 대한 지수 붕괴 속도(일반적으로 ~ 0.999)입니다. ∈ 는 0으로 나누지 않기 위한 값입니다.
Adam 장점
Adam optimizer는 대규모 데이터 셋에 적합하며 계산 효율이 높습니다.
Adam 단점
Adam optimizer가 더 빨리 수렴하는 경향이 있기 때문에 몇 가지 단점이 있지만, 확률적 경사 하강법과 같은 다른 알고리즘은 데이터 포인트에 초점을 맞추고 더 나은 방식으로 일반화합니다. 따라서 성능은 제공되는 데이터 유형가 속도, 일반화의 균형에 따라 달라집니다.
Race to the Global Minima
다양한 optimizer가 모델이 특정 데이터 공간의 전역 최솟값에 도달하는 데 어떻게 도움이 되는지에 대한 애니메이션입니다.
결론
이번 투공에서 경사 하강법 및 그 변형, Nesterov 가속 기울기, AdaGrad, RMS-Prop 및 Adam과 같은 다양한 최적화 도구와 주요 사용 사례에 대해 알아봤습니다. 가장 많이 사용되는 optimizer 기능이며 효율적인 신경망을 개발하는 데 필수적입니다. Optimizer를 선택하는 것은 효율적이고 빠른 신경망을 구축하는 데 영향을 미칩니다.
끝!✂✂✂
'인공지능' 카테고리의 다른 글
"뇌 과학과 인공지능의 만남: 기초부터 이해하기" (1) | 2024.01.10 |
---|---|
뇌과학 인공지능, 인류의 미래를 바꾼다. (1) | 2024.01.09 |
배치 정규화-속도 향상 미세조정|Neural Network (0) | 2022.03.29 |
Segmentation map-도로 이미지 만들기|Pix2Pix (0) | 2022.03.24 |
[Part5]Sketch2Pokemon-학습 및 테스트하기|Pix2Pix (2) | 2022.03.23 |