Deep Learning

[밑바닥부터시작하는딥러닝2] Chapter 3. word2vec

씨주 2024. 4. 18. 08:35

3.1. 추론 기반 기법과 신경망

✔️ 통계 기반 기법의 문제점

통계기반기법에서는 주변 단어의 빈도를 기초로 단어를 표현했다.

하지만 이 방식은 대규모 말뭉치를 다룰 때 문제가 발생하는데, 어휘가 100만개라면 100만*100만이라는 거대행렬이 생기고 이를 SVD(특잇값감소) 적용하는 것은 쉽지 않다.

반면, 추론 기반 기법은 신경망을 이용하는 경우, 미니배치로 학습하는 것이 일반적이다. 신경망이 한번에 소량(미니배치)의 학습 샘플씩 반복해서 학습하며 가중치를 갱신해간다.

그림 3-1.

그림 3-1과 같이 통계기반기법은 데이터를 한꺼번에 처리하고(배치학습), 추론기반기법은 데이터의 일부를 사용하여 순차적으로 학습한다.(미니배치학습)

 

✔️ 추론 기반 기법

추론 기반 기법에서는 '추론'이 주된 작업으로, 그림 3-2처럼 주변 단어(맥락)가 주어졌을 때 '?'에 해당하는 단어를 추측하는 작업이다.

그림 3-2.

 

✔️ 신경망에서 단어처리

신경망은 'you', 'say' 등의 단어를 있는 그대로 처리할 수 없어 단어를 '고정 길이의 벡터'로 변환해야 한다.

이 때 사용하는 대표적인 방법이 단어를 원핫표현(원핫 벡터)으로 변환하는 것이다.

그림 3-4.

 

이런식으로 단어를 고정길이벡터로 변환하면 신경망의 입력층은 그림 3-5처럼 뉴런의 수를 고정할 수 있다.

그림 3-5.

 

이제 단어를 벡터로 나타낼 수 있고 신경망을 구성하는 계층들은 벡터를 처리할 수 있다.

그림 3-6.

 

그림 3-6은 완전연결계층이므로 각 노드가 이웃층의 모든 노드와 화살표로 연결되어있다.

이 화살표는 가중치(매개변수)가 존재하므로, 입력층 뉴런과의 가중합이 은닉층 뉴런이 된다.

그림 3-7.

 

 

여기서 입력층(c)과 가중치(W)의 행렬곱을 보면 입력층(c)은 원핫표현이므로 단어에 대응하는 원소만 1이고 그외에는 0인 벡터이다.

따라서 그림 3-8처럼 가중치(W)의 행벡터 하나를 뽑아내는 것과 같다.

그림 3-8.

 

허나 가중치로부터 행벡터를 뽑아낼 뿐인 행렬 곱을 계산하는 건 비효율적이다.

이를 word2vec에서 개선할 예정이다.

3.2. 단순한 word2vec

CBOW(Continuous Bag-Of-Words)모델 : 맥락으로부터 타깃을 추측하는 용도의 신경망

입력은 맥락('you', 'goodbye'같은 단어들의 목록)을 원핫표현으로 변환한 것

그림 3-9.

 

이때 은닉층의 뉴런은 입력층의 완전연결계층에 의해 변환된 값이 되는데 입력층이 여러 개이면 전체를 평균한 값이다.

그림 3-9의 경우 첫번째 입력층 h1, 두번째 입력층 h2의 평균인 1/2(h1 + h2)가 된다.

출력층의 뉴런은 뉴런 하나하나가 각각의 단어에 대응하며, 각 단어의 '점수'를 뜻한다. (softmax를 취하여 확률을 구할 수 있다.)

값이 높을수록 대응단어의 출현 확률도 높아진다.

 

이를 계층 관점에서 보면 그림 3-11과 같다.

그림 3-11.

 

✔️ CBOW 모델의 학습

여기서 학습을 위해 softmax와 cross entropy error 계층만 추가한다면 loss를 구할수 있고 이를 활용해 신경망을 학습시킬 수 있다.

그림 3-13 / 그림 3-14.

 

3.5. word2vec 보충

✔️ CBOW 모델과 확률

P(A) : A가 일어날 확률

P(A, B) 동시확률 : A와 B가 동시에 일어날 확률

P(A | B) 사후 확률 : B가 일어났을 때 A가 일어날 확률

 

CBOW 모델은 맥락을 주면 타깃 단어가 출현할 확률을 출력하는 것이다.

