Recurrent Neural Networks(RNN)

‍전진성·2021년 5월 2일
0

Recurrent Neural Networks: Process Sequences

  • 기존의 Neural Network는 Data의 Sequential order를 고려하지 못했다. 하지만, 많은 데이터들은 sequence의 특징을 고려해줘야한다.
  • 예시로, 주식시장의 주식 가격은 많은 요소로부터 영향을 받지만, 과거의 가격으로부터 영향이 크다. 따라서 sequence를 고려해주어야한다. 자연어 또한 마찬가지이다. 글은 주어 목적어 동사(한국어)처럼 순서가 고려되기 때문에 sequence를 고려해주어야한다.
  • 일반 Neural Network에서 sequence를 고려하는 모델이 Recurrent Neural Network(RNN)이다.
  • 위 그림을 보면 RNN의 기본 구조를 알 수 있다. RNN의 가장 중요한 점은, x1으로부터 나온 hidden vector1이 다음 input인 x2와 함께 계산된다는 것이다. 즉, 이전 input이 다음 input에 대해 영향을 준다는 것이다. 또한 trainable matrix인 W를 매 step마다 다시 사용한다는 것이다.
  • RNN은 Sequence를 고려하는만큼 output의 sequence를 고려할 수 있다.
  • 위 그림은 모든 input으로부터 나온 모든 output을 이용하는 것이다. 이 방법은 바로 다음시간대의 시간을 예측할 때 사용된다. 예를들어, sequnce가 3개 일때, x1으로부터 x2(y1)를 예측하고, x2로부터 x3(y2)를 예측하고, x3로부터 x4(y3)을 예측할 수 있다.
  • 위 그림은 모든 input을 사용하여 마지막 output만을 이용하는 것이다. 이 방법으로는 모든 input을 고려하여 나온 마지막에 대한 예측을 할 수 있다. 예를들어, "나는 이 영화가 재미있다"라는 문장이 있을 때, 해당 문장이 긍정의 문장인가 부정의 문장이가 예측해 볼 수있다. 그렇게 되면, input으로는 [나는, 이, 영화가, 재미있다]가 들어가고, 마지막 hidden vector로 나온 y에서 긍정인지 부정인지에 대해 예측해 볼 수 있다.
  • 위 그림을 보면 좀 더 수식적으로 더 명확하게 표현되어있다.

  • 우리는 위에 RNN의 모델을 보면서 의문점이 자동으로 생긴다. 많아 sequence가 길어지면, 앞에 있는 X0가 마지막 sequence input까지 오면서 정보가 살아남을수 있을까? 라는 생각이 든다. 실제로 sequence가 길어짐에 따라, 앞에 정보는 손실이 일어난다. 이것을 극복하고자 하는 것이 Long Short Term Memory(LSTM)이다.

Long Short Term Memory(LSTM)

  • 위 모델이 LSTM의 구조이다. LSTM의는 몇가지 중요한 파트들이 있다. 아래에서 알아보자.
  • 위 모듈은 과거 정보와 현재 정보를 잘 섞어주는 역할을 한다. 즉 처음 RNN에서 문제라고 제시되었던, 과거 정보를 다 반영하지 못한다는 점을 여기서 해결해주고있다.
  • 이 부분은 forget gate이다. 과거정보 중 지워야하는 정보를 지워주고, 살려야하는 정보는 살려주는 역활을 해준다.
  • 이 부분은 input gate이다. 현재 들어온 값들 중 어떤값을 저장하고, 업데이트할지 정해주는 역할을 해준다.
  • 마지막으로 output gate이다. 앞서 forget gate, input gate를 이용하여, 과거 정보 중 삭제해줄 것을 삭제해주고, 새로운 데이터에 대해 저장해야할 것을 저장해주어, 이 두 부분을 합쳐서 다음 단계로 넘겨준다.

Another RNN models

  • LSTM 뿐만아니라, LSTM을 변형 한 모델들이 많이 나온다. 그 중 가장 유명한 모델은 Gated Recurrent Unit(GRU)(Cho et.al (2014))이다. 이 모델은 LSTM보다 간단하지만 좋은 성능을 보여준다.

0개의 댓글