Recurrent Neural Network (RNN)
어떻게하면 입력 데이터의 순서를 Network가 이해할 수 있을까?
IDEA : 이전 입력값의 처리결과를 다음 출력에 반영하자!
Basic RNN 구조
위 그림의 좌측부분을 펼친게 오른쪽 그림이 된다.
- 먼저, 입력을 살펴보면 순서대로 좌->우로 흘러간다. 아래첨자로 t가 붙었다는 건 time의 개념이 들어갔고,
이것이 sequential한 느낌을 갖는다고 생각할 수 있다.(그렇게 생각하도록 하자)
- 간단한 예로 문장은 여러 단어로 쪼개질 것이다. 여기서 단어가 위 그림의 입력이 된다.(X0, X1, ....Xt)
X0~Xt까지 t+1이 Sequence length가 된다.
- A라는 상자(여기서는 Cell 이라 하자)로부터 2개의 처리결과가 나온다.
하나는 output으로 나가고, 하나는 다시 A에 들어간다. 다시 A로 들어가는 저 화살표를 hidden state 라고 한다.
- 이전의 정보가 다음 출력에 반영되는 형태이기 때문에 Network가 데이터의 순서를 이해할 수 있게 된다.
(★) 위의 A라는 Cell은 5개로 서로 다른 것처럼 보이지만, 사실 1개, 즉 A는 하나고 그게 반복호출되는것이다.
(★) 그렇기 때문에 RNN은 모든 입력이 들어가는 Cell이 parameter를 공유한다.
Vanilla RNN : 가장 기본 RNN
Vanilla RNN 구조
output을 만들어 출력()하고,
이것이 다음 계산으로 넘어가 Xt와 concatenate되서 tanh를 지나 output을 출력한다.
Long-Short Term Memory (LSTM)
LSTM 구조
LSTM : 2 state, 3 gate
Cell State 구조
자 그럼 이제 3개의 Gate 및 프로세스를 알아보자.
1) Forget Gate
Forget Gate 구조
Input Gate 구조
Concatenate된 두 입력 값을 sigmoid와 tanh 두 함수에 통과시킨다. (weight와의 내적하고)
sigmoid를 통과한 값 i가 C~의 새로운 정보를 얼마나 반영하여 cell state에 보내줄지 결정한다.
3) Update(cell state)
updating the Cell state
4) Output Gate
Output Gate 구조
의 경우 update된 cell state()를 밖으로(hidden state로) 얼마나 내보낼지 정하는 역할을 한다.
참고
https://www.edwith.org/deeplearningchoi/lecture/15840/
'딥러닝 > 신경망 기초' 카테고리의 다른 글
Convolutional Neural Network(CNN) (0) | 2018.11.01 |
---|---|
이미지 데이터 다루기 (0) | 2018.10.31 |
소프트맥스(Softmax) (0) | 2018.10.25 |
활성화 함수(Activation Function) (0) | 2018.10.24 |
퍼셉트론(Perceptron)과 다층 퍼셉트론(MLP) (0) | 2018.10.24 |