ML lec(이론) 12 - NN의 꽃 RNN 이야기

박성재·2020년 12월 16일
1
post-thumbnail

출처: 모두를 위한 딥러닝 강좌 시즌 1 by Sung Kim


RNN

Sequence Data

우리가 사용하는 데이터 중에는 Sequence Data가 있다.
ex) 음성 인식과 자연어 처리, time-series 데이터(주식, fmri 등)

이러한 sequence data는 기존의 NN과 CNN으로는 다룰 수 없고, Recurrent Neural Network(RNN)을 통해 다룰 수 있다.

이야기에서 단어 하나만 가지고 전체의 맥락을 이해할 수 없듯이, RNN이 sequence data를 다룰 때에는 현재의 상태와 함께 이전의 상태를 함께 고려한다.

RNN

RNN에서 이전의 상태(state)를 반영하여 현재의 상태를 계산하는 방식은 다음과 같다.

  • 주의할 점은, RNN의 매 시간 스텝에서 똑같은 식과 매개변수가 사용된다는 것이다. (가중치도 고정)

Vanilla RNN

Vanilla RNN은 RNN의 가장 기본적인 구조로, 입력과 출력 데이터가 one-to-one 관계를 맺는다.

RNN 연산 예시

예시로 주어진 Character-level language model은 주어진 sequence data에서 현재 철자 다음에 올 철자를 예측하는 모델이다.

  • 위 그림과 같이 RNN은 이전의 상태와 현재의 입력을 고려하여 현재 상태를 계산한다.
  • 첫 상태의 경우 반영할 이전의 상태가 없으므로 해당 항을 없는 것으로 하여 연산된다.
  • cf) 각 입력 데이터가 해당 철자의 인덱스에 따라 one-hot encoding 된 것을 확인할 수 있다.
  • 각 time step마다 hidden state에 가중치를 곱해 output layer를 구하고, softmax function을 사용해 다음에 올 철자를 예측할 수 있다.

적용 예시

RNN은 어떻게 활용하는지에 따라서 여러 가지 목적으로 사용할 수 있다.

  • 랭귀지 모델
  • 음성 인식
  • 기계 번역
  • 대화 또는 질문 생성 모델
  • 이미지 및 비디오를 보고 캡션을 다는 모델
  • 이미지, 음악 등을 생성하는 모델

RNN 활용의 종류 및 예시

  • one to many(일대다): Image Captioning = image -> sequence of words
  • many to one(다대일): 감성 분류(Sentiment Classification) = sequence of words -> sentiment
  • many to many(다대다 좌): 기계 번역(Machine Translation) = sequence of words -> sequence of words
  • many to many(다대다 우): 프레임 수준 비디오 분류(video classification on frame level)

RNN 또한 많은 층으로 깊은 모델로 구성해 더 복잡한 학습이 가능하게 할 수 있다.

RNN도 깊어지고 layer가 많아지다 보면 학습하는 데에 어려움이 있다고 한다.
요즘은 이를 극복한 다른 방법으로 RNN과는 조금 다른 방법인 LSTM과 GRU 모델을 사용한다고 한다.

0개의 댓글