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

3장 word2vec

알맹리 2021. 4. 12. 15:49

통계기반기법 문제점

 - 대규모 말뭉치 다루기 힘들다. 단어 수가 100만개라면 100만x100만 크기의 행렬 만들어야 함

 - 말뭉치 전체의 통계를 이용해 단 1번의 처리만으로 분산 표현을 얻어서 말뭉치가 크면 눈물만..

 

추론기반기법

신경망으로 단어 처리

통계 기반 기법처럼 "단어의 의미는 주변 단어에 의해 형성된다"는 분포 가설에 기초.

"단어의 동시발생 가능성"을 얼마나 잘 모델링하는가가 중요한 연구 주제. 

 

통계기반기법 추론기반기법
1번 학습 미니배치로 학습
새로운 단어 넣으면 처음부터 다시 학습 새로운 단어 넣어도 기존 가중치를 초깃값으로 학습하면 됨. 
분산 표현의 성격 / 정밀도는 비슷
둘을 융합한 GloVe 기법!

 

CBOW 모델

맥락을 보고 target 추측

Softmax with Loss = Softmax + 교차 엔트로피 오차

맥락에 포함시킬 단어 n개 = 입력층 개수 n개

입력으로 맥락을 받고 > 원핫 벡터로 변환 > 결과 score를 softmax층으로 > 최종 출력값 확률

 

CBOW 학습

더보기

입력측 가중치는 행방향, 출력측 가중치는 열방향으로 저장.

최종적으로 사용하는 단어의 분산 표현은 W_in을 가장 많이 쓰지만 선택지는 여러개!

  1. 입력 측 가중치만

  2. 출력 측 가중치만

  3. 양쪽 가중치 모두

 

context 는 (6, 2, 7)의 3차원 배열 > 6은 미니배치 수, 2는 contex의 윈도우 사이즈, 7은 원핫벡터

target은 (6, 7) > 6이 미니배치 수, 7은 원핫벡터

 

학습 결과로 W_in과 W_out(가중치)에 단어의 출현 패턴을 파악한 벡터가 학습됨

 

skip-gram 모델

CBOW에서 봤던 맥락이랑 타겟의 역할을 반대로 생각하면 됨.

target이 주어졌을 때 맥락이 뭔지 맞춤. > input이 1개고 output이 여러개

확률로 보면

더보기

W_i는 말뭉치 안에 있는 단어들, W_t는 target이고 W_t-1, W_t+1는 context라고 했을 때 

context가 주어졌을 때 target이 W_t가 될 확률은 조건부 확률로 나타낼 수 있음

contexts가 주어졌을 때 target

위의 식을 이용해서 교차 엔트로피 오차 식도 쉽게 표현할 수 있음.

교차 엔트로피 오차
W_t에 대한 loss
CBOW 말뭉치 전체에 대한 loss

 

skip-gram의 경우는 조건부확률 식을 반대로 쓰면 되고, loss는 두번째 사진처럼 구하면 됨

target이 주어졌을 때 context
skip-gram 말중치 전체에 대한 loss

 

 

CBOW skip-gram
학습 속도 빠름 학습 속도 느림
단어 분산 표현 정밀도 bad 단어 분산 표현 정밀도 good
skip-gram을 사용하자!

 

 

'NLP > 밑바닥부터 시작하는 딥러닝2' 카테고리의 다른 글

5장 RNN  (0) 2021.04.16
4장 word2vec 속도 개선  (0) 2021.04.13
2장 자연어&단어 분산 표현  (0) 2021.02.22
1장 신경망 복습  (0) 2021.02.21