Lecture 2 - Word Vectors and Word Senses

tobigs-text1415·2021년 4월 14일
6
post-thumbnail

작성자 : 동덕여자대학교 정보통계학과 한유진

1. Word2Vec

  • one-hot encoding의 단점(각 단어 간의 유사도 계산X)을 극복하기 위해 나온 개념입니다.

  • main idea : 비슷한 위치에서 등장하는 단어들은 비슷한 의미를 가집니다.

  • CBOW 방식 : context word(맥락 단어)의 one-hot vector가 입력, 중심 단어의 on-hot vector가 출력인 경우

  • Skip-gram 방식 : 중심 단어의 on-hot vector가 입력, context word(맥락 단어)의 one-hot vector가 출력인 경우

  • 이러한 모델들의 Loss를 최소화 시키기 위해 Gradient Descent를 이용하여 가중치를 계속적으로 업데이트합니다.

  • 하지만 Gradient Descent는 loss를 계산할때 전체 train set을 사용하기에 많은 계산량이 필요합니다. 본강의에서는 이를 보완하고 Word2Vec의 효율성을 높이기 위한 3가지 방법을 소개합니다.

1-1 Word2Vec의 효율성을 높이는 방법

1) Stochastic Gradient Descent(SGD)

  • 학습 데이터 중에서 랜덤하게 샘플을 한개씩 뽑아 gradient를 계산한 후에 업데이트하는 방식입니다.
  • 장점 : 계산량이 적고 학습이 빠르고 local minimum에 빠지지 않고 학습될 수 있습니다.
  • 단점 : 성능이 좋지 못하고, wore vector가 매우 sparse해집니다.(벡터나 행렬이 sparse하다는 것은 벡터나 행렬의 값 중 대부분이 0이고 몇몇 개만 값을 갖고 있다는 것을 뜻함. one-hot encoding으로 만들어진 벡터는 0이 대부분이기 때문에 sparse한 벡터가 되는 것)
  • 이렇게 Sparse한 vector는 0에 해당되는 위치에서 계산을 해도 계속해서 0이기에 gradient가 update되지 않습니다. -> 불필요한 계산이 일어나 SGD에서 문제가 발생합니다.

2) Negative Sampling


(본강의에서 Skip-gram을 예시로 설명하였습니다)

  • Word2Vec은 출력층이 내놓는 스코어값에 softmax를 적용해 확률값으로 변환한 후 이를 정답과 비교해 backpropa하는 구조 -> 계산량 매우 많습니다.
  • negative sampling는 말그대로 parameter을 update시킬 negative sample을 뽑는것입니다. 단어에 대한 어떤 노이즈 분포 P(w)P(w)를 가정하고, 분석 대상이된 corpus외에 가정한 분포로 부터 random sampling with probability방식으로 학습할 단어 몇개를 추출하여 목적함수를 근사하는 방법입니다. 논문에 따르면 다음의 식과 같이 unigram model의 3/4 power를 적용한것이 실험결과가 가장 좋다고 합니다
    P(w)=U(w)3/4ZP(w) = \frac{U(w)^{3/4}}{Z}

objective function

  • main idea : true pair와 noise pair에 대해 binary logistic regression을 훈련

    cc : 중심 벡터
    oo : 맥락 벡터
    kk : 노이즈 벡터 (랜덤하게 선택된 벡터. 실제 맥락벡터 아님)
    uu : 중심 벡터와 hidden layer 사이의 가중치
    vv : 맥락 벡터와 hidden layer 사이의 가중치

  • negative sample의 목적함수를 작아지게 만들어야합니다. uTvu^Tv는 중심 벡터와 맥락 벡터간 코사인 유사도를 의미하기 때문에 앞에 term은 실제이니까 커지길 원하고, 뒤에 term은 negative sample을 분류하기 위한식이기 때문에 작아지길 원합니다. 즉 True pair는 중심 벡터와 맥락 벡터가 가까이 있을수록(코사인 유사도가 클수록) 손실이 0에 가깝고, Noise pair는 중심 벡터와 노이즈 벡터가 멀리 있을수록(코사인 유사도가 작을수록) 손실이 0에 가까움을 의미합니다.

3) Subsampling Frequent words

  • 자주 등장하는 단어는 적게 등장하는 단어들 보다 정보의 가치가 떨어집니다. 그렇기에 말뭉치에서 자주 등장하는 단어는 학습량을 확률적으로 감소시키는 기법입니다.
  • subsampling은 특정 단어 몇개를 분석에서 제외하는 점이 매 iteration마다 몇개의 단어만 학습하는 negative sampling과 구분되어집니다.
  • i번째 단어(𝑤𝑖)를 학습에서 제외시키기 위한 확률은 아래와 같습니다.
  • 𝑓(𝑤𝑖)는 해당 단어가 말뭉치에 등장한 비율(해당 단어 빈도/전체 단어수)를 말합니다. 𝑡는 하이퍼파라미터로 연구팀에선 0.00001을 권하고 있습니다.
  • 만일 𝑓(𝑤𝑖)가 0.01로 나타나는 빈도 높은 단어('은/는')는 위 식으로 계산한 𝑃(𝑤𝑖)가 0.9684나 되어서 100번의 학습 기회 가운데 96번 정도는 학습에서 제외하게 됩니다. 반대로 등장 비율이 적어 𝑃(𝑤𝑖)가 0에 가깝다면 해당 단어가 나올 때마다 빼놓지 않고 학습을 시키는 구조입니다.
    cf) subsampling과 negative sampling에 쓰이는 확률값들은 고정된 값이기 때문에 학습을 시작할 때 미리 구해놓게 됩니다.

