AI(Artificial Intelligence)/DL(Deep Learning)

[RNN] 2. Vanialla RNN, LSTM(Long Short-Term Memory), GRU(Gated Recurrent Unit)

ํƒฑ์ ค 2021. 2. 23. 11:39

์ˆœ์ฐจ ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์ˆœํ™˜ ์‹ ๊ฒฝ๋ง์„ ํ†ตํ•ด ์ฒ˜๋ฆฌํ•˜๋Š”์ง€ ์•Œ์•„๋ณด์ž.


๊ธฐ์–ต ์‹œ์Šคํ…œ

  • ๋งŒ์•ฝ ์‹œ๋ฆฌ ๊ฐ™์€ ๊ฐœ์ธ ๋น„์„œ์˜ ๊ฒฝ์šฐ ์˜ฌ๋ฐ”๋ฅธ ๋Œ€๋‹ต์„ ํ•˜๋ ค๋ฉด ์ž…๋ ฅ์„ ๋ฐ›์„ ๋•Œ๋งˆ๋‹ค ๊ทธ ๋‚ด์šฉ์„ ๊ธฐ์–ตํ•ด์•ผ ํ•œ๋‹ค.
  • ๋ฐ˜๋Œ€๋กœ ์ด์ „ ์ž…๋ ฅ์„ ๊ธฐ์–ตํ•˜์ง€ ์•Š๋Š” ์‹œ์Šคํ…œ์€ ๋ฌด๊ธฐ์–ต ์‹œ์Šคํ…œ์ด๋ผ ํ•œ๋‹ค.
    • ์–•์€ ์‹ ๊ฒฝ๋ง(Shallow Neural Network)์ด ๋ฌด๊ธฐ์–ต ์‹œ์Šคํ…œ์˜ ์˜ˆ์‹œ
    • n๋ฒˆ์งธ Time-Step์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๊ฐ€ ์ด์ „ ์ž…๋ ฅ์— ์˜ํ–ฅ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค.

์–•์€ ์‹ ๊ฒฝ๋ง๊ณผ RNN์˜ ์ฐจ์ด


๊ธฐ๋ณธ์ ์ธ ์ˆœํ™˜ ์‹ ๊ฒฝ๋ง (Vanilla Recurrent Network)

WIKI: RNN

  • Vanilla RNN์˜ ๊ตฌ์กฐ๋Š” shallow NN ๊ตฌ์กฐ์— '์ˆœํ™˜(recurrent)'์ด ์ถ”๊ฐ€๋œ ๊ฒƒ์ด๋‹ค.
    • ์ˆœํ™˜: n-1๋ฒˆ์งธ time step์ด n๋ฒˆ์งธ time step์œผ๋กœ ๋‹ค์‹œ ๋Œ์•„์˜ค๋Š” ๊ฒƒ
  • ๊ธฐ์–ต ์‹œ์Šคํ…œ์ด๋ฏ€๋กœ RNN์˜ ์ถœ๋ ฅ์€ ์ด์ „์˜ ๋ชจ๋“  ์ž…๋ ฅ์— ์˜ํ–ฅ์„ ๋ฐ›๋Š”๋‹ค.

๋‹ค์ธต ๊ณ„์ธต ์ˆœํ™˜ ์‹ ๊ฒฝ๋ง (Multi-Layer RNN)

  • ์ˆœํ™˜ ์‹ ๊ฒฝ๋ง๋„ ์‹ฌ์ธต ์‹ ๊ฒฝ๋ง์ฒ˜๋Ÿผ ๊นŠ๊ฒŒ ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋‹ค.
  • ํ•˜์ง€๋งŒ, ์‹ ๊ฒฝ๋ง์˜ ๊ตฌ์กฐ๊ฐ€ ๋งค์šฐ ๋ณต์žกํ•ด์ง€๊ณ  depth๊ฐ€ ๊นŠ์–ด์งˆ์ˆ˜๋ก time step์ด ๋Š˜์–ด๊ฐ€ gradient๊ฐ€ ๋šซ๊ณ  ๋‚˜์™€ํ– ํ•ด ๋ณต์žกํ•˜๋‹ค.
  • ๋”ฐ๋ผ์„œ ๋‹ค์ธต ๊ณ„์ธต์ด ์•„๋‹Œ ๋‹ค๋ฅธ ์ˆœํ™˜ ์‹ ๊ฒฝ๋ง๋“ค์ด ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.

