Mini-batch Gradient Descent
이 텍스트는 신경망을 효율적으로 훈련시키기 위한 최적화 알고리즘의 중요성에 대해 논의합니다.
딥 러닝은 대용량 데이터에서 가장 잘 작동하지만 큰 데이터 집합을 처리하는 데 시간이 오래 걸릴 수 있습니다.
미니배치 경사 하강법은 훈련 속도를 높이기 위한 솔루션으로 소개됩니다.
미니배치 경사 하강법은 훈련 데이터를 작은 세트(미니배치)로 분할하고 이를 반복적으로 처리하는 방식입니다.
각 미니배치는 경사 하강법의 한 단계를 수행하는 데 사용되며, 이 프로세스는 여러 번 반복됩니다.
미니배치 경사 하강법은 대규모 데이터셋에 대한 훈련에서 배치 경사 하강법보다 훨씬 빠릅니다.
주요 포인트:
딥 러닝은 빠른 훈련을 가능하게 하는 최적화 알고리즘의 이점을 얻습니다.
미니배치 경사 하강법은 데이터를 미니배치로 분할하여 더 빠르게 처리하는 방법을 포함합니다.
각 미니배치는 훈련 중 한 단계의 경사 하강법을 수행하는 데 사용됩니다.
미니배치로 훈련하면 데이터를 한 번 통과하는 동안 여러 개의 경사 하강법 단계를 수행할 수 있습니다.
대규모 데이터셋에서 신경망을 훈련시키기 위해 미니배치 경사 하강법이 선호되는 방법입니다.
Understanding Mini-batch Gradient Descent

미니배치 경사 하강법을 사용하면 처음부터 훈련 진행 중에도 경사 하강 단계를 수행할 수 있습니다.
배치 경사 하강법은 각 반복에서 전체 훈련 세트를 처리하며 비용이 감소해야 합니다.
미니배치 경사 하강법에서는 각 반복에서 다른 미니배치 (X{t}, Y{t})를 처리하므로 비용 함수 J{t}의 감소가 모든 반복에서 일어나지 않을 수 있습니다.
미니배치 경사 하강법은 미니배치 크기를 선택해야 하는데, 미니배치 크기가 m이면 배치 경사 하강법이 되고, 크기가 1이면 확률적 경사 하강법이 됩니다.
최적의 미니배치 크기는 너무 작지도 너무 크지도 않아야 하며 일반적으로 64에서 512 사이가 일반적입니다. 종종 2의 제곱수를 사용하는 것이 성능면에서 유리할 수 있습니다.
미니배치 크기를 선택할 때 CPU/GPU 메모리에 맞추는 것이 중요하며, 메모리 용량과 훈련 샘플 크기에 따라 조절해야 합니다.
Exponentially Weighted Averages

