안녕하세요, HELLO
오늘은 DeepLearning.AI에서 진행하는 앤드류 응(Andrew Ng) 교수님의 딥러닝 전문화의 두 번째 과정인 "Improving Deep Neural Networks: Hyperparameter Tuning, Regularization and Optimization"을 정리하려고 합니다.
"Improving Deep Neural Networks: Hyperparameter Tuning, Regularization and Optimization"의 강의 목적은 '랜덤 초기화, L2 및 드롭아웃 정규화, 하이퍼 파라미터 튜닝, 배치 정규화 및 기울기 검사와 같은 표준 신경망 기술' 등을 배우며, 강의는 아래와 같이 구성되어 있습니다.
~ Practical Aspects of Deep Learning
~ Optimization Algorithms
~ Hyperparameter Tuning, Batch Normalization and Programming Frameworks
"Improving Deep Neural Networks" (Andrew Ng)의 2주차 "Optimization Algorithms"의 강의 내용입니다.
CHAPTER 1. 'Mini-batch gradient descent'
CHAPTER 2. 'Exponentially weighted averages'
CHAPTER 3. 'Gradient descent with momentum'
CHAPTER 4. 'Adam optimization algorithm'
CHAPTER 5. 'Local optima'
CHAPTER 1. 'Mini-batch gradient descent'
□ Batch vs. mini-batch gradient descent
배치 경사 하강법은 전체 훈련 샘플에 대해 훈련 후 경사 하강을 진행합니다. 미니 배치 경사 하강법은 전체 훈련 샘플을 작은 훈련 세트인 미니 배치로 나눈 후. 미니 배치 훈련 후 경사 하강을 진행합니다.
배치 경사 하강법은 큰 데이터 세트를 훈련하는데 많은 시간이 들기에 결과적으로 경사 하강을 진행하기까지 오랜 시간이 결립니다. 따라서 작은 훈련 세트인 미니 배치로 나누어 훈련 후 경사 하강을 진행합니다.
벡터화는 전체 트레이닝 세트 훈련에 도움이 됩니다. (Vectorization allows you to efficiently compute on m examples.)
전체 데이터 세트에서 알고리즘을 구축하기 전에, 작은 규모의 데이터 세트에서 기울기를 강하하면 훨씬 더 빨리 알고리즘을 구축할 수 있습니다. mini-batch의 묶음, 집합을 x 위첨자 중괄호로 표기할 수 있습니다. (x superscript curly braces)
기울기 강하법을 적용함에 있어서, x와 y가 x{t}, y{t}인 것을 제외하면 동일합니다. 이렇게 1회 진행하는 1 epoch라고 하며, epoch는 트레이닝 세트를 1번 통과한다는 의미입니다.
□ 'Understanding mini-batch gradient descent'
경사 하강법을 적용하게 되면 반복 횟수(iteration)에 따라 비용 함수는 줄어듭니다.
반면에 mini-batch 경사 하강법을 적용하면 매번 다른 트레이닝 세트를 훈련하게 됩니다. 이로 인해 전체 트레이닝 세트를 훈련할 때 보다 그래프에 noisy를 보이면서 점차적으로 비용 함수는 작아집니다. mini-batch별로 noise를 보이는 이유는 특정 mini-batch가 더 어렵거나, 쉬울 수 있기에 훈련(iteration)을 진행할 때마다 비용 함수에 변동이 있을 수 있습니다.
mini-batch gradient descent에서 파라미터는 mini-batch 크기(size)입니다. 미니 배치 사이즈는 2의 제곱일 때 훈련 속도가 가장 빠르며 일반적으로 미니 배치는 64에서 512를 사용합니다. 만약에 size = m이면, 이는 단순히 전체 트레이닝 세트에서 기울기 강하 법을 적용한 것입니다.
size =1, stochastic gradient descent. every example is its own mini-batch. 평균적으로 비용 함수를 낮추는 방향으로 가겠지만, 가끔씩은 틀린 방향으로 갈 것입니다. 하지만 경사 하강법과 다르게 비용 함수의 최저점에 도달하기는 어렵습니다. 벡터화에서 거의 대부분의 속도를 잃게 됩니다.
mini-batch size가 1과 m 사이에 숫자라면, 긴 훈련 시간이 소요됩니다. 그래서 mini-batch size가 너무 크고, 작지 않을 때 가장 빠른 훈련 속도를 가집니다. 2가지 장점을 가지면, 하나는 가장 많은 벡터화를 가집니다. 전체 트레이닝 세트를 진행하기 전에 기다릴 필요 없이 진전이 있게 됩니다.
□ mini-batch size
1. 작은 트레이닝 세트 >> batch gradient set (less than 2,000)
2. 큰 트레이닝 세트 >> 64, 512 컴퓨터 메모리에 따라 2의 n승에 따라 속도가 빠릅니다.
2, 4, 8,... 512 미니 사이즈가 익숙합니다. 일반적으로 64, 128, 256, 512를 사용합니다.
3. x{t}, y{t}가 cpu, gpu 메모리에 들어가도록 하는 것이 중요합니다.
CHAPTER 2. 'Exponentially weighted averages'
□ Exponentially weighted averages
지수 가중 이동 평균법(Exponentially weighted averages, 지수적 가중 평균을 활용한 지수 가중 이동 평균)은 기울기 강하 방법보다 빠릅니다. 지수 가중 이동 평균법은 최근의 데이터에 더 많은 영향을 받는 데이터의 평균 흐름을 계산하기 위함입니다. 그래서 최근 데이터 지점에 더 높은 가중치를 부여합니다.
Vt를 1/(1-b) days로 생각하면 됩니다. 그래서 b가 0.9인 경우에는 1/0.1로 10일치의 평균과 유사하며, b가 0.98인 경우에는 50일치의 평균과 유사합니다. 이때 그래프를 살펴보면, 긴 기강의 그래프가 더 부드러운 것을 볼 수 있습니다. 이는 평균값을 더 많은 일수로 구했기 때문입니다. 하지만 이 커브는 더 큰 범위의 평균치를 구하면서 오른쪽으로 이동합니다. 더 느리게 움직이게 되며, 차이를 빠르게 반영하기 어렵습니다.
□ Understanding exponentially weighted averages
□ Bias correction in exponentially weighted average
V0가 0이면, 초기값은 원본 값과 상당히 먼 값을 가집니다.
t가 커질수록 분모의 b의 t승은 0에 수렴하여, Vt는 지수 이동 평균선에 근접합니다.
CHAPTER 3. 'Gradient descent with momentum'
□ Gradient descent with momentum
Gradient descent with momentum는 일반적인 기울기 하강 알고리즘보다 거의 항상 더 빨리 작동합니다. 기본 아이디어는 기울기의 기하급수적 가중 평균치를 산출하는 것입니다. 그다음에 이 기울기를 이용해서 weights를 업데이트합니다.
이때 빨간 점은 최저점입니다. 세로축으로는 느린 훈련 속도를 원하며, 가로축으로는 빠른 훈련 속도를 원합니다. 세로축에 대해서 더 작은 변동을 가져오고, 가로축에 대해서는 큰 변동을 가져옵니다
이동 평균은 속력, 그리고 기울기는 가속력으로 생각하면 되고, 속력에 곱해지는 beta는 마찰력이라고 생각하면 됩니다.
일반적으로 활용되는 beta는 0.9로, 10개의 기울기 강하의 평균치를 활용합니다.
□ RMSprop (Root Mean Square propagation)
RMSprop는 기울기 강하의 속도를 증가시킬 수 있습니다.
RMSprop를 적용할 때, Sdw와 Sdb의 값이 0에 근사하게 되면, inf 값을 가지게 됩니다. 이를 예방하기 위해 작은 값인 epsilon을 더합니다. epsilon은 어떤 값이어도 상관없지만 10의 -8승을 일반적으로 사용합니다.
CHAPTER 4. 'Adam optimization algorithm'
□ Adam optimization algorithm
Adam optimization algorithm은 momentum과 RMSprop를 더해서 만듭니다.
□ Learning rate decay
CHAPTER 5. 'Local optima'
□ Local optima (국소 최적)
\1과 w2에 대한 최소의 비용 함수 J를 찾으려는 그래프입니다.
기울기가 0이 되는 부분이 항상 국소 최적값은 아닙니다. 아래 그림처럼 기울기가 0인 대부분의 지점은 안장점입니다.
이는 높은 차원(예를 들어 20,000차원)에 경우에는 아래로 볼록한 그래프 값을 구하기 힘듭니다. 약 2의 -20,000승의 값입니다. 반대로 위로 볼록한 그래프는 반복해서 나올 수 있기에 안장점(saddle point)이 나오기 쉽습니다.
plateau는 기울기가 0이거나 0에 근접해서 그래프가 완만한 것을 의미합니다. 이를 plateau를 벗어나는 게 중요합니다. 러닝 속도가 늦어지는 부분입니다.
■ 마무리
"Improving Deep Neural Networks" (Andrew Ng)의 2주차 "Optimization Algorithms"에 대해서 정리해봤습니다.
그럼 오늘 하루도 즐거운 나날 되길 기도하겠습니다
좋아요와 댓글 부탁드립니다 :)
감사합니다.
'COURSERA' 카테고리의 다른 글
week 2_Optimization Methods 실습 (Andrew Ng) (0) | 2022.02.20 |
---|---|
week 2_Optimization Algorithms 연습 문제 (Andrew Ng) (0) | 2022.02.20 |
week 1_Gradient Checking 실습 (Andrew Ng) (0) | 2022.02.18 |
week 1_Regularization 실습 (Andrew Ng) (0) | 2022.02.18 |
week 1_Initialization 실습 (Andrew Ng) (0) | 2022.02.18 |
댓글