GloVe: Global Vectors for Word Representation

hangdi·2024년 5월 11일
0

논문 링크 : https://nlp.stanford.edu/pubs/glove.pdf

논문 제목 : GloVe: Global Vectors for Word Representation

중심 아이디어

  • 임베딩 된 중심 단어와 주변 단어 벡터의 내적이 전체 코퍼스에서의 동시 등장 확률이 되도록 만드는 것
  • 즉, 이를 만족하도록 임베딩 벡터를 만드는 것이 목표

Abstract

최근, 단어의 vector space representation을 학습하는 방법은 벡터 연산을 사용하여 fine-grained(세분화)된 semantic, syntatic 규칙성을 포착하는데 성공했으나, 이런 규칙성의 기원은 여전히 불투명

우리는 이러한 규칙성이 단어 벡터에 나타나는 데 필요한 모델 속성들을 분석하고 명확하게 밝힌다.

논문에서는 다음과 같은 주요한 두 모델의 장점을 결합한 새로운 global log-bilinear regression model을 제안한다.

  1. global matrix factorization
  2. local context window

제안한 모델은 전체 sparse matirx나 대규모 코퍼스의 개별 context window 보다는 word-word-co-occurrence metrix에서 nonzero element만 훈련함으로써 통계적인 정보를 효과적으로 학습한다.

결과

  • 모델은 의미있는 substructure를 생산하게 됨
  • 최근 word analogy task에서 75%성능을 얻음
  • similarity task나 named entity recongnition(NER)에서 기존 연구들을 능가하는 성능을 얻음

1. Introduction

언어의 Semantic vector space model은 각각의 단어들을 실수 값 벡터로 표현한다. 이렇게 표현된 벡터는 다양한 application의 feature로 사용될 수 있다.

대부분의 word vector method는 단어들의 고유한 qulity를 평가하기 위해서 두 단어벡터 사이의 거리나 각도에 의존

여기서 단어 벡터를 학습하기 위한 두 가지 모델들이 있다.

  1. global matrix factorization인 latent semantic analysis(LSA)
  2. local context window method인 skip-gram

그러나 이 두가지 모델들은 중요한 단점이 있다.

  1. LSA
    • 통계 정보를 효율적으로 활용한다.
    • word analogy task에서 최적이 아닌 vector space를 만들어낸다.
      • 단어 순서를 고려하지 않고, 단어의 의미를 벡터로 표현하는 방식이 단어 유추 작업에서 최상의 성능을 내기에는 이상적이지 X
  2. skip-gram
    • local context windows를 학습하기 때문에 corpus의 통계를 잘 활용하지 못한다.
      • 코퍼스 전체를 통틀어 단어들 사이의 관계나 패턴을 포착하는 데 한계
      • 단어들의 동시 발생 빈도나 장기적인 의미적 관계를 충분히 활용하지 못함

그래서 이 연구에서는?

  1. 선형적 의미 방향을 생산하기 위해서 필요한 모델의 특성을 분석하고 global log-bilinear regression model이 이에 적합함을 밝힘
  2. specific weighted least squares model을 제안
    • global word-word-co-occurrence count를 학습하여 통계적으로 더 효과적으로 학습
    • 모델은 의미있는 substructure인 word vector space를 생산
    • 75%의 정확도를 달성함으로써 SOTA 달성
    • 다른 task나 named entity recognition(NER)에서 성능이 월등히 좋음을 입증

3. The GloVe Model

GloVe(Global Vectors)

  • Global corpus 통계를 모델이 직접 포착할 수 있기 때문에 붙여진 이름

표기법

XX : 동시 등장 행렬(Co-occurrence Matrix)

Xi,jX_{i,j} : 중심 단어 i가 등장했을 때 윈도우 내 주변 단어 j가 등장하는 횟수

Xi=kXikX_i = \sum_{k}X_{ik} : 동시 등장 행렬에서 i행의 값을 모두 더한 값

Pi,j=P(ji)=Xij/XiP_{i,j} = P(j|i) = X_{ij} / X_i : 중심 단어 i가 등장했을 때 윈도우 내 주변 단어 j가 등장할 확률

  • ex) P(solidice)P(solid | ice): 단어 ice가 등장했을 때 단어 solid가 등장할 확률

