어텐션의 구조 어텐션 메커니즘은 seq2seq를 한 층 더 강력하게 해준다. seq2seq의 문제점 seq2seq에서는 encoder가 시계열 데이터를 인코딩한다. 이때의 출력은 고정 길이 벡터인데, 고정길이는 입력 문장의 길이가 아무리 길어도 항상 같은 길이의 벡터로 변환 한다는 특징이 있다. 이러한 seq2seq의 문제점은 필요한 정보가 벡터에 다 담기지 못하게 된다. Encoder 개선 여태까지 encoder에서 LSTM 계층 마지막 은닉 상태만을 decoder에 전달했다. encoder 출력 길이는 입력문장의 길이에 따라 바꿔주는 것이 개선 포인트이다. 각 단어의 은닉 상태 벡터를 모두 이용하면 입력된 단어와 같은 수의 벡터를 얻을 수 있다. 5개가 입력되었고, encoder는 5개의 벡터를 출력..
언어 모델을 사용한 문장 생성 RNN을 사용한 문장 생성의 순서 시계열 데이터(T개분 만큼) 모아 처리하는 Time LSTM과 Time Affine 계층을 만들었다. I라는 단어를 주었을 때 출력한 확률분포는 다음과 같이 보인다. 이것을 기초로 다음 단어를 생성하는 방법은 두가지가 있다. 1) 확률이 가장 높은 단어 선택하기. 결과가 일정하게 정해짐 (결정적 방법) 2) 확률적으로 선택, 각 후보 단어의 확률에 맞게 선택하는것, 확률이 높은 단어는 선택되기 쉽고 확률이 낮은 단어는 선택되기 어렵다. 이 방식은 선택되는 단어가 매번 다르다. (확률적 결정 방법) 2번째 방법(확률적 선택)으로 샘플링을 수행한 결과로 say가 선택되었다. 다만 결정적이 아니고 확률적으로 결정되었다는 특징이 있다. 다른 단어들..
RNN의 문제점 기울기 소실 또는 기울기 폭발 RNN은 시계열 데이터의 장기 의존 관계를 학습하기 어렵다. 두가지 주 원인이 기울기 소실, 기울기 폭발이 있다. 언어 모델은 주어진 단어들을 기반으로 다음 단어를 예측한다. Tom was watching TV in his room. Mary came into the room. Mary said hi to ____ 빈칸에 들어갈 단어는 Tom이다. Tom이 방에서 tv를 보고 있는 것과, mary가 방으로 들어간 정보가 기억돼야 한다. 정답이 Tom인것을 도출하기 위한 학습은 BPTT로 수행한다. 역전파 수행시 RNN 계층이 과거 방향으로 의미있는 기울기를 전달한다. 기울기는 의미있는 정보가 들어있고, 이것을 과거로 전달함으로써 장기 의존 관계를 학습한다. ..
시계열 데이터 처리 계층 구현 RNNLM의 전체 그림 맨 아래 embedding 계층은 단어 ID를 단어 벡터로 변환 ->분산 표현 RNN 계층 입력 -> 은닉상태 위쪽 & 오른쪽으로 출력 -> 위로 출력한 은닉상태 affine 계층 -> softmax you 를 입력했을 때, say가 가장 높게 나옴. 제대로 예측하려면 좋은 가중치를 사용해야함. say를 입력했을 때, goodbye와 hello가 높게 나옴. 'you say goodye', 'you say hello' 모두 자연스러운 문장인 것으로 보아 RNN 계층은 'you say'라는 맥락을 기억하고 있다. you say 라는 과거의 정보를 은닉상태 벡터로 저장해둔 것이다. RNN 계층이 과거에서 현재로 데이터를 흘려보내줌으로써 과거의 정보를 인코..
feed forward (피드포워드 신경망): 흐름이 단방향인 신경망, 입력 신호가 중간층, 그 다음 층 계속 그 다음층으로 한 방향으로만 전달 되는 것을 의미함. 피드포워드는 시계열 데이터의 성질을 충분히 학습하기 어려움, 그래서 순환신경망의(Recurrent Neural Network) 등장 확률과 언어 모델 word2vec을 확률 관점에서 바라볼 때 W1 W2 ... Wt-1 Wt Wt+1 .... WT-1 WT CBOW모델은 맥락 Wt-1 Wt+1로 부터 Wt를 추측하는 일을 수행한다. 수식으로 나타내면 다음과 같다. P(Wt | Wt-1, Wt+1) 이 사후 확률은 Wt-1과 Wt+1이 주어졌을 때 Wt가 일어날 확률을 뜻한다. 윈도우 크기(양쪽 맥락 수)가 1일 때이다. 아래는 맥락을 왼쪽 윈..