[AITech] 20220208 - RNN&LSTM Basics
학습 내용
RNN
시퀀스 데이터
-
소리, 문자열, 주가 등의 데이터를 시퀀스 데이터로 분류한다.
-
시퀀스 데이터는 독립동등분포(i.i.d.) 가정을 위배하기 때문에 순서를 바꾸거나 과거 정보에 손실이 발생하면 데이터의 확률분포도 바뀐다.
-
따라서 이전 시퀀스에 대한 정보를 가지고 앞으로 발생할 데이터의 확률 분포를 계산해야 하며, 이를 위해 조건부 확률을 이용할 수 있다.
- 위 조건부 확률은 과거의 모든 정보를 이용하지만, 시퀀스 데이터를 분석할 때 과거의 모든 정보들이 필요한 것은 아니다.
- 어떤 시점까지의 과거의 정보를 이용할 지는 데이터/모델링에 따라 달라진다.
- 위 조건부 확률은 과거의 모든 정보를 이용하지만, 시퀀스 데이터를 분석할 때 과거의 모든 정보들이 필요한 것은 아니다.
-
시퀀스 데이터를 다루기 위해서는 길이가 가변적인 데이터를 다룰 수 있는 모델이 필요하다.
- 이를 해결하기 위해 특정 구간 _tau_만큼의 과거 정보만을 이용하고, 그보다 더 전의 정보들은 Ht라는 잠재변수로 인코딩해서 사용할 수 있다.
- 이렇게 함으로써 데이터의 길이를 고정할 수 있고, 과거의 모든 데이터를 활용하기 용이해진다.
- tau 구간 만큼의 과거 정보를 이용하는 모델을 Auto Regressive Model이라 하고, 현재 시점의 입력과 인코딩된 잠재 정보를 이용하는 모델을 Latent Autoregressive Model이라 한다.
-
이 잠재변수 Ht를 신경망을 통해 반복해서 사용하여 시퀀스 데이터의 패턴을 학습하는 잠재 회귀 모델이 RNN이다.
- 이를 해결하기 위해 특정 구간 _tau_만큼의 과거 정보만을 이용하고, 그보다 더 전의 정보들은 Ht라는 잠재변수로 인코딩해서 사용할 수 있다.
RNN(Recurrent Neural Network)
-
현재 정보만을 입력으로 사용하는 완전연결신경망은 과거의 정보를 다룰 수 없다.
-
RNN은 이전 순서의 잠재변수와 현재의 입력을 활용하여 모델링한다.
- W: t에 따라 불변/ X, H: t에 따라 가변
-
RNN의 역전파는 잠재변수의 연결그래프에 따라 순차적으로 계산한다. (맨 마지막 출력까지 계산한 후에 역전파)
- 이를 BPTT(Backpropagation Through Time)라 하며 RNN의 기본적인 역전파 방식이다.
-
BPTT를 통해 RNN의 가중치 행렬의 미분을 계산해보면 아래와 같이 미분의 곱으로 이루어진 항이 계산된다.
- 그 중 빨간색 네모 안의 항은 불안정해지기 쉽다.
- 이는 거듭된 값들의 곱으로 인해 값이 너무 커지거나(기울기 폭발) 너무 작아져(기울기 소실) 과거의 정보를 제대로 전달해주지 못하기 때문이다.
-
기울기 폭발/소실 문제를 해결하기 위해 역전파 과정에서 길이를 끊는 것이 필요하며, 이를 TBPTT(Truncated BPTT)라 한다.
-
여러가지 문제로 Vanilla RNN으로는 긴 시퀀스를 처리하는데 한계가 있고, 이를 해결하기 위해 LSTM이나 GRU와 같은 발전된 형태의 네트워크를 사용한다.
LSTM
LSTM(Long Short Term Memory)은 Vanilla RNN의 한계인 Long-term memory를 효과적으로 전달하기 위해 고안된 모델이다.
LSTM의 구조는 복잡해보이지만 3개의 Gate와 1개의 Cell 부분만 이해하면 된다.
Forget Gate
Forget gate는 previous output(hidden state) h(t-1)
과 input x(t)
를 이용해 만든 정보 f(t)
로 어떤 정보를 버릴지 결정합니다.
Input Gate
Input gate는 두 가지 정보를 생성하고 이용합니다.
C'(t)
: Previous output(hidden state)h(t-1)
과 inputx(t)
를 이용해 현재 cell state에 저장할 정보 후보들을 만들어냅니다.i(t)
: Previous output(hidden state)h(t-1)
과 inputx(t)
를 이용해 정보 후보들 중 어떤 정보를 저장할 지 선택합니다.
최종적으로 만들어진 정보 C'(t)
와 i(t)
를 이용하여 현재 cell state C(t)
에 전달할 정보를 만들어냅니다.
Update Cell
Update cell은 forget gate와 input gate에서 만들어진 정보들 f(t)
, C'(t)
, i(t)
과 previous cell state C(t-1)
를 이용해 현재 cell state C(t)
를 만들어냅니다.
Cell state에는 외부에는 노출되지 않는 시간 0~t 까지의 정보들이 인코딩되어 있습니다.
Output Gate
Output gate는 먼저 previous output(hidden state) h(t-1)
과 input x(t)
를 이용해 밖으로 내보낼(출력할) 정보 후보 o(t)
를 만들어냅니다.
그리고 만들어진 o(t)
와 cell state C(t)
를 이용해 밖으로 내보낼 output(현재 hidden state) h(t)
를 만들어냅니다.
LSTM의 구조를 요약해서 나타내면 다음과 같습니다.
GRU
GRU(Gated Recurrent Unit)는 LSTM의 간소화된 형태라고 할 수 있습니다. 다만, 놀랍게도 GRU는 더 적은 파라미터로 높은 학습 속도와 일반화 성능을 보이면서 LSTM보다 더 나은 성능을 자주 보여줍니다.
GRU는 2개의 gate(reset gate and update gate)를 사용하며, cell state 없이 hidden state만을 사용합니다.
Leave a comment