2. Count Based : Co-occurrence matrix(동시발생행렬)

  • word prediction methods에는 count baseddirect prediction, 크게 두가지 범주로 나눌 수 있습니다.
  • Skip-gram은 중심 단어를 기준으로 맥락 단어가 등장할 확률을 계산하기 때문에 window size를 늘려도 전체 단어의 동반출현 빈도수와 같은 통계정보를 내포하지 못합니다. 이러한 정보를 global co-occurrence statistics라고 합니다.이를 위해 count-based의 Co-occurrence matrix가 등장하게 되었습니다.

1) Window based co-occurrence matrix (단어-문맥 행렬)

  • 아래 그림은 문장들을 window size가 1인 co-occurrence matrix로 표현한 예제입니다.
  • Word2Vec과 매우 유사하며 한 문장을 기준으로 window에 각 단어가 몇 번 등장하는 지를 세어 구성합니다. syntatic(구문분석),semantic(의미분석)한 정보를 얻을 수 있습니다.
  • co-occurrence matrix가 대각을 기준으로 대칭하기 때문에 좌우측 어디서 등장하는지는 고려하지 않습니다.

2) Word-Document matrix (단어-문서 행렬)

  • 한 문서를 기준으로 단어의 등장 횟수를 행렬로 나타내는 방법입니다. Word-Document matrix는 관계가 있는 단어가 같은 문서에서 빈번하게 등장할 것이라는 전제에서 출발합니다. LSA(잠재적 의미 분석)를 가능하게 하는 기법입니다.
  • 하지만 단어의 개수가 증가함에 따라 차원이 커지게 되고, 저장공간을 많이 필요로 하는 문제들이 발생하기 때문에 차원을 low하게 만들어주어야 합니다.
  • 주로 해당 matrix를 만든 뒤 SVD, LSA, HAL, LSI등의 방법을 통해서 차원을 축소해서 사용합니다.

3. GloVe(Global Vectors for Word Representation)

  • count based와 direct prediction의 장점을 동시에 가진 GloVe가 등장하게 됩니다.
  • corpus 전체의 통계정보 사용(co-occurrence matrix 장점) + 임베딩된 단어벡터 간의 유사도 측정 가능(Word2Vec 장점)

3-1 objective function

  • GloVe의 목적함수를 설계하기 전에 다음 표를 확인해봅시다.
    XX : 단어간의 co-occurrence matrix
    XikX_{ik} : kk번째단어가 ii번째 단어와 같은 context 내에 등장한 빈도수
    Xi=kXikX_{i} = \sum_{k} X_{ik} : ii번째 단어와 같은 context 내에 등장한 모든 단어들의 빈도수의 총합
    Pik=p(ki)=XikXiP_{ik}=p(k|i) = \frac{X_{ik}}{X_{i}} : ii번째 단어 주변(윈도우 크기는 사용자 지정)에 kk번째 단어가 등장할 조건부확률
  • 두 개의 단어 i=icei = ice, j=steamj = steam 이라고 가정했을때, 이 두 단어의 관계는 새로운 다른 단어 kk 와의 co-occurrence 확률을 이용해서 구할 수 있습니다.(두 단어의 차이점을 분석하기 위해서 kk와 어떤 관계인지를 먼저 분석하는 것)
  • solidsolid -> steamsteam보다는 iceice와 자주등장
    gasgas -> iceice보다는 steamsteam과 자주등장
    water,fashionwater, fashion -> 둘다 관련있거나 없어서 1에 가까움

objective function 유도

  • crucial insight : 임베딩 된 중심 단어와 주변 단어 벡터의 내적이 전체 corpus에서의 동시 등장 확률이 되도록 만드는 것

  • 아래의 식을 만족하는 FF를 찾는것입니다.

    F(wi,wj,w~k)=PikPjkF(w_i,w_j,\tilde{w}_k) = \frac{P_{ik}}{P_{jk}} - (1)
    F(wice,wsteam,wsolid)=Pice,solidPsteam,solid=P(solidice)P(solidsteam)=1.9×1042.2×105=8.9F(w_{ice},w_{steam},w_{solid}) = \frac{P_{ice,solid}}{P_{steam,solid}} = \frac{P(solid|ice)}{P(solid|steam)} = \frac{1.9 \times 10^{-4}}{2.2 \times 10^{-5}} = 8.9

  • 하지만 단어 벡터 공간은 Linear structure를 가지고, 단어 i,ji,j가 각각 단어 kk와 동시 등장할 확률의 차이를 보는것이 목적이기 때문에 아래와 같이 FF를 수정해줍니다.

    F(wiwj,w~k)=PikPjkF(w_i - w_j,\tilde{w}_k) = \frac{P_{ik}}{P_{jk}} - (2)

  • 좌변은 벡터, 우변은 스칼라 값을 가지기 때문에 단위를 맞춰줍니다.

    F((wiwj)Tw~k)=PikPjkF((w_i - w_j)^T\tilde{w}_k) = \frac{P_{ik}}{P_{jk}} - (3)

