Word2Vec
워드투벡터(Word2Vec)이란 각 단어의 벡터 간 유사도를 측정하기 위한 방법이다.
Word2Vec의 학습방식에는 CBOW(ContinuousBagofWords)와 Skip‑Gram 두 가지 방식이 있다.
CBOW: 주변 단어들을 입력으로 중간에 있는 단어들을 예측
Skip‑Gram: 중간에 있는 단어들을 입력으로 주변 단어들을 예측
CBOW
CBOW는 주변 단어들을 입력으로 받고 중간에 있는 단어를 예측한다.
중심 단어로부터 주변 단어를 앞, 뒤로 몇개 볼지 정해야하는데 이 범위를 윈도우(window)라고 한다.
위 예시에서는 window의 크기가 2인 셈이다.
우선 CBOW는 입력으로 주변 단어의 원-핫 벡터가 들어가게 된다.
그리고 입력층은 가중치 W와 곱해져서 투사층(Projection layer)를 만들게 된다.
이때 가중치의 크기는 V x M 이다. (입력 크기는 1 x V, V는 단어 집합의 크기)
따라서 투사층의 크기는 1 x M이 되고 아래의 그림에서는 M이 5인 경우이다.
투사층에서 출력층 사이의 가중치 W'는 M × V 행렬이다.
인공 신경망의 훈련 전에 이 가중치 행렬 W와 W'는 랜덤 값을 가지고, CBOW는 주변 단어로 중심 단어를 더 정확히 맞추기 위해 계속해서 이 W와 W'를 학습해가는 구조다.
이렇게 주변 단어의 원-핫 벡터에 대해서 가중치 W가 곱해서 생겨진 결과 벡터들은 투사층에서 만나 이 벡터들의 평균인 벡터를 구하게 된다.
투사층에서 가중치 W' 와 곱해져서 크기가 1 x V 인 벡터를 출력한다. 이 벡터가 소프트맥스 함수를 지나면서 각 원소들은 0과 1사이의 실수값을 갖게 되고 총합은 1이 된다.
위 사진에서 두 벡터인 y^와 y의 오차를 줄이기위해 CBOW는 손실 함수(loss function)로 크로스 엔트로피(cross-entropy) 함수를 사용한다. 크로스 엔트로피 함수에 중심 단어인 원-핫 벡터와 스코어 벡터를 입력값으로 넣고, 이를 식으로 표현하면 다음과 같다.
Skip-gram
CBOW가 주변 단어로 중심 단어를 예측했다면 Skip-gram은 중심 단어로 주변 단어를 예측한다.
인공 신경망은 아래와 같이 도식화 시킬 수 있다.
CBOW와의 차이점은 원-핫 입력 벡터에서 가중치를 곱하고 투사층 벡터를 구할 때 평균을 내지 않는다는 것이다.
입력 벡터가 하나니까 어떻게 보면 평균을 구할 필요가 없다고도 할 수 있다.
여러 논문에서 성능 비교를 진행했을 때 전반적으로 Skip-gramd이 CBOW보다 성능이 좋다고 알려져 있다.
'AI > 자연어 처리' 카테고리의 다른 글
[자연어처리] 간단한 시퀀스-투-시퀀스(Sequence-to-Sequence, seq2seq) (0) | 2023.02.17 |
---|---|
서브워드 토크나이저(1) - BPE (0) | 2023.02.15 |
[자연어 처리] 코사인 유사도(Cosine Similarity) (0) | 2023.02.09 |