본문 바로가기

🤖AI/딥러닝

[딥러닝] RNN

이미지 인식에 CNN이 있다면, 자연어 인식에는 순환 신경망이라고 하는 RNN이 있다.

RNN은 상태가 고정된 데이터를 처리하는 다른 신경망과는 달리 자연어 처리나 음성 인식처럼 순서가 있는 데이터를 처리하는 데 강점을 가진 신경망이다.

앞이나 뒤의 정보에 따라 전체의 의미가 달라지거나, 앞의 정보로 다음에 나올 정보를 추측하려는 경우에 RNN을 사용하면 성능 좋은 프로그램을 만들 수 있다.

 

앞 단계에서 학습한 결과를 다음 단계의 학습에 이용한다. 이런 구조로 인해 학습 데이터를 단계별로 구분하여 입력한다. 

 

1. 시퀀스 데이터

소리, 문자열, 주가 등의 데이터를 시퀀스(Sequence) 데이터로 분류한다.

시계열(time-series) 데이터는 시간 순서에 따라 나열된 데이터로 시퀀스 데이터에 속한다.

시퀀스 데이터는 독립동등분포(i.i.d.) 가정을 잘 위배하기 때문에 순서를 바꾸거나 과거 정보에 손실이 발생하면 데이터의 확률분포도 바뀌게 된다.

 

조건부 확률을 이용해 이전 시퀀스의 정보를 활용해 앞으로 발생할 데이터의 확률분포를 다룰 수 있다.

위 조건분확률은 과거의 모든 정보를 사용하거나 시퀀스 데이터를 분석할 때 모든 과거 정보들이 필요한 것은 아니다.

시퀀스 데이터를 다루려면 길이가 가변적인 데이터를 다룰 수 있는 모델이 필요하다.

조건부에 들어가는 데이터 길이는 가변적이다.

고정된 길이 T만큼의 시퀀스만 사용하는 경우 AR(T) (Autoregressive Model) 자기회귀모델이라고 부른다.

 

또 다른 방법은 바로 이전 정보를 제외한 나머지 정보들을 Ht라는 잠재변수로 인코딩해서 활용하는 잠재 AR 모델이다.

 

잠재변수 Ht를 신경망을 통해 반복해서 사용하여 시퀀스 데이터의 패턴을 학습하는 모델이 RNN이다.

2. Recurrent Neural Network

가장 기본적인 RNN 모형은 MLP와 유사하다.

이 모델은 과거의 정보를 다룰 수 없다.

 

 

 

 

 

 

RNN은 이전 순서의 잠재변수와 현재의 입력을 활용하여 모델링한다.

잠재변수인 Ht를 복제해서 다음 순서의 잠재변수를 인코딩하는데 사용한다.

 

 

 

 

RNN의 역전파는 잠재변수의 연결그래프에 따라 순차적으로 계산한다. 이를 Backprogation Through Time(BPTT)라 하며 RNN의 역전파 방법이다.

 

 

 

BPTT를 통해 RNN의 가중치행렬의 미분을 계산해보면 아래와 같이 미분의 곱으로 이루어진 항이 계산된다.

시퀀스 길이가 길어질수록 빨간색으로 표시한 부분은 불안정해지기 쉽다.

 

시퀀스 길이가 길어지는 경우 BPTT를 통한 역전파 알고리즘의 계산이 불안정해지므로 길이를 끊는 것이 필요하다.

이를 truncated BPTT라 부른다.

 

 

 

 

 

 

 

 

이런 문제들 때문에 Vanila RNN은 길이가 긴 시퀀스를 처리하는데 문제가 있다.

이를 해결하기 위해 등장한 RNN 네트워크가 LSTM과 GRU이다.

 

ref: [BoostCamp AI Tec 2기] AI Math 10강: RNN 첫걸음

 

'🤖AI > 딥러닝' 카테고리의 다른 글

(04강) Semantic Segmentation  (0) 2021.09.07
Quickdraw dataset  (0) 2021.09.07
[딥러닝] CNN (Convolution Neural Network)  (0) 2021.05.15
[딥러닝] Optimization  (0) 2021.04.16
[딥러닝] Overfitting을 완화시키는 방법(2) - Dropout  (0) 2021.04.15