<FF는 다음 3가지 조건을 충족시켜야합니다>
1. 중심 단어는 context word로도 등장할 수 있기 때문에 단어 벡터간의 교환법칙 성립
ww~w \leftrightarrow \tilde{w}

2. co-occurrence matrix X는 대칭행렬(symmetric matrix)
XXTX \leftrightarrow X^T

3. homomorphism(준동형) 조건 만족
F(XY)=F(X)F(Y)F(X-Y) = \frac{F(X)}{F(Y)}
cf) homomorphism(준동형) ... F(X+Y)=F(X)F(Y),a,bRF(X+Y) = F(X)F(Y), \forall a, b \in \mathbb{R}

  • 이러한 조건을 만족시키는 함수는 지수함수이기 때문에 적용시키면 (4)와 같은 식이 만들어집니다. (exy=exeye^{x-y} = \frac{e^x}{e^y})

    F((wiwj)Tw~k)=F(wiTw~kwjTw~k)=F(wiTw~k)F(wjTw~k)F((w_i - w_j)^T\tilde{w}_k) = F(w_i^T\tilde{w}_k - w_j^T\tilde{w}_k) = \frac{F(w_i^T\tilde{w}_k)}{F(w_j^T\tilde{w}_k)} - (4)

  • (4)번 식에 (3)번 식을 적용하면 (5)번과 같은 식을 도출할 수 있습니다.

    F((wiwj)Tw~k)=PikPjkF((w_i - w_j)^T\tilde{w}_k) = \frac{P_{ik}}{P_{jk}} - (3)

    F((wiwj)Tw~k)=F(wiTw~kwjTw~k)=F(wiTw~k)F(wjTw~k)F((w_i - w_j)^T\tilde{w}_k) = F(w_i^T\tilde{w}_k - w_j^T\tilde{w}_k) = \frac{F(w_i^T\tilde{w}_k)}{F(w_j^T\tilde{w}_k)} - (4)

    F(wiTw~k)=Pik=XikXiF(w_i^T\tilde{w}_k) = P_{ik} = \frac{X_{ik}}{X_i} -(5)

  • FF는 지수함수이기 때문에 loglog를 취할 수 있게 됩니다.

    wiTw~k=log(Pik)=log(Xik)log(Xi)w_i^T\tilde{w}_k = log(P_{ik}) = log(X_{ik}) - log(X_i) - (6)

    wkTw~i=log(Pki)=log(Xki)log(Xk)w_k^T\tilde{w}_i = log(P_{ki}) = log(X_{ki}) - log(X_k) - (6)

  • (6)식에서 교환법칙 성립을 위해서 고정값인 log(Xi)log(X_i)biasbias termterm으로 대체하였습니다.

    wiTw~k=log(Xik)bib~kw_i^T\tilde{w}_k = log(X_{ik}) - b_i - \tilde{b}_k

    wiTw~k+bi+b~k=log(Xik)w_i^T\tilde{w}_k + b_i + \tilde{b}_k = log(X_{ik}) - (7)

  • 지금까지 유도한 GloVe의 손실함수입니다.

  • 하지만, Xij=0X_{ij} = 0이면 log(Xij)log(X_{ij}) \to \infty 이런 문제 때문에 손실함수에 weighting funtion을 함께 사용했습니다. f(0)=0f(0) = 0

  • 또한, 사용될 가능성이 적은 단어들은 overweight되지 않아야하고, 특정단어의 빈도수가 매우 높아 XijX_{ij}값이 튀는 현상을 방지하기 위해서도 weighting funtion이 사용되었습니다.

  • xmax=100,α=34x_{max} = 100, \alpha = \frac{3}{4}

  • 최종 Glove의 손실함수입니다.

  • GloVe는 학습속도가 빠르며, Huge corpora에 대해서도 확장성을 가지기 때문에 small corpus나 small vector size에서도 좋은 성능을 보입니다.

3-2 Result

  • frog와 형태적으로 또는 의미적으로 비슷한 단어를 잘 선택합니다.(rare한 단어들에 대해서도 성능 good)

  • 반의어 관계에 있는 단어쌍들이 비슷한 간격으로 2차원의 공간 내에 위치하고 있습니다.

4. How to evaluate word vector?

word embedding모델의 평가방법에 대해서 소개하겠습니다. 크게 외적(extrinsic)평가와 내적(intrinsic)평가로 나눌 수 있습니다.

1) Extrinsic Evaluation

  • 현실 문제에 직접 적용했을때의 성능을 평가하는 방식입니다.
  • 각종 자연어처리 system에 embedding을 직접 사용하여 시스템의 성능을 측정합니다. 대표적으로 NER(개체명 인식기)가 있습니다.
  • 계산속도가 느립니다.
  • 어떤 시스템이 문제인지, 아니면 시스템간의 교호작용 때문인지 평가하기가 어렵습니다.
  • 밑에 평가표를 보면, 다른모델들에 비해 GloVE가 좋은 성능을 내는 것을 알 수 있습니다.

2) Intrinsic Evaluation

  • word embedding 자체의 성능을 측정하기 위해 specific/intermediate subtask를 통해 성능을 평가합니다.
  • 계산속도가 빠릅니다.
  • 현실 문제와의 상관관계가 확립되지 않는 한 실제로 도움이 되는지 판단하기 어렵습니다.

