RNN(Recurrent Neural Networks)
- 우선 쉽게 개념을 이해하기 위해서 예시를 보면 "나는 밥을 먹으러 간다."라는 문장은 각 단어들이 서로 연결되어 하나의 문장이 된다. 이 문장의 한 단어만(예를 들어 '밥을')으로 전체 문맥을 이해하는 것은 어렵다.
- 문맥(최종 결과물)과 같이 각 데이터들의 연관 관계에 의해 최종 결과물이 나오는 경우 RNN이 사용된다.
- RNN에서 연관 관계를 표시해주기 위해서 상태(state)값을 가지고 이는 다음 데이터에 영향을 준다.
- 상태(state)는 hidden layer의 첫 영문을 따서 h라 표시한다.
- 상태 h(t)는 이전 상태h(t-1)에 영향을 받아 만들어진다.
- 또한 상태를 만들기 위해서 tanh그래프를 사용하게 된다.
- 결과물 y를 얻기 위해서 세 개의 W가 필요하다. -> W(hh), W(xh), W(hy)
- 이를 통해 최종 y를 구하게 된다.
- 이제 예시를 보게 되면, hello라는 단어의 각 'h','e','l','o'의 관계를 통해 학습시키는 과정을 본다.
- 상태(state/hidden layer)는 위에서 부터 W(hh), W(xh), W(hy)를 의미한다.
- 상태를 구할때 t가 0일때 h(t-1)가 존재하지 않기 때문에 W(hh) 0으로 설정하여 문제를 해결한다.
- Output layer는 위에서부터 'h', 'e', 'l', 'o'를 의미한다.
- 이를 통해서 최종 output을 만들게 된다.
전체 과정을 생략하면 다음과 같다.
상태(state/hidden layer)을 생성하여준다.
Output layer을 통해 최종 결과물 target chars를 구하게 된다.
이를 통해 'h'뒤에는 'e', 'e'뒤에는 'l'이 온다는 사실을 알 수 있게 된다. -> RNN
- RNN에는 여러 모델이 있다.
- 첫 번째, one-to-one model : vanilla neural network라 하며 단순한 모델이다.
- 두 번째, one-to-many model : "나는 밥을 먹는다."->하나의 감정 or 하나의 이미지로 변환 하는 모델이다.
- 세 번째, many-to-one model : 두 번째 모델의 반대방향의 모델이다.
- 네 번째, many-to-many model : 문장에서 문장으로 변환 하는 모델(입,출력의 개수가 다를 수 있는경우). ex : 구글변역
- 다섯 번째, many-to-many model : 이미지 프레임의 변환 모델 (입, 출력의 개수가 동일한 경우)
'IT > 머신러닝' 카테고리의 다른 글
[section_11_lab] TensorFlow로 구현하자 (MNIST 99%) (0) | 2018.06.01 |
---|---|
[section_7_lab] Meet MNIST Data (0) | 2018.06.01 |
[section_11] CNN(Convolutional Neural Networks) (0) | 2018.06.01 |
[section_9] ReLU and 초기값 정하기(1) (2006/2007 breakthrough) (0) | 2018.06.01 |
[section_9_lab] TensorBoard 사용하기 (0) | 2018.06.01 |