Optimizers
1. Gradient Descent
$$W_{t+1} \leftarrow W_{t} - \eta g_{t}$$
- $g_{t}$ = gradient
- $\eta$ = step size = learning rate
2. Momentum
관성
흐르던 gradient 방향을 좀 더 이어갈 수 있도록 유지해준다.
그래서 gradient가 너무 자주 방향이 바뀌는 것을 방지할 수 있다.
현재의 gradient를 계산해서 그 다음 학습 때 이 gradient 정보를 전달한다.
그래서 batch가 흐르던 방향의 gradient 정보를 활용할 수 있다.
$$a_{t+1} \leftarrow \beta a_{t}+g_{t}$$
$$W_{t+1} \leftarrow W_{t} - \eta a_{t+1}$$
- $\beta$ = momentum
- $g_{t}$ = gradient
- $a_{t+1}$ = accumulation
단점은 수렴해야할 때 그 전 gradient의 영향을 받아서 local minimum으로 수렴하지 못하는 경우가 있을 수 있다는 것이다.
3. Nesterow Accelerated Gradient : NAG
momentum은 현재의 gradient를 계산해서 update하지만
NAG는 momentum에서 움직이라는대로 움직인 후 그 지점에서 다시 gradient를 계산하여 다음에 활용한다.
$a_{t+1}$가 gradient decent를 한다.
$$a_{t+1} \leftarrow \beta a_{t} + \nabla\mathcal{L}(W_{t}- \eta\beta a_{t})$$
$$W_{t+1} \leftarrow W_{t} - \eta a_{t+1}$$
- $a_{t+1}$ = accumulation
- $\nabla\mathcal{L}(W_{t}- \eta\beta a_{t})$ =Lookahead gradient
local minimum에 조금 더 빨리 수렴할 수 있다.
4. Adagrad
처음으로 adaptive를 적용한 방법이다.
지금까지 neural network의 파라미터들이 얼마나 변했는지 정도를 보고,
많이 변했던 파라미터는 적게 변화시키고
많이 변하지 않았던 파라미터들은 많이 변화시키게 한다.
$$W_{t+1} \leftarrow W_{t} - \frac{\eta}{\sqrt{G_{t} + \epsilon}} g_{t}$$
- $G_{t}$ = Sum of gradient squares
지금까지 파라미터들이 얼마나 변해왔는지를 제곱해서 더해놓은 것
계속해서 커진다.
분모에 있기 때문에 많이 변한 파라미터는 많이 나누어져서 적게 변하게 된다.
하지만 계속해서 커지면 파라미터 업데이트가 안 되고 학습이 중단된다. - $\epsilon$
계산적으로 안정시키기 위한 입실론
5. Adadelta
adadelta는 adagrad 의 $G_{t}$가 계속해서 커지는 현상을 막기 위한 방법을 추가했다.
time step에 대해서 window size만큼의 시간에 대해서만 $G_{t}$를 모으면 된다.
하지만 $G_{t}$가 파라미터 수만큼 생기게 되어 exponential moving average(지수이동평균)를 이용한다.
$$G_{t} =\gamma G_{t-1} + (1-\gamma)g^{2}_{t}$$
$$W_{t+1} = W_{t} - \frac{\sqrt{H_{t-1}+\epsilon}}{\sqrt{G_{t} + \epsilon}} g_{t}$$
$$H_{t} = \gamma H_{t-1}+(1-\gamma)(\delta W_{t})^2$$
- $G_{t}$ = EMA of gradient squares
- $H_{t}$ = EMA of difference squares
adadelta는 learning rate이 없기 때문에 많이 변경할 수 있는 요소들이 없어서 많이 사용하지는 않는 편이다.
6. RMSprop
$$G_{t} =\gamma G_{t-1} + (1-\gamma)g^{2}_{t}$$
$$W_{t+1} =W_{t} - \frac{\eta}{\sqrt{G_{t} + \epsilon}} g_{t}$$
- $G_{t}$ = EMA of gradient squares
- $\eta$ = step size
adadelta에서 쓰던 gradient squares의 지수이동평균을 사용하고, 거기에 learning rate을 쓸 수 있게 바꾼 것이다.
7. Adam
gradient squares의 지수이동평균과 모멘텀을 같이 활용했다.
gradient 크기가 변함에 따라서 adaptive하게 learning rate을 바꿈과 동시에 이전의 gradient 정보를 참고하는 두 가지 기능을 한 번에 할 수 있다.
$$m_{t}=\beta_{1}m_{t-1}+(1-\beta_{1})g_{t}$$
$$v_{t}=\beta_{2}v_{t-1}+(1-\beta_{2})g^{2}_{t}$$
$$W_{t+1}= W_{t} - \frac{\eta}{\sqrt{v_{t}+\epsilon}} \frac{\sqrt{1-\beta^{t}_{2} }}{1-\beta^{t}_{1}}m_{t} $$
- $m_{t}$ = momentum
- $v_{t}$ = EMA of gradient squares
- $\beta_{1}$
얼마나 momentum을 유지시킬지 - $\eta$ = learning rate
- $\epsilon$
0으로 나누어지는 것을 막고자하는 파라미터
'부스트캠프 AI Tech 3기 > 이론 : U-stage' 카테고리의 다른 글
[Day14] DL Basic 4. Convolution은 무엇인가? (0) | 2022.02.09 |
---|---|
[Day13] DL Basic 3. Optimization - 3 : Regularization (0) | 2022.02.08 |
[Day13] DL Basic 3. Optimization 최적화 - 1 (0) | 2022.02.08 |
[Day13] DL Basic 2. 뉴럴 네트워크 - MLP (0) | 2022.02.07 |
[Day12] Data Viz 4-1. Seaborn 소개 (0) | 2022.02.07 |