[TIL] Word2Vec

박상우·2023년 1월 3일
0

TIL

목록 보기
1/12
post-thumbnail

공부한 것을 하루에 하나씩 TIL로 정리하겠습니다

Word2Vec

Word2Vec이란?

word embedding 방법론 중 한 방식
word embedding은 단어를 밀집 표현의 vector로 표현하는 것

희소표현

기존 우리가 아는 One-Hot encoding이 희소표현
vector의 차원에서 하나의 숫자만 1이고 나머지는 모두 0인 것
이는 공간적으로 매우 비효율적

밀집표현

희소표현과 달리 단어를 사용자가 설정한 값으로 차원을 맞추어 표현하는 방식
벡터 내 숫자는 실수를 가지며 단어를 표현하는 일련의 숫자가 들어감

Word Embedding

단어를 밀집 벡터의 형태로 표현하는 방법을 워드 임베딩이라 칭함
흔히 LSA, Word2Vec, FastText, Glove 등이 존재
랜덤한 값의 밀집 벡터를 인공 신경망의 가중치 업데이트와 같은 방식으로 단어 벡터를 학습

CBOW, Skip-gram

Word2Vec 방식은 CBOW와 Skip-gram 방식으로 나뉨
CBOW는 맥락으로 타깃 word를 예측하는 모델
Skip-gram은 반대로 타깃으로부터 맥락을 예측하는 모델

여기서 맥락에 해당하는 주변 단어를 Window라고 칭함

CBOW

먼저, 임의의 Window 설정 후 문장에 따라 중심 단어를 뒤로 이동시키며 타깃 word와 주변 word를 뽑아 데이터 셋으로 만들어 줌
이를 Sliding Window라고 칭함
다만 Sliding Window 이전에 원-핫 인코딩이 완료되어 있어야 하며 이를 통해 CBOW 신경망을 학습시킴

CBOW 신경망을 학습시켜 나온 최적의 가중치가 바로 word embedding vector

입출력 데이터는 모두 원-핫 벡터이기에, 은닉층 계산 과정은 사실상 가중치 행렬 W에서 I번째 행 벡터를 참조(lookup)하는 과정

각각 참조된 행 벡터의 평균을 구한 뒤, V차원의 vector로 투영한 값을 softmax 취해 가장 높은 벡터를 예측하는 방향으로 학습

Skip-gram

Word2vec에서 가장 성능이 높은 방식
타깃 word로부터 맥락 단어를 예측하는 구조

Input으로 하나의 원-핫 벡터만 들어오기에 hidden layer를 사용하지 않고 가중치 W행렬을 곱해서 i 번째 행을 추출한 뒤, Projection layer로 단어를 예측하는 방식

CBOW와 마찬가지로 W가 가중치 행렬임과 동시에 임베딩 벡터에 해당

CBOW와 마찬가지로 sliding window 작업을 수행하나, 총 4개의 주변 단어를 예측해야 하기에 가중치 update를 총 4번 수행하므로, 학습량이 네 배 차이나기에 성능이 더 좋을 가능성이 높음

정리

수식, 말로 들으면 이해하기 힘든 부분이 많으나 이미지와 함께 들여다보면 생각보다 쉬운 내용

NLP의 기초가 되는 부분인 만큼 숙지하고 넘어가기..

profile
세상아 덤벼라

0개의 댓글