PikPjk\frac{P_{ik}}{P_{jk}} : PikP_{ik}PjkP_{jk}로 나눠준 값

  • P(solidice)/P(solidsteam)=8.9P(solid | ice) / P(solid | steam) = 8.9
  • ice가 등장했을 때, solid가 등장한 확률 / steam이 등장했을 때, solid가 등장한 확률

wiw_i : 중심단어 ii의 임베딩 벡터

wk~\tilde{w_k} : 주변단어 kk의 임베딩 벡터

이 단어들의 관계는 탐색할 단어 k와의 동시 발생(co-occurrence) 확률의 비율을 연구함으로써 조사할 수 있다.

  • 윈도우 기반 동시 등장 행렬(Window based Co-occurrence Matrix)
    • 단어의 동시 등장 행렬은 행과 열을 전체 단어 집합의 단어들로 구성하고, i 단어의 윈도우 크기(Window Size) 내에서 k 단어가 등장한 횟수를 i행 k열에 기재한 행렬을 말한다.
    • 만약 I like deep learning / I like NLP / I enjoy flying 이라는 문장이 있고, 윈도우 사이즈(좌, 우 확인)가 1일때 동시 등장행렬은 다음과 같다. Untitled

example

  1. kki=icei = ice와 연관되어 있고, j = steam과는 연관이 없을 때, k=solidk = solid라고 생각할 수 있다.
    • Pik/PjkP_{ik} / P_{jk} 의 비율은 클 것
  2. kki=icei = ice와 연관되어 있지 않고, j = steam과는 연관되어 있을 때, k=gask = gas라고 할 수 있다.
    • Pik/PjkP_{ik} / P_{jk}의 비율은 작을 것
  3. 만약 kkwaterwater거나 fashionfashion이면 iceicesteamsteam 모두 연관이 없다.
    • Pik/PjkP_{ik} / P_{jk} 의 비율은 1에 가까울 것
  • 동시 등장 확률(Co-occurrence Probability)
    • 동시 등장 확률인 P(ki)P(k|i)
      • 동시 등장 행렬로부터 특정 단어 i의 전체 등장 횟수를 카운트하고, 특정 단어 i가 등장했을 때 어떤 단어 k가 등장한 횟수를 카운트하여 계산한 조건부 확률
      • 중심 단어 i의 행의 모든 값을 더한 값을 분모로 하고 i행 k열의 값을 분자로 한 값

Untitled

60억 개의 token corpus에서 선택된 문맥 단어와 함께 대상 단어인 ice 및 steam에 대한 Co-occurrence probabilities

  • 이 비율은 관련된 단어(solid)와 관계 없는 단어(gas)를 잘 구별할 수 있고, 두 관련 단어 사이(water/fasion) 또한 잘 구별할 수 있다.
  • 예시 좀 더 잘 이해하기 단어들이 'ice'(얼음)와 'steam'(증기)라고 가정해보자. 여기서 우리는 이 두 단어와 관련하여 'water'(물)이라는 단어를 고려할 것이다.
    • 단어 A: ice (얼음)

    • 단어 B: steam (증기)

    • 단어 X: water (물)

      단어 'ice'와 'water', 그리고 'steam'과 'water'가 함께 등장하는 확률을 생각해보자.

      'ice'와 'water'는 함께 등장할 확률이 높고, 'steam'과 'water' 역시 마찬가지로 함께 등장할 확률이 높다. 이는 두 조합 모두 물의 상태를 나타내기 때문

      하지만 단순히 'ice'와 'water'의 동시 등장 확률, 그리고 'steam'과 'water'의 동시 등장 확률만을 비교하는 것은, 'ice'와 'steam'이 'water'와 어떤 관계에 있는지에 대한 깊은 의미를 제공하지 못한다. 이 두 단어 모두 물과 관련이 있지만, 서로는 완전히 다른 상태를 나타내기 때문.

      이제, 다른 단어 'X'를 고려하여, 'ice'와 'steam'의 관계를 다음과 같이 비교해봅시다:

    • 단어 X1: solid (고체)

    • 단어 X2: gas (기체)

      'ice'는 'solid'와 함께 등장할 확률이 높지만 'gas'와는 함께 등장할 확률이 낮다.

      반대로, 'steam'은 'gas'와 함께 등장할 확률이 높지만 'solid'와는 함께 등장할 확률이 낮다.

    • 이 비율을 비교함으로써, 우리는 'ice'가 고체 상태를, 'steam'이 기체 상태를 나타내며, 둘 다 'water'와는 관련이 있지만 서로 다른 상태임을 명확하게 구분할 수 있다.

