๐Ÿ“” LSTM (Long Short-Term Memory)์„ ์ดํ•ดํ•ด๋ณด์ž !

์ •๋˜์น˜ยท2022๋…„ 9์›” 13์ผ
0

์ง€์‹++1

๋ชฉ๋ก ๋ณด๊ธฐ
3/15
post-thumbnail

๐Ÿ’Ž Reference

http://www.incodom.kr/LSTM
https://dgkim5360.tistory.com/entry/understanding-long-short-term-memory-lstm-kr



LSTM ์ด๋ž€?

LSTM (Long Short Term Memory)์€ ๊ธฐ์กด์˜ RNN์—์„œ ์ถœ๋ ฅ๊ณผ ๋ฉ€๋ฆฌ ์žˆ๋Š” ์ •๋ณด๋ฅผ ๊ธฐ์–ตํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๋‹จ์ ์„ ๋ณด์™„ํ•˜์—ฌ ์žฅ/๋‹จ๊ธฐ ๊ธฐ์–ต์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ์„ค๊ณ„ํ•œ ์‹ ๊ฒฝ๋ง์˜ ๊ตฌ์กฐ์ด๋‹ค. ์ฃผ๋กœ ์‹œ๊ณ„์—ด ์ฒ˜๋ฆฌ๋‚˜, ์ž์—ฐ์–ด ์ฒ˜๋ฆฌ์— ์‚ฌ์šฉ๋œ๋‹ค.

Recurrent Neural Network (RNN)

๊ธฐ์กด์˜ neural network๋Š” ์ด์ „์— ์ผ์–ด๋‚œ ์‚ฌ๊ฑด์„ ๋ฐ”ํƒ•์œผ๋กœ ๋‚˜์ค‘์— ์ผ์–ด๋‚˜๋Š” ์‚ฌ๊ฑด์„ ์•Œ์ง€ ๋ชปํ•œ๋‹ค. RNN์€ Input x๊ฐ€ ๋“ค์–ด๊ฐ€๋ฉด ์—ฌ๋Ÿฌ ๋ฒˆ์˜ ์ˆœํ™˜์„ ๊ฑฐ์ฒ˜ output y๊ฐ€ ๋‚˜์˜ค๋Š” ๊ตฌ์กฐ์ด๋‹ค. ์ด์ „ ๋‹จ๊ณ„์—์„œ ์–ป์€ ์ •๋ณด๊ฐ€ ์ง€์†ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ฒด์ธ๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

RNN์€ BPTT(BackPropagation Through Time) ์—ญ์ „ํŒŒ ๋ฐฉ์‹์„ ๋ชจ๋“  ํƒ€์ž„ ์Šคํ…์— ์ ์šฉํ•œ๋‹ค. ์ด๋Š” ํƒ€์ž„ ์Šคํ…์ด ํฌ๋ฉด (์˜ค๋ž˜์ „์˜ ์ •๋ณด๋ฅผ ํ•„์š”๋กœ ํ•˜๋ฉด) ๋งค์šฐ ๊นŠ์€ ๋„คํŠธ์›Œํฌ๊ฐ€ ๋˜๋ฉฐ Gradient vanishing / exploding ๋ฌธ์ œ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค. ๋˜ ์žฅ๊ธฐ์ ์ธ ํŒจํ„ด์„ ํ•™์Šตํ•  ์ˆ˜ ์—†๊ธฐ๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์žฅ๊ธฐ๊ฐ„์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” LSTM Cell์ด ์ œ์•ˆ๋˜์—ˆ๋‹ค.


LSTM Cell

LSTM๋„ RNN๊ณผ ๊ฐ™์€ ์ฒด์ธ ๊ตฌ์กฐ๋กœ ๋˜์–ด ์žˆ์ง€๋งŒ, ๋ฐ˜๋ณต ๋ชจ๋“ˆ์€ ๋‹จ์ˆœํ•œ ํ•œ ๊ฐœ์˜ tanh layer๊ฐ€ ์•„๋‹Œ 4๊ฐœ์˜ layer๊ฐ€ ์„œ๋กœ ์ •๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๊ตฌ์กฐ๋ฅผ ์ด๋ฃจ๊ณ  ์žˆ๋‹ค. LSTM Cell์—์„œ๋Š” state๊ฐ€ ํฌ๊ฒŒ ๋‘ ๊ฐœ์˜ ๋ฒกํ„ฐ๋กœ ๋‚˜๋ˆ„์–ด์ง„๋‹ค. hth_t ๋ฅผ ๋‹จ๊ธฐ ์ƒํƒœ(short-term state), CtC_t ๋ฅผ ์žฅ๊ธฐ ์ƒํƒœ(long-term state)๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.


Cell State

