티스토리 뷰

Word Embedding

- 언어에서 사용되는 단어들을 특정한 공간의 벡터 스페이스에 매핑

- 목적은 의미론적은 유사한 단어들은 서로 가까운 공간에 위치

- BoW에서 사용되던 원핫인코딩은 단어의 수만큼 차원을 만들어야되서, 비효율적임

 

원 핫 벡터

- 가장 직관적이고, 간단한 방법

- 단어의 수만큼 벡터 스페이스를 생성해서 단어에 해당되는 벡터의 값을 1로 변경하고 나머지는 0으로 유지

- 단어들의 유사성은 보존할 수 없다는게 큰 단점

 

다시 돌아와서 워드 임베딩은,

특정한 단어들을 임의의 차원을 가진 벡터로 바꾸는 작업

 

- 단어들을 100차원, 300차원 등 기존에 사용되던 차원보다 훨씬 작은 차원을 사용

- 각 벡터들을 값들은 0,1 값이 아닌 연속형의 숫자값인 실수로 표현

- King, Queen와 Male, Woman의 거리 차이가 유사하게 남 (의미론적인 차이를 보존하고 있음)

 

NNLM의 주요 목적은 단어들의 동시에 고정된 공간 상에 가장 좋은 벡터로 학습시키는 것과 일련의 단어의 시퀀스들의 확률을 높게 나타나도록 학습한다.

 

Count-based Language Model

- 이전의 조합들이 주어진다는 가정하에 chain rule 사용

- 100개의 단어를 보려면 99개의 단어들을 베이스로 100번째 단어의 가장 높은 확률을 도출해내야되는데,

이렇게 긴 단어들의 시퀀스를 가진 문장들은 거의 찾기가 불가능

- 이를 보완하기 위해서, Markov assumption을 적용해서 과거의 모든 단어들을 보는게 아니라 n-gram을 적용해 몇 개의 단어를 보는 것으로 대체

 

NNLM

- 단어들은 특정 공간 내에서의 dense vector이다 (sparse vector가 아니다)

- 앞서 t-1 단어들이 주어지면, 임베딩 된 벡터들과 뉴럴 네트워크의 가중치를 동시에 학습시키는 모델

- 주어진 단어들의 w^(t-n+1) 이전의 n개들의 단어들을 활용해서 w^(t) 단어를 예측해야된다.

 

두개의 제한

- 이후 단어들의 생성 확률의 총 합은 1

- 각 단어가 생성된 확률은 0보다 크거나 같아야함

 

잘 이해가 안되는 부분

- 좌측이 원핫 벡터이고 우측이 워드 임베딩 매핑 테이블

- 제가 이해하는 바로는, 원핫 벡터는 해당 단어만 1 나머지는 0의 값을 가진다

- 우측 임베딩 테이블은, 해당 단어의 차원에 m 차원의 실수값들이 존재

- 그럼 임베딩 테이블은 단어 * m 차원으로 원 핫 벡터보다 훨씬 공간을 잡아먹는게 아닌지 궁금합니다.

(필요한 단어들만 꺼내서 쓴다라는 의미인지 제가 잘못 이해하고 있는 것 같아서 질문 드립니다)

 

- g라는 함수의 probability function은 앞 단어들을 베이스로 t 번째의 단어의 확률들을 계산한다.

 

- i 번째의 단어 값이 최대가 되도록 하는 nnlm 모델을 만드는게 최종 목적

- 뉴럴 네트워크의 히든 레이어는 한개 (2003년도에 만들어져서 적음)

 

 

- X 값들은 input layer (기존에 세팅한 n-gram 단어들)

- 중간에 히든 노드는 H의 사이즈를 가지고 있어 input layer와 히든 레이어 가중치는 H * (n-1)*m의 사이즈를 가지고 있음

- 아웃풋 레이어는 V(단어)들의 사이즈만큼 결과값이 나와야되고, 히든 레이어는 H개의 결과값이 나오기 때문에

가운데 compute 되는 과정의 가중치 U는 H * V 사이즈만큼의 매트릭스를 구성해야되기 때문에 연산에 가장 큰 burden을 차지하는 부분

- W는 optional value(초록색 점선)으로 단어에서 바로 아웃풋 레이어로 보내지는 값

 

Stochastic gradient ascent

- 강의 내에서는 descent로 말씀하시는데 확인할 필요가 있음

- 전체 목적함수를 세타로 편미분하는 방식