Optimizer - BD-SEARCH/MLtutorial GitHub Wiki
์ต์ ํ: loss function์ ๊ฐ์ ์ต๋ํ ๋ฎ์ถ๋ ๋งค๊ฐ๋ณ์, ์ฆ ๋งค๊ฐ๋ณ์์ ์ต์ ๊ฐ์ ์ฐพ๋ ๊ณผ์
01. Optimizer์ ์ข ๋ฅ
1-1. Gradient Descent
- Neural net์ weight๋ฅผ ์กฐ์ ํ ๋ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ.
- ๋คํธ์ํฌ์ output๊ณผ ์ค์ ๊ฒฐ๊ณผ๊ฐ ์ฌ์ด์ ์ฐจ์ด loss๋ฅผ ์ต์ํํ๊ธฐ ์ํด ๊ธฐ์ธ๊ธฐ๋ฅผ ์ด์ฉํ๋ค.
- Gradient descent์์๋ ๋คํธ์ํฌ์ ํ๋ผ๋ฏธํฐ์ ๋ํด gradient์ ๋ฐ๋ ๋ฐฉํฅ์ผ๋ก ์ผ์ ํฌ๊ธฐ๋งํผ ์ด๋ํ๋ ๊ฒ์ ๋ฐ๋ณตํ์ฌ loss๋ฅผ ์ต์ํํ๋ ํ๋ผ๋ฏธํฐ ๊ฐ์ ์ฐพ๋๋ค.
- ๋จ์ : ์ต์ ๊ฐ์ ์ฐพ์ ํ ์นธ ์ ์งํ ๋๋ง๋ค ๋ชจ๋ data๋ฅผ ๋ฃ์ด์ค์ผ ํ๋ค. ํ์ต์ด ๊ต์ฅํ ์ค๋ ๊ฑธ๋ฆฐ๋ค.
1-2. ํ๋ฅ ์ ๊ฒฝ์ฌ ํ๊ฐ๋ฒ (Stochastic Gradient Descent. SGD)
- ์ญ์ ํํ๊ฐ๋ฒ(Backpropagation)์ ์ด์ฉํด ๋งค๊ฐ๋ณ์๋ฅผ ์ต์ ํํ๋ ๋ฐฉ๋ฒ. Gradient Decent์ ๋นํด mini batch๋ฅผ ์ด์ฉํด ์กฐ๊ธ์ฉ ํ์ด๋ณด๊ณ ๋์๊ฐ๋ค.
- ๋จ์ : ์ต์ ํ๋ฅผ ํ ๋ learning rate๊ฐ ๋ฎ์ผ๋ฉด loss function์ ์ต์๊ฐ์ผ๋ก ๊ณง์ฅ ์ต์ ํํ์ง ๋ชปํ๊ณ , ์ง๊ทธ์ฌ๊ทธ๋ก ์ด๋ํ๋ฉด์ ์ต์ ํํ๋ค. ๋ฐ๋ฉด learning rate๊ฐ ๋์ผ๋ฉด ์ต์ ํ๋ฅผ ํ์ง ๋ชปํ๋ค.
Gradient Descent์ Stochastic Gradient Descent๋ ๋ฐฉํฅ์ฑ๊ณผ step size์์ ๋ฌธ์ ๊ฐ ์๊ฒผ๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์ฌ๋ฌ Optimizer๊ฐ ๋ฑ์ฅํ๋ค.
๋ฐฉํฅ์ฑ ํด๊ฒฐ: Momentum, NAG
Step size ํด๊ฒฐ: Adagrad, RMSProp, AdaDelta
๋ฐฉํฅ์ฑ+Step size ํด๊ฒฐ: Adam, Nadam
1-3. ๋ชจ๋ฉํ (Momentum)
- SGD๊ฐ ์ง๊ทธ์ฌ๊ทธ๋ก ์์ง์ด๋ฉฐ ์ต์ ํ๋๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๋ฐฉ๋ฒ. Gradient Descent๋ฅผ ํตํด ์ด๋ํ๋ ๊ณผ์ ์ ์ผ์ข ์ ๊ด์ฑ์ ์ค๋ค. ๊ฐฑ์ ๊ฒฝ๋ก๊ฐ ๊ณต์ด ๊ทธ๋ฆ ๋ฐ๋ฅ์ ๊ตฌ๋ฅด๋ฏ ์์ง์ธ๋ค.
- ํ์ฌ Gradient๋ฅผ ํตํด ์ด๋ํ๋ ๋ฐฉํฅ๊ณผ๋ ๋ณ๊ฐ๋ก ๊ณผ๊ฑฐ์ ์ด๋ํ๋ ๋ฐฉ์์ ๊ธฐ์ตํ๋ฉด์ ๊ทธ ๋ฐฉํฅ์ผ๋ก ์ผ์ ์ ๋๋งํผ ์ถ๊ฐ์ ์ผ๋ก ์ด๋ํ๋ ๋ฐฉ์์ด๋ค.
- Momentum์ ์ด์ฉํ๋ฉด ์์ฃผ ์ด๋ํ๋ ๋ฐฉํฅ์ ๋ํด ๊ด์ฑ์ด ์๊ธฐ๊ณ ์ง๋์ ํ๋๋ผ๋ ์ค์์ผ๋ก ๊ฐ๋ ๋ฐฉํฅ์ผ๋ก ํ์ ๊ฐ๊ณ ์๊ธฐ ๋๋ฌธ์ ์๋์ ์ผ๋ก SGD์ ๋นํด ๋น ๋ฅด๊ฒ ์์ง์ผ ์ ์๋ค. ์ฆ, local minima์์ ๋น ์ ธ๋์ฌ ์ ์๋ค.
- ๋จ์ : ๊ธฐ์กด์ ๋คํธ์ํฌ ํ๋ผ๋ฏธํฐ ๋ณ์ ์ธ์๋ ๊ณผ๊ฑฐ์ ์ด๋ํ๋ ๋ฐฉ์์ ๋ณ์ ๋ณ๋ก ์ ์ฅํด์ผ ํ๋ฏ๋ก ๋ณ์์ ๋ํ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ธฐ์กด์ ๋นํด ๋ ๋ฐฐ ์ด์ ํ์ํ๊ฒ ๋๋ค.
1-4. NAG (Nesterov Accelerated Gradient)
- Momentum ๋ฐฉ์์ ๊ธฐ์ด๋ก ํ ๋ฐฉ์์ด์ง๋ง Gradient๋ฅผ ๊ณ์ฐํ๋ ๋ฐฉ์์ ์กฐ๊ธ ๋ค๋ฅด๋ค.
- Momentum: ์ด๋ ๋ฒกํฐ v๋ฅผ ๊ณ์ฐํ ๋, ํ์ฌ ์์น์์์ gradient์ momentum step์ ๋ ๋ฆฝ์ ์ผ๋ก ๊ณ์ฐํ๊ณ ํฉ์น๋ค.
- NAG: Momentum step์ ๋จผ์ ๊ณ ๋ คํ์ฌ momentum step์ ๋จผ์ ์ด๋ํ๋ค๊ณ ์๊ฐํ ํ, ๊ทธ ์๋ฆฌ์์์ gradient๋ฅผ ๊ตฌํด์ gradient step์ ์ด๋ํ๋ค.
- Momentum์ ๋ฉ์ถฐ์ผ ํ ์์ ์๋ ๊ด์ฑ์ ์ํด ๋ ๋ฉ๋ฆฌ ๋์๊ฐ ์๋ ์์ง๋ง, NAG์์๋ Momentum๋ฐฉ์์ผ๋ก ๋ฐ ์ ๋ ์ด๋์ ํ ํ ์ด๋ค ๋ฐฉ์์ผ๋ก ์ด๋ํด์ผํ ์ง๋ฅผ ๊ฒฐ์ ํ๋ค. ์ฆ, Momentum๊ณผ ๊ฐ์ด ๋น ๋ฅด๊ฒ ์ด๋ํ๋ฉด์๋ ์ ๋์ ๊ฑฐ๋ ๋ฐ ์ ๋ฆฌํ๋ค.
1-5. AdaGrad (Adaptive Gradient)
- SGD, ๋ชจ๋ฉํ ์ ํ์ต๋ฅ (ฮท) ๊ฐ์ด ํ์ต์ ํฐ ์ํฅ์ ์ค๋ค๋ ๋ฌธ์ ๊ฐ ์๋ค. ๋๋ฌด ์์ผ๋ฉด ํ์ต ์๊ฐ์ด ๋๋ฌด ์ค๋ ๊ฑธ๋ฆฌ๊ณ , ๋๋ฌด ํฌ๋ฉด ํ์ต์ด ์ ๋๋ก ์ด๋ค์ง์ง ์๋๋ค.
- ํ์ต์ ํ๋ฉด์ ํ์ต๋ฅ ์ ์ ์ฐจ ์ค์ฌ๊ฐ๋ ํ์ต๋ฅ ๊ฐ์(learning rate decay) ๊ธฐ๋ฒ์ ์ด์ฉํด ํด๊ฒฐํ ์ ์๋ค.
- ๋ณ์๋ค์ updateํ ๋ ๊ฐ๊ฐ์ ๋ณ์๋ง๋ค step size๋ฅผ ๋ค๋ฅด๊ฒ ์ค์ ํด์ ์ด๋ํ๋ค.
- ํ์ต๋ฅ ๊ฐ์ ๊ธฐ๋ฒ์ ๊ฐ๊ฐ์ ๋งค๊ฐ๋ณ์์ ๋ง์ถคํ์ผ๋ก ์ ์ฉํ ๋ฐฉ๋ฒ์ด๋ค. ๋งค๊ฐ๋ณ์ ๊ฐฑ์ ์ด ํฌ๊ฒ ๋ ์๋ก ๋ค์ ๋ฒ์ ํ์ต๋ฅ ์ ๋ฎ์ถ๋ค.
- ๋จ์ : ํ์ต์ ๋ฐ๋ณตํ๋ค ๋ณด๋ฉด step size๊ฐ ๋๋ฌด ์ค์ด๋ ๋ค. ๊ทธ ๊ฒฐ๊ณผ ๊ฒฐ๊ตญ ๊ฑฐ์ ์์ง์ด์ง ์๊ฒ ๋๋ค
1-6. RMSProp
- Adagrad์ ๋จ์ ์ ํด๊ฒฐํ๊ธฐ ์ํด ๋ํ๋ optimizer.
- Adagrad์ ์์์ gradient์ ์ ๊ณฑ๊ฐ์ ๋ํด๋๊ฐ๋ฉด์ ๊ตฌํ Gt ๋ถ๋ถ์ ํฉ์ด ์๋๋ผ ์ง์ํ๊ท ์ผ๋ก ๋ฐ๊พผ๋ค.
- Adagrad์ฒ๋ผ Gt๊ฐ ๋ฌดํ์ ์ปค์ง์ง๋ ์์ผ๋ฉด์ ์ต๊ทผ ๋ณํ๋์ ๋ณ์๊ฐ ์๋์ ์ธ ํฌ๊ธฐ ์ฐจ์ด๋ ์ ์งํ ์ ์๋ค.
1-7. AdaDelta
- Adagrad์ ๋จ์ ์ ํด๊ฒฐํ๊ธฐ ์ํด ๋ํ๋ optimizer.
- RMSProp๊ณผ ๋์ผํ๊ฒ G๋ฅผ ๊ตฌํ ๋ ํฉ์ ๊ตฌํ๋ ๋์ ์ง์ํ๊ท ์ ๊ตฌํ๋ค
- ์ฌ๊ธฐ์์๋ step size๋ฅผ ๋จ์ํ๊ฒ ฮท ๋ก ์ฌ์ฉํ๋ ๋์ step size์ ๋ณํ๊ฐ์ ์ ๊ณฑ์ ๊ฐ์ง๊ณ ์ง์ํ๊ท ๊ฐ์ ์ฌ์ฉํ๋ค.
1-8. Adam (Adaptive Moment Estimation)
- ์ต์ ํ์ ์ํ ๊ฐฑ์ ๊ฒฝ๋ก๋ฅผ ๋ฐ๊พธ๋ Momentum, ํ์ต๋ฅ ์ ๋ฐ๊พธ๋ AdaGrad๋ฅผ ์กฐํฉํด์ ๋ง๋ ์ต์ ํ ๊ธฐ๋ฒ
- Momentum ๋ฐฉ์๊ณผ ์ ์ฌํ๊ฒ ์ง๊ธ๊น์ง ๊ณ์ฐํด์จ ๊ธฐ์ธ๊ธฐ์ ์ง์ํ๊ท ์ ์ ์ฅํ๋ฉฐ, RMSProp๊ณผ ์ ์ฌํ๊ฒ ๊ธฐ์ธ๊ธฐ์ ์ ๊ณฑ๊ฐ์ ์ง์ํ๊ท ์ ์ ์ฅํ๋ค
02. Optimizer ๊ฐ์ ๋น๊ต
์ต์ ํ ๊ธฐ๋ฒ์ ๋ฐ๋ฅธ ๊ฐฑ์ ๊ฒฝ๋ก
MNIST ๋ฐ์ดํฐ์ ์ผ๋ก ๋ณธ loss ๊ฐ ๋ณํ
03. Reference
- ๋ฐ๋ฐ๋ฅ๋ถํฐ ์์ํ๋ ๋ฅ๋ฌ๋ - 6์ฅ ํ์ต ๊ด๋ จ ๊ธฐ์ ๋ค
- ๊น๋ฒ์ ๋์ ๋ธ๋ก๊ทธ: link