Cell state๋Š” ์ •๋ณด๊ฐ€ ๋ฐ”๋€Œ์ง€ ์•Š๊ณ  ๊ทธ๋Œ€๋กœ ํ๋ฅด๋„๋ก ํ•˜๋Š” ์—ญํ• ์ด๋‹ค. Cell state๋Š” ์ž‘์€ linear interaction๋งŒ์„ ์ ์šฉ์‹œํ‚ค๋ฉด์„œ ์ „์ฒด ์ฒด์ธ์„ ๊ณ„์† ๊ตฌ๋™์‹œํ‚จ๋‹ค.

LSTM์€ Cell state์— ์ •๋ณด๋ฅผ ๋”ํ•˜๊ฑฐ๋‚˜ ์—†์•จ ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด๋Š” gate๋ผ ๋ถˆ๋ฆฌ๋Š” ๊ตฌ์กฐ์— ์˜ํ•ด ์ œ์–ด๋œ๋‹ค.

Forget Gate

Forget gate๋Š” cell state์—์„œ sigmoid layer๋ฅผ ๊ฑฐ์ณ ์–ด๋–ค ์ •๋ณด๋ฅผ ๋ฒ„๋ฆด ๊ฒƒ์ธ์ง€ ์ •ํ•œ๋‹ค. sigmoid layer๋Š” 0๊ณผ 1์‚ฌ์ด์˜ ์ถœ๋ ฅ์„ ๊ฐ€์ง€๋Š”๋ฐ ๊ทธ ๊ฐ’์ด 0์ด๋ผ๋ฉด ์ •๋ณด๋ฅผ ๋ฒ„๋ฆฌ๊ณ  1์ด๋ผ๋ฉด ๋‹ค์Œ state๋กœ ๋„˜๊ธด๋‹ค. LSTM์€ 3๊ฐœ์˜ gate๋ฅผ ๊ฐ€์ง€๊ณ  cell state๋ฅผ ์ œ์–ดํ•œ๋‹ค.


Input Gate

Input gate๋Š” ์•ž์œผ๋กœ ๋“ค์–ด์˜ค๋Š” ์ƒˆ๋กœ์šด ์ •๋ณด ์ค‘ ์–ด๋–ค ๊ฒƒ์„ cell state์— ์ €์žฅํ•  ๊ฒƒ์ธ์ง€๋ฅผ ์ •ํ•œ๋‹ค. ๋จผ์ € sigmoid layer๋ฅผ ๊ฑฐ์ฒ˜ ์ด์ „ state Ctโˆ’1C_{t-1} ์—์„œ ์–ด๋–ค ์ •๋ณด๋ฅผ ์—…๋ฐ์ดํŠธํ•  ๊ฒƒ์ธ์ง€๋ฅผ ์ •ํ•œ ํ›„ - (1) tanh layer์—์„œ ์ƒˆ๋กœ์šด ํ›„๋ณด Vector CtC_t๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.


Cell State Update

์ด์ „ gate์—์„œ ๋ฒ„๋ฆด ์ •๋ณด๋“ค๊ณผ ์—…๋ฐ์ดํŠธ ํ•  ์ •๋ณด๋“ค์„ ์ •ํ–ˆ๋‹ค๋ฉด cell state update๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค.

ftf_t๋ฅผ ๊ณฑํ•ด์„œ ๋ฒ„๋ฆฌ๊ธฐ๋กœ ํ•œ ์ •๋ณด๋ฅผ ๋ฒ„๋ฆฐ๋‹ค. itโˆ—Cti_t * C_t๋ฅผ ๋”ํ•ด์„œ ์—…๋ฐ์ดํŠธ ํ•˜๊ธฐ๋กœ ํ•œ ์ •๋ณด (1)๋ฅผ ์–ผ๋งˆ๋‚˜ ์—…๋ฐ์ดํŠธ ํ•  ์ง€๊ฐ€ scaleํ•œ ๊ฐ’์ด ๋œ๋‹ค.


Output Gate

Output gate๋Š” ์–ด๋–ค ์ •๋ณด๋ฅผ output ํ• ์ง€ ์ •ํ•œ๋‹ค. ๋จผ์ € sigmoid layer ฯƒ\sigma์— input data Wo[htโˆ’1,xt]+boW_{o}[h_{t-1}, x_t] + b_o ๋ฅผ ๋„ฃ์–ด output ์ •๋ณด๋ฅผ ์ •ํ•œ ํ›„ cell state CtC_t๋ฅผ tanh layer์— ๋„ฃ์–ด sigmoid layer์˜ output oto_t๊ณผ ๊ณฑํ•˜์—ฌ output์œผ๋กœ ๋‚ด๋ณด๋‚ธ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€