-
[자연어처리론] Word vectors & Word2Vec전공&대외활동 이야기/자연어처리론(Stanford CS224N&HYU class)) 2024. 10. 30. 13:11
Word Vectors
앞장에서 얘기한 것과 같이 text를 vector로 변환해야한다. 이를 Word Vectors라고 한다.
정의는 다음과 같다.
A term used for the representation of words, typically in the form of a real-valued vectorthat encodes the meaning of the word such that the words that are closer in the vector space are expected to be similar in meaning.
즉, 비슷한 의미를 가진 단어들은 vector space상에 더 가깝게 아닌 것은 더 멀리 위치시시키는 것을 목적으로 한다.
Representing Words as Discrete Symbols : One-hot vectors
가장 기초적인 방법으로 단어들의 개수만큼 구성된 vector 차원을 만들고 각자에 하나에 index를 부여하듯 값을 부여하면 된다. 즉, one-hot vector로 구성하는 방법이 있을 것이다.
문제는 단어의 뜻의 여부는 반영되지 않는다. 예를 들어 motel과 hotel은 매우 유사한 숙박업소로의 뜻을 지니지만, 두 vector가 one-hot vector로 구성된 경우 orthogonal하게 구성된다. 즉 단어의 유사도는 반영되지 않는다.
그럼 이런 단어의 유사도를 반영해서 embedding하면 어떨까?
Representing Words by Their Context: Word embedding
A word’s meaning is given by the words that frequently appear close by.
- “You shall know a word by the company it keeps” (J. R. Firth 1957: 11)Distributional semantics, 즉 단어의 맥락적 의미를 근처의 단어들을 기반으로 알 수 있다는 것이다.
보다 자세히 설명하기 위하여 대표적인 word embedding 방법 중 하나인 word2vec을 확인해보자.
아래 링크에는 보다 직역이 포함된 글이 작성되어있다!
https://secundo.tistory.com/88
Word2Vec은 위에서 말한 것처럼 word embedding을 단어에 부여하기 위한 학습하기 위한 방법론이다.
위의 그림과 같이 우선 단어를 위해 center word와 outside, context word로 구분한다. Distributional semantics의 개념을 이용한다. Center word를 기반으로 주변의 Context word의 확률을 최대화하기도, 혹은 역으로 하는 방법을 이용한다.
이는 각각 Skip-gram(주변부 단어 맞추기)와 CBOW(center word맞추기)로 불린다.
수식을 자세히 알아보자.
Obejective Function: Likelihood
수식을 보면 우선 최대우도 식을 -log로 변형한, 즉, negative log likelihood 식임을 알 수 있다. 이 식은 각각의 position t에 관하여 given centerword를 기반으로 context word를 예측하는 수식이다.
그럼 확률 P()를 어떻게 구할 수 있을까? 이는 흔히 ML에서 확률하면 다루는 수식인 softmax 수식을 이용가능하다.
우선 center word를 v, u를 context word vector로 정의하자.
이후, center word c가 주어졌을 때 context word o는 아래와 같이 확률로 정의할 수 있다.
이를 center word의 vector에 관해 미분하면 아래와 같다(우선 log 연산에 의해 나눈다)
그럼 1번은 아래와 같이 쉽게 구해진다.
이후 2번의 경우 아래와 같이 구해진다(첫번째는 log 미분 + chain rule/ 이후 exp연산+ chian rule)
최종적으로 이 둘을 합하면 아래와 같이 정의된다.
Negative Sampling
다만. softmax의 normalization term이 cost가 많이 드든 작업임으로(모든 단어에 관한 sum을 구해야한다) Negative sampling trick이 추가된다. Negative sampling은 학습과정에서 전체 단어 집합을 업데이트 하지 않고 일부 단어 집합을 업데이트하는 것으로 두 단어 집합에서 이를 업데이트한다.
아래의 수식은 새로운 loss function 수식이다(max).
이 수식을 보면 첫번째 term의 경우 주변부 단어와 중심부 단어의 softmax를 취하고 있다. 즉, 중심 단어 wc 와 실제 주변 단어(positive sample) 간의 유사도를 최대화하려는 항이며,
뒷부분의 수식은 neagaive sampling에서의 단어 유사도를 구하고 이를 음수로 취하는 것을 볼 수 있다. 즉, 이를 최소화하려는 항이다.
즉, sample이 크게 postive sample과 negative sample로 나누어져있음을 알 수 있다. 이는 각각 타겟 단어 주변에 등장한 단어와 주변에서 등장하지 않은 단어로 구성되어있다.
Sampling은 전체 문장에서 자주 사용되는 단어에 높은 가중치를 주어 이를 선정한다. 아래의 수식은 특정단어가 선별될 확률에 관한 수식으로 f()는 해당 특정 단어의 출현빈도를 의미한다.
즉 최종적으로 아래와 같은 형식일 것이다.
'전공&대외활동 이야기 > 자연어처리론(Stanford CS224N&HYU class))' 카테고리의 다른 글
[자연어처리론] 자연어처리 개요 (0) 2024.10.30