본문 바로가기
  • GDG on campus Ewha Tech Blog
3-2기 스터디/NLP 입문

[3주차] NLP Chapter3. word2vec

by chaerin314 2022. 4. 22.

Chapter3. word2vec

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

  • 통계 기반 기법의 문제점 : 대규모 말뭉치를 다룰 때 현실적으로 계산하기 어려움, 말뭉치 전체의 통계를 1회만에 처리함(배치 학습)
  • 추론 기반 기법의 이점 : 미니배치로 학습해서 어휘 수가 많아 계산량이 큰 작업을 처리하기 어려운 경우에도 신경망을 학습시킬 수 있음, 병렬 계산 가능(미니배치 학습)
  • 공통점 : 분포 가설에 기초, ‘단어의 동시발생 가능성을 얼마나 잘 모델링 하는가’가 중요

3.2. 단순한 word2vec

  • CBOW (Continuous bag-of-words) 
    • $W_{in}$의 각 행이 각 단어의 분산 표현에 해당
    • $W_{out}$에 단어의 의미가 인코딩 된 벡터가 저장됨(열 방향)
    word2vec에서는 최종적으로 이용하는 단어의 분산 표현으로 대부분 입력층의 가중치만 이용
  • 입력층의 개수 : 맥락으로 고려할 단어의 개수
  • word2vec에서 사용되는 신경망으로, 맥락으로부터 타깃을 추측하는 용도의 신경망

3.3. 학습 데이터 준비

3.4. CBOW 모델 구현

  • 학습 코드
# 하이퍼파라미터 설정
window_size = 1
hidden_size = 5
batch_size = 3
max_epoch = 1000

# 텍스트 전처리
text = 'You say goodbye and I say hello.'
corpus, word_to_id, id_to_word = preprocess(text)

vocab_size = len(word_to_id)
contexts, target = create_contexts_target(corpus, window_size)
target = convert_one_hot(target, vocab_size)
contexts = convert_one_hot(contexts, vocab_size)

# 학습 모델
model = SimpleCBOW(vocab_size, hidden_size)
optimizer = Adam()
trainer = Trainer(model, optimizer)

trainer.fit(contexts, target, max_epoch, batch_size)
trainer.plot()

# 단어 분산 표현 결정: 밀집벡터
word_vecs = model.word_vecs
for word_id, word in id_to_word.items():
    print(word, word_vecs[word_id])

3.5. word2vec 보충

  • 확률로 표현한 CBOW 모델 : $P(w_t|w_{t-1},w_{t+1})$
    • 손실함수(말뭉치 전체) : $L = -{1\over T} \sum logP(w_t|w_{t-1},w_{t+1})$
  • 맥락으로 $w_{t-1},w_{t+1}$이 주어졌을 때 타깃이 $w_t$가 될 확률
  • skip-gram 모델
    • 확률로 표현한 skip-gram 모델 : $P(w_{t-1},w_{t+1}|w_t)$
      • 손실함수(말뭉치 전체) : $L = -{1\over T} \sum (logP(w_{t-1}|w_t)+logP(w_{t+1}|w_t))$
  • CBOW와 반대로 중앙의 단어(타깃)로부터 주변의 여러 단어(맥락)를 추측함
  • 비교                                                               CBOW                                   skip-gram
    학습 속도 faster slower
    성능 worse better

요약

  • 단어의 의미를 표현해 컴퓨터에게 이해시키는 방법
    • 추론 기반 기법 : 미니배치 학습으로 단어의 분산 표현을 학습
  • 통계 기반 기법 vs 추론 기반 기법
    • 통계 기반 기법 : 단어의 유사성 인코딩
    • 추론 기반 기법 : 단어의 유사성 + 단어 간 패턴 파악, 단어 추가 및 갱신에 유리
    정확도는 명확히 우열을 가릴 수 없음, 서로 연결되어 있음

댓글