2-1) Intrinsic Evaluation - word analogies

  • A:B :: C:? 에서 물음표에 들어갈 단어를 유추하는 문제입니다.(ex.man:woman :: king:?)
  • ?를 d라고 했을때, 다음식을 만족하는 d값을 찾는 것이라고 할 수 있습니다.
  • GloVe는 Semantic Word Analogies(의미론적 유추), Syntactic Word Analogies(구문적 유추) 모두에서 좋은성능을 보이는 것을 알 수 있습니다.

2-2) Intrinsic Evaluation - correlation evaluation

  • 사전에 만들어 놓은 단어 쌍을 사람이 평가한 점수와, word vector간 거리 사이의 상관관계를 계산하여 word embedding이 잘되었는지를 평가하는 방식입니다.
  • GloVe가 좋은 성능을 보이는 것을 알 수 있습니다.

5. Word senses and word sense ambiguity

  • 'pike'와 같이 다양한 의미를 가지고 있는 단어들은 굉장히 많습니다. 이를 하나의 word embedding으로 고정해버리면 제대로된 의미표현이 불가능합니다.
  • 따라서, 이를 해결하기 위한 2가지 방법을 강의에서 소개하고 있습니다.

5-1 Improving Word Representations Via Global Context And Multiple Word Prototypes (Huang et al. 2012)

  • 하나의 단어가 벡터 공간에서 서로 다른 cluster를 형성하는 경우, 해당 단어를 여러개로 분류해서 벡터를 생성합니다.
    (bank1 = 은행, bank2 = 둑, ...)

5-2 Linear Algebraic Structure of Word Senses, with Applications to Polysemy (Arora, …, Ma, …, TACL 2018))

  • 한 단어의 서로 다른 의미를 나타내는 벡터들에 가중치를 부여하고 선형결합을 통해 새로운 word vector를 생성합니다. 이 단어벡터를 가지고 clstering했을때 이 단어가 어떤의미로 쓰였는지 내적인 의미까지 잘 파악하여 분류했습니다.

Reference

https://web.stanford.edu/class/cs224n/slides/cs224n-2020-lecture02-wordvecs2.pdf
http://dsba.korea.ac.kr/seminar/?mod=document&uid=42
https://ratsgo.github.io/from%20frequency%20to%20semantics/2017/04/09/glove/
https://wikidocs.net/22885
https://velog.io/@tobigs-text1314/CS224n-Lecture-2-Word-Vectors-and-Word-Senses#4-word-embedding-evaluation
https://jeongukjae.github.io/posts/2cs224n-lecture-2-word-vectors-and-word-senses/
https://eda-ai-lab.tistory.com/122
https://web.stanford.edu/class/cs224n/slides/cs224n-2020-lecture02-wordvecs2.pdf
https://velog.io/@skaurl/U-Week-4-Day-16
https://misconstructed.tistory.com/40
https://www.sallys.space/blog/2018/04/30/glove/
http://yonghee.io/glove/
https://wikidocs.net/24559
https://reniew.github.io/22/
https://yjjo.tistory.com/14
https://yngie-c.github.io/nlp/2020/05/28/nlp_word2vec/

13개의 댓글

comment-user-thumbnail
2021년 4월 14일

Word2Vec의 단점을 보완하는 Negative Sampling과 Subsampling에 대해 이해할 수 있어 좋았습니다.
Glove가 등장하게 된 배경부터 시작해서 목적함수 수식 설명을 자세히 설명해주셔서 이해하는 데에 도움이 되었습니다.

  • copus 전체(co-occurrence matrix)의 장점 + 단어 벡터간의 유사도 측정 가능(Word2Vec)의 장점
  • 교환법칙, 대칭행렬, 준동형을 만족하도록 목적함수를 변형하고 편향과 가중함수까지 추가하여 최종식 도출
답글 달기
comment-user-thumbnail
2021년 4월 19일

Glove 식을 유도하는 과정이 어려워서 강의만 보고 이해하기 어려웠는데 자세히 이야기해주셔서 쉽게 이해할 수 있었던 것 같습니다. 참고하신 자료들도 자세히 달아주셔서 혼자 보고 공부하는데 많은 도움이 될 것 같습니다. subsample하는 이유를 생각해본 적이 없었는데, 서론에서 짚고 넘어가주셔서 이후에 왜 subsample과 negative sampling을 사용하는지, 식이 왜 이렇게 구성되는지 좀 더 이해할 수 잇었던 것 같습니다.
감사합니다!

