Getting information from the future 지금까지 살펴본 RNN, GRN, LSTM과 같은 모델들은 입력 정보를 계산하여 forward하는 방식으로만 문제를 처리하고 있습니다. 그에 따라서 이후의 정보를 반영하는 것이 중요한 위 예시같은 문제는 해결하지 못한다는 문제점을 안고 있죠. Bidirectional RNN (BRNN) Bidirectional RNN은 위처럼 forward 뿐만 아니라 backward 방향의 정보도 함께 반영하여 예측값을 구합니다. 그래서 예시의 경우 Teddy라는 일부의 정보만으로 다음 단어를 예측하지 않게 되어 보다 정확한 예측이 가능해집니다. 물론 음성 인식처럼 이전 정보만을 가지고 다음 값을 예측해야 하는 경우에는 적합하지 않지만, 대부분의 자연어 ..
Sequence Models
GRU and LSTM GRU와 LSTM의 차이를 비교하고 있습니다. GRU에서 update, reference 두 개의 gate를 사용한 것과 달리, LSTM은 update, forget, output 세 개의 gate를 사용합니다. 재밌는 특징은 세 개의 gate에 들어가는 입력이 a , x로 동일하다는 것이죠. 물론 가중치와 편향은 gate마다 다릅니다. 또한 GRU에서는 c가 RNN의 a와 동일한 것을 의미했지만, LSTM에서는 c와 a가구분되어 사용되는 것을 알 수 있습니다. 이는 두 개의 항이 다음 층으로 각각 전달되기 때문입니다. LSTM in pictures peephole connection : c의 각 원소는 게이트 내의 각 요소에 순서대로 영향을 줍니다. 예를 들어 c의 첫 번째 요소..
RNN unit 기존 RNN의 구조를 시각화하면 위와 같습니다. 이전 층의 a과 현재 층의 입력 x에 가중치를 곱하고 편향을 더한 것에 활성화 함수를 적용한 것이 a가 됩니다. GRU (simplified) 마찬가지로 GRU의 구조를 시각화한 것은 위와 같습니다. GRU에서는 cell의 개념을 사용하고 있기 때문에 RNN의 a 기호 대신 c를 사용합니다. 이전 층의 결과물 c과 현재 층의 입력 x 둘을 계산한 것이 GRU에서는 tilda c와 gamma u가 됩니다. 여기서 u는 update의 u라고 생각해도 좋습니다. tilda c는 tan h를, gamma u는 sigmoid를 활성화 함수로 사용합니다. 이제 둘을 곱하여 이전 층의 cell을 기억할지 말지 결정합니다. 예를 들어 gamma = 0인 ..
Vanishing gradients with RNNs RNN은 Vanishing gradients, Exploding gradients라는 대표적인 문제점을 안고 있습니다. sequence의 길이가 길어지면 길어질수록 초반부의 정보를 후반부까지 유지하기 힘들다는 것이 기본적인 문제점입니다. 위 예시에서 cat, cats라는 주어들을 보면 수일치를 위해 동사가 was, were로 달라져야 합니다. 만약 두 단어 사이의 sequence의 길이가 엄청나게 길다면 모델의 입장에서 모든 정보를 포함한 타당한 추론을 하기 어려워집니다. 수학적으로는 층(layer)이 여러 개 쌓일수록 기울기가 폭발적으로 증가하거나, 역전파(back propagation) 시 0에 수렴하는 문제점이 발생하곤 합니다. 기울기가 폭발적으..
Sampling a sequence from a trained RNN 이전 강의에서 배운 것처럼 RNN 모델이 학습을 마치고 나면 sampling을 해봅니다. a는 0으로 초기화된 상태에서 시작하면, 각 토큰들을 기준으로 다음에 등장할 확률이 가장 높은 토큰 하나를 예측하게 됩니다. 이때 토큰이 등장하지 않게 하려면 resampling 하게 하는 등의 조치를 취할 수 있습니다. Character-level language model 지금까지 살펴본 것은 단어 단위의 RNN이었지만, 이 토큰을 글자 단위로 만들 수도 있습니다. 이때는 소문자, 대문자, 공백, 특수 기호 등등 다양한 문자가 vocab에 포함될 수 있겠죠. 하지만 모든 글자 단위로 연산을 하게 되면 비용이 비싸다는 단점이 있습니다. Seque..
What is language modeling? 언어라는 것은 구성 요소에 따라 일정한 확률로 표현될 수 있습니다. 위 예시에서 apple, pear, salad는 잘 어울리는 조합이지만, pear 대신 pair가 들어가면 그렇지 않죠. 결국 각 문장이 등장할 확률, 혹은 다음에 어떤 단어가 등장할지에 대한 확률을 예측하는 것이 기본적인 내용입니다. Language modeling with an RNN 우선 영어 텍스트로 된 corpus(말뭉치)를 준비합니다. 이를 이용하여 tokenize합니다. tokenize란 corpus에 저장된 단어를 기준으로 문장 단위를 쪼개는 것을 뜻합니다. 문장 맨 뒤에는 모델의 입장에서 이 문장의 끝이라는 것을 인지할 수 있도록 토큰을 추가합니다. 만약 corpus(voc..