그림 3-22.
식 3-1.

식 3-1은 wt-1과 wt+1이 주어졌을 때 타깃 wt가 될 확률로 CBOW가 모델링하고 있는 것이다.

이를 활용하여 CBOW 모델의 손실함수를 구하면 식 3-2가 된다.

식 3-2.

 

식 3-2는 샘플 데이터 하나에 대한 손실함수이며, 이를 말뭉치 전체로 확장하면 식 3-3이 된다.

CBOW 모델의 학습이 수행하는 일은 식 3-3의 손실함수를 작게 만드는 것이다.

식 3-3.

 

✔️ skip-gram 모델

word2vec은 CBOW모델과 skip-gram모델을 제안한다.

skip-gram은 CBOW모델의 맥락과 타깃을 역전시킨 모델로 그림 3-23, 3-24와 같다.

그림 3-23.
그림 3-24.

입력층은 1, 출력층은 맥락의 수만큼 존재한다.

skip-gram은 식 3-4 (wt가 주어졌을 때 wt-1과 wt+1이 동시에 일어날 확률)를 모델링한다고 할 수 있다.

식 3-4.

 

여기서 맥락의 단어들 사이에 관련성이 없다(조건부 독립)고 가정하고 손실함수 식 3-7을 유도할 수 있다.

식 3-7.

 

skip-gram모델은 맥락의 수만큼 추측하기 때문에 그 손실함수는 각 맥락에서 구한 손실의 총합이어야 하고,

COBW모델은 타깃 하나의 손실을 구한다. 

왼쪽 : CBOW모델 손실함수 / 오른쪽 : skip-gram모델 손실함수

 

단어 분산 표현의 정밀도 면에서 skip-gram 모델의 결과가 더 우수하다. 특히 말뭉치가 커질수록 저빈도 단어나 유추문제의 성능에서 더 뛰어나다.

하지만 학습 속도 면에서는 CBOW 모델이 더 빠르다. skip-gram모델은 손실을 맥락의 수만큼 구해야 해서 계산 비용이 그만큼 커지기 때문이다.

 

✔️ 통계 기반 vs 추론 기반

통계 기반 기법은 말뭉치의 전체 통계로부터 1회 학습하여 단어의 분산 표현을 얻는다.

추론 기반 기법은 말뭉치를 일부분씩 여러번 보면서 학습한다.(미니배치 학습)

 

어휘에 추가할 새 단어가 생겨서 단어의 분산 표현을 갱신해야 한다고 가정해보자.

통계 기반 기법은 계산을 처음부터 다시 해야 한다. 동시발생행렬을 다시 만들고 SVD를 수행하는 일련의 작업을 다시 해야 한다.

추론 기반 기법(word2vec)은 매개변수를 다시 학습할 수 있다. 학습한 가중치를 초깃값으로 사용해 다시 학습하면 되기 때문에 기존에 학습한 경험을 해치지 않으면서 단어의 분산 표현을 효율적으로 갱신할 수 있다.

 

통계기반기법에서는 주로 단어의 유사성이 인코딩 된다.

word2vec(특히 skip-gram모델)에서는 단어의 유사성, 단어 사이의 패턴도 파악된다.

king - man + woman = queen과 같은 유추문제를 풀 수 있다.

하지만 정확도면에서는 비슷하다.

 

통계기반기법과 추론기반기법은 서로 관련이 있다고 할 수 있다.

나아가 word2vec 이후 통계기반기법과 추론기반기법을 융합한 GlovVe 기법이 등장하기도 한다.

 

3.6. 정리

- 추론 기반 기법은 추측하는 것이 목적이며, 그 부산물로 단어의 분산 표현을 얻을 수 있다.

- word2vec은 추론 기반 기법이며, 단순한 2층 신경망이다.

- word2vec은 skip-gram 모델과 CBOW 모델을 제공한다.

- CBOW 모델은 여러 단어(맥락)로부터 하나의 단어(타깃)을 추측한다.

- 반대로 skip-gram 모델은 하나의 단어(타깃)로부터 다수의 단어(맥락)을 추측한다.

- word2vec은 가중치를 다시 학습할 수 있으므로 단어의 분산 표현 갱신이나 새로운 단어 추가를 효율적으로 수행할 수 있다.

 

 

 

참고 git : https://github.com/ExcelsiorCJH/DLFromScratch2.git