word2vec - 단순한 word2vec

AI / / 2020. 12. 30. 22:36
728x90
반응형

word2vec '모델' 신경망으로 구축

  • CBOW(continuous bag-of-words)

 

 

CBOW 모델의 추론 처리

  • 맥락으로부터 타깃(target)을 추측하는 용도의 신경망
  • '타깃'은 중앙 단어 그 주변 단어들이 '맥락'
  • 모델의 입력은 맥락

 

CBOW 모델의 신경망 구조

[그림1] CBOW 모델의 신경망 구조

 

  • 두 입력층에서 은닉층으로의 변환은 똑같은 완전연결계층(가중치는Win)이 처리한다.
  • 은닉층에서 출력층 뉴런으로의 변환은 다른 완전연결계층(가중치는Wout)이 처리한다.

 

 

계층 관점에서의 CBOW 모델의 신경망 구성

[그림2] 계층 관점에서의 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)

[그림3] CBOW 모델 구현

 

 

CBOW 모델의 학습

  • 소프트맥스 함수를 적용하면 '확률'을 얻을 수 있다.

 

CBOW 모델의 구체적 예

[그림4] CBOW 모델의 구체적 예

  • CBOW 모델의 학습은 올바른 예측을 위해 가중치를 조정하는 일을 한다.

 

CBOW 모델의 학습 시 신경망 구성

[그림5] CBOW 모델의 학습 시 신경망 구성

  • CBOW 모델의 손실을 구하는 계싼의 흐름이자, 신경망의 순방향 전파

 

word2vec의 가중치와 분산 표현

  • word2vec에서 사용되는 신경망에서는 두 가지 가중치가 있다.
  • 입력 측 완전연결계층의 가중치(Win)와 출력 측 완전연결계층의 가중치(Wout)
  • Win의 각 행이 각 단어의 분산 표현에 해당한다.
  • 출력 측 가중치 Wout에도 단어의 의미가 인코딩된 벡터가 저장되고 있다고 생각할 수 있다.
  • 출력 측 가중치는 각 단어의 분산 표현이 열 방향(수직 방향)으로 저장된다.

 

각 단어의 분산 표현 : 입력측(왼쪽) 출력측(오른쪽)

[그림6] 각 단어의 분산 표현

가중치 선택지

  1. 입력 측의 가중치만 이용한다.
  2. 출력 측의 가중치만 이용한다.
  3. 양쪽 가중치 모두 이용한다.

 

word2vec에서는 '입력 측의 가중치만 이용한다'가 가장 대중적인 선택이다.

 

 

 

출처 : 밑바닥부터 시작하는 딥러닝2

https://www.hanbit.co.kr/store/books/look.php?p_code=B8950212853

 

밑바닥부터 시작하는 딥러닝 2

이 책은 『밑바닥부터 시작하는 딥러닝』에서 다루지 못했던 순환 신경망(RNN)을 자연어 처리와 시계열 데이터 처리에 사용하는 딥러닝 기술에 초점을 맞춰 살펴본다. 8장 구성으로 전체를 하나

www.hanbit.co.kr

 

728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기