모든 게시물은 macOS Monterey 12.0.1 버전 기준으로 작성하였습니다.
부스트캠프 AI Tech 3기를 위한 Pre-Course 를 토대로 작성하였습니다.
Sequential Model
Sequential Data를 처리하는 가장 큰 어려움은 지금까지는 우리가 얻고 싶은 것이
하나의 Label이었는데 Sequential Data는 길이가 제각각이다.
받아들일 입력의 차원이 고정되어 있지 않다는 것이다. 몇개의 단어, 음절, 이미지가
들어올 지 모르므로 그 크기에 상관없이 동작할 모델이 필요하다.
이전에 어떤 말이 들어왔을 때 다음 말이 무엇일지 예측하는 문제.
시간이 지날수록 고려해야 하는 지난 시간의 데이터들이 늘어난다.
이를 가장 간단히 만드는 것은 Fixed Time Span. 과거의 5개만 볼 거니까
그 전 데이터까지는 보지 말자.
Markov Property의 특징은 나의 현재는 과거에만 의존하다는 것이다.
물론 현실 문제에는 완벽히 적용하지 않지만 이를 통해 joint distribution을
표현하기 매우 쉽다는 특징이 있는데 나중에 배울 것이다.
하지만 바로 직전의 과거만 고려해서 생기는 문제. 이를 해결하기 위해
다음 모델이 등장한다.
Hidden State가 등장한다. Hidden State는 과거 전반적인 정보가 담겨 있다.
과거 정보의 요약버전. 이를 이용하여 다음 시점의 출력값을 결정한다.
앞에서 다룬 개념들을 잘 활용할 수 있는 모델이 RNN이다.
나의 hidden state는 그 시점에만 의존적인 것이 아니라 이전의 cell state의
영향도 받는다는 것이다. 시점 t에서 보는 것은 시점 t의 입력, 시점 t-1의 정보다.
RNN의 문제점에는 어떤 것이 있을까?
RNN 자체는 먼 과거의 정보까지 담을 수는 없다는 단점이 존재한다.
Short Term Dependence라고 표현한다. 우측 이미지만 봐도
h0가 h4까지만 가려고 해도 활성화 함수를 4번 거친다.
시그모이드면 vanish, 렐루면 explode 문제가 생길 것이다.
LSTM : Long Short Term Memory 모델이 등장하게 된다.
크게 세 개의 게이트로 이루어진다. Forget, Input, Output이 그것이다.
Previous Cell State는 내부로만 흘러간다. time step t 까지의 요약정보인 것.
아래는 각 gate의 역할을 정리한 것이다.
이전에 들어온 정보들 중에 어떤 정보를 먼저 지울지 결정하고
이전 hidden state와 input으로 어떤 것을 올릴지 C_tilda를 정한다.
업데이트된 Cell State와 올릴 Candidate Cell State를 적절히 조합하여
새로운 Cell State 만들고 이를 얼마나 뺄 지 정하여 최종적인 출력값을 정한다.
Gate가 두 개다. Reset Gate & Update Gate
Hidden State가 곧 Output이라 Output Gate가 필요 없다.