728x90
반응형
word2vec '모델' 신경망으로 구축
- CBOW(continuous bag-of-words)
CBOW 모델의 추론 처리
- 맥락으로부터 타깃(target)을 추측하는 용도의 신경망
- '타깃'은 중앙 단어 그 주변 단어들이 '맥락'
- 모델의 입력은 맥락
CBOW 모델의 신경망 구조
- 두 입력층에서 은닉층으로의 변환은 똑같은 완전연결계층(가중치는Win)이 처리한다.
- 은닉층에서 출력층 뉴런으로의 변환은 다른 완전연결계층(가중치는Wout)이 처리한다.
계층 관점에서의 CBOW 모델의 신경망 구성
CBOW 모델 파이썬 구현
# CBOW 모델 신경망 구현
import sys
sys.path.append('..')
import numpy as np
from layers import MatMul
# 샘플 맥락 데이터
c0 = np.array([[1,0,0,0,0,0,0]])
c1 = np.array([[0,0,1,0,0,0,0]])
# 가중치 초기화
W_in = np.random.rand(7,3)
W_out = np.random.rand(3,7)
# 계층 생성
in_layer0 = MatMul(W_in)
in_layer1 = MatMul(W_in)
out_layer = MatMul(W_out)
# 순전파
h0 = in_layer0.forward(c0)
h1 = in_layer1.forward(c1)
h = 0.5 * (h0+h1)
s = out_layer.forward(h)
print(s)
CBOW 모델의 학습
- 소프트맥스 함수를 적용하면 '확률'을 얻을 수 있다.
CBOW 모델의 구체적 예
- CBOW 모델의 학습은 올바른 예측을 위해 가중치를 조정하는 일을 한다.
CBOW 모델의 학습 시 신경망 구성
- CBOW 모델의 손실을 구하는 계싼의 흐름이자, 신경망의 순방향 전파
word2vec의 가중치와 분산 표현
- word2vec에서 사용되는 신경망에서는 두 가지 가중치가 있다.
- 입력 측 완전연결계층의 가중치(Win)와 출력 측 완전연결계층의 가중치(Wout)
- Win의 각 행이 각 단어의 분산 표현에 해당한다.
- 출력 측 가중치 Wout에도 단어의 의미가 인코딩된 벡터가 저장되고 있다고 생각할 수 있다.
- 출력 측 가중치는 각 단어의 분산 표현이 열 방향(수직 방향)으로 저장된다.
각 단어의 분산 표현 : 입력측(왼쪽) 출력측(오른쪽)
가중치 선택지
- 입력 측의 가중치만 이용한다.
- 출력 측의 가중치만 이용한다.
- 양쪽 가중치 모두 이용한다.
word2vec에서는 '입력 측의 가중치만 이용한다'가 가장 대중적인 선택이다.
출처 : 밑바닥부터 시작하는 딥러닝2
https://www.hanbit.co.kr/store/books/look.php?p_code=B8950212853
728x90
반응형
최근댓글