단어 벡터 학습의 적절한 시작점이 단어가 함께 등장하는 확률 자체보다는 어떤 단어가 특정 문맥에서 다른 단어와 함께 등장하는 확률의 비율로부터 시작해야 한다.

equation 1

Pik/PjkP_{ik} / P_{jk}i,j,ki, j, k에 달려있다는 점을 주목하여, 대부분의 일반적인 모델은 다음과 같은 형식을 따른다.

Untitled

  • 우변 : corpus에서 추출
  • 좌변 : FF 함수의 경우의 수는 방대하나, 벡터 wi,wj,wk~w_i, w_j, \tilde{w_k}를 이용하여 몇 가지 전제 조건을 적용하여 함수를 선택하면 우변이 나온다고 가정
    • ww는 단어 벡터를, w~\tilde{w}는 문맥 단어 벡터를 의미하며, w,w~w, \tilde{w}dd 차원 벡터 공간에 존재

equation 2

FF는 word vector space에서 Pi,k/Pj,kP_{i,k} / P_{j,k}를 나타내는 정보를 벡터 공간에 인코딩 하는 것이 목표

  • vector space는 본질적으로 선형 구조기 때문에, 가장 자연스러운 방법은 벡터의 차를 구하는 것
  • 그래서 두 taget 단어의 차를 input으로 받는 함수 F로 바꾼다.

Untitled

equation 3

  • 여기서 F의 argument는 벡터이고 우변은 scalar가 된다
  • 이를 성립하게 하기 위해서 F의 두개의 입력에 Dot product를 수행
    • Dot product로 인해 스칼라로 바뀜
    • F가 바람직하지 않은 방식으로 벡터 dimensions를 혼합하는 것을 방지

Untitled

equation 4

여기서 함수 F가 만족해야 할 조건이 있는데, 중심단어 ww와 주변단어 w~\tilde{w}라는 선택 기준은 실제로 무작위

  • 그러므로 자유롭게 교환되어야 함
  • 자유롭게 교환 성립 → 함수 F가 덧셈과 곱셈에 대해서 homomorphism을 만족하도록 수정 !
💡 **homomorphism(준동형)**
  • 두 개의 그룹 사이의 모든 연산과 관계를 보존하는 사상
    - f(x+y)=f(x)×f(y)f(x+y) = f(x) \times f(y)ex+y=ex×eye^{x+y} = e^x \times e^y

좌변만 보고 공식을 정리했을 때, (wiwj)T(w_i-w_j)^T에서 전치행렬을 풀고 분배하면 wiTwk~wjTwk~w_i^T\tilde{w_k} - w_j^T\tilde{w_k} 가 나온다.

지수함수를 생각해보면, -가 곧 나누기가 되므로, 우변은 공식 4와 같이 정리될 수 있다.

Untitled

Untitled

equation 5

이전에 식을 따르면 우변은 본래 PikPjk\frac{P_{ik}}{P_{jk}}였고, Pi,j=P(ji)=Xij/XiP_{i,j} = P(j|i) = X_{ij} / X_i 이므로, 결과적으로 다음과 같다.

Untitled

Untitled

equation 6

이를 만족하는 함수가 있는데, 바로 지수함수이다. F를 지수함수라고 가정해보자

Untitled

그리고 이 지수함수에 로그를 씌우면 아래와 같은 결과가 나오게 된다.

Untitled

equation 7

앞에서 언급했던 것 처럼 wiw_iwk~\tilde{w_k}는 두 값이 서로 위치를 바꾸어도 값이 성립해야한다. 즉, log(Xik)log(X_{ik})log(Xki)log(X_{ki})를 바꾸어도 값이 성립해야한다는 말이다.

그런데 위 식에서 XikX_{ik}XkiX_{ki}로 바꾸어보면

  • log(Xik)log(Xi)log(Xki)log(Xk)log(X_{ik})-log(X_i) \neq log(X_{ki})-log(X_k) 가 되어 식이 달라짐
  • 수식적으로 달라도 동일하게 평가되어야 한다
    • 그래서 log(Xi)log(X_i) 부분을 wiw_i에 대한 편향 bib_i라는 상수항으로 처리해 식을 한번 더 변환
    • 편향을 같은 이유로 wk~\tilde{w_k}bk~\tilde{b_k}를 추가