답글 달기
comment-user-thumbnail
2021년 4월 20일
  • Word2Vec은 말뭉치가 늘어날수록 계산량이 폭증하는 구조이기 때문에 학습속도가 오래 걸리고 효율적이지 못하다. 따라서 학습을 효율적으로 하기 위해 일반적으로 세가지 방법이 고려되는데,

    • 첫번째로는 Stochastic Gradient Descent가 고려된다. 이는 학습 데이터에서 일부만을 추출하여 학습시키는데 계산량을 감소시키고 Local Minimum에 빠질 확률을 낮춰준다는 장점을 가지고 있지만, 잘 사용되지 않는다. 원핫벡터로 만들어진 벡터는 0이 대부분이기 때문에 0에 해당하는 위치에서 Gradient 업데이트가 되지 않기 때문에 쓸데없는 연산이 지속적으로 발생하기 때문이다.
    • 두번째로는 Negative Sampling이 있다. 실제 맥락단어 외에 맥락단어가 아닌 단어들 중 '일부'를 추출하여 학습시키는 방법이다. 이 방법의 목적함수는 True pair(중심, 실제 맥락)와 Noise pair(중심, 맥락X) 으로 이루어져 있으며 True term은 최대화하고, Noise term은 최소화하는 것이 목표이다.
    • 세번째로는 Subsampling Frequents word 가 있다. 자주 등장하는 단어는 학습기회가 많기 때문에 정보의 가치가 떨어진다고 판단되어 자주 등장하는 단어의 학습량을 확률적으로 감소시키는 방법이다.예를 들어 이(가) 와 같은 조사들은 빈번하게 출몰하는만큼 내포되어 있는 의미가 적기 때문에 학습량을 줄여서 진행하게 된다.
  • Count-based Method는 효율적으로 통계정보를 사용할 수 있다는 장점을 가진 방법이다.
    Direct Prediction(Word2Vec,...)은 사용자가 지정한 윈도우 사이즈 안에서 학습이 이루어지기 때문에 전체적인 문서 내 단어 빈도와 같은 통계정보를 효율적으로 활용하지 못한다는 한계를 가지고 있다.
    반면에 Count-based Method는 효율적으로 통계정보를 사용한다.

    • Window based co-occurrence matrix (단어-문맥 행렬) 은 Word2Vec과 매우 유사하며 한 문장을 기준으로 Window에 각 단어가 몇 번 등장하는지를 세어서 구성된 행렬이다.
    • Word-Document Matrix(단어-문서 행렬)은 한 문서를 기준으로 단어의 등장횟수를 행렬로 나타내는 방법이다. 하지만 단어의 개수가 증가함에 따라 차원이 커지고 저장공간을 많이 요구하기 때문 에 SVD,LSA와 같은 차원축소방법들과 함께 사용된다. 하지만 Count-based Method는 단어의 유사성 여부만 포착할 수 있고 유사성 이상의 관계를 고려할 수 없고, 큰 빈도수에 과도한 중요도를 부여한다는 한계점을 가지고 있다.
  • GloVe(Global Vectors for Word representation)는 Count-based Method와 Direct prediction의 장점만 가져온 방법이라고 할 수 있다.
    "임베딩 된 단어벡터 간 유사도측정을 수월하게 하면서도 말뭉치 전체의 통계정보를 잘 반영해보자"

    • 교환법칙, 대칭행렬, homomorphism 조건들을 모두 만족하도록 목적함수를 변형하고 지나치게 빈도가 높은 단어들이 과대평가되는 것을 막기위해 가중치함수를 곱하여 최종 목적함수 식을 도출하였다.
  • 단어가 여러개의 의미를 가질 때 이를 해결하기 위한 두가지 방법이 제시되었다.

    • 첫번째로는, 해당단어를 여러개로 분류해서 벡터를 생성할 수 있다.
      예를 들어, Bank1 = 은행 / Bank2 = 둑 etc
    • 두번째로는, 한 단어의 서로 다른 의미를 나타내는 벡터들에 가중치를 부여하고 선형결합을 통해 새로운 벡터를 생성할 수 있다. 가중치는 전체 출현 빈도 중 해당 단어 사용빈도로 계산할 수 있다.
      예를 들어, V_pike = a_1 V_pike1 + a_2 V_pike2 + a_3 * V_pike3 ,
      where a_1 = f1/(f1+f2+f3) frequency f

Word2Vec과 Count Based Method의 장단점과 이를 보완한 Glove에 대해 배울 수 있는 좋은 기회였습니다.

답글 달기
comment-user-thumbnail
2021년 4월 20일

투빅스 14기 정재윤

투빅스 14기 한유진님께서 cs224n의 lecture 2에 대해서 발표해주셨습니다.

  • word2vec의 경우, CBOW와 Skip-gram 2가지 방식이 존재한다. CBOW는 주변 단어들을 바탕으로 target 단어를 예측하는 모형이고, 반대로 skip-gram은 target 단어로 주변 단어들을 예측하는 방식이다. 이 두 방식은 gradient descent 방식으로 loss를 구해서 효율성이 조금 떨어진다. 이러한 한계를 해결하기 위해서 나온 방식이 SGD, Negative sampling, subsampling Frequent words 방법이다.
  • 이 후, corpus 전체의 통계정보 사용하는 co-occurrence matrix 장점과 임베딩된 단어벡터 간의 유사도 측정 가능하는 Word2Vec 장점을 합한 GloVe라는 방식이 나오게 되면서 NLP는 한층 더 발전하게 된다.

GloVe를 수식적으로 도출해주신 점이 굉장히 인상적이었습니다. 감사합니다 :)

답글 달기
comment-user-thumbnail
2021년 4월 23일

