character-level Language Model

- 언어 모델이란 이전에 등장한 문자열을 기반으로 다음 단어를 예측하는 태스크를 말합니다. 그중에서도 캐릭터 레벨 언어 모델(character-level Language Model)은 문자 단위로 다음에 올 문자를 예측하는 언어 모델이다.
- 예를 들어, 그림과 같이 맨 처음에 "h"가 주어지면 "e"를 예측하고, "e"가 주어지면 "l"을 예측하고, "l"이 주어지면 다음 "l"을 예측하도록 hidden state가 학습되어야한다.
- 이때 각 타임스텝별로 output layer를 통해 차원이 4(유니크한 문자의 개수) 벡터를 출력해주는데 이를 logit이라고 부르며, softmax layer를 통과시키면 원-핫 벡터 형태의 출력값이 나오게 된다.
- hello 같은 경우는 l이 2번 나오다 보니, 단순히 원핫 인코딩 벡터 가지고는 판단이 불가, 따라서 앞에 무슨 단어가 나왔었는지 he가 나오고 l 이 나온 것과 hel 이 나오고 다시 l이 나온 것으로 구분 함, 이러한 가중치가 바로 h1, h2, … ht

다양한 언어모델의 예시

- 셰익스피어의 글을 활용해 더 많은 학습이 진행될수록 완전한 형태의 문장을 출력하는 것을 확인할 수 있다.
- 전 타임스텝까지의 주식값을 활용하여 다음날 주식값을 예측하는 형태로도 수행할 수 있다.
- 그 외에도 인물 별 대사, Latex로 쓰여진 논문, C 프로그래밍 언어와 같은 경우에도 다양한 언어적 특성을 학습하여 텍스트를 생성할 수도 있다.
- 쉼표, 줄바꿈표시, 공백 등도 하나의 토큰으로 보고 학습 후 자동 생성한다
BPTT(Backpropagation through time)

1. wxh = input 벡터가 히든 벡터로 변환될 때 사용되는 것
2. whh = 이전 timestep 히든 스테이트 벡터가 현재 timestep으로 변환될 때 사용되는 것
3. why = wxh와 whh로 계산된 ht가 output 벡터로 변환될 때 사용되는 것
RNN 모델이 학습하는 방법 : Truncation , BPTT
- Truncation이란, 제한된 리소스(메모리) 내에서 모든 시퀀스를 학습할 수 없기때문에 아래 사진과 같이 잘라서 학습에 사용하는 것을 뜻한다.

- 딥러닝 모델은 forward propagation을 통해 계산된 W를, backward propagation을 지나면서 W를 미분한 값인 gradient를 통해 학습하게 된다.
- BPTT란, Backpropagation through time의 줄임말로 RNN에서 타임스텝마다 계산된 weight를 backward propagation을 통해 학습하는 방식을 의미한다.
- 아래 그림은 특정 hidden state를 시각화한 그림으로, BPTT를 반복하게되면 다음과 같이 빨강(긍정)과 파랑(부정)으로 해당 time step에서의 중요한 부분을 학습하게 된다.

하지만, 기존의 Vanilla RNN으로는 위와 같이 학습될 수 없다. 그 이유는 gradient가 전파되면서 소실되거나 증폭되면서 멀리까지 학습정보를 잘 전달하지 못하는 Long-Term-Dependency가 발생하기 때문이다.
그렇다면 위의 hidden state 시각화는 어떻게 잘 된 것일까? 바로 RNN의 Long-Term-Dependency 문제를 보완한 LSTM 모델로 학습한 결과이기 때문입니다. LSTM에 대한 다음 포스팅에서 다루겠다!
Vanishing/Exploding Gradient Problem in RNN


- time step이 3인 RNN의 BPTT과정
- 3번째 time step의 hidden state 인 h_3h3 를 h_1h1 으로 표현하면 맨 아랫줄의 식과 같이 표현되는 것을 확인할 수 있다. BPTT를 통해 gradient를 계산해주면, tanh 로 감싸진 괄호안의 값들 중에 3 값이 속미분되어 나오게 된다.
- 위 예시는 time step이 3이므로 3이 2번 곱해지지만, 만약 길이가 더 길어진다면 미분값은 기하급수적으로 커질 것이고, 만약 속미분되어 나오는 W의 값이 1보다 작다면 미분값은 기하급수적으로 작아질 것이다.
- 이 계산과정을 통해 Gradient Vanishing/Exploding 문제가 발생하고 이 문제가 Long-Term-Dependency를 일으키게 된다.