Untitled

Untitled

위 식에서 학습되어야 하는 임베딩된 단어들이 좌변으로 몰려 있고, 우변에는 𝑙𝑜𝑔(𝑋𝑘)𝑙𝑜𝑔(𝑋|𝑘)를 통해 윈도우 사이즈를 두고 말뭉치 전체에서 단어별 등장 빈도를 구한 co-occurrence matrix에 로그를 취해준 행렬이 있다.

  • 우변의 값과의 차이를 최소화는 방향으로 좌변의 4개의 항은 학습을 통해 값이 바뀌는 변수들이 된다.

Untitled

equation 8

Untitled

여기서 V는 단어 집합의 크기를 의미. 그러나 최적의 손실함수는 아니다.

  • log(Xij)log(X_{ij})에서 XijX_{ij}가 0이 될 수 있다. (로그함수가 0이 되면 값이 발산해버림)
    • 그래서 log(Xij)log(1+Xij)log(X_{ij}) → log(1+X_{ij})로 변경

equation 9

해결되지 않은 문제 하나 더

  • 동시 등장 행렬 X가 희소행렬일 가능성이 높다.
    • 동시 등장 빈도가 적어서 많은 값이 적은 수치를 가질 수도 있다.

    • 해결
      - XikX_{ik} 값에 영향을 받는 가중치 함수 f(Xij)f(X_{ij})를 손실함수에 도입

          ![Untitled](https://prod-files-secure.s3.us-west-2.amazonaws.com/3dbf94fa-5256-425e-8805-b9afd8dc7bcc/c068f5e5-ea45-4b12-bf5c-42ce86f4b190/Untitled.png)
          
          ![Untitled](https://prod-files-secure.s3.us-west-2.amazonaws.com/3dbf94fa-5256-425e-8805-b9afd8dc7bcc/baaedd24-edaa-46b0-b796-666ac2e8f391/Untitled.png)
          
          - $x_{max}$
           : 동시 발생 횟수에 대한 상한값, 모든 실험에 대해서 100으로 고정
          - $\alpha$ : 함수의 상대적 중요도를 결정하는 매개변수, 동시 발생 횟수에 대한 함수의 감소율 조절
              - 여기서는 $\alpha$를 3/4로 고정하고 $X_{max}$를 100으로 고정
          
      - 동시 출현 빈도가 높은 단어 쌍에 낮은 가중치를 부여하고, 동시 출현 빈도가 낮은 단어 쌍에 높은 가중치를 부여
      - 함수는 1보다 큰 값을 반환하지 않도록 하여 가중치는 0과 1 사이의 값을 가진다. 이 방식은 동시 출현 횟수가 $x_{max}$ 즉, 가장 높은 동시 출현 횟수를 초과하는 단어 쌍에 대해 가중치를 제한

      왜 가중치를 부여할까?

    1. 고빈도 단어 쌍이 모델을 지나치게 지배하는 것을 방지
      • 예를 들어, 'the'와 같은 불용어는 거의 모든 단어와 함께 빈번하게 나타나지만, 이는 그것들이 서로 의미적으로 가깝다는 것을 의미하지는 x
      • 그러므로 이러한 단어 쌍에 대한 가중치를 줄이는 것은 모델이 보다 다양한 패턴을 학습하는 데 도움이 됨
    2. 희소한 단어 쌍의 정보를 보존
      • 'astronaut'와 'space'는 함께 나타나는 빈도가 비교적 낮을 수 있지만, 이 두 단어 사이의 관계는 굉장히 강함
      • 따라서, 이 가중치 함수는 단순히 동시 출현 빈도가 높은 단어 쌍만 고려하는 것이 아니라, 더 다양한 단어 쌍 간의 관계를 학습하는 데 도움이 된다.
      • 이는 모델이 보다 정확하고 다양한 단어 의미를 포착하는 데 도움이 된다.

4. Experiments

4.1 Evaluation methods

Word analogies.

word analogy task의 정확도 결과

  • Sem : Sementic / Syn : Syntactic /
  • "a와 b의 관계는 c와 의 관계와 같다. 는 무엇인가?"와 같은 질문들로 구성
  • 데이터셋에는 총 19544개의 이런 질문들이 있으며, 의미론적/구문론적 부분집합으로 나뉨.
    • semantic question
      • ex) "아테네와 그리스의 관계는 베를린과 무엇의 관계일까?"
      • 사람과 장소에 대한 유추
    • syntactic question
      • ex) "dance가 dancing일 때 fly는 무엇일까?"
      • 동사시제, 형용사 형태의 유사성에 대한 유추
    • 이러한 질문에서 wbwa+w_b - w_a + wcw_c 벡터와 가장 cosine similarity가 높은 representation wdw_d인 d를 찾음으로써 해결한다.