이 내용은 지수 가중 이동 평균(Exponentially Weighted Moving Average)에 관한 것으로, 최적화 알고리즘을 이해하기 위한 기반 개념입니다.
지수 가중 이동 평균은 데이터의 추세나 지역 평균을 계산하는 데 사용됩니다.
데이터 예시로 런던의 일일 기온 데이터를 사용하며, 기온 데이터를 지수 가중 이동 평균을 사용하여 부드럽게 처리합니다.
지수 가중 이동 평균은 VT = beta * VT-1 + (1 - beta) * theta_T와 같은 공식을 사용하며, beta 값에 따라 처리 창 크기와 부드러움이 결정됩니다.
beta 값을 조정하면서 지수 가중 이동 평균을 계산하면 처리 창 크기와 부드러움이 변하며, 처리 창이 길어질수록 데이터가 부드럽게 처리되지만 반응 속도가 느려집니다.
beta 값은 하이퍼파라미터로 취급되며, 최적값은 데이터와 상황에 따라 다를 수 있습니다.
지수 가중 이동 평균은 최적화 알고리즘에 적용되며, 이해하고 적절한 beta 값을 선택하는 것이 중요합니다.
Understanding Exponentially Weighted Averages
이 비디오에서는 지수 가중 평균에 대해 이야기했습니다. 이것은 여러 최적화 알고리즘의 핵심 구성 요소가 되며 신경망을 훈련하는 데 사용하는 알고리즘 중요한 부분입니다. 따라서 이 비디오에서는 이 알고리즘이 실제로 어떤 작업을 하는지에 대한 직관을 조금 더 깊게 살펴보겠습니다.
먼저, 지수 가중 평균을 구현하는 중요한 방정식을 상기해봅시다. Beta가 0.9이면 빨간색 선을 얻습니다. Beta가 0.98에 가까우면 녹색 선을 얻고, 0.5와 같이 훨씬 작으면 노란색 선을 얻게 됩니다.
이 방정식을 사용하여 일일 온도의 평균을 어떻게 계산하는지 살펴봅시다. V100이 어떤 것인지 이해하기 위해 첫 번째 방정식을 살펴보겠습니다. V100은 0.1 * θ100 + 0.9 * 이전 날의 값이 됩니다. 그런데 V99는 어떨까요? 이 방정식에서 계산할 수 있습니다. V99는 0.1 * θ99 + 0.9 * V98이 됩니다. 그런데 V98은 어떻게 되는 걸까요? 여기서 얻을 수 있습니다. 이와 같이 계속 진행할 수 있습니다.
이러한 항목을 모두 곱하면 V100은 θ100, θ99, θ98, θ97, θ96 등의 가중 평균이라는 것을 보여줍니다. 이를 시각화하면 다음과 같습니다.
또한, 이 지수 가중 평균은 메모리를 매우 적게 사용한다는 이점이 있습니다. 하나의 숫자만 컴퓨터 메모리에 보관하면 되며 최신 값을 기반으로 이러한 공식으로 계속 덮어씌우면 됩니다. 그러나 이 방식은 평균을 계산하는 데는 가장 정확한 방법은 아닙니다. 지난 10일 또는 50일 동안의 온도를 명시적으로 합산하고 10 또는 50으로 나누는 이동 윈도우를 계산하는 것이 더 정확한 추정치를 제공하는 경우가 많습니다. 그러나 이것의 단점은 더 많은 메모리가 필요하며 구현이 더 복잡하며 계산 비용이 더 많이 든다는 것입니다.
Bias Correction in Exponentially Weighted Averages
편향 보정(bias correction): 지수 가중 이동 평균을 구현할 때, 초기에 편향된 결과를 얻는 문제를 해결하기 위한 기술입니다.
초기 문제: Beta 값이 0.98인 경우, 초기 값에서 너무 낮은 추정치를 얻는 문제가 있습니다. 예를 들어, 첫 번째 날의 온도가 40도 Fahrenheit라고 하면 초기 추정치는 매우 낮게 나옵니다.
기본 공식 문제: 초기 추정치를 얻는 과정에서 오류가 발생합니다. 예를 들어, V_1 = 0.02 * Theta_1로 계산되어 초기 추정치가 매우 낮아집니다.
편향 보정 방법: 초기 추정치를 보정하여 더 정확한 결과를 얻을 수 있습니다. 이를 위해 V_t를 1 - Beta^t로 나누어줍니다. 이렇게 하면 초기 학습 단계에서 더 정확한 추정치를 얻을 수 있습니다.
효과: 초기 학습 단계에서 추정치의 편향을 제거하여 보다 정확한 결과를 얻을 수 있습니다. Beta 값이 충분히 커질 때 편향 보정은 큰 영향을 미치지 않지만, 초기 학습 단계에서는 중요한 역할을 합니다.
머신 러닝에서의 활용: 대부분의 머신 러닝 구현에서는 초기 학습 단계에서의 편향을 감수하고 더 빠른 학습을 선호합니다. 그러나 초기 학습 단계에서 편향을 해결하려면 편향 보정을 사용할 수 있습니다.
Gradient Descent with Momentum
모멘텀(Momentum) 알고리즘: 모멘텀 또는 모멘텀을 활용한 경사 하강법은 표준 경사 하강법보다 거의 항상 빠르게 작동하는 알고리즘입니다.
아이디어: 모멘텀 알고리즘의 기본 아이디어는 경사값(기울기)의 지수 가중 평균을 계산하고 이를 사용하여 가중치를 업데이트하는 것입니다.
문제 설명: 기존의 경사 하강법은 수직 및 수평 방향으로의 진동을 유발하며 수렴 속도를 늦춥니다. 이러한 진동으로 인해 학습률을 크게 설정할 수 없어 수렴에 시간이 오래 걸릴 수 있습니다.
모멘텀 알고리즘의 원리: 경사 하강법을 개선하기 위해 각 반복마다 경사(기울기)를 계산하고 이를 이용해 가중치를 업데이트합니다. 그러나 이전 경사의 지수 가중 평균을 사용하여 업데이트를 진행합니다.
수식: vdW = Beta * vdW + (1 - Beta) * dW, vdb = Beta * vdb + (1 - Beta) * db, W = W - alpha * vdW, b = b - alpha * vdb (여기서 Beta는 보통 0.9, alpha는 학습률을 나타냄)
효과: 모멘텀 알고리즘은 경사 하강법의 진동을 완화하고, 빠르게 최적화 지점을 향하는 경로를 제공합니다. 이로 인해 빠른 학습이 가능해집니다.
하이퍼파라미터 조정: Beta 값은 주로 0.9를 사용하며, 학습률 alpha는 Beta 값에 따라 조정될 수 있습니다.
편향 보정: 모멘텀 알고리즘에서 편향 보정을 적용하는 경우가 있지만, 일반적으로 초기 학습 단계 이후에는 무시될 수 있습니다.
알고리즘 선택: 모멘텀 알고리즘은 경사 하강법보다 빠른 수렴을 제공하므로 대부분의 경우 유용하게 활용됩니다.
노트: Beta 값을 조정할 때, 수식에 따라 학습률 alpha도 조절해야 할 수 있으며, 이에 대한 버전이 있습니다. 그러나 보통 Beta 값 0.9와 수식에 1 - Beta 항을 포함한 버전이 많이 사용됩니다.
RMSprop
Momentum 알고리즘 리마인더: Momentum 알고리즘은 경사 하강법을 가속화하는 데 도움이 되는 알고리즘으로, 이전 경사값의 지수 가중 평균을 사용합니다.
RMSprop 알고리즘 소개: RMSprop는 Root Mean Square Prop의 약자로, 경사 하강법을 가속화하는 또 다른 알고리즘입니다.
문제: 경사 하강법을 사용하면 수직 방향으로 큰 진동을 유발할 수 있으며, RMSprop는 이를 완화하기 위해 사용됩니다.
동작 원리: RMSprop 알고리즘은 각 반복에서 경사값의 제곱에 대한 지수 가중 평균을 계산하고, 이를 사용하여 가중치를 업데이트합니다.
수식: SdW = Beta * SdW + (1 - Beta) * dW^2, Sdb = Beta * Sdb + (1 - Beta) * db^2, W = W - alpha * (dW / sqrt(SdW)), b = b - alpha * (db / sqrt(Sdb))
효과: RMSprop는 경사 하강법의 진동을 완화하고, 더 빠른 학습을 가능하게 합니다.
하이퍼파라미터: 주로 Beta 값은 0.9로 설정하며, 학습률 alpha는 RMSprop를 사용하면 큰 값을 사용할 수 있게 됩니다.
수치 안정성: SdW와 Sdb의 분모에 매우 작은 epsilon을 더하여 수치 안정성을 확보합니다.
Adam Optimization Algorithm
Adam 알고리즘 개요: Adam 알고리즘은 Momentum과 RMSprop을 결합한 최적화 알고리즘으로, 다양한 딥러닝 아키텍처에 효과적으로 적용되는 알고리즘입니다.
Adam 알고리즘의 초기화: 알고리즘을 초기화할 때, V_dw, S_dw, V_db, S_db를 0으로 초기화합니다.
Gradient 및 Momentum 업데이트: 각 반복에서 현재 미니배치에 대한 도함수(dw, db)를 계산하고, Momentum 업데이트를 수행합니다. 이때 Beta_1 하이퍼파라미터를 사용하여 지수 가중 평균을 계산합니다.
RMSprop 업데이트: RMSprop과 유사한 업데이트를 수행하며, 이때 Beta_2 하이퍼파라미터를 사용하여 미분값의 제곱에 대한 지수 가중 평균을 계산합니다.
Bias Correction: Adam 알고리즘의 일반적인 구현에서는 편향 보정을 수행합니다. Bias correction을 통해 V_dw, V_db, S_dw, S_db를 편향 보정된 값으로 업데이트합니다.
파라미터 업데이트: 최종 파라미터 업데이트 공식은 Gradient Descent with Momentum과 RMSprop의 영향을 결합하여 계산됩니다. 학습률 Alpha와 편향 보정된 값을 사용하여 업데이트합니다.
하이퍼파라미터 조정: Adam 알고리즘에는 여러 하이퍼파라미터가 있으며, 학습률 Alpha는 주로 조정해야 할 하이퍼파라미터 중 하나입니다. Beta_1은 보통 0.9로 설정하고, Beta_2는 0.999로 설정하는 것이 권장됩니다. Epsilon은 10^-8 정도로 설정하며, 일반적으로 조정할 필요가 없습니다.
Adam의 이름 유래: Adam은 Adaptive Moment Estimation의 약어로, Beta_1은 도함수의 평균(1st moment), Beta_2는 제곱의 지수 가중 평균(2nd moment)을 계산함에 따라 "적응적 모멘트 추정"이라는 이름이 붙었습니다.
Learning Rate Decay
학습률 감소 공식
학습률 감소(learning rate decay)는 학습 알고리즘을 가속화하기 위한 방법 중 하나입니다.
학습률 감소의 목적은 초기에는 빠르게 학습하고, 수렴에 가까워질수록 학습률을 감소시켜 미세한 조정을 가능하게 하는 것입니다.
학습률 감소를 구현하는 방법 중 하나는 학습률(α)을 초기 학습률(α0)을 사용하여 1 / (1 + decayRate * epochNumber)로 계산하는 것입니다.
여기서 decayRate는 학습률 감소 속도를 조절하는 하이퍼파라미터이며, epochNumber는 현재 에포크 번호입니다.
학습률 감소를 적용할 때 초기 학습률(α0) 및 decayRate 하이퍼파라미터 값을 실험적으로 조정하여 성능을 향상시킬 수 있습니다.
이외의 내용:
학습률 감소 방법 중에는 지수 감소(Exponential Decay) 및 다른 수식을 사용하는 방법도 있으며, 이를 실험하여 가장 잘 맞는 학습률 감소 방법을 선택할 수 있습니다.
수동 학습률 감소(manual decay)는 모델 훈련 중에 학습률을 수동으로 조정하는 방법이며, 모델이 오랜 시간동안 훈련되는 경우에 사용될 수 있습니다.
주요 내용은 초기 학습률과 decayRate 하이퍼파라미터를 튜닝하여 학습률을 조절하는 방법이며, 이를 통해 초기 학습률로 빠르게 학습하고, 나중에는 미세하게 조정하여 수렴 속도를 향상시킬 수 있습니다. 학습률 감소 방법은 다양하게 실험하여 최적의 설정을 찾는 것이 중요합니다.
The Problem of Local Optima
초기에는 딥 러닝에서 지역 최솟값(local optima)에 갇힐까 걱정되었지만, 현재의 이론적 이해를 통해 우리의 관점이 바뀌었습니다.
고차원 공간에서 대다수의 gradient가 0인 지점은 지역 최솟값이 아닌 saddle point입니다.
Plateau(평평한 지역)은 학습을 크게 느리게 할 수 있는데, gradient가 긴 시간 동안 거의 0인 지역을 의미합니다.
큰 신경망과 고차원 공간에서는 지역 최솟값에 갇히기 어렵고, 주로 plateau가 학습을 느리게 만드는 주요 문제입니다.
고차원 공간에서의 최적화 문제에 대한 직관이 부족하며, 최적화 알고리즘의 이해는 계속 진화하고 있습니다.
주요 내용은 딥 러닝에서는 고차원 공간에서 지역 최솟값에 갇히는 것보다 plateau가 학습을 느리게 만드는 주요 문제임을 강조하고 있습니다. 최적화 알고리즘의 선택은 plateau를 효과적으로 극복하도록 도와줄 수 있으며, 이러한 고차원 공간에서의 최적화에 대한 직관은 아직 진화 중이라고 설명하고 있습니다.