2019년 6월 25일 화요일

Word2Vec (워드투벡터) 모델

* 본 내용은 (가제)'글로벌 기업과 한전의 인공지능 이야기. 들어볼래?' 책 작성 중 자연어 처리 개요에 대한 부분이다. 저작권자의 허락 없이 무단 복제를 금한다.

Word2Vec 모델
Word2Vec 모델은 Google에서 2013 년에 발표한 워드 임베딩 모델로서 예측 학습을 기반으로 하여 단어 표현 벡터에 문맥 및 단어 간 의미 유사성을 포함시킨 워드 임베딩 모델이다. 단어의 개수만큼 벡터의 크기가 증가하는 Bag of Words와는 달리 Word2Vec의 경우 생성되는 벡터의 크기를 조절할 수 있다. 단어수 만큼 벡터의 크기가 증가하고 새로운 단어가 들어올 때마다 벡터를 바꿔야 하는
Bag of Words의 비효율성을 해결하기 위하여, Word2Vec의 벡터 크기는 Bag of Words 벡터의 크기보다 작게 설정된다. Word2Vec의 벡터의 크기가 포함하고자 하는 단어의 수보다 작다면 어떻게 표현할 수 있을까. 앞서 설명한 Distributed Embedding이라는 기술이 Word2Vec의 기저가 된다.
Word2Vec 방식에는 크게 CBOW 방식과 Skip-gram 방식 2가지 아키텍처가 있다. 각 방식은 단어를 Distributed Embedding의 일환으로 단어수보다 적은 크기의 벡터를 생성하는 것은 동일하지만, 벡터를 학습(Training)하는 방식에서 차이를 보인다.
 
CBOW
CBOWContinuous Bag of Words 모델의 약자이다. CBOW 모델 아키텍처는 어떤 단어를 문맥 안의 주변 단어를 통해 예측하는 방법을 통하여 단어 임베딩 모델을 학습한다.
1.각 주변 단어들을 원-핫벡터로 만들어 입력 값으로 사용한다(입력층 벡터)
2.가중치행렬을 각 원-핫 벡터에 곱해서 n-차원 벡터를 만든다(은닉층)
3.만들어진 n차원 벡터를 모두 더한 후 개수로 나눠 평균 n차원 벡터를 만든다(출력층 벡터)
4.n차원 벡터에 다시 가중치 행렬을 곱해서 원-핫 벡터와 같은 차원의 벡터로 만든다
5.만들어진 벡터를 실제 예측하려고 하는 단어의 원-핫 벡터와 비교해서 학습한다.
6. 실제 단어의 임베딩 벡터는 은닉층n-차원 벡터의 결과를 나타낸다.


Skip-gram
Skip-gram은 어떤 단어를 가지고 특정 문맥 안의 주변 단어들을 예측하는 방법이다
1.하나의 단어를 원-핫 베터로 만들어 입력값으로 사용한다
2.가중치 행렬을 원-핫 벡터에 곱해서 n차원 벡터로 만든다
3. n차원 벡터에 다시 가중치 행렬을 곱해서 원-핫 벡터와 같은 차원의 벡터를 만든다
4. 만들어진 벡터를 실제 예측하려고 하는 주변 단어들의 원-핫벡터와 비교해서 학습한다

댓글 없음:

댓글 쓰기