Word similarity.

  • table 3에서 word similarity task에 대해서 모델을 평가한다.

Named entity recognition.

  • 자연어 처리 분야에서 이름을 인식하는 분야(Named Entity Recognition, NER) 연구 요약

유사한 사이즈의 모델끼리 그룹화하여 점수가 가장 높은 것에 underline 한 것

유사한 사이즈의 모델끼리 그룹화하여 점수가 가장 높은 것에 underline 한 것

4.2 Corpora and training details

  • 다양한 사이즈의 5가지 종류의 말뭉치를 모델에 학습시켰다.
    • a 2010 Wikipedia dump with 1 billion tokens
    • a 2014 Wikipedia dump with 1.6 billion tokens
    • Gigaword 5 which has 4.3 billion tokens
    • the combination Gigaword5 + Wikipedia2014, which has 6 billion tokens
    • 42 billion tokens of web data, from Common Crawl
  • Stanford tokenizer를 이용하여 말뭉치를 소문자로 변환 및 토큰화 한 뒤 가장 많이 등장한 40만개의 단어에 대한 사전을 이용해 동시 발생 행렬 X를 구성
  • X의 생성 과정에서, 맥락 윈도우의 크기와 왼쪽, 오른쪽 맥락을 구분할 지에 대한 여부를 선택
  • 단어쌍 거리 d에 따라 가중치를 감소시키는 함수를 적용
    • 두 단어가 d 단어만큼 떨어져 있을 때, 단어 쌍은 총 카운트에 1/d만큼 기여
      • 먼 거리에 있는 단어 쌍이 서로 덜 관련성이 있을 것이라는 사실 고려
  • 단어 context 좌우 window size를 10개로 사용
  • 다양한 최신 모델의 결과와 word2vec모델을 사용한 결과를 SVD베이스라인과 비교
  • SVD 베이스라인의 경우, 최빈 10000개의 단어에 대해 truncated matrix XtruncX_{trunc}를 만들어 비교
    • SVD-S : Xtrunc\sqrt{X_{trunc}}에 대해 특이값 분해를 수행해 특이 벡터를 얻음
    • SVD-L : log(1+Xtrunc)log(1+X_{trunc})에 대한 특이값 분해를 수행해 특이 벡터를 얻음
  • negative sample이란?

    Negative Sampling


    Word2Vec의 출력층
    1. 소프트맥스 함수를 지난 단어 집합의 크기 벡터와 실제 값인 원 핫 벡터와의 오차를 구함

    2. 역전파로 임베딩 테이블에 있는 모든 단어에 대한 임베딩 벡터 값을 업데이트
      - 만약 단어가 엄청 크다면 ? → 업데이트 하는데 엄청 오래 걸림 → 무거운 작업
      - 현재 집중하고 있는 중심 단어와 주변 단어가 ‘강아지’나 ‘고양이’ 같은 단어라고 하면 이 단어와 관계없는 ‘돈까스’나 ‘컴퓨터’ 같은 수많은 임베딩 벡터까지 업데이트 하는건 비효율적

      그래서 Negative Sampling은?

    • Word2Vec이 학습 과정에서 전체 단어 집합이 아니라 일부 단어 집합에만 집중하도록 하는 방법

    • 예시
      1. 집중하고 있는 단어가 ‘고양이’, ‘귀여운’ 이라고 했을 때, 무작위로 주변 단어가 아닌 ‘돈까스’, ‘컴퓨터’, ‘회의실’ 과 같은 단어들을 일부 가져옴
      2. 중심 단어에 대해서 훨씬 작은 단어 집합을 만들어놓고, 마지막 단계를 이진 분류 문제로 변환
      3. 주변 단어들을 positive 혹은 negative로 레이블링한다면 이진분류를 위한 데이터셋이 됨

      이거 왜 해?

    • 임베딩을 효율적으로 학습하기 위해서 !

      네거티브 샘플링 Skip-Gram(Skip-Gram with Negative Sampling, SGNS)


      skip gram을 상기해보자 !

    • skip-gram은 중심 단어로부터 주변 단어를 예측하는 모델

      Untitled

      Untitled

    • 네거티브 샘플링을 사용하는 Skip-gram(Skip-Gram with Negative Sampling, SGNS) 이하 SGNS는 이와는 다른 접근 방식을 취한다.

      1. 입력 : 중심 단어와 주변 단어

      2. task : 두 단어가 실제로 윈도우 크기 내에 존재하는 이웃 관계인지 그 확률을 예측하는 걸로 변경

        1. 입력이 중심단어와 주변 단어 동시에 들어가고 그게 window 내에 있는지 아닌지 확률값을 내뱉는 것

        Untitled

      3. 아래는 기존 skip-gram 데이터셋을 네거티브 샘플링 데이터셋으로 바꾸는 과정

        Untitled

      4. 기존의 Skip-gram 데이터셋에서 중심 단어와 주변 단어를 각각 입력1, 입력2로 둔다.

        • 이 둘은 실제로 윈도우 크기 내에서 이웃 관계였므로 레이블은 1로 설정
        • 단어 집합에서 랜덤으로 선택된 단어들을 레이블 0의 샘플로 추가 Untitled
      5. 두 개의 임베딩 테이블 준비

        • 임베딩 테이블은 train 데이터의 단어집합을 가지므로 크기 동일 Untitled
      6. 두 테이블 중 하나는 입력 1인 중심 단어의 테이블 룩업을 위한 임베딩 테이블, 하나는 입력 2인 주변 단어의 테이블 룩업을 위한 임베딩 테이블

        Untitled

      7. 각 임베딩 테이블을 통해 테이블 룩업하여 임베딩 벡터로 변환되었다면 그 후의 연산은 매우 간단

        Untitled

      8. 중심 단어와 주변 단어의 내적값을 이 모델의 예측값으로 하고, 레이블과의 오차로부터 역전파하여 중심 단어와 주변 단어의 임베딩 벡터값을 업데이트

        • 학습 후에는 좌측의 임베딩 행렬을 임베딩 벡터로 사용할 수도 있고, 두 행렬을 더한 후 사용하거나 두 행렬을 연결(concatenate)해서 사용할 수도 있다.