투빅스 14기 이정은

  • Direct prediction 중 하나인 Word2vec에는 CBOW와 SKip-gram 방식이 존재합니다. CBOW는 context word로 center word를 예측하는 것이고, SKip-gram은 center word로 context word를 예측하는 것입니다. 두 방법은 gradient descent를 사용하여 weight 업데이트를 진행하는데, 이 때 모든 train data를 이용하기 때문에 많은 계산량이 요구됩니다.
  • 이를 보완하고 효율성을 높이기 위해 SGD, Negative sampling, Subsampling frequent words 3가지 방법이 존재합니다. Negatvie sampling 목적함수의 핵심은 true pair와 noise pair를 구분하여 훈련하는 것입니다.
  • 이후 count base인 window based co-occurence matrix가 등장하는데, 이는 문장 내에 각 단어가 몇 번 등장하는지를 나타내며 좌우 위치는 고려하지 않습니다. 이 방법은 단어 개수가 많아질수록 차원이 커지는 문제가 발생합니다.
  • Direct prediction과 Count based의 장점을 가져온 방법인 GloVe는 co-occurence matrix를 가지며 similarity 측정도 가능합니다. 목적함수의 아이디어는 context word와 center word의 내적이 동시 등장 확률이 되도록 만드는 것에서 시작합니다.

강의에서 GloVe 목적함수, 손실함수의 유도 과정을 자세히 설명해주신 점이 정말 좋았습니다. 강의 감사합니다 : )

답글 달기
comment-user-thumbnail
2021년 4월 27일

투빅스 15기 조효원

Word2Vec은 그 자체로 매우 강력하지만, 성능을 높히기 위한 추가적인 기법들이 존재한다. Negative sampling과 subsampling이 그것인데, 각각 실제 context word가 아닌 단어들을 추출하여 이렇게 함께 등장하면 안된다고 학습시키는 방법과, 빈번한 단어는 정보의 가치가 떨어지기에 학습량을 감소시키는 방법이다. 이러한 방법들을 통해 성능을 더 높힐 수 있었지만, 여전히 word2vec은 주변 단어만 고려한다는 한계가 있다. 따라서 새로이 등장한 임베딩 GloVe는 전체 코퍼스의 통계 정보를 함께 고려한다. 두 단어의 유사도에 통계정보가 반영되는데, 이는 목적함수를 두 벡터의 내적=log(동시 등장 확률)로 설정하면서 가능해진다. 즉 유사도와 코퍼스 전체의 통계 정보를 같도록 만드는 것이다.
이 외에도 임베딩 벡터의 질을 평가하는 기법들을 배웠는데, 이는 코퍼스에 따라 굉장히 달라지므로 다양한 실험을 해보아 어떠한 임베딩 벡터를 내 연구에 사용할 것인지 결정하는데 도움을 준다.

강의에서 워투벡에서 사용되는 기법들과 GloVe를 수식적으로 자세히 설명해주셔서 너무 좋았습니다! 감사합니다.

답글 달기
comment-user-thumbnail
2021년 4월 27일

투빅스 15기 이윤정

[Direct prediction]

  • 단어 간의 유사도를 계산할 수 없다는 단점을 지닌 one hot encoding을 보완하기 위해 등장한 word2Vec은 비슷한 위치에 등장하는 단어는 비슷한 의미를 지닌다는 아이디어에서 시작된다. 주변어(맥락 단어)를 통해 중심어를 파악하는 CBOW 방식과 중심어를 통해 주변어를 파악하는 Skip-gram 방식이 있으며 gradient descent를 통해 loss를 최소화하는 가중치를 업데이트한다. 이러한 과정은 많은 연산량을 필요로 하기때문에 SGD, Negative sampling, subsampling 기법을 통해 word2Vec의 효율성을 높인다.
    - SGD 기법은 train set 중 무작위로 하나는 뽑아 gradient를 계산 후 업데이트 하는 방식으로 연산량이 적고 속도가 빠르나 word vector가 sparse해진다는 단점을 지닌다.
    - Negative sampling 기법은 random sampling 방식으로 학습할 몇몇의 단어를 추출하여 object function을 근사하는 방법이다.
    - Subsampling 기법은 관사나 부사 등 자주 등장하는 단어는 적게 등장하는 단어보다 가치가 떨어지므로 특정 몇 단어를 분석에서 제외시켜 학습량을 감소시키는 방빕이다.

[Count Based]

  • skip-gram, CBOW 기법의 경우 corpus size에 영향을 받으며 동반 출현 빈도수와 같은 통계정보를 효율적으로 사용하지 못한다. 이러한 global co-occurrence statistics를 활용하기 위해 등장한 co-occurrence matrix는 통계정보를 효율적으로 사용할 수 있으며 단어 간의 유사성 여부를 포착할 수 있으나 단어 간의 관계는 고려하지 못한다는 단점이 있다. co-occurrence matrix는 크게 window based(단어-문맥), word-document(단어-문서)로 나뉘어 진다.

[GloVe]

  • corpus의 통계정보 사용 가능 + 단어 벡터 간의 유사도 측정 가능 = GloVe
  • target과 형태적, 의미적으로 비슷한 단어를 잘 선택하며 희귀한 단어에 대해서도 높은 성능이 확인된다. 추가적으로 2차원 공간에서 반의어 관계에 있는 단어쌍들이 비슷한 간격으로 위치한다.

