Recurrent Neural Network (RNN)

2022. 1. 23. 18:25카테고리 없음

Seqence data를 대상으로 한다.

Seqence data란, 소리나 대화 등과 같은 데이터를 말한다. data가 독립적이지 않고, 순서가 바뀌거나 과거 정보가 손실된다면 데이터의 확률분포도 변화하는 특징을 갖는다.

이 Seqence data를 다루기 위해서, 조건부 확률을 이용할 수 있다. 하지만 Seqence data는 언제 끝나는지 알지 못하는 경우도 있다. 이를 위해서 가변적인 데이터를 다루기 위한 모델이 필요하다.

 

따라서 바로 이전 정보를 제외한 나머지 이전 정보를 저장하기 위한 변수잠재변수로 두면, 고정된 길이의 데이터로 모델링할 수 있다.

이 때, 이전 정보를 인코딩하기 위한 모델이 RNN이다.

 

MLP와 유사하게 동작하며, 차이점은 다음과 같다.

가중치 행렬이 3개로, 입력 가중치 행렬/ 잠재 가중치 행렬/ 출력 가중치 행렬로 구성된다.

t에 따라 영향을 받는 것은 입력 데이터와 잠재변수 행렬이다.

 

 

RNN의 역전파 알고리즘BPTT(Backpropagation Through Time)이다.

맨 마지막 행렬로 부터, 역순으로 차례로 계산한다.

 

주의할 점이, Seqence data 길이가 길어질수록 이전 가중치행렬의 곱 부분이 엄청나게 커지거나 작아지기 쉽다는 것이다.

이로 인해 기울기가 0으로 줄어드는 기울기 소실 문제가 발생하여, 과거 정보가 손실될 수 있다.

이를 해결하기 위해, 길이가 긴 Seqence data에 대해서는 다음 모델을 사용할 수 있다.

- truncated BPTT 

- LSTM

- GRU

 

 

 

 

 

 

반응형