RNN - BD-SEARCH/MLtutorial GitHub Wiki
๊ธฐ์กด์ ์ธ๊ณต์ ๊ฒฝ๋ง์ ์์ฐจ์ ์ธ ์ ๋ณด๊ฐ ๋ด๊ธด ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒ์ ์ด๋ ค์์ด ์๋ค.
RNN(Recurrent Neural Network)
01. RNN์ด๋?
- Sequence data๋ฅผ ๋ชจ๋ธ๋งํ๊ธฐ ์ํด ๋ฑ์ฅ
- ๋ค๋ฅธ NN๊ณผ๋ ๋ค๋ฅด๊ฒ hidden state๋ฅผ ๊ฐ์ง๊ณ ์์ (๊ธฐ์ต. ์ง๊ธ๊น์ง ์
๋ ฅ๋ ๋ฐ์ดํฐ์ ์์ฝ๋ ์งํฉ)
- ์๋ก ์ ๋ ฅ์ด ๋ค์ด์ค๋ฉด ๋คํธ์ํฌ๋ ์์ ์ hidden state๋ฅผ ์์
- ์ ๋ ฅ์ ๋ชจ๋ ์ฒ๋ฆฌํ๊ณ ๋ ๋คํธ์ํฌ์ hidden state๋ sequence ์ ์ฒด๋ฅผ ์์ฝํ๋ ์ ๋ณด๊ฐ ๋จ
- ๋นจ๊ฐ : ์
๋ ฅ / ๋
ธ๋ : hidden state(๊ธฐ์ต) / ํ๋ : ์ถ๋ ฅ
- ์ฒซ๋ฒ์งธ ์ ๋ ฅ์ด ๋ค์ด์ค๋ฉด ์ฒซ๋ฒ์งธ hidden state๊ฐ ๋ง๋ค์ด์ง
- ๋๋ฒ์งธ ์ ๋ ฅ์ด ๋ค์ด์ค๋ฉด ์ฒซ๋ฒ์งธ hidden state๋ฅผ ์ฐธ๊ณ ํ์ฌ ๋๋ฒ์งธ hidden state๊ฐ ๋ง๋ค์ด์ง
- ์์ฐจ์ ์ธ ์ ๋ณด๊ฐ ๋ด๊ธด ๋ฐ์ดํฐ(Sequence data)๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ ์ฉ์ด
- ์ด์ ์ํ์ hidden layers์ ๊ฒฐ๊ณผ๊ฐ ๋ค์ ์์์ hidden layers์ ์ ๋ ฅ์ผ๋ก ๋ค์ด๊ฐ๋๋ก ์ค๊ณ
- ์ด์ ์ํ๋ฅผ ๋ณด์กดํ๋ฉด์ ์๋ก์ด ์ํ๋ฅผ ๋ฐ์๋ค์ด๊ธฐ ๋๋ฌธ์ ์
๋ ฅ๊ฐ์ ์๊ฐ ์์๋ฅผ ๊ธฐ์ต
- ์์ฐจ์ ์ธ ๋ฐ์ดํฐ ์ ๋ ฅ์ ๋ฐ๋ผ ๋ฌธ๋งฅ ์ ๋ณด ํ์ ์ด ๊ฐ๋ฅ
- ์ด๋ก ์ ์ผ๋ก ๊ธด Sequence Data๋ฅผ ์ฒ๋ฆฌํ ์ ์์ง๋ง, ์ค์ ๋ก๋ ๋น๊ต์ ์งง์ Sequence Data๋ง ํจ๊ณผ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ค : ์ฅ๊ธฐ ์์กด์ฑ ๋ฌธ์
- RNN์ ์ ๋ ฅ ๊ฐ ํฌ๊ธฐ์ ์ ํ์ด ์กด์ฌํ์ง ์๋๋ค. ๊ทธ๋์ ๊ธธ์ด์ ์ ํ์ด ์๋ ํ ์คํธ๋ ์์ฑ ๋ถ์์ ๋ง์ด ์ฌ์ฉ๋๋ค.
: Unfold ํํ๋ก ๋ฐ๋ผ๋ณธ RNN
02. Backpropagation Through Time (BPTT)
- RNN์ Backprpagation๊ณผ๋ ์กฐ๊ธ ๋ค๋ฅด๊ฒ ํ์ต์์ผ์ผ ํ๋ค.
- RNN์์ ํ์ฌ step๊ณผ ์ด์ step์ด ์ฐ๊ฒฐ๋์ด ์๊ธฐ ๋๋ฌธ์ ์๊ฐ์ ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ๋ฉฐ backpropagation ์งํ
- ์ฌ์ฉ๋๋ ํจ์
- Softmax
- ๊ฐ์ ๋ถํฌ์ ๋ฐ๋ฅธ ์ถํ ํ๋ฅ
- Cross-Entropy
- ๋ ๊ฐ์ ํ๋ฅ ๋ถํฌ์ ๋น์ทํ ์ ๋๋ฅผ ๋ํ๋ด๋ ์งํ
- 0์ ๊ฐ๊น์ธ ์๋ก ํ๋ฅ ๋ถํฌ๊ฐ ๋น์ทํ๋ค
- softmax๋ฅผ ํตํด ๋์ค๋ ์์ธก๊ฐ์ด ํ๋ฅ ๋ถํฌ์ด๋ฏ๋ก, ์ค์ฐจํจ์๋ Cross-Entropy๋ฅผ ์ฌ์ฉํ๋ค
- Softmax
- ์ํ์ ๊ด์ ์ผ๋ก ๋ณด๋ BPTT
Vanishing gradient
- backpropagation through time์์, step์ ๊ธธ์ด๊ฐ ๊ธธ์ด์ง์๋ก ํธ๋ํจ์ ๊ฐ์ด 0์ ์๋ ดํ๋ ๋ฌธ์ ์ด๋ค.
- Truncated BPTT (๋จ๊ธฐ BPTT)
- ๋ชจ๋ ์๊ฐ์ ๋ํ ์๋์ธต์ ๊ฐ์ ์ ์ฅํ๋ ๊ฒ : ํ์ค์ ์ผ๋ก ๋ถ๊ฐ๋ฅ
- ๊ธฐ์ค ๊ธธ์ด๋ณด๋ค ์ค๋๋ ๊ฐ์ ๋ฐ์ํ์ง ์๋๋ก ํ๋ค
- ํด๊ฒฐ ๋ฐฉ๋ฒ
- LSTM, GRU : RNN์ ๊ตฌ์กฐ๋ฅผ ๋ณํํ์ฌ ๋ฌธ์ ํด๊ฒฐ (link)
- Bidirectional Recurrent Neural Networks (BRNNs): ๋ฐ์ดํฐ๋ฅผ RNN ๋ชจ๋ธ์ ๋ฃ์ ๋ ์ ๋ฐฉํฅ/์ญ๋ฐฉํฅ์ ๋ ๋ฐฉํฅ์ผ๋ก ๋ฃ๋๋ค.
03. RNN์ ์์
-
one to one
- ๊ณ ์ input, ๊ณ ์ output
- perceptron. ์ ๊ฒฝ๋ง์ ๊ธฐ๋ณธ์ ์ธ ๊ตฌ์กฐ
- ์ํ์ ์ธ ๋ถ๋ถ์ด ์๊ธฐ ๋๋ฌธ์ rnn์ด ์๋๋ค.
-
one to many
- ๊ณ ์ input, ์ํ์ค output
- image captioning : ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ง๊ณ Sequence of words ์์ฐ
- ์ด๋ฏธ์ง -> ๋คํ ์์ ๊ตฌ๋ฆ์ด ๋ ํ๋์ด ์๋ค.
-
many to one
- ์ํ์ค input, ๊ณ ์ output
- Sentiment analysis
- sequence of words -> sentiment
- ์ฃผ์ด์ง ๋ฌธ์ฅ์ ๊ฐ์ ์ํ๋ฅผ ๋ถ์ํ๋ค (afinn, vader)
-
many to many
- ์ํ์ค input, ์ํ์ค output
- Machine Translation
- sequence of words -> sequence of words
- ๋ฒ์ญ๊ธฐ : encoder to decoder๋ผ๊ณ ๋ ํ๋ค
-
many to many
- ๋๊ธฐํ๋ ์ํ์ค input, ์ํ์ค output
- Search term autocomplete
- sequence of words -> sequence o words
- ์๋ ์์ฑ ๊ฒ์์ด
RNN์ ์ ๋ ฅ๋์ง ์๊ฐ์ด ์ค๋ ์ง๋ ๋ฐ์ดํฐ๋ ์ ๋ณด์กดํ์ง ๋ชปํ๋ ๋ฌธ์ ๊ฐ ์๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด LSTM์ด ๊ฐ๋ฐ๋์๋ค.
Reference
- RNN๊ณผ LSTM์ ์ดํดํด๋ณด์!
- BRNN : ์ดํ์ ์ ๋ณด๋ ๊ธฐ์ตํ๋ BRNN
- RNN ์ดํดํ๊ธฐ