티스토리 뷰
1. Word2vec 의 원리
를 계산하고 context words vector 와 center word vector (deep) 을 update 하는 것이다.
그 다음 time step t+1 에서는 center word 가 learning 이 되겠고, 똑같은 방식으로 window 를 옮겨가면서 실제로 함께 co-occur 하는 단어관의 확률을 높이도록 관련 parameter 를 update 하는 것이다.
그런데 이런 식으로 window 를 한칸씩 옮겨가며 그 때마다 벡터를 업데이트 하는 데에는 문제가 있다!
각 윈도우 마다 우리는 윈도우 크기 * 2 (output words) + 1 (center word) 만 보고 파라미터를 (time step t 에서의 center word vector 랑, output vector 는 전부 업데이트 하는 건가 ?) 업데이트 한다. 전체 코퍼스의 토큰이 20,000 정도만 된다고 해도 굉장히 sparse 하게 optimize 가 이루어지게 된다. 왜냐면 20,000 개의 단어 중에서 실제로 deep 과 나타나는 단어는 몇 개 안 되고, 나머지 토큰은 거의 deep 과 co-occur 하지 않을 가능성이 크기 때문.
이 문제를 해결하는 방법은? 아마도 window 내에 있는 단어들, 즉 center word "deep" 과 그 주변에 실제로 co-occur 하는 context words 의 vector (I, like, and, NLP) 의 vector 만 update 하는 것!
이렇게 하기 위해서는 2가지 방법이 가능하다.
1) Stochastic gradients 처럼 (?), output context words matrix 의 특정 column 만 update 시키거나
2) hash (딕셔너리) - key 는 word 이고, value 는 word vector 인 - 를 이용해서 window 내에 있는 단어에 대한 vector 만 update 하거나.
기존에 우리가 정한 다음의 모델을 쓰기에는 또 다른 문제점이 있다.
분자 부분은 2개의 단어 (context word, center word) 의 vector 끼리의 계산이기 때문에 간단한 반면에, 분모 부분은 computation 이 상당히 heavy 하다. (이 부분은 어려워서 https://blog.naver.com/jujbob/221155564430 인용). 그렇기 때문에 전체 V 에 대해서 계산하는 게 아니라 몇 개의 단어만 가지고 계산하면 되지 않을까 하고 생각할 수 있다. 그런데 이 몇 개의 단어를 어떻게 선택할까? 그냥 랜덤하게? 간단하게 말해 주어진 규칙을 가지고 랜덤하게 선택하면 된다. 고의적으로 여러개의 오답이 될만한 후보를 랜덤하게 선택한 후, 확률값에 negative 를 취하는 방법을 negative sampling 이라고 한다.
negative sampling 을 확률적으로 표현하면, 정답이 될 수 있는 후보쌍의 확률을 최대로 만들고, 오답이 될 수 있는 후보쌍의 확률을 최소로 하는 것.
2. Window base 방법과, co-occurrence 방법을 합치면?
3. Word embedding 은 어떻게 평가할까?
이 식을 어떻게 설명할 수 있냐면 분자만 놓고 봤을 때, 결국 ( woman - man + king ) 의 결과값과 가장 큰 cosine similarity 를 갖는 값이 원하는 값 (queen) 이라는 것 (Xi 가 queen 의 vector 값인가? d 는 string 이고..?)
'NLP > CS224n' 카테고리의 다른 글
[CS224n]Lecture 9. RNN for machine translation (0) | 2019.05.20 |
---|---|
[CS224n] Lecture8. RNN and language model (0) | 2019.05.11 |
[cs224n]Lecture 6. Dependency parsing (0) | 2019.05.06 |
[CS224n] Lecture 4. Word window classification and neural networks (0) | 2019.04.29 |
[CS224n] Lecture 2. Word2vec (1) | 2019.04.02 |
- Total
- Today
- Yesterday
- Contextual Embedding
- Bert
- 뉴럴넷
- 워터마킹
- neural network
- Attention Mechanism
- language model
- 뉴런
- weight vector
- transformer
- cs224n
- Statistical Language Model
- Neural Language Model
- Pre-trained LM
- 벡터
- GPTZero
- 언어모델
- LM
- Elmo
- word embedding
- nlp
- neurone
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |