์ง๊ธ์ ๋ชจ๋๊ฐ Adam optimizer์ ๋น์ฐํ๊ฒ ์ฌ์ฉํ๊ณ ์๋ค. ์ ๊ทธ๋ฐ์ง Adam์ ์๋ฆฌ๋ฅผ ๋ณด๋ฉด, ๊ทธ ์ด์ ๋ฅผ ์ ์ ์์ง ์์๊น ํ์ฌ ์ด๋ ๊ฒ ์ ๋ฆฌํ๊ฒ ๋์๋ค
๋ฆฌ๋ทฐํ๋ "ADAM: A METHOD FOR STOCHASTIC OPTIMIZATION (2015)" ๋
ผ๋ฌธ์ ICLR 2015 conference paper์ด๊ณ , ๋ง์ง๋ง ์ฑํฐ 9. ACKNOWLEDGMENTS ์์ ๋งํ๋ฏ์ด Google Deepmind์ ์ง์ํ์ ์ฐ๊ตฌ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ ๋
ผ๋ฌธ์ด๋ค.
0. ABSTRACT
๐ก ADAM์ ๋ํด์ ํ ๋ง๋๋ก ์์ฝํ์๋ฉด?
lower-order moments
์ adaptive ์ถ์ ์น๋ฅผ ๊ธฐ๋ฐ์ผ๋ก,
stochastic objective function
๋ฅผ ์ต์ ํํ๋,
first-order gradient-based (ํ ๋ฒ ๋ฏธ๋ถํ, ๊ธฐ์ธ๊ธฐ ๊ธฐ๋ฐ์?)
์๊ณ ๋ฆฌ์ฆ!
lower-order moments
: ์ ์ฐจ(์ ์ฐจ์) ๋ชจ๋ฉํธ
์ข ๋ ์ ํํ๋ 2๊ฐ์ moment๋ฅผ ์ฌ์ฉํ๋๋ฐ,
Adam์ ์ฒซ๋ฒ์งธ moment๋ Momentum ์๊ณ ๋ฆฌ์ฆ ์์, ๋๋ฒ์งธ moment๋ AdaGrad/RMSProp ์๊ณ ๋ฆฌ์ฆ ์์ ์ ๋๋๋ค.
first-order gradient
: 1์ฐจ ํจ์ ๊ธฐ์ธ๊ธฐ
๐ Reference ์ค๋ช
์ถ๊ฐ
SGD, AdaGrad, RMSProp, Adam์ ๋ชจ๋ First-Order Optimization
ํ๋ฒ ๋ฏธ๋ถํ weight๋ง optimize์ ๋ฐ์๋จ
๊ทธ๋ฌ๋ 1์ฐจ ํจ์ ๋ฐฉํฅ(๋
ธ๋์ ์ง์ )์ผ๋ก๋ง optimizeํ๊ธฐ ๋๋ฌธ์ graident ์์ ์ด ์ ํ์
์ด๋ฅผ ๋ณด์ํ๊ธฐ ์ํด ๊ณ ์ฐจ ํจ์ optimization(์ค๋ฅธ์ชฝ ๊ทธ๋ฆผ)์ด ๋ฑ์ฅ
๊ทธ๋ฌ๋ ๊ณ ์ฐจ ํจ์ optimization์ ์ญ์ ํ๋ฅผ ์ํด ์ญํ๋ ฌ์ ๊ตฌํ ๋, ์๊ฐ ๋ณต์ก๋๊ฐ ์์ฒญ๋๊ฒ ์ฆ๊ฐํจ (ex : ๊ฐ์ค์น์ ์ฐจ์์ด ๋ช ๋ฐฑ๋ง ์ฐจ์์ผ๋ก ๋์ด๋จ)
์ด๋ฌํ ์ด์ ๋ก ์์ง๊น์ง๋ First-Order Optimization์ ์ฌ์ฉํ๊ณ ์์
stochastic object functions
: Loss Function
(mini-batch ๋ฐฉ์๊ณผ ๊ฐ์ด randomํ๊ฒ training sample์ ์ ํํจ์ผ๋ก์จ ๋งค๋ฒ loss function ๊ฐ์ด ๋ฌ๋ผ์ง๋ ํจ์. Ex. MSE, Cross Entropy...))
๐ข ADAM์ ์ฅ์ ?
๊ตฌํ์ด ๊ฐ๋จ
ํจ์จ์ ์ธ ๊ณ์ฐ
์ ์ ๋ฉ๋ชจ๋ฆฌ ํ์
gradient์ diagonal rescaling์ invariant
์๊ณผ ๊ฐ์ ์ํฉ์์ gradient ๊ฐ์ด ์ปค์ง๊ฑฐ๋ ์์์ ธ๋,
์ด๋ฐ ๊ณ์ฐ ๊ณผ์ ์ ๊ฑฐ์ณ์, ๊ฒฐ๋ก ์ ์ผ๋ก๋ ์์ ๊ฐ์ด Digonal ๊ณฑ์
์ผ๋ก graident๋ฅผ ๋ณํ๊ฒ ํด๋, optimze ๊ณผ์ ์์ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ค๋ ๊ฒ์ด๋ค.
ํฐ ์ฌ์ด์ฆ์ ๋ฐ์ดํฐ์ ํ๋ผ๋ฏธํฐ์ธ ์ํฉ์์๋ ์ ํฉํจ
๋
ธ์ด์ฆ๊ฐ ์ฌํ๊ฑฐ๋ sparse gradient ์ํฉ์์๋ ์ ํฉํฉ
์ง๊ด์ ์ธ ํ์ดํผ ํ๋ผ๋ฏธํฐ๋ก ์ ๋นํ ํ๋๋ง์ด ํ์ํจ
๐ต ๋ค๋ฅธ Optimizer์ ๋น๊ตํ๋ค๋ฉด?
๊ธฐ์กด์ optimizer(AdaGrad, RMSProp, AdaDelta,,)๋ค๊ณผ ๋น๊ตํ์๋๋ ๋งค์ฃผ ์ข์ ์ฑ๋ฅ์ ๋ณด์ธ๋ค.
โช (์ถ๊ฐ) Adam์ ๋ณ์ข
, AdaMax
์ถ๋ผ๊ณ Adam์ ๋ณ์ข
์ธ AdaMax์ ๋ํ ๋ด์ฉ๋ ํ๋ฐ ์ฑํฐ์์ ๋งํ๋ค.
1. INTRODUCTION
๐ด Object functions(loss function)์ stochastic(ํ๋ฅ ์ )!
๋ง์ object function์ ๊ฐ๊ฐ์ mini-batch๋ก ๋ถํ ๋ Training Data์์ ๊ณ์ฐ๋ subfunctions์ ํฉ์ผ๋ก ๊ตฌ์ฑ
์ด๋ฌํ ๊ฒฝ์ฐ mini-batch๋ง๋ค gradient steps(ํ์ต์ผ๋ก ์์ ํ๋ gradient์ ๋ฐฉํฅ, ํฌ๊ธฐ)์ ๋ค๋ฅด๊ฒ ์ค ์ ์๊ธฐ ๋๋ฌธ์, ํ์ต์ ํจ์จ์ ์ -> SGD๊ฐ ์ด์ ํด๋น(SGD์ ๊ฒฝ์ฐ ๋ฐ์ดํฐ ํ๋๋ง๋ค์ gradient ๋ฐฉํฅ, ํฌ๊ธฐ๋ฅผ ๊ณ ๋ คํ๋ ๊ฒ์ด ๊ฐ๋ฅ)
ํ์ง๋ง, object function์๋ noise๊ฐ ๋ฐ์ํ๋ฉด optimization์ ์ฑ๋ฅ์ด ์ ํ๋จ
โถ ๋ํ์ ์ธ nosie๋ก dropout regularization์ด ์์
โถ object function์ noise๊ฐ ์๊ธด๋ค๋ฉด, ๋ ํจ์จ์ ์ธ stochastic optimization์ด ์๊ตฌ๋จ
- ๋ณธ๋ฌธ์์๋ higher-order optimization method ๋ณด๋ค๋ first-order methods๋ก ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ์ ํจ
๐ก ๊ธฐ์กด SGD์ ๋์ฒด์, ADAM
Adam์ first-order gradient๋ฅผ ํ์๋กํ๊ธฐ์, ๋ฉ๋ชจ๋ฆฌ ํ์๋์ด ์ ์
Adam์ gradient์ ์ฒซ๋ฒ์งธ์ ๋๋ฒ์งธ์ moment estimate๋ก ๋ค๋ฅธ ํ๋ผ๋ฏธํฐ์ ๋ํ ๊ฐ๋ณ์ ์ธ learing rate(ํ์ต๋ฅ )์ ๊ณ์ฐ
- ์ฒซ๋ฒ์งธ moment์ ์ถ์ฒญ์ง : momentum optimizer
- ๋๋ฒ์งธ moment์ ์ถ์ ์น : AdaGrad / RMSProp optimizer
Adam์ AdaGrad์ ์ฅ์ (sparse gradient์์ ์ ์๋)๊ณผ PMSProp์ ์ฅ์ (์จ๋ผ์ธ๊ณผ ๊ณ ์ ๋์ง ์์ ์ธํ
์ ์ ์๋)์ ๊ฒฐํฉ
๋งค๊ฐ๋ณ์ ์
๋ฐ์ดํธ์ ํฌ๊ธฐ๊ฐ ๊ทธ๋ผ๋์ธํธ์ ํฌ๊ธฐ ์กฐ์ ์ ๋ณํ์ง ์์
step size๊ฐ ๋๋ต step size hyper parameter์ ์ํด ์ ํ๋๋ฉฐ, ๊ณ ์ ๋งค๊ฐ๋ณ์๊ฐ ํ์ํ์ง ์์
sparse gradient์ ์๋
์์ฐ์ค๋ฝ๊ฒ step size annealing(step size์ ๋ฐ๋ผ ๊ฐ์ ํ์ด์ฃผ๋๊ฒ??) ์ํ
์์ ๊ทธ๋ฆผ์ด ๋ฐ๋ก ๋
ผ๋ฌธ์์ ์ ์ํ๋ Adam Optimizer์ pseudo ์ฝ๋๋ค.
์ค์ ๋ก moment 2๊ฐ๋ก ์ด๋ค์ก์ผ๋ฉด์, bias-corrected value๋ฅผ ์ต์ข
gradient ์ฐ์ถ์ ์ฌ์ฉํ๋ค๋ ์ ๋ ๊ผญ ๋ณด๊ณ ๋์ด๊ฐ์ผํ๋ค.
๋
ผ๋ฌธ์์๋ RMSProp, AdaGrad์ ์ฅ์ ์ ์ ์ตํฉํด์ Adam์ ๋ง๋ค์๋ค๊ณ ํ์๊ณ , ์ค์ ๋ก RMSProp๊ณผ AdaGrad์ ๋ํด์ related work ์ ์ ๋ฆฌํด๋์๋ค
๐ท๏ธ AdaGrad
gradient์ ์
๋ฐ์ดํธ ํ์์ ๋ฐ๋ผ ํ์ต๋ฅ (Learning rate)๋ฅผ ์กฐ์ ํ๋ ์ต์
์ด ์ถ๊ฐ๋ ์ต์ ํ ๋ฐฉ๋ฒ
โจ : ํ๋ ฌ์ ์์๋ณ ๊ณฑ์
h๋ ๊ธฐ์กด ๊ธฐ์ธ๊ธฐ ๊ฐ์ ์ ๊ณฑํ์ฌ ๊ณ์ ๋ํด์ฃผ๊ณ , parameter W๋ฅผ ๊ฐฑ์ ํ ๋๋ 1/โh ๋ฅผ ๊ณฑํด์ ํ์ต๋ฅ ์ ์กฐ์ ํจ
parameter ์ค์์ ํฌ๊ฒ ๊ฐฑ์ ๋(gradient๊ฐ ํฐ) parameter๋, ์ฆ โฃ โฃ โ L / โ W โฃ โฃ ||โL/โW || โฃ โฃ โ L / โ W โฃ โฃ ๊ฐ ํฐ parameter๋ h ๊ฐ์ด ํฌ๊ฒ ์ฆ๊ฐํ๊ณ ฮท 1 h ฮท\frac{1}{\sqrt{h}} ฮท h โ 1 โ ๊ฐ ๊ฐ์ํ๋ฉด์ ํ์ต๋ฅ ์ด ๊ฐ์ํ๋ค๊ณ ๋ณผ ์ ์๋ค
์ฆ gradient๊ฐ ํฌ๋ฉด ์คํ๋ ค learning rate(step size)๋ ์์์ง๊ณ , gradient๊ฐ ์์ผ๋ฉด learning rate(step size)๊ฐ ์ปค์ง๋ค
AdaGrad๋ ๊ฐ๋ณ ๋งค๊ฐ๋ณ์์ ๋ง์ถคํ ๊ฐ์ ๋ง๋ค์ด์ค๋ค
๊ฐ์ ์
๋ ฅ ๋ฐ์ดํฐ๊ฐย ์ฌ๋ฌ๋ฒ ํ์ต๋๋ ํ์ต๋ชจ๋ธ์ ์ ์ฉํ๊ฒ ์ฐ์ด๋๋ฐ ๋ํ์ ์ผ๋ก ์ธ์ด์ ๊ด๋ จ๋ word2vec์ด๋ GloVe์ ์ ์ฉํ๋ค. ์ด๋ ํ์ต ๋จ์ด์ ๋ฑ์ฅ ํ๋ฅ ์ ๋ฐ๋ผ ๋ณ์์ ์ฌ์ฉ ๋น์จ์ด ํ์ฐํ๊ฒ ์ฐจ์ด๋๊ธฐ ๋๋ฌธ์ ๋ง์ด ๋ฑ์ฅํ ๋จ์ด๋ ๊ฐ์ค์น๋ฅผ ์ ๊ฒ ์์ ํ๊ณ ์ ๊ฒ ๋ฑ์ฅํ ๋จ์ด๋ ๋ง์ด ์์ ํ ์ ์๊ธฐ ๋๋ฌธ
AdaGrad python ๊ตฌํ
class AdaGrad :
def __init__ ( self, lr= 0.01 ) :
self. lr = lr
self. h = None
def update ( self, params, grads) :
if self. h is None :
self. h = { }
for key, val in params. items( ) :
self. h[ key] = np. zeros_like( val)
for key in params. keys( ) :
self. h[ key] += grads[ key] * grads[ key]
params[ key] -= self. lr * grads[ key] / ( np. sqrt( self. h[ key] ) + 1e - 7 )
๐ท๏ธ RMSProp
AdaGrad๋ ๊ณผ๊ฑฐ์ ๊ธฐ์ธ๊ธฐ๋ฅผ ์ ๊ณฑํ์ฌ ๊ณ์ ๋ํด๊ฐ๊ธฐ ๋๋ฌธ์ ํ์ต์ ์งํํ ์๋ก ๊ฐฑ์ ๊ฐ๋๊ฐ ์ฝํด์ง๋ค. ๋ฌดํํ ๊ณ์ ํ์ตํ ๊ฒฝ์ฐ์๋ ์ด๋ ์๊ฐ ๊ฐฑ์ ๋์ด 0์ด ๋์ด ์ ํ ๊ฐฑ์ ๋์ง ์๊ฒ ๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ๊ฐ์ ํ ๊ธฐ๋ฒ์ด RMSProp!
RMSProp๋ ๊ณผ๊ฑฐ์ ๋ชจ๋ ๊ธฐ์ธ๊ธฐ๋ฅผ ๊ท ์ผํ๊ฒ ๋ํ์ง ์๊ณ ๋จผ ๊ณผ๊ฑฐ์ ๊ธฐ์ธ๊ธฐ๋ ์์ํ ์๊ณ ์๋ก์ด ๊ธฐ์ธ๊ธฐ ์ ๋ณด๋ฅผ ํฌ๊ฒ ๋ฐ์ -> decaying factor(decaying rate) ๋ผ๋ ์ธ์ ์ฌ์ฉ
์ง์์ด๋ํ๊ท (Exponential Moving Average, EMA)๋ฅผ ์ฌ์ฉํด ์ด๋ฅผ ๊ตฌํํ๋๋ฐ, ๊ณผ๊ฑฐ ๊ธฐ์ธ๊ธฐ์ ๋ฐ์ ๊ท๋ชจ๋ฅผ ๊ธฐํ๊ธ์์ ์ผ๋ก ๊ฐ์์ํด
RMSProp python ๊ตฌํ
class RMSprop :
def __init__ ( self, lr= 0.01 , decay_rate = 0.99 ) :
self. lr = lr
self. decay_rate = decay_rate
self. h = None
def update ( self, params, grads) :
if self. h is None :
self. h = { }
for key, val in params. items( ) :
self. h[ key] = np. zeros_like( val)
for key in params. keys( ) :
self. h[ key] *= self. decay_rate
self. h[ key] += ( 1 - self. decay_rate) * grads[ key] * grads[ key]
params[ key] -= self. lr * grads[ key] / ( np. sqrt( self. h[ key] ) + 1e - 7 )
๐ท๏ธ Momentum
W : ๊ฐฑ์ ํ ๊ฐ์ค์น ๋งค๊ฐ๋ณ์
L : ์์คํจ์(loss function)
ฮทย : ํ์ต๋ฅ (learning rate),
โ L / โ W โL/โW โ L / โ W : Wย ์ ๋ํ ์์คํจ์์ ๊ธฐ์ธ๊ธฐ
๋ณ์ v ??
: ๋ฌผ๋ฆฌ์์ ์ด๋๋์ ๋ํ๋ด๋ ์์ p = mv, ์ง๋ m, ์๋ v
=> ์ ์์์์๋ v๋ ์๋
=> ๋งค๊ฐ๋ณ์ ฮฑ๋ฅผ v์ ๊ณฑํด์ ฮฑv ํญ์ ๋ฌผ์ฒด๊ฐ ์๋ฌด ํ๋ ๋ฐ์ง ์์ ๋๋ ์์ํ ํ๊ฐ์ํค๋ ์ญํ
=> gradient์ ๋ฐฉํฅ์ด ๋ณ๊ฒฝ๋์ด๋ ์ด์ ๋ฐฉํฅ๊ณผ ํฌ๊ธฐ์ ์ํฅ๋ฐ์ ๋ค๋ฅธ ๋ฐฉํฅ์ผ๋ก ๊ฐ์ค์น๊ฐ ๋ณ๊ฒฝ๋ ์ ์์
Momentum python ๊ตฌํ
import numpy as np
class Momentum :
def __init__ ( self, lr= 0.01 , momentum= 0.9 ) :
self. lr = lr
self. momentum = momentum
self. v = None
def update ( self, params, grads) :
if self. v is None :
self. v = { }
for key, val in params. items( ) :
self. v[ key] = np. zeros_like( val)
for key in params. keys( ) :
self. v[ key] = self. momentum* self. v[ key] - self. lr* grads[ key]
params[ key] += self. v[ key]
2. ALGORITHM
โป๏ธ Adam Pseudo code
์์ ์์์ ๋ํด์ ์กฐ๊ธ์ฉ ๋ฏ์ด์ ๋ณด๊ธฐ๋ก ํ๋ค.
ํจ์ ์ ์ธ์์ ๋ํ ์ค๋ช
์ ์์ ์ ์๋ฅผ ์ฐธ๊ณ ํ๋ค.
์ฌ์ค์ hyper parameter๋ผ ํ ๊ฒ๋ค์ด,
ฮฑ \alpha ฮฑ (Step size), ฮฒ 1 \beta_1 ฮฒ 1 โ (์ฒซ๋ฒ์งธ moment ์ถ์ ์น๋ฅผ ์ผ๋ง๋ ๋ฒ๋ฆด์ง), ฮฒ 2 \beta_2 ฮฒ 2 โ (๋๋ฒ์งธ moment ์ถ์ ์น๋ฅผ ์ผ๋ง๋ ๋ฒ๋ฆด์ง) ๊ฒฐ์ ํ๋ ๊ฒ๋ค ๋ฐ์ ์๋ค. (ฯต \epsilon ฯต ๋ ์์)
adam์ ํฌ๊ฒ moment๋ฅผ ๊ณ์ฐํ๋ ๋ถ๋ถ, moment๋ฅผ bias๋ก ์กฐ์ ํ๋ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋จ
moment๋ Momentum์ด ์ ์ฉ๋ first moment์ AdaGrad, RMSProp์ด ์ ์ฉ๋ second moment๊ฐ ์์
โป๏ธ ์ด๊ธฐ์ ์ค์ ํด์ผํ๋ 4๊ฐ์ง ํ๋ผ๋ฏธํฐ(Require)
Stepsize ฮฑ \alpha ฮฑ (Learing Rate)
Decay Rates ฮฒ 1 , ฮฒ 2 ฮฒ_1, ฮฒ_2 ฮฒ 1 โ , ฮฒ 2 โ
: Exponential decay rates for the moment estimates (0~1 ์ฌ์ด์ ๊ฐ)
-> Adam์ ์ ์ผํ hyper-parameter, gradient์ decay rate๋ฅผ ์กฐ์ ํจ
Stochastic Objective Function f(ฮธ) - loss function
-> ( ฮธ (parameters, weight ๊ฐ) ์ฃผ์ด์ง ๋-> f(ฮธ) ๊ฐ์ ์ต์ํ๊ฐ adam์ ๋ชฉํ )
initial Parameter Vector ฮธ 0 ฮธ_0 ฮธ 0 โ
โป๏ธ Adam optimizer ์ํ ๊ณผ์
(1) first & Second moment, time step ์ด๊ธฐํ
(2) ํ๋ผ๋ฏธํฐ ฮธ_t๊ฐ ์๋ ด(converge)ํ ๋๊น์ง ๋ฐ๋ณต
(๋ฐ๋ณต๋ฌธ-1) time step ์ฆ๊ฐ : t <- t+1
iteration ๋ณ๋ก ๊ฐ๋ค์ด ๊ณ์ ์
๋ฐ์ดํธ ๋จ.
(๋ฐ๋ณต๋ฌธ-2) stochastic objective funtion์ผ๋ก ์ด์ time step์ gradient ๊ณ์ฐ (๋ฏธ๋ถ)
stochastic objective function(loss function)์ ํตํด ๋์จ ๊ฐ์ ๋ฐํ์ผ๋ก weight๋ณ gradient ๊ณ์ฐ (1์ฐจ ๋ฏธ๋ถ, first-order gradient)
(๋ฐ๋ณต๋ฌธ-3) biased first & second moment ๊ฐ ๊ณ์ฐ
m t m_t m t โ : Momentum ํด๋น -> fisrt moment
v t v_t v t โ : AdaGrad, RMSProp ์ ํด๋น -> second moment
ฮฒ ฮฒ ฮฒ ๊ฐ ์ต์ ๊ฐ์ ๋น์ค์ ์กฐ์ ํ๋ ์ญํ (exponential decay)
(๋ฐ๋ณต๋ฌธ-4) ์ด๊ธฐ์ ๋ชจ๋ฉํ
๊ฐ์ด 0์ผ๋ก ์ด๊ธฐํ๋๋ ๊ฒฝ์ฐ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด, bias-correction ์ ์ฉ
m t ^ \hat{m_t} m t โ ^ โ : m t m_t m t โ ์ (1-ฮฒ 1 t ฮฒ^t_1 ฮฒ 1 t โ ) ๋ก ๋๋์ด์ bias-correction ์ํ
v t ^ \hat{v_t} v t โ ^ โ : v t v_t v t โ ์ (1-ฮฒ 2 t ฮฒ^t_2 ฮฒ 2 t โ ) ๋ก ๋๋์ด์ bias-correction ์ํ
์ด๊ธฐ์ ๋ชจ๋ฉํ
๊ฐ์ด 0์ผ๋ก ์ด๊ธฐํ๋๋ ๊ฒฝ์ฐ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด, bias-correction ์ ์ฉ
(๋ฐ๋ณต๋ฌธ-5) ์ต์ข
ํ๋ผ๋ฏธํฐ(๊ฐ์ค์น) ์
๋ฐ์ดํธ
ฯต \epsilon ฯต ์ 0์ผ๋ก ๋๋๋ ์ผ์ ๋ฐฉ์งํ๊ธฐ ์ํด ์
ํ
second moment๊ฐ AdaGrad, RMSProp ์ญํ -> ํ๋ผ๋ฏธํฐ์ ์
๋ฐ์ดํธ ํ์์ ๋ฐ๋ผ ํ์ต๋ฅ ์ ๋ฌ๋ฆฌ ํจ
์
๋ฐ์ดํธ๋ฅผ ๋ง์ด ํ ํ๋ผ๋ฏธํฐ์ผ์๋ก v t v_t v t โ ๊ฐ์ด ์ปค์ง -> ์ ์ฒด์ ์ผ๋ก๋ ํ๋ผ๋ฏธํฐ ์
๋ฐ์ดํธ ๋ง์ด ํ์์๋ก step size๋ฅผ ์ค์ฌ์ฃผ๋ ํจ๊ณผ
ํ์ต๋ฅ ฮฑ \alpha ฮฑ ์กฐ์ ๋ฐฉ๋ฒ
๊ณ ์ ๊ฐ์ผ๋ก ์ค์ ํ๋ ฮฑ \alpha ฮฑ ๋ ์ด๋ ๊ฒ iteration ๋ง๋ค ฮฒ 1 \beta_1 ฮฒ 1 โ ์ ฮฒ 2 \beta_2 ฮฒ 2 โ ์ ์ฌ์ฉํด ๋ณํ๋ฅผ ์ค ์ ์๋ค.
์ฑ๋ฅ์ ์ธ ๋ฉด์์ ํจ๊ณผ ๋ณผ ์ ์์
โป๏ธ ADAMโS UPDATE RULE
์์ ์์ด Adam์ ํ๋ผ๋ฏธํฐ Update ์์ด๋ค.
Adam์ ํต์ฌ์ step size(Learning Rate)๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ ํํ๋ ๊ฒ!
ํจ๊ณผ์ ์ธ step size์ โณ t โณt โณ t ์ ๊ฐ์ ์ต์ ์ผ๋ก ๋ง๋ฌ
step size๋ 2๊ฐ์ upper bounds(์ํ์ )์ด ์์ (if, ฯต \epsilon ฯต = 0 )
First case๋ sparsity case ์ผ๋ ์ ์ฉ (sparsity case : ํ๋์ gradient๊ฐ ๋ชจ๋ time step์์ 0์ผ๋ก ๋๋ ๊ฒฝ์ฐ)
=> ์ด๋ด๋๋ step size๋ฅผ ํฌ๊ฒ ํด์ ์
๋ฐ์ดํธ ๋ณํ๋์ ํฌ๊ฒ ๋ง๋ค์ด์ผํจ
=> (1-ฮฒ 1 \beta_1 ฮฒ 1 โ ) > ( 1 โ ฮฒ 2 ) \sqrt{(1-\beta_2)} ( 1 โ ฮฒ 2 โ ) โ
=> ํ์ต๋ฅ ์ด ์ปค์ง
Second case๋ ์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ (๋๋ถ๋ถ ฮฒ 1 \beta_1 ฮฒ 1 โ = 0.9, ฮฒ 2 \beta_2 ฮฒ 2 โ = 0.99์ผ๋ก ์ค์ )
=> (1-ฮฒ 1 \beta_1 ฮฒ 1 โ ) <= ( 1 โ ฮฒ 2 ) \sqrt{(1-\beta_2)} ( 1 โ ฮฒ 2 โ ) โ
=> ์ด๋ด๋๋ step size๋ฅผ ์๊ฒ ํด์ ์
๋ฐ์ดํธ ๋ณํ๋์ ์๊ฒ ๋ง๋ฆ
=> ํ์ต๋ฅ ์ด ์์์ง
3. INITIALIZATION BIAS CORRECTION
์์ ์์์์ ์๋ฌธ์ด ๋ค ์ ์๋ค.
๋๋์ฒด ์, ๊ฐ ๋ชจ๋ฉํธ๋ฅผ 1-ฮฒ \beta ฮฒ ๋ก ๋๋๋๊ฐ...?๐ค๐ค
m t ^ \hat{m_t} m t โ ^ โ : m t m_t m t โ ์ (1-ฮฒ 1 t ฮฒ^t_1 ฮฒ 1 t โ ) ๋ก ๋๋์ด์ bias-correction ์ํ
v t ^ \hat{v_t} v t โ ^ โ : v t v_t v t โ ์ (1-ฮฒ 2 t ฮฒ^t_2 ฮฒ 2 t โ ) ๋ก ๋๋์ด์ bias-correction ์ํ
์ผ๋จ ๋
ผ๋ฌธ์์๋ second moment v t v_t v t โ ์ ๋ํด์ v t ^ \hat{v_t} v t โ ^ โ ๋ก ์ถ์ ํ๋ ์ด์ ๋ฅผ ์ค๋ช
ํ๋ค.
์ด ๊ณผ์ ์ ์งํํ๋ ์๋ฌธ์ด ๋ค์ ์๋๋ฐ ๊ทธ ์ด์ ๊ฐ ์ฌ๊ธฐ ์๋ค.
์ง์ ์์์ผ๋ก ํ์ด์ ์ ๋ฆฌํด๋ณด์๋ฉด,
๊ทธ๋ฆฌ๊ณ
ฮถ \zeta ฮถ = 0 ์ด๋ผ๋ฉด,
์ค์ ๋ก ๊ตฌํด์ผํ๋ ์ฐธ second momet ๊ธฐ๋๊ฐ E [ g t ] E[g_t] E [ g t โ ] ์ด ๋๊ณ ,
E [ v t ] E[v_t] E [ v t โ ] ๊ฐ E [ g t ] E[g_t] E [ g t โ ] ์ ๊ทผ์ฌํ๊ธฐ ์ํด, 1 โ ฮฒ 2 1-\beta_2 1 โ ฮฒ 2 โ ๋ฅผ ๋๋๊ฒ ๋จ
sparse gradient์ ๊ฒฝ์ฐ, ฮฒ 2 \beta_2 ฮฒ 2 โ ๊ฐ์ ์๊ฒ ์ค์ ํจ -> ์ด์ time step์ ๊ธฐ์ธ๊ธฐ๋ฅผ ์ต๋ํ ๋ฌด์ํ๊ฒ ๋จ
4. CONVERGENCE ANALYSIS
=> ๊ฒฐ๋ก ์ ์ผ๋ก๋ comverge ํจ
6. EXPERIMENTS
6.1 EXPERIMENT: LOGISTIC REGRESSION
[ํ๊ฐ ๋ฐ์ดํฐ์
1 : MNIST ๋ฐ์ดํฐ์
]
multi-class logistic regression (L2-regularized ์ ์ฉ)
step size ฮฑ๋ 1/โt decay๋ก ์กฐ์ ๋จ -> ์๊ฐ์ ๋ฐ๋ผ step size ๊ฐ์
logistic regression๋ฅผ ์ฌ์ฉํด 784 ์ฐจ์์ ์ด๋ฏธ์ง ๋ฒกํฐ๋ก ์ซ์ class๋ฅผ ๋ถ๋ฅ
mini batch 128๋ก Adam, SGD(with Nesterov), AdaGrad๋ฅผ ๋น๊ต (์๋ ํ 1์ ์ผ์ชฝ ๊ทธ๋ํ)
ํ1์ ๋ณด๋ฉด, adam์ SGD์ ์ ์ฌํ๊ฒ ์๋ ดํ๊ณ , AdaGrad ๋ณด๋ค ๋น ๋ฅด๊ฒ ์๋ ดํ๋ ๊ฒ์ ๋ณผ ์ ์์
[ํ๊ฐ ๋ฐ์ดํฐ์
2 : IMDB ๋ฐ์ดํฐ์
]
sparse feature problme์ ํ
์คํธ ํ๊ธฐ ์ํด IMDB ์ํ ๋ฆฌ๋ทฐ ๋ฐ์ดํฐ์
์ผ๋ก๋ adam์ ํ๊ฐํจ
sparse feature problem : ๋น์ทํ ์ ํ์ด ์ ์ ๋ฐ์ดํฐ(unique value ๊ฐ ๋ง์ ๋ฐ์ดํฐ)
BoW(Bag of Words) Features vector๋ก ์ ์ฒ๋ฆฌ ์งํ (10,000 ์ฐจ์)
Bow Feature Vector : ๋ฌธ์ฅ์ ๋ฒกํฐ(์ซ์)๋ก ํํ
์ค๋ฒํผํ
์ ๋ฐฉ์งํ๊ธฐ ์ํด 50% ๋น์จ์ drop-out์ด ์ ์ฉ๋๋ฉฐ, ์ด ๋
ธ์ด์ฆ๊ฐ BoW Features์ ์ ์ฉ๋จ
์ ํ 1์ ์ค๋ฅธ์ชฝ ๊ทธ๋ํ๋ฅผ ๋ณด๋ฉด loss ๊ฐ์ด ์๋นํ ํ๋ ๊ฒ์ ๋ณผ ์ ์๋๋ฐ, ์ด๊ฒ์ด drop-out์ noise
sparseํ ๊ฒฝ์ฐ Adam, RMSProp, Adagrad๋ ์ข์ ์ฑ๋ฅ์ ๋ด๊ณ ์์ (ํ 1์ ์ค๋ฅธ์ชฝ ๊ทธ๋ํ)
Adam์ sparse features์์๋ ์ฑ๋ฅ์ด ์ข์ผ๋ฉฐ, SGD๋ณด๋ค ๋น ๋ฅธ ์๋ ด ์๋๋ฅผ ์ง๋๊ณ ์์
x์ถ : ํ์ต ํ์, y์ถ : loss ๊ฐ
6.2 EXPERIMENT: MULTI-LAYER NEURAL NETWORKS
MINST ๋ฐ์ดํฐ์
์ฌ์ฉ
multi-layer model : two fully connected hidden layer with 1000 hiden units (ReLU activation, mini-batch 128)
Object Function : Cross-Entropy Loss (with L2 weight decay)
x์ถ : ํ์ต ํ์, y์ถ : loss ๊ฐ
drop-out regularization์ ์ ์ฉํ์ ๋์ optimizer ์ฑ๋ฅ ๋น๊ต -> Adam์ด ๊ฐ์ฅ ๋น ๋ฅด๊ฒ ์๋ ด
6.3 EXPERIMENT: CONVOLUTIONAL NEURAL NETWORKS
[ํ๊ฐ ๋ฐ์ดํฐ์
3 : CIFAR-10 ๋ฐ์ดํฐ์
]
Convolution Neural Network : C64-C64-C128-1000
C64 : 64 output channel์ ๊ฐ์ง๋ 3*3 conv layer
1000 : 1000 output์ ๊ฐ์ง๋ dense layer
์ผ์ชฝ ๊ทธ๋ํ : 3 epoch ๊น์ง์ optimizer ๋ณ ์๋ ด ์๋ ๋น๊ต
์ค๋ฅธ์ชฝ ๊ทธ๋ํ : 45 epoch ๊น์ง์ optimizer ๋ณ ์๋ ด ์๋ ๋น๊ต
x์ถ : ํ์ต ํ์, y์ถ : loss ๊ฐ
dropout์ ์ ์ฉํ์ง ์์ optimizer ์ค์์ Adam์ด ์ ์ผ ์๋ ด ์๋๊ฐ ๋น ๋ฆ
dropout์ ์ ์ฉํ optimizer ์ค์์ Adam์ด ์ ์ผ ์๋ ด ์๋๊ฐ ๋น ๋ฆ
6.4 EXPERIMENT: BIAS-CORRECTION TERM
Stepsize ฮฑ, Decay Rates B1, B2์ ๋ฐ๋ฅธ Training Loss ๊ทธ๋ํ
x์ถ : log(step_size), y์ถ : Loss
์ด๋ก์ ๊ทธ๋ํ : no bias correction terms -> RMSProp
๋นจ๊ฐ์ ๊ทธ๋ํ : bias correction terms (1-B)
Bias correction term์ ์ ์ฉํ์ง ์์์ ๋ B2๊ฐ 1.0์ ๊ฐ๊น์์ง์๋ก ๋ถ์์
=> ์์ฝํ์๋ฉด Adam ์๊ณ ๋ฆฌ์ฆ์ ํ์ดํผํ๋ผ๋ฏธํฐ ์ค์ ์ ์๊ด์์ด RMSProp ์ด์์ ์ฑ๋ฅ์ ๋ณด์๋ค.
7. EXTENSION
ADAMAX
Adam์์ ๊ฐ๋ณ weights๋ฅผ ์
๋ฐ์ดํธ ํ๊ธฐ ์ํด ๊ณผ๊ฑฐ์ ํ์ฌ์ gradient์ L2 norm์ ์ทจํจ
์ด๋ L2 norm์ L_p norm์ผ๋ก ๋ณ๊ฒฝํ ์ ์์
=> p ๊ฐ์ด ์ปค์ง์๋ก ์์น์ ์ผ๋ก ๋ถ์์ ํด์ง๋, p๋ฅผ ๋ฌดํ๋๋ผ๊ณ ๊ฐ์ (infinity norm)ํ๋ฉด ๊ฐ๋จํ๊ณ stableํ ์๊ณ ๋ฆฌ์ฆ์ด ๋จ
TEMPORAL AVERAGING
๋ง์ง๋ง ๋ฐ๋ณต์ ํ๋ฅ ์ ๊ทผ์ฌ๋ก ์ธํด ์ก์์ด ๋ง๊ธฐ ๋๋ฌธ์ ํ๋ผ๋ฏธํฐ ํ๊ท ํ๋ฅผ ํตํด ๋ ๋์ ์ผ๋ฐํ ์ฑ๋ฅ์ ์ป์ ์ ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
8. CONCLUSION
Stochastic objective function์ ์ต์ ํ๋ฅผ ์ํด ๊ฐ๋จํ๊ณ ํจ์จ์ ์ธ ์ต์ ํ ์๊ณ ๋ฆฌ์ฆ Adam์ ์๊ฐํจ
๋๋์ ๋ฐ์ดํฐ์
๊ณผ ๊ณ ์ฐจ์์ ํ๋ผ๋ฏธํฐ ๊ณต๊ฐ์ ๋ํ ๋จธ์ ๋ฌ๋์ ๋ฌธ์ ํด๊ฒฐ์ ์ง์ค
Adam์ AdaGrad๊ฐ Sparse gradients๋ฅผ ๋ค๋ฃจ๋ ๋ฐฉ์(ํ๋ผ๋ฏธํฐ ๋ณ step size๋ฅผ ๋ค๋ฅด๊ฒ ์ ์ฉ)๊ณผ RMSProp์ด non-stationary(์ ์งํ์ง ์๋) objectives๋ฅผ ๋ค๋ฃจ๋ ๋ฐฉ์(๊ณผ๊ฑฐ์ ๊ธฐ์ธ๊ธฐ๋ฅผ ํ์ฌ์ ๊ฒ๋ณด๋ค ๋ ๋ฐ์ํจ)์ ์กฐํฉ
Adam์ non-convexํ ๋ฌธ์ (์ฌ๋ฌ ๊ฐ์ ์ต์ ์ ์ด ์๋ ๋ฌธ์ )์์๋ ์ต์ ํ๊ฐ ์ ๋จ
๐ Reference
๋
ผ๋ฌธ ๋ฆฌ๋ฅ ํฌ์คํ
์ฐธ๊ณ
AdaGrad, RMSProp ์ด๋ก
Optimizer ์ด์ ๋ฆฌ(์ฝ๋ํฌํจ)
Adam ๋
ผ๋ฌธ ๋ฆฌ๋ทฐ ์์
Optimizer ์์ ์ ๋ฆฌ