3.1 추론 기반 기법과 신경망

3.1.1 통계 기반 기법의 문제점

통계 기반 기법에서는 주변 단어의 빈도를 기초로 단어를 표현한다. 하지만 이러한 방식은 대규모 corpus를 다룰 때 문제가 발생한다.

반면 추론 기반 기법은 신경망을 통해 미니배치 학습을 진행한다. 또헌 GPU를 통한 병렬 연산 또한 가능하다.

3.1.2 추론 기반 기법 개요

추론 기반 기법에서는 ‘추론’이 주된 작업이다. 추론이란 맥락이 주어졌을 때, 중간에 비워진 단어가 있다면 그 단어가 어떤 단어인지 구분(예측)하는 것이다. 특정 모델을 통해 맥락 정보를 입력해 각 단어의 출현 확률을 출력한 후, 모델이 올바른 추측을 할 수 있도록 학습 시킨다. 마지막으로 그 학습의 결과로 단어의 분산 표현을 얻는 것이 추론 기반 기법의 전체 그림이다.

3.1.3 신경망에서의 단어 처리

컴퓨터는 일반적인 자연어를 그대로 처리할 수 없으니 단어를 ‘고정 길이의 벡터’로 변환해야 한다. 이 때 사용하는 대표적인 방법이 단어를 원핫 벡터로 표현하는 것이다(벡터의 한 원소만 1이고 나머지는 0임). 예를 통해 살펴보자.

단어 벡터
hi [1, 0, 0]
there [0, 1, 0]
! [0, 0, 1]

예시 문장인 **hi there!**에서 원핫 벡터는 위과 같다. 이후 이를 신경망에 통과시키는 것이 간단한 프로세스이다.

코드로 살펴보자.

import numpy as np

c = np.array([[1, 0, 0]])
W = np.random.randn(3, 3)
h = np.matmul(c, W)
print(h)

>> [[-2.05959164 -0.42329819  0.24698636]]

위에서처럼 W라는 가중치를 벡터 c와 연산을 수행하면 가중치의 행 벡터를 뽑아낼 수 있다.

3.2 단순한 word2vec

다음으로는 모델을 신경망으로 구축하는 과정을 알아보자. 이번 코드에서는 word2vec에서 제안하는 CBOW 모델을 사용할 것이다.

3.2.1 CBOW 모델의 추론 처리

먼저 COBW 모델의 모습을 간단하게 살펴보자.

Untitled

위 모델에 대해 더욱 자세하게 알고 싶다면 다음 논문을 참고하자.