RNN
기본 용어
hidden state = 출력, 매시간 마다 출력되는 값
기본개념
연속적인 시간으로 고려하기 위해 만든 모델
현재의 hidden state( = output)를 출력하기 전에 현재의 입력만 보는게 아니라 직전(t-1)의 hidden state도 고려함.
직전의 hidden state와 현재의 입력값을 잘 버무려서 hidden state로 넘겨줌.
그 잘 버무려주는 웨이트를 학습하면 된다.
쉬운 수식
(현재 입력) * w1+ (직전 hidden) * w2+ bias ==> activation func ==> 현재 hidden state
특이점
웨이트는 기본적으로 타임 step 별로 달라지는게 아니라 늘 동일하다. 타임 step별로 weight를 따로 학습을 할 경우 순서에 빈감해질수도 있다.
시작점은 이전의 hidden state가 존재하지 않는데 그래서 그냥 0으로 넣어줄 수도 있고 이것도 학습할 수가 있다.
LSTM
기본 용어
hidden state = 출력, 매시간 마다 출력되는 값(rnn과 동일)
Cell state: 기억 혹은 컨베이어 벨트 , 여기에 기억을 추가 또는 빼버린다.
기본 개념
RNN이 좀 더 장기 기억을 갖게 하기 위해 만든 걸로,
hidden state 뿐만 아니라 CELL state라는 기억의 컨베이어 벨트를 만들었다.
시간이 진행되면 이 기억의 컨베이어 벨트라는 Cell state에 원하는 정보를 빼든, 원하는 정보를 넣어서 다음에 전달한다.
쉬운 수식
(현재 cell state) = w1 * (직전 cell state) + w2 * (직전 hidden state와 입력값을 버무린 값)
의미 ==> w1만큼 과거 기억(cell state)를 까먹고, w2 만큼 현재 입력 및 직전 출력 정보를 추가해준다.
(현재 hidden state) = w3 *tanh(현재 cell state)
의미 ==> 현재의 출력은 새로 만들어진 cell state를 조절해서 내보낸다.
특이점
총 3개의 gate
forget gate: 직전 Cell 정보에 웨이트를 곱해서 전달된 정보를 얼마나 전달할지 결정. 웨이트는 현재 입력과 직전 hidden에 의해 결정됨. weight * (과거 Cell), 여기서 weight는
input gate: Cell에 현재 정보를 얼마나 실을지 결정함. 현재 정보에 웨이트를 곱해서 더해줌.
output gate: 위에서 업뎃된 cell 정보를 기준으로 출력 즉, hidden state를 내보내줌
GRU
hidden state 와 Cell를 합쳐버림
현재 입력정보 + 이전 hidden state 정보를 이용하여 임시 현재 hidden state를 만든다.
이전 hidden state와 임시 현재 hidden state를 잘 버무려(weighted sum) 새로운 hidden state를 완성한다.
Seq2Seq
기본 개념
RNN, LSTM, GRU 등을 2개 이상을 붙여놓은 것
기존의 애들은 time step 마다 펼쳐서 마치 여러 개 인것 처럼보이지만 실제로 RNN는 한개이다.
하지만 얘는 실제로 2개의 2개의 다른 RNN이다.
기존
RNN1 - RNN1 - RNN1 - RNN1 - RNN1 - RNN1
Seq2Seq
RNN1 - RNN1 - RNN1 - RNN2 - RNN2 - RNN2
인코딩 부분 | 디코딩 부분
쉬운 수식
특이점
'머신러닝 읽어주는 남자' 카테고리의 다른 글
[오직 컨셉] Attention (0) | 2018.04.13 |
---|---|
[오직 컨셉] Word Embedding (0) | 2018.04.13 |
[오직 컨셉]Neural network training (0) | 2018.04.10 |
[오직 컨셉]CNN(convolutional neural network) (0) | 2018.04.10 |
[Tensorflow 101 - 2] 기본 Neural Network Classifier(Feed Forward NN) (0) | 2018.01.25 |