[Word embedding evaluation]

  • extrinsic evaluation의 경우 현실 문제에 적용하여 성능을 평가하는 방식으로 직접 사용을 하면서 성능을 평가하므로 문제 발생 시 어느 부분때문에 문제가 발생한 지 파악하기 어렵다.
  • instrinsic evaluation의 경우 word embedding 자체의 성능을 평가하기 위한 방식으로 현실 문제에 실질적이 도움이 되는 지 파악하기 어렵다.

[ambiguity]

  • 다의어의 경우 하나의 word embedding으로 고정 시 명확한 의미표현에 어려움이 생긴다. 이를 보완하기 위해선 하나의 단어가 서로 다른 cluster를 형성 시 해당 단어를 여러 개로 분류하거나 한 단어의 여러 의미를 표현하는 벡터에 가중치를 부여 후 선형 결합을 통해 새로운 벡터를 생성해야한다.

공부를 하면서 아무래도 수식적인 부분에서 어려움을 겪었는 데 GloVe 파트와 같이 유도 과정이 필요한 부분을 수식적으로 자세히 설명해주셔서 이해하는 데 많은 도움이 되었습니다. 감사합니다.

답글 달기
comment-user-thumbnail
2021년 4월 27일

투빅스 15기 이수민

  • Word2Vec에는 두 가지 방식인 CBOW(Continuous Bag of Words)와 Skip-Gram이 있다. 다만 Loss Function을 계산할 때 각각의 중심단어가 가지는 모든 주변단어에 대해 계산을 진행해야 하므로 계산량이 많다는 단점이 있다.
  • Word2Vec의 효율성을 높이는 방법으로는 세 가지: 1) Stochastic Gradient Descent (SGD) 2) Negative Sampling 3) Subsampling이 있다. 모두 기존 방식 대비 계산량을 줄여 학습 효율성을 높인다.
  • GloVe는 Word2Vec의 단점을 보완하고 count based와 direct prediction의 장점을 동시에 지닌 방법론으로, direct prediction 방식의 장점인 임베딩 된 단어벡터 간의 유사도 측정을 가능하게 하면서 corpus 전체의 통계정보를 함께 사용할 수 있도록 한다.

질문 드렸던 Negative Sampling에 대해 잘 설명해 주셔서 명확하게 이해할 수 있었고, GloVe 수식 유도 과정도 자세하게 설명해 주셔서 좋았습니다. 감사합니다!

답글 달기
comment-user-thumbnail
2021년 4월 27일

투빅스 15기 김동현

[Word2Vec]

  • CBOW는 맥락 단어로 중심 단어를 예측하는 것이고, SKip-gram은 중심 단어로 맥락 단어를 예측하는 것이다. 손실을 최소화하기 위해 gradient descent를 사용하여 가중치 업데이트를 진행하지만 전체 학습 데이터를 사용하기 때문에 많은 계산량이 필요하다. 이를 해결하기 위해 SGD, Negative Sampling, Subsampling Frequent Words를 활용한다.

[Stochastic Gradient Descent(SGD)]

  • 랜덤하게 학습데이터에서 샘플을 뽑아 gradient를 계산하고 업데이트한다. 학습이 빠르지만 너무 Sparse하기 때문에 성능이 좋지 못하다.

[Negative Sampling]

  • negative sample을 추출하여 가정한 분포로 부터 random sampling with probability 방식으로 학습할 단어 몇개를 추출하여 목적함수를 계산한다. true pair와 noise pair를 구분하여 훈련하고 Noise pair는 중심 벡터와 노이즈 벡터가 멀리 있으면 손실이 0에 가까워진다.

[Count Based : Co-occurrence matrix(동시발생행렬)]

  • Window based co-occurrence matrix눈 한 문장을 기준으로 단어가 몇번 등장하는지를 계산한 행렬이고, Word-Document Matrix은 문서를 기준으로 단어가 몇번 등장하는지를 계산한 행렬이다.

[GloVe]

  • 두 단어의 관계를 새로운 단어와의 co-occurrence 확률을 이용해서 구한다. 차이점을 분석하기 위해 새로운 단어와 어떤 관계인지를 분석하여 판단한다. 목적함수는 context word와 center word의 내적이 동시 등장 확률이 되도록 만든다.

각 방법별 특징들을 살펴보고, GloVe 수식을 자세히 설명해주셔서 이해가 잘되었습니다. 감사합니다 :)

답글 달기
comment-user-thumbnail
2021년 4월 27일

투빅스 15기 조준혁

  • 앞선 강의에서 소개되었던 Word2Vec의 효율성을 올릴 수 있는 방법이 소개되었습니다.
  • 기존 count based는 단어들의 통계정보를 활용할 수 있지만 단어간의 연관성은 고려하지 못하는 반면 Direct 방법은 단어간의 연관성은 고려하지만 통계 정보를 잘 활용하지 못합니다. 이 두 가지의 단점을 극복하면서 장점을 살리는 Glove기법에 대한 소개와 수식에 이해를 잘 할 수 있었습니다.
답글 달기
comment-user-thumbnail
2021년 4월 27일

투빅스 14기 박준영

