이 글은 부스트캠프 AI Tech 3기 강의를 듣고 정리한 글입니다.
Sequence model
에서 가장 큰 어려움은 길이가 달라 모델링이 쉽지 않다는 것이다.
초기에는 sequenctial
한 데이터를 다루기 위해 이전 데이터를 계속해서 고려하는 모델을 만들었다.
하지만 이런 모델은 시간이 지날수록 input(조건부 부분)
이 계속해서 커지는 문제가 있기 때문에 모델링에 적합하지 않다.
input(조건부 부분)
이 계속해서 커지는 문제를 해결하기 위해 고정된 과거의 크기만큼만 고려하겠다는 AR(자기회귀)모델
을 만들었다.
AR모델
에서 바로 직전 과거에만 영향을 받는 모델을 Markov Model
이라고 한다.
장점
- 조건부를 표현하기 쉽다.
단점
- 바로 전 과거에만 영향을 받아 과거의 많은 데이터에 대한 소실이 있다.
- 예를 들어 수능점수를 예측하는 모델을 만들 때 바로 어제 공부한 것에만 영향을 받는 모델이 만들어지게 된다.
Vanila RNN
의 기본개념이 되는 모델이다.
Latent 변수
인 h(hidden state)
를 만들어 h
하나에만 의존적인 모델을 만드는 것이다.
이때 h
는 과거정보를 요약한 것이다.
RNN
의 수식을 포함한 내용은 이 글을 참조하자.
위에서 살펴본 모델의 개념을 DL
로 구현한 것이 RNN
이다.
아래 그림에서 왼쪽은 RNN
의 기본적인 개념으로 회귀하는 특성
을 표현한 그림이고,
오른쪽은 왼쪽 개념도를 unfold
한 것으로 실제 RNN이 학습하는 과정
을 나타낸다.
RNN
의 치명적인 단점은 Short-term dependencies
이다.
하나의 fix 된 룰로 과거정보를 취합하기 때문에 과거 정보가 미래까지 살아남기 힘들다.
그렇기 때문에 몇 step 전에 있는 것은 잘 반영이 되지만 멀리 있는 정보는 반영이 잘 되지 않는다.
그림의 수식에서 파란색 하이라이트를 보면 가 에 갈 때까지 똑같은 와 를 계속해서 통과하는 과정을 겪게되면서 가 의미가 없어지게 된다.
예를 들어 Gradient
는 가 ReLU
라면 exploding
, 가 sigmoid
라면 Vanising
되면서 는 쓸모없어지게 된다.
RNN
의 단점을 보완하기 위해 LSTM
이 등장했다.
LSTM
은 아래와 같은 뭔가 복잡한 구조를 가졌다.
가운데만 확대해 보면 이런 구조를 가지고 있는데
하나하나 뜯어보도록 하자.
가운데 흐르는 Cell state
를 통해 시점 t 까지의 정보를 취합하게 된다.
이때 어떤정보가 유용하고 안 유용한지 걸러 주는 역할을 하게 되고, 이 cell state
는 내부에서만 흐르게 된다.
이전의 h
와 지금의 x
를 가지고 어떤 것을 버릴지 결정하는 gate
어떤정보를 Cell state
에 올릴지 결정하는 gate
: 어떤 정보를 올릴지
: 이전정보와 현재정보로 만들어지는 cell state
의 예비군
input gate
와 forget gate
의 정보를 취합하여 cell state
를 update
어떤 값을 밖으로 빼낼지 (어떤 값을 에 반영할지) 결정하는 gate
Previous cell state
,
previous hidden state
,
input
3가지가 신경망으로 들어오게 되면
이전 cell state
를 얼만큼 지워버릴지 정하고 ( Forget gate
)
Previous cell state
와 input
를 가지고 어떤 값을 올릴지 를 정하고( Input gate
)
update
된 cell state
와 를 조합하여 새로운 cell state
를 만들고 ( Update cell
)
그 정보를 얼만큼 빼낼지 정해서 최종적인 출력값 도출 ( Output gate
)
요즘엔 잘 쓰지 않고,
Tranformer 모델로 거의 대체되는 추세이다.