Intro드디어 자연어처리의 발전의 급상승을 이루었던 Attention에 관한 설명어텐션의 구조seq2seq의 문제점기존 seq2seq에서는 Encoder쪽에서 모든 입력(여러 단어)을 단 하나의 고정 길이의 벡터 \(\textbf{h}\)로 변환하여 Decoder쪽으로 넘겼다.그러다보니 긴 문장의 경우 중요한 정보(특히 초반 정보)가 누락 될 가능성이 있었다.따라서 각 시점의 모든 정보를 각각의 \(\textbf{h}\)로 변환하여 Decoder쪽으로 보내는 개선을 고안하게 되었다.하지만 모든 정보를 넘기게 되면 정보의 과부하가 생길 수 있으므로, 거기서 중요한 정보만 집중 할 수 있는 기술이 Attention이다.Encoder의 개선기존의 하나의 벡터에 모든 입력 정보를 담아야만 했던 Encoder를..
Intro지금까지 설명한 RNN, LSTM으로 재밌는 애플리케이션인 ‘문장 생성’을 수행하는 방법을 배운다.또한 seq2seq라는 새로운 구조의 신경망도 소개한다. 이 seq2seq2는 기계 번역, 챗봇, 메일 자동 답신 등 다양하게 응용될 수 있다.언어 모델을 사용한 문장 생성RNN을 사용한 문장 생성의 순서언어 모델은 지금까지 주어진 단어들에서 다음에 출현할 단어의 확률 분포를 출력한다.출력된 확률 분포에서, 가장 확률이 높은 단어를 선택할 수 있다. 이것이 “deterministic(결정적)” 방법이다. 이 경우, 확률이 적은 단어는 절대 생성 될 수 없다.반면, 분포에서 Probabilistic(확률적) 으로 선택할 수 있다. 이 경우, 확률이 낮은 단어도 간혹 선택 될 수 있다.위 작업을 원하는..
Intro바닐라 RNN은 과거의 정보를 기억할 수 있었으나 성능이 조지 못하다. 그 이유는 시계열 데이터에서 시간적으로 멀리 떨어진, 장기(long term)의존 관계를 잘 학습할 수 없다는 데 있다(장문의 첫 단어와 끝단어의 관계를 이해하지 못함)따라서 LSTM이나 GRU 등의 계층이 등장했다. LSTM이나 GRU는 ‘게이트’라는 구조가 더해지는데, 이 게이트 덕분에 장기 의존 관계를 학습 할 수 있다.RNN의 문제점RNN은 시계열 데이터의 장기 의존 관계를 파악하기 어려운데, 그 이유는 기울기 소실 혹은 기울기 폭발(explosion) 때문이다.기울기 소실 또는 기울기 폭발RNN이 언어 모델로서 다음 문제를 풀어야 하는 경우를 생각해보자.Mary가 인사를 한 사람은 ‘Tom’이기 때문에 ‘Tom’이라..
Intro지금까지의 신경망은 Feed forward 유형의 신경망이었으나, 이러한 신경망은 시계열 데이터를 잘 다루지 못하는 단점이 있다.따라서 본 장에서는 시계열 데이터를 다루는데 특화된 RNN이라는 네트워크에 대해서 설명하고자 한다.확률과 언어 모델word2vec을 확률 관점에서 바라보다.word2vec의 경우, 좌우 단어(맥락)을 통해 단어를 유추했다.이를 확률로 표현하면 다음과 같다.$$P(w_t|w_{t-1}, w_{t+1})$$그런데 여기서 만약 왼쪽의 단어들만을 맥락으로 고려하면 어떻게 될까? $$P(w_t|w_{t-1}, w_{t-2})$$이것이 바로 언어 모델이다.바닐라 언어 모델은 왼쪽 문맥만을 고려하는 모델(left to right)이라고 봐야하고, 후에 나오는 BERT와 같은 Mas..
Intro앞장에서 구현한 CBOW는 말뭉치에 포함된 어휘 수가 많아지면 계산량이 너무 커지기 때문에 이번 장에서는 네거티브 샘플링이라는 새로운 손실함수 도입을 통해 속도를 개선하고자 한다.word2vec 개선 1전체 어휘수가 7개라면 신경 쓸 것이 없다. 그러나 오른쪽 그림처럼 어휘수가 100만개로 늘어나게 되면 수많은 계산 시간이 소요된다.병목이 생기는 구간입력층의 원핫 표현과 가중치 행렬 \(\textbf{W}_{\text{in}}\)의 곱 계산은닉층과 가중치 행렬 \(\textbf{W}_{\text{out}}\)의 곱 및 softmax의 계산Embedding 계층아래와 같이 단어를 원핫 벡터로 표현할 경우 입력층에서는 다음과 같은 계산을 하게 된다하지만 1 X 100만 짜리 행렬을 곱하는 것은 간단..
추론 기반 기법과 신경망앞장에서 배운 PPMI처럼 단어의 등장 횟수를 세는 방식은 통계기반 방법이라면, word2vec은 데이터를 통해 학습하고 그 결과를 토대로 추론 하는 추론 기반 기법이다.통계 기반 기법의 문제점단어의 동시발생 행렬을 만들고 그 행렬에 SVD를 적용하여 밀집벡터를 얻을 수 있다.하지만 현업에서 다루는 말뭉치의 어휘 수는 어마어마하다. 100만개라고 해도 행렬의 차원이 ‘100만 X 100만’이 되므로 이러한 행렬을 실제로 다루는 것은 현실적이지 않다.SVD를 n x n 행렬에 적용하는 비용은 \(O(n^3)\)이다.통계 기반 기법은 말뭉치 전체의 통계를 이용해 단 1회의 처리 만에 분산 표현을 얻는다.(배치)한편, 추론 기법에서는 미니배치로 학습하는 것이 일반적이다.(미니배치)추론 ..
자연어 처리란한국어와 영어 등 우리가 평소에 쓰는 말을 자연어라고 하며, 이러한 자연어를 컴퓨터에게 이해시키기 위한 기술이다.우선 ‘단어의 의미’부터 살펴보자시소러스시소러스란 유의어 사전으로, 뜻이 같은 단어(동의어)나 뜻이 비슷한 단어가 한 그룹으로 분류되어 있다.자연어 처리에 이용되는 시소러스에서는 단어 사이의 ‘상위와 하위’ 혹은 ‘전체와 부분’ 등 서로의 관계에 기초해 표현된다.이러한 네트워크를 통해서 컴퓨터에게 단어 사이의 관계를 입력시킬 수 있다.WordNet자연어 처리에서 가장 유명한 시소러스는 WordNet이다. 프린스턴 대학교에서 1985년부터 구축하기 시작한 전통 있는 시소러스이다.시소러스의 문제점시대 변화에 대응하기 어렵다언어는 계쏙 바뀌고 새로운 단어가 생성된다. 그럴때마다 사람이 ..