투빅스 14기 한유진님께서 cs225n의 lecture 2에 대해서 발표해주셨습니다.

  • Word2Vec에는 CBOW 방식, Skip-gram 방식이 있다.

  • CBOW 방식은 context의 one-hot vector가 입력, center word의 one-hot vector를 예측한다.

  • Skip-gram 방식은 Center Word의 one-hot vector가 입력, context word의 one-hot vector를 예측한다.

  • Word2Vec의 효율을 높이기 위해서 SGD 방법, negative sampling, subsampling Frequent words이 있습니다.

  • SGD 방법은 계산량이 적고 학습이 빨라 local minimum에 빠지지 않고 학습되지만 성능이 좋지 못하고 sparse해진다는 단점이 존재합니다.

  • negative sampling은 출력층의 score 값에 softmax를 변환해서 학습을 하는 방법입니다.

  • Subsampling Frequent words 기법은 자주 등장하는 단어의 학습량을 감소시키는 방법입니다.

  • word2vec은 통계정보를 효율적으로 사용하지 못하기때문에 이를 위해 co-occurrence matrix가 등장했습니다.

  • Glove는 통계정보를 효율적으로 사용하고 word2vec의 단어벡터간의 유사도를 측정할 수 있는 장점을 가지고 있습니다.

  • word vector 모델 평가를 위해서 현실 문제에 직접 적용하는 Extrinsic Evaluation 방법과 word embedding 성능을 측정하는 intrinsic Evaluation 방법이 있습니다.

Word2Vec의 단점과 이를 개선하기 위한 Glove 방법을 자세히 설명해주셔서 비교적 쉽게 이해할 수 있었던거 같습니다. 감사합니다!!

답글 달기
comment-user-thumbnail
2021년 4월 27일
  1. word2vec

one-hot encoding의 단점을 보완하여 비슷한 위치에서 등장하는 단어들은 비슷한 의미를 가진다는 뜻으로 나온 개념입니다.
-> CBOW방식과 Skip-gram 두 가지 방식이 있습니다.

많은 계산량와 word2vec의 효율성을 높이기 위한 3가지 방법을 소개해주셨습니다.

  • 학습 데이터 중에서 랜덤하게 샘플을 한개씩 뽑아 gradient를 계산한 후에 업데이트하는 'Stochastic Gradient Desecent(SDG)' 방식
  • 출력층이 내놓은 스코어 값에 softmax를 적용하여 확률값으로 변환한 후, 이를 정답과 비교해 backpropa하는 구조인 'Negative Sampling' 방식
  • 말뭉치에서 자주 등장하는 단어는 학습량을 확률적으로 감소시키는 기법인 'Subsampling Fequent words' 방식
  1. Count Based : Co-occurrence matrix(동시발생행렬)
  • 단어 예측을 하기위한 방식에서는 주로 단어간 유사성 여부만 포착하는 count based, Corpus size 크기에 따라서 성능에 영향을 미치는 direct 두 가지 방식이 있습니다.
  • 한 문장을 기준으로 window에 각 단어가 몇 번 등장하는지 세어 구성하는 Window based co-occurrence matrix
  • 한 문서를 기준으로 단어의 등장 횟수를 행렬로 나타내는 Word-Document matrix
  1. GloVe(Global Vectors for word Representation)
  • count based와 direct prediction의 장점을 동시에 가진 GloVe 등장
  • objective function 유도에서 crucial insight : 임베딩 된 중심 단어와 주변 단어 벡터의 내적이 전체 corpus에서의 동시 등장 확률이 되도록 만드는 것
  1. word embedding 모델의 평가 방법
    1) 외적 (Extrinsic Evaluation) : 현실 문제에 직접 적용했을 때의 성능을 평가하는 방식
    2) 내적 (Intrinsic Evaluation) : word embedding 자체의 성능을 측정하기위해서 specific/intermediate subtask를 통해 성능 평가

  2. word senses and word sense ambiguity
    'pike'와 같이 다양한 의미를 가지고 있는 단어들을 하나의 word embedding으로 고정하게되는 해결 방안을 알아보았습니다.

  • 하나의 단어가 벡터 공간에서 서로 다른 cluster를 형성하는 경우, 해당 단어를 여러개로 분류해서 벡터를 생성 (Improving Word Representations Via Global Context And Multiple Word Prototypes)
  • 한 단어의 서로 다른 의미를 나타내는 벡터들에 가중치를 부여하고 선형결합을 통해 새로운 word vector를 생성 (Linear Algebraic Structure of Word Senses, with Applications to Polysemy)
답글 달기
comment-user-thumbnail
2021년 4월 28일

투빅스 14기 강의정

Lecture 2. Word Vectors and Word Senses를 주제로 발표해주셨습니다.

  • Word2Vec에 대해 다루었습니다. SGD, Negative Sampling, Subsampling Frequent words 각각에 대한 원리와 그에 따른 자세한 수식 설명, 이후 정리하여 요약 설명해주셔서 이해하는데에 큰 도움이 되었습니다.
  • count-based의 Co-occurrence matrix를 다루었습니다. Window based co-occurrence matrix와 Word-Document matrix의 예시를 잘 이해할 수 있었습니다.
  • GloVe의 objective function 수식을 자세하게 설명해주셨습니다. 수식이 의미하는 바를 하나하나 짚어주어 이해하는데에 큰 도움이 되었습니다.
  • word vector의 외적, 내적 평가 방법에 대해 다루었습니다. 각각의 장단점을 짚어주고 결과를 해석해주셨습니다.
답글 달기