Ordinary day

2. Word Vector 본문

Study/NLP

2. Word Vector

minung14 2017. 8. 14. 00:59

(해당 포스팅은 Natural Language Processing with Deep Learning CS224N/Ling284 를 토대로 작성한 것입니다.)

1. 컴퓨터에서는 우리가 사용하는 언어의 '의미'를 어떻게 다룰까?

대개 일반적으로는 상위어 관계와 유의어 집합을 갖고있는 '워드넷(WordNet)'같은 분류학을 사용한다.

(대표적으로 프린스턴 대학에서 만들고 관리하는 워드넷)


그러나 이산표현에도 문제점이 있는데..

  1. 리소스는 훌륭하지만 단어의 뉘앙스를 놓칠 수 있다.
  2. 신조어들을 놓칠 수 있다.
  3. 주관적이다.
  4. 표현을 생성하고 적용하는데 사람의 노력이 많이 필요하다.
  5. 가장 큰 문제는 단어의 유사도를 계산하기 힘들다는 점이다.

one-hot 벡터로 표현하는 것은 localist representation 이라고도 한다.

참고로 localist representation은 distributed representation 과 반대되는 개념으로,

distributed representation이 갖고 있는 두 가지 의미가 있다.

  1. 하나의 단어가 여러 개의 뉴런으로 표현된다.
  2. 표현된 각각의 값이 여러 단어를 표현한다.

아무튼 다시..

one-hot 벡터로는 단어의 유사성을 표현하지 못한다.

예를 들어, 'motel' 과 'hotel' 두 단어를 one-hot 벡터로 표현한 것을 서로 곱하면 0이 나온다.(직교성)

따라서 dense vector로 표현해야 한다. (차원을 축소하고 실수값으로 표현)


2003년에 벤지오가 neural language model 을 만들었는데,

사실 초기엔 A라는 단어 뒤에 올 단어를 예측하는 것이 주 목표였지만,

이후에 word vector를 만들어 내는 것이 목표로 바뀌면서 현재 word2vec 같은 이론들이 계속 나오고 있다.


2. word2vec의 메인 아이디어

word2vec의 메인 아이디어는 다음과 같다.

  1. Skip-gram: 중심 단어로 주위 단어 예측
  2. CBOW: 주위 단어로 중심 단어를 예측

skip gram vs cbow에 대한 이미지 검색결과


참고로 CBOW보다 Sikp-gram 의 성능이 좀 더 좋아서 skip gram을 많이 사용하고 있다.

그리고 이를 계산할 수 있는 두 가지 방법이 있다.

  1. Negative Sampling
  2. Hierarchical softmax


'Study > NLP' 카테고리의 다른 글

1. Introduction  (0) 2017.08.06
Elastic Search & mecab-ko  (0) 2017.02.24
Comments