[강의 리뷰]CS231N lecture 10 RNN 후기
[TODO] 강의노트와 필기를 추가해야함.
RNN의 문제점을 해결하기 위해 LSTM을 고안하는 과정 속에서 내가 느낀 점
- 모델에서 대표하는 식에 대한 직관적인 이해가 필요하다.
- RNN의 기본식에 대해서 먼저 대략적인 이해가 필요하다.
- 식1 : ht=tanh(Whhht−1+Wxhxt), 식2 : yt=Whyht
- 식1의 경우 W, h 와의 관계와 식이 어떤 이유로 도출된 것인지에 대한 이해가 필요하다.
- RNN의 문제는 출력의 길이가 긴 경우, 앞 쪽의 정보들이 뒤로 갈수록 옅어지는 것이다.
- LSTM
- 식1 : ct=f⊙ct−1+i⊙g, 식2 : ht=o⊙tanh(ct)
- 정보들에 대해서 계속 머금고 있는 항을 추가해야한다(cell state : i(input gate),f(forget gate),o(output gate),g).
- [직관적 해석] cell state 를 통해서 기존 정보들을 계속 갖고 있는다. 식1에서 cell state 와 input 을 gate 출력 값(0부터 1사이 소수)을 통해 반영 여부를 결정하여 더하여 다음 hidden state를 업데이트 한다.
새로운 모델을 고안하는 과정은 결국 기존 모델의 문제점을 해결할 수 있는 방법을 고안해서 추가하거나 변경하는 것(직관적 해석이 우선적으로 필요)
- 기존 모델을 기반으로 새로운 모델을 만들거나 수정을 할 때, 기존의 연산이나 메모리를 해치지 않을 수 있으면 않는 방향으로 가야한다.
- RNN의 기존 틀을 따르되, 정보가 소실되는 것을 줄이기 위해서 기존 정보들을 머금고 있는 cell state를 추가한 것 처럼...
- 연산 자체도 크게 늘지 않고 오히려 줄었다고 볼 수 있다. cell state는 hidden state와 동일한 사이즈로 생성이 되고, 연산이 matrix multiplication이 아닌 element-wise multiplication으로 연산을 하므로, 전체적인 연산속도는 기존 것보다 느리지 않다. parameter는 줄어들기 때문에 메모리도 더 효율적으로 쓰는 방향으로 새로운 모델을 만든 셈이다.