띠용?

  • 모델 위에 십자가랑 별표 차이가 뭐지?
    • 십자가 : 지네들이 학습한거, 구문론적 포함 X
    • 별 : 구문론적 포함 o
  • 단어 벡터 생성
    • 모델은 초기화된 두 개의 단어 벡터 집합 www~\tilde w를 생성
    • X가 대칭행렬인 경우, 행과 열을 서로 바꿔도 서로 같은 값으로 채워진 행렬 XX가 되고, www~\tilde{w}는 기능적으로 동일하며, 랜덤 초기화로 인해 서로 다른 값을 가지게 되므로 동등하게 작용
    • 하지만 모델의 관점에서 w**ww~\tilde w는 동일한 작업을 수행함으로써 성능에는 차이가 없어야 함**
    • 그런데 신경망 학습에서 bagging을 적용하는 것이 일반적으로 과적합과 노이즈를 줄이고 성능을 높일 수 있음
      • 그래서 2개의 단어 벡터 www~\tilde w을 결합한 하나의 벡터인 w+w~w + \tilde w를 사용
      • 일반적으로 성능이 약간 향상되고, 특히 의미 유추 작업에서 가장 큰 성능 향상이 있었

4.3 Results

성격이 다른 두가지 task에 대한 성능 실험

  • Task 1 : word similarity task (table 3)
  • Task 2 : NER(Named Entity Recognition) task (table 4) - 단어별로 카테고리를 매기는 task

Untitled