์‹ฌํ™” ์ˆœํ™˜ ์‹ ๊ฒฝ๋ง

  • LSTM, GRU ๋“ฑ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.

LSTM(Long Short-Term Memory)

์ถœ์ฒ˜: https://en.wikipedia.org/wiki/Long_short-term_memory

  • ๊ธฐ์–ตํ•  ๊ฒƒ์€ ์˜ค๋ž˜ ๊ธฐ์–ตํ•˜๊ณ  ์žŠ์„ ๊ฒƒ์€ ๋นจ๋ฆฌ ์žŠ์–ด๋ฒ„๋ฆฌ๋Š” ๋Šฅ๋ ฅ ์žˆ์Œ
  • Cell State
    • ๊ธฐ์–ต์„ ์˜ค๋ž˜ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ƒˆ๋กœ์šด ํŠน์ง•์„ ๋ง์…ˆ์œผ๋กœ ๋ฐ›๋Š” ๊ตฌ์กฐ (Residual Network์™€ ๋น„์Šท)
  • Hidden State
    • ๊ณ„์ธต์˜ ์ถœ๋ ฅ (๋‹ค์Œ ํƒ€์ž„ ์Šคํ…์œผ๋กœ ๋„˜๊ธฐ๋Š” ์ •๋ณด)
  • Forget Gate
    • sigmoid ํ™œ์„ฑ ํ•จ์ˆ˜๋กœ 0-1 ์ถœ๋ ฅ๊ฐ’ ๊ฐ€์ง
    • cell state์— forget gate๋ฅผ ๊ณฑํ•ด์ฃผ์–ด ์–ผ๋งŒํผ ์žŠ์„์ง€ ๊ฒฐ์ •
  • Input Gate
    • sigmoid ํ™œ์„ฑ ํ•จ์ˆ˜๋กœ 0-1 ์ถœ๋ ฅ๊ฐ’ ๊ฐ€์ง
    • ์ƒˆ๋กญ๊ฒŒ ์ถ”์ถœํ•œ ํŠน์ง•์„ ์–ผ๋งŒํผ ์‚ฌ์šฉํ•  ์ง€ ๊ฒฐ์ •
  • Output Gate
    • sigmoid ํ™œ์„ฑ ํ•จ์ˆ˜๋กœ 0-1 ์ถœ๋ ฅ๊ฐ’ ๊ฐ€์ง
    • Cell๋กœ๋ถ€ํ„ฐ ์ถœ๋ ฅ์„ ์–ผ๋งˆ๋‚˜ ๋‚ด๋ณด๋‚ผ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ์—ญํ• 

 

GRU(Gated Recurrent Unit)

์ถœ์ฒ˜: wiki-GRU

  • LSTM์„ ๊ฐ„์†Œํ™”ํ•œ ๋ฒ„์ „
  • Cell state๊ฐ€ ์—†๊ณ  Hidden State๋งŒ ์กด์žฌ
  • Forget Gate์™€ Input Gate ๊ฒฐํ•ฉ
    • Forget Gate๋ฅผ 1์—์„œ ๋นผ์„œ input Gate๋กœ ์‚ฌ์šฉ
  • Reset Gate ์ถ”๊ฐ€
    • Sigmoid ํ™œ์„ฑ ํ•จ์ˆ˜๋กœ 0-1 ์ถœ๋ ฅ๊ฐ’ ๊ฐ€์ง
    • ์ด์ „ hidden state๋ฅผ ์–ผ๋งˆ๋‚˜ ์‚ฌ์šฉํ• ์ง€ ์ •ํ•˜๋Š” ์—ญํ• 
    • 0์— ๊ฐ€๊นŒ์šด ๊ฐ’ ๋˜๋ฉด 'Reset'
  • ์ „๋ฐ˜์ ์œผ๋กœ ๊ธฐ์–ต์„ ์–ด๋–ป๊ฒŒ ๋Œ๊ณ  ๊ฐ€๋Š”์ง€๋Š” forget gate์ง€๋งŒ ํ˜„์žฌ ์ƒˆ feature ๋ฝ‘์„ ๋•Œ ์ด์ „ ๊ธฐ์–ต์— ์–ผ๋งŒํผ ์˜ํ–ฅ๋ฐ›๊ฒŒ ํ• ์ง€๋Š” reset gate
728x90