본문 바로가기
IT/머신러닝

[section_12] RNN(Recurrent Neural Networks)

by 빨강자몽 2018. 6. 1.

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 : 이미지 프레임의 변환 모델 (입, 출력의 개수가 동일한 경우)