ROKO

[coursera] Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization: Week 2 본문

Artificial Intelligence/Deep Learning

[coursera] Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization: Week 2

RO_KO 2024. 7. 1. 14:25
728x90

vectorization으로 학습 속도를 빠르게 했지만 전체 데이터 크기가 너무 커지면 학습속도가 느려지게 된다. 이때는 전체 학습데이터를 mini-batch로 나누어 학습시키면 속도가 빨라진다.

 

전체 학습데이터를 사용하는것을 batch gradient descent, 전체 학습데이터를 같은 크기 단위로 나누어 작은 배치를 사용하는것을 mini-batch gradient descent라고 한다. 각 1 epoch당 batch gradient descent는 역전파를 한번 하고 mini-batch gradient descent는 mini-batch 개수 만큼 역전파를 하게 된다.

 

batch 는 cost 가 단조감소하는 모습을 보이는 반면 mini-batch의 경우 전체적으로 감소하는 모습을 보이기는 하지만 진동이 수반된다. 이는 역전파마다 같은 데이터를 반영하는게 아닌 서로 다른 mini-batch 데이터를 기반으로 하기 때문에 나타나는 현상이다. stochastic gradient descent mini-batch 크기가 1인 경우이다.

 

Batch는 한번의 iteration이 오래걸리고 stochastic은 각 iteration은 빠르지만 불확실성이 커서 수렴까지 반복하는 전체 iteration 수가 많아서 느리다. 따라서 그 중간인 mini-batch가 가장 적절하다.

 

그러면 언제 mini-batch를 사용해야 할까?

데이터 수가 2000보다 작은 경우 그렇게 크지 않으므로 batch를 쓰는것이 좋고 2000보다 많다면 mini-batch 를 쓰는것이 좋다. mini-batch의 크기는 \(2^6, 2^7, 2^8, 2^9, 2^10 (rare)\) 이 사이에서 보통 선택하면 좋다. 2의 지수승 형태인 이유는 컴퓨터는 2진수 논리적 단위로 이루어져있어 하드웨어 연산 효율을 높이기 위함이다. 추가로 각 mini-batch 크기가 자신의 GPU에 돌아가는지 확인하는것을 잊지말자.

 

Exponentially weighted averages

\(v_t = \beta v_{t-1}+(1-\beta)\theta_t\) 는 \(\beta * 100\) 범위의 값을 반영한 지수 평균이라는 뜻이다.

 

Bias correction

EWA (exponentially weighted average)를 사용할때 초기 편향을 줄이기 위해 \(v_0=0\)으로 설정한다. 그리고 \(v_t\) 대신에 \(\frac{v_t}{1-\beta_t}\)를 사용해 초기값을 잘 반영하도록 한다. t가 커질수록 분모는 1에 근사해 영향이 사라진다.


Gradient descent with momentum

\(v_{dw}=\beta v_{dw}+(1-\beta)dw\)

\(w=w-\alpha v_{dw}\)

 

\(v_{dw}=\beta v_{dw}+dw\)

\( w=w-\alpha v_{dw} \)

두 버전 모두 사용 가능하지만 2번째 버전을 추천한다. \(\beta\)가 W에 영향을 미치는 수식을 사용하게 되면 \(\beta\)의 tuning에 따라 나머지 hyperparameter도 재조정하는 과정이 필요하기 때문이다.

 

RMSprop

momentum을 사용할 경우 이전의 속도값에 영향을 크게 받아 global minimum을 지나쳐 버릴 수 있다.

가중치와 편햐의 크기를 이용해 정규화하고 분모가 0이 되는것을 방지하기 위해 작은 값 \(\epsilon~10^{-8}\)을 넣어준다.

 

Adam (Adaptive moment estimation)

momentum + RMSprop이라고 생각하면 된다.

RMSprop과 momentum을 같이 보면서 초반 편향을 완화하기 위한 bias correction이 들어간 형태이다. Adam 저자는 \(\beta_1=0.9,\beta_2=0.999,\epsilon=10^{-8}\)을 hyperparameter로 쓰기를 추천했다.

Learning decay

초기에는 빠르게 수렴하기 위해 learning rate를 크게 잡으면 좋지만 optimum에 가까워 질수록 세밀하게 조정해야하기에 learning rate를 작게 바꾸어 주어야 한다. 

​\(\alpha_0\)과 decayRate를 hyperparameter로 한 수식을 사용한다.

혹은 discrete staircase를 사용하거나 exponentially decay를 사용하기도 한다. 중요한점은 학습이 지속됨에 따라 적절히 learning rate를 줄이도록 하는 함수를 사용하는 것이다.

The problem of Local Optima

다차원 공간에서 대부분의 local optima보다는 saddle point에 많은 영향을 받아서 이를 벗어나기 위한 여러 최적화 알고리즘을 사용해야한다. 또다른 문제는 plateaus이다. gradient가 거의 0에 근사한 완만한 표면인데 이 부분에 있으면 학습속도가 현저히 느려지게 된다.

728x90
Comments