๐Ÿ“Œ ๋ชฉ์ฐจ

1. preview
2. RNN

3. LSTM
4. GRU
5. Gradient  Clipping

๐Ÿ˜š ๊ธ€์„ ๋งˆ์น˜๋ฉฐ...

 

 

 


1. Preview

์ž์—ฐ์–ด ์ฒ˜๋ฆฌ๋ถ„์•ผ๋Š” ๋ฌธ์žฅ ๋‚ด ๋‹จ์–ด๋“ค์ด ์•ž๋’ค ์œ„์น˜์— ๋”ฐ๋ผ ์„œ๋กœ ์˜ํ–ฅ์„ ์ฃผ๊ณ ๋ฐ›๋Š”๋‹ค.
๋”ฐ๋ผ์„œ ๋‹จ์ˆœํžˆ y = f(x)๊ฐ™์€ ์ˆœ์„œ์˜ ๊ฐœ๋… ์—†์ด ์ž…๋ ฅ์„ ๋„ฃ์œผ๋ฉด ์ถœ๋ ฅ์ด ๋‚˜์˜ค๋Š” ํ•จ์ˆ˜์˜ ํ˜•ํƒœ๊ฐ€ ์•„๋‹Œ, 
์ˆœ์ฐจ์ (sequential)์ž…๋ ฅ์œผ๋กœ ์ž…๋ ฅ์— ๋”ฐ๋ฅธ ๋ชจ๋ธ์˜ hidden state๊ฐ€ ์ˆœ์ฐจ์ ์œผ๋กœ ๋ณ€ํ•˜๋ฉฐ, 
์ƒํƒœ์— ๋”ฐ๋ผ ์ถœ๋ ฅ๊ฒฐ๊ณผ๊ฐ€ ์ˆœ์ฐจ์ ์œผ๋กœ ๋ฐ˜ํ™˜๋˜๋Š” ํ•จ์ˆ˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

์ด๋Ÿฐ ์‹œ๊ฐ„๊ฐœ๋…์ด๋‚˜ ์ˆœ์„œ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•ด ์ž…๋ ฅ์„ ํ•™์Šตํ•˜๋Š” ๊ฒƒ์„ sequential modeling์ด๋ผ ํ•œ๋‹ค.
์‹ ๊ฒฝ๋ง์œผ๋กœ๋Š” RNN ๋“ฑ์œผ๋กœ, ์‹ ๊ฒฝ๋ง ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ HMM, CRFs(Hidden Markov Model์ด๋‚˜ Conditional Random Fields)๋“ฑ์˜ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์œ„์˜ ๋ฌธ์ œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

 

 


2. RNN

2.1 Feed Forward

๊ธฐ๋ณธ์ ์ธ RNN์„ ํ™œ์šฉํ•œ ์ˆœ์ „ํŒŒ ๊ณ„์‚ฐํ๋ฆ„์„ ์•Œ์•„๋ณด์ž.
๋‹ค์Œ ๊ทธ๋ฆผ์€ ๊ฐ time-step๋ณ„๋กœ ์ž…๋ ฅ xt์™€ ์ด์ „ time-step ht๊ฐ€ RNN์œผ๋กœ ๋“ค์–ด๊ฐ€ ์ถœ๋ ฅ o๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
์ด๋ ‡๊ฒŒ ๋„์ถœํ•œ o๋“ค์„ y_hat์œผ๋กœ ์‚ผ์•„์„œ ์ •๋‹ต์ธ y์™€ ๋น„๊ต ํ›„, ์†์‹ค L์„ ๊ณ„์‚ฐํ•œ๋‹ค.





์ด๋ฅผ ์ˆ˜์‹์œผ๋กœ ํ‘œํ˜„ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

