이번 CBOW의 설명은 '밑바닥부터 시작하는 딥러닝2'의 내용을 기반으로 작성하였습니다. 이번 글에서는 CBOW의 모델 추론과 학습에 대해 설명합니다.
CBOW 모델 추론
CBOW와 Skip-gram은 개념은 비슷하기 때문에 이제 부터는 CBOW 모델을 기준으로 살펴보도록 하겠습니다. 앞에서 설명했듯이 CBOW는 맥락(주변 단어)으로부터 타겟(중앙 단어)을 추측하는 용도의 신경망입니다.

그림에서 입력층이 2개인 이유는 맥락의 고려할 단어를 2개로 정했기 때문입니다. 첫번째 입력층이
여기서 가중치
CBOW 모델 학습
CBOW 모델에서의 학습은 입력, 출력 두개의 가중치를 업데이트하는 작업입니다.
- 입력 측 가중치(
) : 각 단어의 분산 표현 - 출력 측 가중치(
) : 단어의 의미가 인코딩된 벡터가 저장
최종적으로 이용하는 단어 분산 표현은 word2vec(특히 skip-gram)에서는 입력 측 가중치만 이용하는 것이 가장 대중적 선택입니다. 참고로 GloVe에서는 두 가중치를 더했을 때 좋은 결과를 얻었습니다.
1. 학습 데이터 준비
말뭉치에서 맥락과 중심 단어를 위한 원-핫 벡터를 구하는 과정을 수행합니다.
- 대규모 documents → 전처리(preprocess) → 말뭉치(corpus)
- 맥락(contexts)과 타깃(target) 생성 → contexts, target 분리
- 원핫 인코딩(convert_one_hot) → context vectors, target vectors

문서를 전처리해서 말뭉치로 바꾸고 거기서 맥락과 타겟을 얻습니다. 이 맥락이 입력이 되고, 타겟이 정답 레이블이 되는 형태입니다. 맥락과 타겟이 단어ID로 구성되어 있으므로 원핫벡터로 변환됩니다. 여기서 중요한 것은 다차원 배열이라 형상에 주목해야 합니다.
2. CBOW 모델 구현 및 역전파(backpropagation)
- 어휘수(vocab_size)와 은닉층의 뉴런수(hidden_size)를 받음
- 가중치
두개를 생성 - 입력 측 MatMul 계층 2개, 출력 측 MatMul 계층 하나, Sortmax with Loss 계층으로 구성
- 역전파(backpropagation)는 기울기를 순전파 때와 반대 방향으로 전파
- 1 → ds → da → 0.5 * da(서로 바꿔) → 0.5 * da(그래도 통과)

* 함께 읽으면 좋은 글
Word2Vec의 아이디어와 역할
Word2Vec은 자연어 처리(NLP) 및 기계 학습 작업에 사용되는 인기 있는 단어 임베딩 기술입니다. 2013년 Tomas Mikolov가 이끄는 Google 연구원 팀에 의해 소개되었습니다. 우선 생각할 문제가 신경망에서
bommbom.tistory.com
'딥러닝' 카테고리의 다른 글
순환신경망(RNN) 학습, Truncate BPTT (0) | 2024.04.01 |
---|---|
순환신경망(RNN)이 언어 모델로 사용된 이유 (0) | 2024.03.27 |
Word2Vec의 아이디어와 역할 (0) | 2024.03.25 |
통계 기반 기법 vs 추론 기반 기법의 차이점 (0) | 2024.03.22 |
통계 기반 언어 모델 특징 및 한계점(feat. 시소러스, WordNet) (1) | 2024.03.18 |