5개의 단어 유사 데이터 셋

  • similarity score는 어휘 전반에 걸쳐서 각각의 feature를 normalizing 한 다음에 cosine similarity를 구한 점수
  • 인간의 판단과 이 점수 사이의 Spearman rank correlation coefficient을 구함
    • Spearman rank correlation coefficient
      • 두 변수의 순위 사이의 연관성을 기반으로 하며 -1과 1 사이의 값을 가짐
      • 1은 양의 순위 상관관계, -1은 음의 순위 상관관계, 0은 상관관계 없음
      • 방법
        1. 먼저, 각 변수의 각 관측치에 대해 순위를 매깁니다.

        2. 각 관측치에 대해 두 변수의 순위 차이를 계산합니다.

        3. 이 순위 차이들을 제곱한 후, 모두 더합니다.

        4. 이렇게 얻은 합을 사용하여 스피어만 순위 상관 계수를 계산합니다.

          예시

          예를 들어, 한 학급에서 학생들의 수학 점수와 과학 점수 사이의 관계를 알고 싶다고 가정해 봅시다. 각 학생에게 두 과목 모두에 대한 순위를 매긴 후, 이 순위들 사이의 상관관계를 스피어만 순위 상관 계수로 계산할 수 있습니다. 만약 계수 값이 높게 나온다면, 수학 점수가 높은 학생이 과학에서도 높은 점수를 받을 가능성이 크다는 것을 의미합니다. 반대로, 계수 값이 낮거나 음수라면, 두 과목 간에는 별다른 상관관계가 없거나 반대의 관계가 있을 수 있음을 나타냅니다.

  • 결과적으로, GloVe는 CBOW보다 반보다 더 적은 데이터 사이즈로도 성능이 훨씬 좋다.

CRF-based model에서의 NER task 결과

CRF-based model에서의 NER task 결과

4.4 Model Analysis: Vector Length and Context Size

vector size와 window size에 따른 정확도 차이

vector size와 window size에 따른 정확도 차이

  • symmetric : context window가 양쪽으로 균일하게 확장되는 것
  • asymmetric : context window가 왼쪽으로만 확장되는 것

(a)는 dimension의 영향을 본거고 (b)와 (c)는 window size가 양쪽으로 증가하는 것과 한쪽으로 증가하는 것의 영향을 보려고 한 것

  1. (a) : 약 200 차원 이상의 벡터에 대해서 성능이 점차 감소
  2. (b) : 작고 비대칭적(b)인 컨텍스트 윈도우에서는 sementic 성능이 더 좋음
    • 구문 정보가 대부분의 경우 주변 문맥과 단어 순서에 강하게 의존하기 때문
    • 윈도우 사이즈가 클수록 좀 더 많은 정보 캡쳐
  3. (c) : windows가 비대칭일때 syntatic의 성능이 좋음

4.5 Model Analysis: Corpus Size

서로 다른 corpora 데이터셋에서 300 dimensional vectors로 훈련하여 유사도의 정확도를 측정한 결과

서로 다른 corpora 데이터셋에서 300 dimensional vectors로 훈련하여 유사도의 정확도를 측정한 결과

  • syntatic task에서 corpus 사이즈가 증가할수록 정확도가 증가
    • 더 많은 corpora가 있으면 더 나은 성능 기대 가능
  • semantic task에서는 corpus 수가 더 적은 wiki가 Gigaword보다 성능이 더 좋음
    • analogy dataset에는 도시와 국가 이름을 포함한 유추문제들이 있다.
    • wiki의 데이터셋은 광범위하고 지속적으로 업데이트 되는 반면, Gigaword는 고정된 뉴스 기사 데이터이기 때문에 업데이트 되지 않아 오래되거나 잘못된 정보를 포함할 수 있음
    • 학습할 때 사용되는 데이터 셋이 정확도에 영향을 미치는 것에 대해서 알려줌

4.7 Model Analysis: Comparison with word2vec

성능에 강력한 영향을 미치는 많은 매개변수들이 존재하기 때문에 GloVe와 word2vec의 엄밀한 정량적 비교는 복잡

따라서 벡터의 길이, 컨텍스트 윈도우의 크기, 코퍼스 및 단어 집합의 크기 등을 앞서 언급한 설정으로 제한해 변동성을 최소화

가장 중요한 나머지 변수는 학습 시간

  • Glove의 관련 매개 변수 : 훈련 반복 횟수
  • word2vec의 관련 매개 변수 :

하지만 word2vec는 기존 코드가 단일 epoch을 위해 설계되어 있기 때문에 여러 epoch을 수행하기 위한 코드 수정 과정이 간단한 작업이 아님

  • negative 샘플의 수를 추가함으로써 효과적으로 모델에 보여지는 학습 단어의 수를 증가시키므로 어떤 면에서는 추가 epoch과 유사