2.2 BPTT (Back Propagation Through Time)
์ˆœ์ „ํŒŒ ์ดํ›„ time-step์˜ RNN์— ์‚ฌ์šฉ๋œ parameter θ๋Š” ๋ชจ๋“  ์‹œ๊ฐ„์— ๊ณต์œ ๋˜์–ด ์‚ฌ์šฉ๋œ๋‹ค.
๋”ฐ๋ผ์„œ ์•ž์„œ ๊ตฌํ•œ ์†์‹ค L์— ๋ฏธ๋ถ„์„ ํ†ตํ•ด ์—ญ์ „ํŒŒ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด, ๊ฐ time-step๋ณ„๋กœ ๋’ค๋กœ๋ถ€ํ„ฐ  θ์˜ ๊ธฐ์šธ๊ธฐ๊ฐ€ ๊ตฌํ•ด์ง€๊ณ , ์ด์ „ time-step(t-1)θ์˜ ๊ธฐ์šธ๊ธฐ์— ๋”ํ•ด์ง„๋‹ค.
์ฆ‰, t๊ฐ€ 0์— ๊ฐ€๊นŒ์›Œ์งˆ์ˆ˜๋ก RNN์˜ parameter θ์˜ ๊ธฐ์šธ๊ธฐ๋Š” ๊ฐ time-step๋ณ„ ๊ธฐ์šธ๊ธฐ๊ฐ€ ๋”ํ•ด์ ธ ์ ์  ์ปค์ง„๋‹ค.

์•„๋ž˜ ๊ทธ๋ฆผ์—์„œ ์ขŒ์ธก์œผ๋กœ ๊ฐˆ์ˆ˜๋ก ๊ธฐ์šธ๊ธฐ๊ฐ€ ๋”ํ•ด์ ธ ์ ์ ์ปค์ง€๋Š” ์†์„ฑ์„ ๊ฐ–๋Š”๋ฐ,
์ด ์†์„ฑ์„ '์‹œ๊ฐ„ ์ถ•์— ๋Œ€ํ•ด ์ˆ˜ํ–‰๋˜๋Š” ์—ญ์ „ํŒŒ ๋ฐฉ๋ฒ•'์ด๋ผ๋Š” ๋œป์œผ๋กœ BPTT๋ผ ํ•œ๋‹ค.
์ด๋Ÿฐ RNN ์—ญ์ „ํŒŒ์˜ ์†์„ฑ์œผ๋กœ ์ธํ•ด, RNN์€ ๋งˆ์น˜ time-step ์ˆ˜๋งŒํผ layer๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ์ƒํƒœ๊ฐ€ ๋˜๋ฏ€๋กœ time-step์ด ๊ธธ์–ด์งˆ์ˆ˜๋ก Deep RNN๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ๋™์ž‘ํ•œ๋‹ค.

 

2.3 Gradient Vanishing
์•ž์„œ ์„ค๋ช…ํ–ˆ๋“ฏ, BPTT๋กœ์ธํ•ด RNN์€ ์—ญ์ „ํŒŒ ์‹œ ๋งˆ์น˜ time-step๋งŒํผ์˜ ๊ณ„์ธต์ด ์žˆ๋Š”๊ฒƒ๊ณผ ๋น„์Šทํ•œ ์†์„ฑ์„ ๊ฐ–๋Š”๋‹ค.
ํ•˜์ง€๋งŒ ์•ž์˜ RNN ์ˆ˜์‹์„ ๋ณด๋ฉด ํ™œ์„ฑํ™”ํ•จ์ˆ˜๋กœ tanhํ•จ์ˆ˜๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค.
tanh์˜ ์–‘ ๋ ๊ธฐ์šธ๊ธฐ๊ฐ€ -1๊ณผ 1๋กœ ์ˆ˜๋ ด(๊ธฐ์šธ๊ธฐ๋Š” 0์— ๊ทผ์ ‘)ํ•œ๋‹ค.
๋”ฐ๋ผ์„œ tanh ์–‘ ๋์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ธต์˜ ๊ฒฝ์šฐ, ๊ธฐ์šธ๊ธฐ๊ฐ€ 0์— ๊ฐ€๊นŒ์›Œ์ง„๋‹ค.
์ด๋ ‡๊ฒŒ๋˜๋ฉด ๊ทธ ๋‹ค์Œ์œผ๋กœ ๋ฏธ๋ถ„๊ฐ’์„ ์ „๋‹ฌ๋ฐ›์€ ์ธต์€ ์ œ๋Œ€๋กœ๋œ ๋ฏธ๋ถ„๊ฐ’(๊ธฐ์šธ๊ธฐ)์„ ์ „๋‹ฌ๋ฐ›์„ ์ˆ˜ ์—†๊ฒŒ ๋œ๋‹ค.
y>0: sigmoidํ•จ์ˆ˜, -1~1: tanhํ•จ์ˆ˜

