<content>
- gradient descent
- momentum
- RMSProp
- Adam
1. Gradient Descent
Gradient Descent : loss๋ฅผ parameter์ ๋ํด ๋ฏธ๋ถํ ๊ฐ์ ์ด์ฉํ์ฌ parameter๋ฅผ ๊ฐฑ์ ํ์
- batch gradient descent : ์ ์ฒด ๋ฐ์ดํฐ๋ฅผ ํ ๋ฒ์ ํ์ต
- ๋ชจ๋ ์๋ฃ๋ฅผ ๋ค ๊ฒํ ํด์ ๋ด ์์น์ ๊ธฐ์ธ๊ธฐ๋ฅผ ๊ณ์ฐํด์ ๊ฐ ๋ฐฉํฅ์ ์ฐพ๊ฒ ๋ค
- iteration 1๋ฒ์ parameter update 1๋ฒ ๐ฅ -> ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฐ๋ค๋ ๋จ์
- vectorize ๊ฐ๋ฅํ๋ค ๐
- mini batch gradient descent : mini batch ๋จ์๋ก ํ์ต
- iteration 1๋ฒ์ ์ฌ๋ฌ ๋ฒ์ parameter update ๐
- vectorize ๊ฐ๋ฅํ๋ค ๐
- stochastic gradient descent : ๋ฐ์ดํฐ ํ๋ ๋จ์๋ก ํ์ต
- vectorize ๋ถ๊ฐ๋ฅํ๋ค ๐ฅ
- ์ง์ญ์ ์ธ ํน์ง์ ๋ฏผ๊ฐํ๊ฒ ๋ฐ์ํ๋ค
- ๊ทธ๋ ๋ค๋ฉด ์ด๋ ํ ๋ฐฉ์์ ์ฌ์ฉํด์ผ ํ ๊น?
- data์ ํฌ๊ธฐ๊ฐ ์๋ค๋ฉด (2,000๊ฑด ์ดํ) -> batch gradient descent ์ฌ์ฉ
- data์ ํฌ๊ธฐ๊ฐ ํฌ๋ค๋ฉด -> mini batch gradient descent
- ์ผ๋ฐ์ ์ผ๋ก mini batch์ ํฌ๊ธฐ๋ 64, 128, 256, 512 ์ค ์ ํํ๋ค.
- minibatch ์ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ CPU ํน์ GPU ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ๋๋ก ํด์ผ ํ๋ค.
- ํ์ง๋ง ๋ ์ข์ optimizer๊ฐ ์กด์ฌํ๋ค! ๋ ์์๋ณด์
โ Momentum optimizer์ ๋ค์ด๊ฐ๊ธฐ ์ , ์์๋๋ฉด ์ข์ ์ง์!
- 1. exponentially weighted average (์ง์๊ฐ์คํ๊ท )
- $$ V_t = \beta V_{t-1}+(1-\beta)\theta_{t} $$
- V_t๋ ๋์ ๋ ์ ๋ณด (๊ฐ์คํ๊ท )
- theta_t๋ ํ์ฌ ์์ ์ ์ ๋ณด
- V_t๋ 1/(1-beta) ์์ ๋์์ ํ๊ท ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ค๊ณ ๋ณด๋ฉด ๋๋ค.
- beta = 0.9 -> ์ง๋ 10์ผ ๋์์ ๊ฐ์คํ๊ท
- beta = 0.99 -> ์ง๋ 100์ผ ๋์์ ๊ฐ์คํ๊ท
- beta๊ฐ ์ปค์ง์๋ก ์ด๋ค ํจ๊ณผ๊ฐ ์๋๊ฐ?
- ๊ทธ๋ํ๊ฐ smooth ํด์ง๋ ํจ๊ณผ๊ฐ ์๊ณ
- ์ต๊ทผ์ ๊ฒฝํฅ์ ๋ฆ๊ฒ ๋ฐ์ํ๋ ํจ๊ณผ๊ฐ ์๋ค(shift to left)
- $$ V_t = \beta V_{t-1}+(1-\beta)\theta_{t} $$
- 2. bias correction
- ์ด๊ธฐ V_0์ 0์ผ๋ก ์ค์ ํ๋ฉด ์ด๊ธฐ ์์ ์๋ ํ์ฌ ๋ฐ์ดํฐ์ ๊ฒฝํฅ์ ์ ๋ฐ์ํ์ง ๋ชป ํ๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ด bias correction์ด๋ค.
- $$ V_t = \frac{V_t}{1-\beta^{t}} $$
- ์ด๊ธฐ์๋ V_t๋ฅผ ์กฐ๊ธ ๋ ํค์์ฃผ๋ ํจ๊ณผ๊ฐ ์๋ค.
- ํ์ง๋ง t๊ฐ ์ปค์ง์๋ก beta_t๋ 0์ ์๋ ดํ๊ณ , ๋ฐ๋ผ์ V_t์ ๋ฏธ์น๋ ์ํฅ๋ ฅ์ด ๊ฑฐ์ ์๋ค.
2. Mometum
momentum : ์๊น ๋ด๋ ค์ค๋ ๊ด์ฑ ๋ฐฉํฅ์ผ๋ก ๊ฐ์! (๋ฐฉํฅ ์กฐ์ )
- $$ VdW = \beta VdW+(1-\beta)dW $$
- $$ Vdb = \beta Vdb + (1-\beta)db $$
- $$ W := W-\alpha VdW $$
- $$ b := b-\alpha Vdb $$
- ์ผ๋ฐ์ ์ผ๋ก beta๋ 0.9๋ก ์ค์ ํ๋ค. (์ด์ 10 ์์ ์ ์ ๋ณด๋ฅผ ํ์ฉํ๋ค๊ณ ๋ณด๋ฉด ๋๋ค)
- ๋ณธ๋ W := W-alpha*dW, b := b-alpha*db๋ฅผ ํด์ฃผ๋ ๊ฒ๊ณผ ์ด๋ ํ ์ฐจ์ด๊ฐ ์๋๊ฐ?
- dW ๋์ VdW, db ๋์ Vdb๋ฅผ ์ฌ์ฉํ์ฌ ์ด์ gradient ์ ๋ณด๋ฅผ ๊ณ ๋ คํด์ฃผ๋ ๊ฒ์ด๋ค.
(์ฌ๊ธฐ์ VdW, Vdb๋ gradient์ exponentially weighted average์ด๋ค. ์ด๊ฒ์ด ์ฐ๋ฆฌ๊ฐ ์์์ ๋ณธ ๊ฐ๋ ์ ๋ค๋ค๋ ์ด์ ์ด๋ค. - ์ฆ ํ์ฌ์ gradient๊ฐ 0์ ๊ฐ๊น๋๋ผ๋ ์ด์ ์ gradient ์ ๋ณด๋ฅผ ํ์ฉํ์ฌ ๋ ๋์๊ฐ ์ ์๋ ๊ฒ์ด๋ค.
- ๊ฐ๋จํ ์์ฝํ๋ฉด, ์๊น ๋ด๋ ค์ค๋ ๊ด์ฑ ๋ฐฉํฅ์ผ๋ก ๊ฐ์! ๋ผ๋ ์์ด๋์ด์ด๋ค.
3. RMSProp
RMSProp(Root Mean Square PROPagation) : ์ํฉ์ ๋ฐ๋ผ step size ์กฐ์ ํ์! (์คํ ์กฐ์ )
- $$ SdW = \beta SdW + (1-\beta)dW^2 $$
- $$ Sdb = \beta Sdb + (1-\beta)db^2 $$
- $$ W := W - \alpha \frac{dW}{\sqrt{SdW}+\epsilon} $$
- $$ b := b - \alpha \frac{db}{\sqrt{Sdb}+\epsilon} $$
- ์์ ์ ๊ณฑ์ element-wise product์ด๋ค.
- RMSProp์์ beta๋ 0.999๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ค.
- epsilon์ ๋ํด์ฃผ๋ ์ด์ ๋ SdW, Sdb๊ฐ 0์ธ ์ํฉ์ ๋ฐฉ์งํ๊ธฐ ์ํจ์ด๋ค.
- ๋ณธ๋ W := W-alpha*dW, b := b-alpha*db๋ฅผ ํด์ฃผ๋ ๊ฒ๊ณผ ์ด๋ ํ ์ฐจ์ด๊ฐ ์๋๊ฐ?
- ๋ณด๋ฉด dW๋ฅผ sqrt(SdW)๋ก ๋๋ ์ฃผ๊ณ ์๋ค.
์ด๊ฒ์ ์๋ฏธ๋ dW์ ๊ฐ์ด ํฌ๋ค๋ฉด ๋ณดํญ์ ์๊ฒ, dW์ ๊ฐ์ด ์๋ค๋ฉด ๋ณดํญ์ ํฌ๊ฒ ํด์ฃผ๊ฒ ๋ค๋ ์๋ฏธ์ด๋ค. - ์ฆ ๋งค ์๊ฐ ๋์ผํ ๋ณดํญ ์ฌ์ด์ฆ๋ฅผ ์ ์งํ๋ ๊ฒ์ด ์๋๋ผ, gradient์ ๊ฐ์ ๋ฐ๋ผ ๋ณดํญ ์ฌ์ด์ฆ๋ฅผ ๋ค๋ฅด๊ฒ ์กฐ์ ํ๊ฒ ๋ค๋ ์๋ฏธ์ด๋ค. (์ด ๋๋ ์ญ์ SdW, Sdb๋ exponentially weighted average์ด๋ค)
4. Adam(ADAptive Momentum estimation) : momentum + RMSProp
Adam(Adaptive momentum estimation) : ๋ฐฉํฅ๋, ์คํ ์ฌ์ด์ฆ๋ ์ ์ ํ ์กฐ์ ํ์!
- $$ VdW = \beta_1 VdW+(1-\beta_1)dW $$
- $$ Vdb = \beta_1 Vdb + (1-\beta_1)db $$
- $$ SdW = \beta_2 SdW + (1-\beta_2)dW^2 $$
- $$ Sdb = \beta_2 Sdb + (1-\beta_2)db^2 $$
--- bias correction---
- $$ VdW = \frac{VdW}{1-beta_1^t} $$
- $$ Vdb = \frac{Vdb}{1-beta_1^t} $$
- $$ SdW = \frac{SdW}{1-beta_2^t} $$
- $$ Sdb = \frac{Sdb}{1-beta_2^t} $$
-- parameter update --
- $$ W := W - \alpha \frac{VdW}{\sqrt{SdW}+\epsilon} $$
- $$ b := b - \alpha \frac{Vdb}{\sqrt{Sdb}+\epsilon} $$
- alpha๋ ์ํฉ์ ๋ฐ๋ผ ์ ์ ํ ์กฐ์ ๋์ด์ผ ํ๊ณ ,
- ์ผ๋ฐ์ ์ผ๋ก beta_1์ 0.9, beta_2๋ 0.999, epsilon์ 10-8์ผ๋ก ์ค์ ํ๋ค.
- ๋ฐฉํฅ์ ์กฐ์ ํ๋ momentum + ์คํ ์ฌ์ด์ฆ๋ฅผ ์กฐ์ ํ๋ RMSProp ๋ชจ๋ ์ฌ์ฉํ optimizer์ด๋ค.
'๐ > Coursera_DL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
WEEK4 : batch normalization (๋ฐฐ์น ์ ๊ทํ) (0) | 2020.12.19 |
---|---|
WEEK4 : problem of optimization (0) | 2020.12.19 |
WEEK3 : weight initialization (๊ฐ์ค์น ์ด๊ธฐํ) (0) | 2020.12.19 |
WEEK3 : normalizing input (์ ๋ ฅ ์ ๊ทํ) (0) | 2020.12.19 |
WEEK3 : regularization (์ ๊ทํ) (0) | 2020.12.19 |