작성자 : 동덕여자대학교 정보통계학과 한유진
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가지 방법을 소개합니다.
(본강의에서 Skip-gram을 예시로 설명하였습니다)
main idea : true pair와 noise pair에 대해 binary logistic regression을 훈련
: 중심 벡터
: 맥락 벡터
: 노이즈 벡터 (랜덤하게 선택된 벡터. 실제 맥락벡터 아님)
: 중심 벡터와 hidden layer 사이의 가중치
: 맥락 벡터와 hidden layer 사이의 가중치
negative sample의 목적함수를 작아지게 만들어야합니다. 는 중심 벡터와 맥락 벡터간 코사인 유사도를 의미하기 때문에 앞에 term은 실제이니까 커지길 원하고, 뒤에 term은 negative sample을 분류하기 위한식이기 때문에 작아지길 원합니다. 즉 True pair는 중심 벡터와 맥락 벡터가 가까이 있을수록(코사인 유사도가 클수록) 손실이 0에 가깝고, Noise pair는 중심 벡터와 노이즈 벡터가 멀리 있을수록(코사인 유사도가 작을수록) 손실이 0에 가까움을 의미합니다.
crucial insight : 임베딩 된 중심 단어와 주변 단어 벡터의 내적이 전체 corpus에서의 동시 등장 확률이 되도록 만드는 것
아래의 식을 만족하는 를 찾는것입니다.
- (1)
하지만 단어 벡터 공간은 Linear structure를 가지고, 단어 가 각각 단어 와 동시 등장할 확률의 차이를 보는것이 목적이기 때문에 아래와 같이 를 수정해줍니다.
- (2)
좌변은 벡터, 우변은 스칼라 값을 가지기 때문에 단위를 맞춰줍니다.
- (3)
<는 다음 3가지 조건을 충족시켜야합니다>
1. 중심 단어는 context word로도 등장할 수 있기 때문에 단어 벡터간의 교환법칙 성립
2. co-occurrence matrix X는 대칭행렬(symmetric matrix)
3. homomorphism(준동형) 조건 만족
cf) homomorphism(준동형) ...
이러한 조건을 만족시키는 함수는 지수함수이기 때문에 적용시키면 (4)와 같은 식이 만들어집니다. ()
- (4)
(4)번 식에 (3)번 식을 적용하면 (5)번과 같은 식을 도출할 수 있습니다.
- (3)
- (4)
-(5)
는 지수함수이기 때문에 를 취할 수 있게 됩니다.
- (6)
- (6)
(6)식에서 교환법칙 성립을 위해서 고정값인 를 으로 대체하였습니다.
- (7)
지금까지 유도한 GloVe의 손실함수입니다.
하지만, 이면 이런 문제 때문에 손실함수에 weighting funtion을 함께 사용했습니다.
또한, 사용될 가능성이 적은 단어들은 overweight되지 않아야하고, 특정단어의 빈도수가 매우 높아 값이 튀는 현상을 방지하기 위해서도 weighting funtion이 사용되었습니다.
최종 Glove의 손실함수입니다.
GloVe는 학습속도가 빠르며, Huge corpora에 대해서도 확장성을 가지기 때문에 small corpus나 small vector size에서도 좋은 성능을 보입니다.
frog와 형태적으로 또는 의미적으로 비슷한 단어를 잘 선택합니다.(rare한 단어들에 대해서도 성능 good)
반의어 관계에 있는 단어쌍들이 비슷한 간격으로 2차원의 공간 내에 위치하고 있습니다.
word embedding모델의 평가방법에 대해서 소개하겠습니다. 크게 외적(extrinsic)평가와 내적(intrinsic)평가로 나눌 수 있습니다.
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/
Glove 식을 유도하는 과정이 어려워서 강의만 보고 이해하기 어려웠는데 자세히 이야기해주셔서 쉽게 이해할 수 있었던 것 같습니다. 참고하신 자료들도 자세히 달아주셔서 혼자 보고 공부하는데 많은 도움이 될 것 같습니다. subsample하는 이유를 생각해본 적이 없었는데, 서론에서 짚고 넘어가주셔서 이후에 왜 subsample과 negative sampling을 사용하는지, 식이 왜 이렇게 구성되는지 좀 더 이해할 수 잇었던 것 같습니다.
감사합니다!
Word2Vec은 말뭉치가 늘어날수록 계산량이 폭증하는 구조이기 때문에 학습속도가 오래 걸리고 효율적이지 못하다. 따라서 학습을 효율적으로 하기 위해 일반적으로 세가지 방법이 고려되는데,
Count-based Method는 효율적으로 통계정보를 사용할 수 있다는 장점을 가진 방법이다.
Direct Prediction(Word2Vec,...)은 사용자가 지정한 윈도우 사이즈 안에서 학습이 이루어지기 때문에 전체적인 문서 내 단어 빈도와 같은 통계정보를 효율적으로 활용하지 못한다는 한계를 가지고 있다.
반면에 Count-based Method는 효율적으로 통계정보를 사용한다.
GloVe(Global Vectors for Word representation)는 Count-based Method와 Direct prediction의 장점만 가져온 방법이라고 할 수 있다.
"임베딩 된 단어벡터 간 유사도측정을 수월하게 하면서도 말뭉치 전체의 통계정보를 잘 반영해보자"
단어가 여러개의 의미를 가질 때 이를 해결하기 위한 두가지 방법이 제시되었다.
Word2Vec과 Count Based Method의 장단점과 이를 보완한 Glove에 대해 배울 수 있는 좋은 기회였습니다.
투빅스 14기 정재윤
투빅스 14기 한유진님께서 cs224n의 lecture 2에 대해서 발표해주셨습니다.
GloVe를 수식적으로 도출해주신 점이 굉장히 인상적이었습니다. 감사합니다 :)
투빅스 14기 이정은
강의에서 GloVe 목적함수, 손실함수의 유도 과정을 자세히 설명해주신 점이 정말 좋았습니다. 강의 감사합니다 : )
투빅스 15기 조효원
Word2Vec은 그 자체로 매우 강력하지만, 성능을 높히기 위한 추가적인 기법들이 존재한다. Negative sampling과 subsampling이 그것인데, 각각 실제 context word가 아닌 단어들을 추출하여 이렇게 함께 등장하면 안된다고 학습시키는 방법과, 빈번한 단어는 정보의 가치가 떨어지기에 학습량을 감소시키는 방법이다. 이러한 방법들을 통해 성능을 더 높힐 수 있었지만, 여전히 word2vec은 주변 단어만 고려한다는 한계가 있다. 따라서 새로이 등장한 임베딩 GloVe는 전체 코퍼스의 통계 정보를 함께 고려한다. 두 단어의 유사도에 통계정보가 반영되는데, 이는 목적함수를 두 벡터의 내적=log(동시 등장 확률)로 설정하면서 가능해진다. 즉 유사도와 코퍼스 전체의 통계 정보를 같도록 만드는 것이다.
이 외에도 임베딩 벡터의 질을 평가하는 기법들을 배웠는데, 이는 코퍼스에 따라 굉장히 달라지므로 다양한 실험을 해보아 어떠한 임베딩 벡터를 내 연구에 사용할 것인지 결정하는데 도움을 준다.
강의에서 워투벡에서 사용되는 기법들과 GloVe를 수식적으로 자세히 설명해주셔서 너무 좋았습니다! 감사합니다.
투빅스 15기 이윤정
[Direct prediction]
[Count Based]
[GloVe]
[Word embedding evaluation]
[ambiguity]
공부를 하면서 아무래도 수식적인 부분에서 어려움을 겪었는 데 GloVe 파트와 같이 유도 과정이 필요한 부분을 수식적으로 자세히 설명해주셔서 이해하는 데 많은 도움이 되었습니다. 감사합니다.
투빅스 15기 이수민
질문 드렸던 Negative Sampling에 대해 잘 설명해 주셔서 명확하게 이해할 수 있었고, GloVe 수식 유도 과정도 자세하게 설명해 주셔서 좋았습니다. 감사합니다!
투빅스 15기 김동현
[Word2Vec]
[Stochastic Gradient Descent(SGD)]
[Negative Sampling]
[Count Based : Co-occurrence matrix(동시발생행렬)]
[GloVe]
각 방법별 특징들을 살펴보고, GloVe 수식을 자세히 설명해주셔서 이해가 잘되었습니다. 감사합니다 :)
투빅스 15기 조준혁
투빅스 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 방법을 자세히 설명해주셔서 비교적 쉽게 이해할 수 있었던거 같습니다. 감사합니다!!
투빅스 14기 강의정
Lecture 2. Word Vectors and Word Senses를 주제로 발표해주셨습니다.
Word2Vec의 단점을 보완하는 Negative Sampling과 Subsampling에 대해 이해할 수 있어 좋았습니다.
Glove가 등장하게 된 배경부터 시작해서 목적함수 수식 설명을 자세히 설명해주셔서 이해하는 데에 도움이 되었습니다.