์ถ”๊ฐ€์ ์œผ๋กœ tanh์™€ sigmoid์˜ ๋„ํ•จ์ˆ˜๋Š” ๋ชจ๋‘ ๊ธฐ์šธ๊ธฐ ๊ฐ’์ด 1๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฏ€๋กœ
โ—๏ธ์ธต์„ ๊ฑฐ์น ์ˆ˜๋ก ๊ธฐ์šธ๊ธฐ์˜ ํฌ๊ธฐ๋Š” ์ž‘์•„์งˆ ์ˆ˜ ๋ฐ–์— ์—†๋‹ค!! → gradient vanishing


tanh'(0)=1 , sigmoid'(0)=0.5 ๊ฐ’์„ ๊ฐ–๋Š”๋‹ค.
๋”ฐ๋ผ์„œ RNN๊ฐ™์ด time-step์ด ๋งŽ๊ฑฐ๋‚˜ ์—ฌ๋Ÿฌ์ธต์„ ๊ฐ–๋Š” MLP์˜ ๊ฒฝ์šฐ, ์ด๋Ÿฐ ๊ธฐ์šธ๊ธฐ์†Œ์‹ค๋ฌธ์ œ๊ฐ€ ์‰ฝ๊ฒŒ ๋ฐœ์ƒํ•œ๋‹ค.
๋‹ค๋งŒ MLP์—์„œ ReLU์™€ Skip-Connection์˜ ๋“ฑ์žฅ์œผ๋กœ ๋„ˆ๋ฌด ํฐ ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.

 

2.4 Deep RNN
๊ธฐ๋ณธ์ ์œผ๋กœ time-step๋ณ„ RNN์ด ๋™์ž‘ํ•œ๋‹ค.
๋‹ค๋งŒ, ์•„๋ž˜์ฒ˜๋Ÿผ ํ•˜๋‚˜์˜ time-step๋‚ด์—์„œ ์—ฌ๋Ÿฌ์ธต์˜ RNN์„ ์Œ“์„ ์ˆ˜๋„ ์žˆ๋‹ค.
๋‹น์—ฐํžˆ ์ธต๋ณ„๋กœ parameter θ๋ฅผ ๊ณต์œ ํ•˜์ง€ ์•Š๊ณ  ๋”ฐ๋กœ ๊ฐ–๋Š”๋‹ค.

ํ•˜๋‚˜์˜ ์ธต๋งŒ ๊ฐ–๋Š” ๊ธฐ์กด RNN์˜ ๊ฒฝ์šฐ, hidden state์™€ ์ถœ๋ ฅ๊ฐ’์ด ๊ฐ™์€ ๊ฐ’์ด์—ˆ๋‹ค.
์—ฌ๋Ÿฌ ์ธต์ด ์Œ“์—ฌ ์ด๋ค„์ง„ RNN์˜ ๊ฒฝ์šฐ, ๊ฐ time-step์˜ RNN ์ „์ฒด ์ถœ๋ ฅ๊ฐ’์€ ๋งจ ์œ„์ธต hidden state๊ฐ€ ๋œ๋‹ค.

