Processing math: 100%
본문 바로가기
딥러닝과 자연어처리 (DL & NLP)/강의노트 - Text Analytics (고려대 강필성 교수님)

[강의노트] 05-3 Text Representation II - Distributed Representation Part 3 (GloVe & FastText)

by YS_LEE 2024. 7. 20.
반응형

위 강의노트는 고려대학교 산업경영공학부 대학원 강필성 교수님의
비정형데이터분석 (Text Analytics) 을 듣고 정리한 강의노트입니다.

Word-level: GloVe

Limitations of Word2Vec

  • 과도하게 사용된 단어에 대해 너무 많이 학습
  • e.g.) 관사 the가 나올 확률이 너무 높음 P(w|the)

Glove

  • matrix factorization method 기반
  • V x V 크기의 큰 행렬
  • Xij = i가 j와 함께 등장하는 빈도, Xi = 전체 코퍼스에서 단어 i가 등장한 횟수
  • Pij=P(j|i)=XijXi

Motivation

  • 특정 k라는 단어가 ice와 연관이 높고 steam과는 아니라면 Pik/Pjk 가 커야함
  • 단어 k가 steam과 관련성이 높지만 ice와는 아니라면 Pik/Pjk 는 작아야함
  • 단어 k가 둘 다 관련있다면 비율은 1에 가까워져야함

Formulation

  • 함수 F를 이용하여 세 단어들의 관계를 표현
    F(wi,wj,wk)PikPjk
  • wiwj의 관계를 substraction(뺄셈)으로 표현
    F(wiwj,wk)=PikPjk
  • 두 단어 사이의 차이(관계) wiwj 와 context word wk 사이의 링크를 만들어 주기 위해 내적으로 하나의 스칼라 값을 만들어줌
    F((wiwj)Twk)=PikPjk

Homomorphism

아래 수식 대신, 아까 변형한 수식을 이용하여 표현한다.
P(solid|ice)P(solid|steam)

F((wiwj)Twk)=PikPjk

그렇다면 다음과 같이 표현할 수 있다.
P(solid|ice)P(solid|steam)=F((icestream)Tsolid)
ice와 steam의 위치를 바꾸면 아래와 같이 빼기 순서가 달라진다.
P(solid|steam)P(solid|ice)=F((steamice)Tsolid)
두 식을 정리하면 다음과 같다. (즉, ice와 steam의 위치를 바꾸면 역수가 된다.)
F((icesteam)Tsolid)=P(solid|ice)P(solid|steam)=1F((steamice)Tsolid)

Input에 대한 항등원 관계를 정리
(icesteam)Tsolid=(steamice)Tsolid
F의 output에 대한 항등원 관계를 정리
F((icesteam)Tsolid)=1F((steamice)Tsolid)

  • Need a homomorphism from (R,+) to (R>0,×)
    = 입력을 덧셈의 항등원으로 바꿔주면 함수의 출력값은 곱셉의 항등원으로 나오게 되는 Mapping이 필요하다.
    = 입력에서의 덧셈은 함수값에서의 곱셈으로 빠져나올 수 있어야 한다.
  • f(a+b) = f(a)f(b)를 만족해야 하므로, 그 중 우리가 아는 가장 쉬운 함수인 F(x) = exp(x)

Solution

위 식에서 F(x) 대신 exp(x)로 정리하고 로그를 씌우면
wTiwk=logPik=logXiklogXi
logXibi+bk 로 표현하여 정리하면
wTiwk+bi+bk=logXik

Objective Function

J=Vi,j=1f(Xij)(wTiwk+bi+bk)2

f(Xij)

  • 고 빈도 단어들의 학습에 대한 가중치를 낮춰주는 역할
  • (x/xmax)a if x<xmax otherwise 1

Word-level: FastText

Limitations of NNLM, Word2Vec, and GloVe

  • 단어가 가지는 morphology 특성을 무시하고 있음
  • morphologically rich languages에 대해 적용하기 어렵다 (터키어, 필란드어 등)

Goal

  • character n-grams 표현을 학습
  • 단어의 분산 표상은 n-gram vectors의 총합으로 표현

Revisit Negative Sampling in Word2Vec

  • Word2Vec의 Score는 두 임베딩 사이의 내적을 통해 계산
  • FastText의 Score는 w에 대한 n-grams를 정의한 다음, 벡터 표현을 전부다 더해서 내적
  • score(w,c)=ggwzTgvc
  • e.g.) apple 하나만 embedding하는 것이 아닌 a부터 ap, app ... apple 전부 더한 것이 apple의 embedding이다. 라는 개념

subword model

  • n-gram representation

Word Embedding Examples

  • Word Embedding with two different langauges
    한 언어만 하는 것이 아닌 서로 다른 언어들과 임베딩
  • Word Embedding with Images
    단어만 임베딩하는 것이 아닌 이미지, 영상 등의 멀티모달 데이터를 통해서도 임베딩

요약

  • GloVe
    • Word2Vec는 고빈도 단어를 과도하게 학습하는 문제를 해결하고자 등장
    • F(x)
      • 입력을 덧셈의 항등원으로 바꿔주면 함수의 출력값은 곱셉의 항등원으로 나오게 되는 Mapping이 필요
      • 입력에서의 덧셈은 함수값에서의 곱셈으로 빠져나올 수 있어야 함
      • F(x) = exp(x)
    • 목적 함수
      • f(Xij) 는 고 빈도 단어들의 학습에 대한 가중치를 낮춰주는 역할
  • FastText
    • 기존 임베딩들이 단어가 가지는 morphology 특성을 무시하는 문제를 해결하고자 등장
    • character n-grams 표현을 학습
    • 단어의 분산 표상은 n-gram vectors의 총합으로 표현
    • subword model
반응형

댓글