NLP

[NLP] RNN(Recurrent Neural Network)

파송송 2023. 5. 26. 16:39
728x90

순차 데이터 (Sequential Data)

  • 데이터 집합 내의 객체들이 어떤 순서를 가지고 있는 데이터
  • 데이터들의 순서에 따라 해당 데이터의 의미가 달라짐
  • 가변적인 데이터의 길이를 가짐
  • 순서가 달라질 경우 의미가 손상됨

Temporal Sequence

  • 시간에 민감한 데이터
  • 유효기간이나 트랜잭션 시간 등 시간 표시기와 함께 데이터가 저장됨

 

Time Series

  • 일정한 시간차를 가진 데이터
  • 시간 경과에 따라 변화하는 데이터로 타임스탬프와 함께 데이터가 저장됨

심층 신경망 & 순차 데이터

Input으로 음성 데이터가 들어왔을 때 입력되는 음성의 길이가 매번 다른 문제가 발생한다.

Output의 경우 변역 결과가 될 수 있는 문장이 많기 때문에 one hot vector로 예측하기 힘듦

 

-> 심층 신경망으로 순차 데이터를 처리하기 위해서는 input과 Output에 문제가 있음

심층신경망
순환신경망


RNN(Recurrent Neural Network)

  • 유닛 간의 연결이 순환적 구조를 가짐
  • 순차 데이터가 가지고 있는 데이터 순서의 의미와 가변성을 처리할 수 있음

ARCHITECTURE

순환신경망(1)
순환신경망(2)

  • 기존의 DNN은 각 층마다 weight가 독립적으로 존재했으나, RNN은 순환 구조를 통해 파라미터를 모두 공유함
  • parameter Sharing으로 인해 과거의 정보다 현재의 데이터에 영향을 줌

즉, 기존의 DNN은 가중치가 time step에 따라 별로도 존재했지만 RNN은 가중치가 time step마다 동일하다.


$$ h_{t}(=y) = tanh(W_{xh}*X_{t}+W_{hh}*h_(t-1)+b) $$

위의 수식으로 학습을 진행한다. 


Memory system

순차데이터에 대해 올바른 답을 하기 위해서는 입력을 받을 때마다 내용을 기억해야 한다.

 

Memoryless system: 이전 입력을 기억하지 않는 시스템


종류

tasks에 맞게 적절한 타입을 고르면 된다.


Vanilla RNN은 입력이 길어질수록 Gradient Vanishing 문제가 발생하기 때문에 잘 사용하지 않고 이를 보완하기 위해 LSTM이 연구되었다.

 


https://heung-bae-lee.github.io/2020/01/12/deep_learning_08/

728x90