์ถœ๋ ฅํ…์„œ์˜ ํฌ๊ธฐ์˜ ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
 โˆ™ ๋‹จ์ผ RNN: |h1:n| = (batch_size, n, hidden_size)
 โˆ™ Deep RNN: |ht| = (#layers, batch_size, hidden_size)

 

2.5 Bidirectional RNN
์ด์ œ RNN์˜ ๋ฐฉํ–ฅ์— ๊ด€ํ•ด ์ด์•ผ๊ธฐํ•ด๋ณด์ž.
์–‘๋ฐฉ์–‘ RNN์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ธฐ์กด ์ •๋ฐฉํ–ฅ์— ์—ญ๋ฐฉํ–ฅ๊นŒ์ง€ ์ถ”๊ฐ€๋˜์–ด
๋งˆ์ง€๋ง‰ time-step์—์„œ๋ถ€ํ„ฐ ๊ฑฐ๊พธ๋กœ ์—ญ๋ฐฉํ–ฅ(reverse direction)์œผ๋กœ ์ž…๋ ฅ๋ฐ›์•„ ์ง„ํ–‰ํ•œ๋‹ค.
๋‹น์—ฐํžˆ ์ •๋ฐฉํ–ฅ๊ณผ ์—ญ๋ฐฉํ–ฅ์˜ parameter θ๋Š” ๊ณต์œ ๋˜์ง€ ์•Š๋Š”๋‹ค.

๊ฒฐ๊ณผ์ ์œผ๋กœ, output์€ ๊ณผ๊ฑฐ์™€ ๋ฏธ๋ž˜ ๋ชจ๋‘์— ์˜์กดํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.


์ถœ๋ ฅํ…์„œ์˜ ํฌ๊ธฐ์˜ ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
 โˆ™ |ht| = (#direction × #layers, batch_size, hidden_size)

 

2.6 NLP ์ ์šฉ์‚ฌ๋ก€

 

2.7 ์ •๋ฆฌ
NLP์—์„œ ๊ฑฐ์˜ ๋Œ€๋ถ€๋ถ„์˜ ์ž…์ถœ๋ ฅํ˜•ํƒœ๋Š” ๋ชจ๋‘ ๋ถˆ์—ฐ์†์ ์ธ ๊ฐ’์„ ๊ฐ–๋Š”๋‹ค.
์ฆ‰, regression๋ณด๋‹ค๋Š” classification์— ๊ฐ€๊น๋‹ค.
๋”ฐ๋ผ์„œ Cross-Entropy Loss function์„ ์‚ฌ์šฉํ•ด ์‹ ๊ฒฝ๋ง์„ trainํ•œ๋‹ค.

์ด์ฒ˜๋Ÿผ RNN์€ ๊ฐ€๋ณ€๊ธธ์ด์˜ ์ž…๋ ฅ์„ ๋ฐ›์•„ ์ถœ๋ ฅ์œผ๋กœ ๊ฐ€๋ณ€๊ธธ์ด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ชจ๋ธ์ด๋‹ค.
ํ•˜์ง€๋งŒ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ Vanilla-RNN์€ time-step์ด ๊ธธ์–ด์งˆ์ˆ˜๋ก ์•ž์˜ data๊ธฐ์–ต์ด ์–ด๋ ต๋‹ค.

 

 

 

 

 


3.  LSTM (Long Short Term Memory)

3.1 LSTM
 โˆ™ RNN์€ ๊ฐ€๋ณ€๊ธธ์ด์˜ sequential dataํ˜•ํƒœ ์ž…๋ ฅ์— ์ž˜ ์ž‘๋™ํ•˜์ง€๋งŒ ๊ทธ ๊ธธ์ด๊ฐ€ ๊ธธ์–ด์งˆ์ˆ˜๋ก ์•ž์„œ์ž…๋ ฅ๋œ data๋ฅผ ๊นŒ๋จน๋Š” ์น˜๋ช…์ ์ธ ๋‹จ์ ์ด ์กด์žฌํ•œ๋‹ค. ์ด๋ฅผ ๋ณด์™„ํ•˜๊ณ ์ž LSTM์ด ๋„์ž…๋˜์—ˆ๋‹ค. (์—ฌ์ „ํžˆ ๊ธด ๊ธธ์ด์˜ data์— ๋Œ€ํ•ด ๊ธฐ์–ตํ•˜์ง€๋Š” ๋ชปํ•จ, ๋ณด์™„๋งŒ ํ•จ)

LSTM์€ ๊ธฐ์กด RNN์˜ ์€๋‹‰์ƒํƒœ ์ด์™ธ์— ๋ณ„๋„์˜ cell state๋ฅผ ๊ฐ–๊ฒŒํ•˜์—ฌ ๊ธฐ์–ต๋ ฅ์„ ์ฆ๊ฐ•ํ•œ๋‹ค.
์ถ”๊ฐ€์ ์œผ๋กœ ์—ฌ๋Ÿฌ gate๋ฅผ ๋‘ฌ forget, output ๋“ฑ์„ ํšจ๊ณผ์ ์œผ๋กœ ์ œ์–ดํ•œ๋‹ค.
๊ทธ ๊ฒฐ๊ณผ, ๊ธด ๊ธธ์ด์˜ data์— ๋Œ€ํ•ด์„œ๋„ ํšจ์œจ์ ์œผ๋กœ ๋Œ€์ฒ˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.
๋‹ค๋งŒ, ๊ตฌ์กฐ์ ์œผ๋กœ ๋”์šฑ ๋ณต์žกํ•ด์ ธ์„œ ๋” ๋งŽ์•„์ง„ parameter ํ•™์Šต์„ ์œ„ํ•ด ๋” ๋งŽ์€ data๋ฅผ ์ด์šฉํ•ด ํ›ˆ๋ จํ•ด์•ผํ•œ๋‹ค.
์•„๋ž˜๋Š” LSTM์˜ ์ˆ˜์‹์ด๋‹ค.
๊ฐ gate์˜ sigmoid(σ)๊ฐ€ ๋ถ™์–ด 0~1๊ฐ’์œผ๋กœ gate๋ฅผ ์–ผ๋งˆ๋‚˜ ์—ด๊ณ  ๋‹ซ์„์ง€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค.

 

3.2 LSTM์˜ ์—ญ์ „ํŒŒ

 

 

 

 

 

 


4. GRU (Gated Recurrent Unit)

4.1 GRU
GRU๋Š” LSTM์˜ ๊ฐ„์†Œํ™” ๋ฒ„์ „์œผ๋กœ ๊ธฐ์กด์— ๋น„ํ•ด ๋” ๊ฐ„๋‹จํ•˜์ง€๋งŒ ์„ฑ๋Šฅ์ด ๋น„์Šทํ•œ ๊ฒƒ์ด ํŠน์ง•์ด๋‹ค.

σ๋กœ ๊ตฌ์„ฑ๋œ rt(reset gate)์™€ zt(update gate)๊ฐ€ ์กด์žฌํ•œ๋‹ค.
σ๋กœ ์—ฌ์ „ํžˆ data์˜ ํ๋ฆ„์„ ์—ด๊ณ  ๋‹ซ์•„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ,
๊ธฐ์กด LSTM๋Œ€๋น„ gate์˜ ์ˆซ์ž๋Š” ์ค„๊ณ  ๋”ฐ๋ผ์„œ gate์— ๋”ธ๋ ค์žˆ๋Š” parameter ์ˆ˜๋„ ๊ทธ๋งŒํผ ์ค„์–ด๋“ ๋‹ค.
GRU์˜ ์ˆ˜์‹์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

GRU๋Š” LSTM๋ณด๋‹ค ๋ชธ์ง‘์ด ์ž‘๊ธดํ•˜์ง€๋งŒ LSTM์ด ํ˜„์ €ํžˆ ์‚ฌ์šฉ๋นˆ๋„๊ฐ€ ๋” ๋†’์€๋ฐ, 
์„ฑ๋Šฅ์ฐจ์ด๋ณด๋‹ค๋Š” LSTM๊ณผ GRU์˜ ํ•™์Šต๋ฅ , hidden_size๋“ฑ์˜ hyper-parameter๊ฐ€ ๋‹ค๋ฅด๊ธฐ์—
์‚ฌ์šฉ๋ชจ๋ธ์—๋”ฐ๋ผ parameter setting์„ ๋‹ค์‹œ ์ฐพ์•„๋‚ด์•ผ ํ•œ๋‹ค.

 

 

 

 

 

 

 

 


5. Gradient Clipping

5.1 Gradient Clipping
RNN์€ BPTT(Back Propagation Through Time)์„ ํ†ตํ•ด ์‹œ๊ฐ„์—ญํ–‰์œผ๋กœ ๊ธฐ์šธ๊ธฐ๋ฅผ ๊ตฌํ•œ๋‹ค.
๋งค time step๋งˆ๋‹ค RNN์˜ parameter์— ๊ธฐ์šธ๊ธฐ๊ฐ€ ๋”ํ•ด์ง€๋ฏ€๋กœ ์ถœ๋ ฅ์˜ ๊ธธ์ด์—๋”ฐ๋ผ ๊ธฐ์šธ๊ธฐํฌ๊ธฐ๊ฐ€ ๋‹ฌ๋ผ์ง„๋‹ค.
์ฆ‰, ๊ธธ์ด๊ฐ€ ๊ธธ์ˆ˜๋ก ์ž์นซ ๊ธฐ์šธ๊ธฐ์˜ ํฌ๊ธฐ์ธ norm์ด ๋„ˆ๋ฌด ์ปค์ง€๋Š”, gradient exploding๋ฌธ์ œ๊ฐ€ ์•ผ๊ธฐ๋  ์ˆ˜ ์žˆ๋‹ค.

โ—๏ธ๊ธฐ์šธ๊ธฐ์˜ ํฌ๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ์ปค์งˆ ๋•Œ, ๊ฐ€์žฅ ์‰ฌ์šด ๋Œ€์ฒ˜๋ฒ•: ํ•™์Šต๋ฅ ์„ ์•„์ฃผ ์ž‘๊ฒŒ ์„ค์ •
๋‹ค๋งŒ, ํ›ˆ๋ จ์†๋„๊ฐ€ ๋งค์šฐ ๋Š๋ ค์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋‹จ์ ์ด ์กด์žฌํ•˜๋ฉฐ local optima์— ๋น ์งˆ ์ˆ˜ ์žˆ์Œ
์ฆ‰, ๊ธธ์ด๊ฐ€ ๊ฐ€๋ณ€์ด๊ธฐ์— ํ•™์Šต๋ฅ ์„ ๋งค๋ฒˆ ์•Œ๋งž๊ฒŒ ์ตœ์ ์˜ ๊ฐ’์„ ์ฐพ๋Š” ๊ฒƒ์€ ๋ฌด์ฒ™ ์–ด๋ ต๊ธฐ์—
์ด๋•Œ, Gradient Clipping์ด ํฐ ์œ„๋ ฅ์„ ๋ฐœํœ˜ํ•œ๋‹ค.




Gradient Clipping์€ parameter θ์˜ norm(๋ณดํ†ต L2 norm)๋ฅผ ๊ตฌํ•˜๊ณ 
์ด norm์˜ ํฌ๊ธฐ๋ฅผ ์ œํ•œํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.
์ฆ‰, gradient vector๋Š” ์œ ์ง€, ํฌ๊ธฐ๋ฅผ ํ•™์Šต์— ์˜ํ–ฅ์ฃผ์ง€ ์•Š๋Š” ๋งŒํผ ์ค„์ด๋Š” ๊ฒƒ์ด๋‹ค.

์ˆ˜์‹์„ ๋ณด๋ฉด, ๊ธฐ์šธ๊ธฐ norm์ด ์ •ํ•ด์ง„ ์ตœ๋Œ€๊ฐ’(threshold)๋ณด๋‹ค ํฌ๋‹ค๋ฉด ์ตœ๋Œ€๊ฐ’๋ณด๋‹ค ํฐ ๋งŒํผ์˜ ๋น„์œจ๋กœ ๋‚˜๋ˆ ์ค€๋‹ค.
๊ฒฐ๊ณผ์ ์œผ๋กœ ํ•ญ์ƒ ๊ธฐ์šธ๊ธฐ๋Š” threshold๋ณด๋‹ค ์ž‘์•„์ง€๊ฒŒ ๋˜๋ฉฐ, ์ด๋Š” ํ•™์Šต์˜ ๋ฐœ์‚ฐ์„ ๋ฐฉ์ง€ํ•˜๊ณ  ๊ธฐ์šธ๊ธฐ์˜ ๋ฐฉํ–ฅ์ž์ฒด๋ฅผ ๋ฐ”๊พธ์ง€ ์•Š๊ณ  ์œ ์ง€์‹œ์ผœ parameter θ๊ฐ€ ํ•™์Šตํ•ด์•ผํ•˜๋Š” ๋ฐฉํ–ฅ์„ฑ์„ ์žƒ์ง€ ์•Š๊ฒŒ ํ•ด์ค€๋‹ค.

์ฆ‰, ์†์‹คํ•จ์ˆ˜๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ์šธ๊ธฐ์˜ ๋ฐฉํ–ฅ์€ ์œ ์ง€ํ•˜๊ณ , ํฌ๊ธฐ๋งŒ ์กฐ์ ˆํ•˜๊ธฐ์— ํ•™์Šต๋ฅ ์„ 1๊ณผ ๊ฐ™์ด ํฐ ๊ฐ’์œผ๋กœ๋„ ํ•™์Šต์— ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค.
๋‹ค๋งŒ, Adam๊ณผ ๊ฐ™์€ ๋™์  ํ•™์Šต๋ฅ ์„ ๊ฐ–๋Š” optimizer๋Š” ์‚ฌ์šฉํ•  ํ•„์š”์„ฑ์ด ์—†๊ณ  SGD์™€ ๊ฐ™์€ ๊ฒฝ์šฐ ์ ์šฉํ•˜๋Š” ํŽธ์ด ์ข‹๋‹ค.

์•„๋ž˜์™€ ๊ฐ™์ด pytorch์—์„œ Gradient Clipping๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
import torch.optim as optim
import torch.nn.utils as torch_utils

learning_rate = 1.
max_norm = 5

optimizier = optim.SGD(model.parameters(), lr=learning_rate, weight_decay=0.01)

# ๊ธฐ์šธ๊ธฐํญ๋ฐœ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด gradient clipping์„ ๋„์ž…
torch_utils.clip_grad_norm_(model.parameters(), max_grad_norm)

optimizer.step()

 

 

 

 

 

 

 


๋งˆ์น˜๋ฉฐ...

์ด๋ฒˆ์‹œ๊ฐ„์—๋Š” RNN์„ ํ™œ์šฉํ•œ ์ˆœ์„œ์ •๋ณด๋ฅผ ๊ฐ€์ง„ ์ˆœ์ฐจ๋ฐ์ดํ„ฐ, ์‹œ๊ณ„์—ด๋ฐ์ดํ„ฐ๋ฅผ ํ•™์Šตํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ตํ˜”๋‹ค.
๊ธฐ์กด์˜ ์‹ ๊ฒฝ๋ง๊ณผ ๋‹ฌ๋ฆฌ RNN์€ ์ด์ „ time step์˜ ์ž๊ธฐ์ž์‹ ์„ ์ฐธ์กฐํ•ด ํ˜„์žฌ ์ž์‹ ์˜ state๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค.
๋”ฐ๋ผ์„œ time step๋งˆ๋‹ค RNN์˜ ์‹ ๊ฒฝ๋ง๊ฐ€์ค‘์น˜๋Š” ๊ณต์œ ๋˜์ง€๋งŒ ๊ธฐ์šธ๊ธฐ์†Œ์‹ค, ์žฅ๊ธฐ๊ธฐ์–ต ๋“ฑ์˜ ๋ฌธ์ œ๋กœ ๊ธด ์ˆœ์ฐจ๋ฐ์ดํ„ฐ์ฒ˜๋ฆฌ์— ์–ด๋ ค์›€์„ ๊ฒช๋Š”๋‹ค.


LSTM๊ณผ GRU์˜ ๊ฒฝ์šฐ, ์ด๋Ÿฐ RNN์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•ด ์—ฌ๋Ÿฌ gate๋ฅผ ์—ด๊ณ  ๋‹ซ์•„(by sigmoid)
์ •๋ณด์˜ ํ๋ฆ„์„ ์กฐ์ ˆํ•จ์œผ๋กœ์จ ์žฅ๊ธฐ๊ธฐ์–ต๋ ฅ์— ๋” ๋‚˜์€ ์„ฑ๋Šฅ์„ ๋ณด์—ฌ์ค€๋‹ค.


RNN์˜ ์—ญ์ „ํŒŒ์•Œ๊ณ ๋ฆฌ์ฆ˜์ธ BPTT๋Š” ์‹œ๊ฐ„์— ๋Œ€ํ•ด์„œ๋„ ์ด๋ค„์ง€๋Š”๋ฐ,
time-step์ด ๋งŽ์€ data์ผ์ˆ˜๋ก time-step๋ณ„ ๊ธฐ์šธ๊ธฐ๊ฐ€ ๋”ํ•ด์ ธ ์ตœ์ข…๊ธฐ์šธ๊ธฐ๊ฐ€ ์ปค์ง„๋‹ค.
๊ธฐ์šธ๊ธฐ๊ฐ€ ํด ๋•Œ, ๋„ˆ๋ฌด ํฐ ํ•™์Šต๋ฅ ์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๋‹น ํ•™์Šต์€ ๋ฐœ์‚ฐํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค.

๋”ฐ๋ผ์„œ ๊ธฐ์šธ๊ธฐ๊ฐ€ ์ •ํ•ด์ง„ ์ž„๊ณ„์น˜๋ณด๋‹ค ์ปค์ง€์ง€ ์•Š๋„๋กํ•˜๋Š” Gradient Clipping์„ ํ†ตํ•ด ๋ฐฉํ–ฅ์€ ์œ ์ง€, ํฌ๊ธฐ๋งŒ ๊ฐ์†Œ์‹œ์ผœ 
ํ•™์Šต๋ฅ  1๊ณผ ๊ฐ™์€ ๋งค์šฐ ํฐ ๊ฐ’๋„ ํ•™์Šต์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

 

+ Recent posts