연구의 초기 단계에서는 기본 매개변수 값을 사용하는 것이 합리적일 수 있으나, 더 깊이 있는 분석을 수행할 때는 이러한 매개변수들을 조정하고 실험하여 모델 성능에 미치는 영향을 더 정확히 이해할 필요가 있음을 인지

하지만 본 논문에서는 해당 매개변수들이 최적에 가깝다고 가정 하에 명시되지 않은 모든 매개변수를 그들의 기본값으로 설정

  • 모델의 기본 매개변수 설정은 광범위한 실험을 통해 얻어진 경험적 최적값에 기반하기 때문에, 이러한 가정은 초기 분석이나 비교 연구에서 흔히 사용되는 실용적인 접근법

학습 시간에 따른 단어 유추 작업의 전반적인 정확도는 GloVe에 대한 반복 횟수와 CBOW (a) 및 Skip-gram (b)에 대한 negative 샘플의 수에 의해 결정

학습 시간에 따른 단어 유추 작업의 전반적인 정확도는 GloVe에 대한 반복 횟수와 CBOW (a) 및 Skip-gram (b)에 대한 negative 샘플의 수에 의해 결정

  • GloVe의 x축 : 해당 훈련 반복 횟수
  • word2vec의 x축 : negative 샘플 수

Word2Vec에서, negative 샘플의 수가 10개를 초과하면 성능이 실제로 감소

  • negative 샘플링이 목표 확률 분포를 잘 근사하지 못하기 때문
  • 즉, 모델이 실제 언어 사용 패턴에서 나타나는 단어들의 확률 분포를 정확하게 모사하는 데 한계가 있음을 의미

동일한 코퍼스, 단어집합, 윈도우 크기, 학습 시간에 대해 GloVe는 일관되게 word2vec보다 우수한 성능을 보이며, 더 빠른 속도로 더 나은 결과를 얻으며 속도에 관계없이 최상의 결과를 얻음

5. Conclusion

  • 나만의 요약 Untitled 그래서 얘가 뭐하자는건데 .. ?
    • 통계적 분석 방식과 단어 유사도 임베딩 방식의 장점을 결합한 새로운 임베딩 기법 제시
      • Co-occurrence 확률을 벡터의 유사도를 의미하는 내적값과 같아지도록 목적함수 설계
    • 자연어의 여러가지 type의 task들 모두에서 안정적으로 성능을 낼 수 있다고는 주장하나, task나 corpus 종류에 따라 어떤 임베딩 방식이 좋은지 달라질 수 있다.
      • 자신의 데이터에 맞는 임베딩 방식을 실험을 통해 찾아야 한다고 주장

최근 분포형 단어 표현이 개수 기반(count-based) 방법과 예측 기반(prediction-based) 방법 중 어떤 것이 더 좋은지에 대한 관심이 집중

  • 개수 기반(count-based) 방법론 : 코퍼스 내에서 단어들의 동시 발생 통계를 집계하는 방법으로 단어 표현을 학습
  • 예측 기반(prediction-based) 방법론 : 주어진 단어 주변의 단어들을 예측함으로써 단어 표현을 학습

현재로써는 예측 기반 모델이 상당한 지지를 받으며, Baroni et al. (2014) 등의 연구들은 예측 기반 모델이 다양한 작업에서 더 나은 성능을 보인다고 주장

본 연구에서는 두 방법 모두 코퍼스의 동시 발생 통계를 조사하기 때문에 기능적인 수준에서는 크게 차이가 없지만, 전체 통계를 포착하는 효율성은 개수 기반 방법이 더 유리할 수 있음을 주장

⇒ 이러한 개수 데이터의 주요 이점을 활용하면서 동시에 word2vec와 같은 최근의 log-bilinear prediction-based 방법론에서 널리 사용되는 의미를 가진 선형 하위 구조를 포착하는 모델을 구축

단어 표현의 비지도 학습을 위한 새로운 전역 log-bilinear regression 모델GloVe는 단어 유추, 단어 유사성, 개체명 인식 작업에서 다른 모델보다 뛰어난 성능을 발휘

profile
눈물 콧물 흘리면서 배우는 코딩

0개의 댓글

관련 채용 정보