본 글은 Stanford CS224N Winter 2021의 강의를 듣고 정리하는 내용입니다.
Youtube : Stanford CS224N
Website : Stanford CS224n : Natural Language Processing with Deep Learning
⇒ 각 단어들의 의미를 파악해서 의사소통을 진행할 수 있음.
이 때 ‘의미’를 파악하는 방법은?
📌 WordNet
One-hot : 하나의 1, 나머지는 0
단어의 의미 해당하는 곳을 1로, 나머지는 0으로 표시하는 지역주의적 표현
벡터의 차원 = vocabulary에 속하는 단어의 개수
만약 vocabulary에 속하는 단어가 500,000 개라면 벡터도 500,000 차원이어야 함
⇒ 무한 개의 단어에는 무한한 벡터가 필요하므로 사실상 불가능
단순히 단어의 뜻에 1만 표기하고 있기 때문에, 단어 간의 유사도에 대한 정보가 없음
⇒ 벡터 자체에 유사도를 학습시켜야겠다!
“You shall know a word by the company it keeps” - J.R Firth 1957:11
❓ Word embedding이라고 불리는 이유
Word vector들을 표현한 Vector space를 확인하면 비슷한 단어들끼리는 가까이에 함께하고 있음.
이 때 Word vector는 고차원이므로 하나의 vector를 확인하려면 여러 번 파고 들어가야 함 = vector가 파묻혀있음 = Word Embedding
Word vector를 학습하기 위한 프레임워크
Corpus (body of text) : 여러 단어들로 이루어진 말뭉치 - 가 있을 때
Corpus(=Fixed vocabulary) 내에 포함된 모든 단어는 vector로 표현됨 (초기에는 random vector를 부여함)
Corpus 내의 특정 포지션 t에 대하여, center word c와 context(=outside) words o를 파악함
c가 주어졌을 때 o가 나타날 확률을 계산하기 위해 c와 o의 벡터 간 유사도를 사용함
그 확률(c가 주어졌을 때 o가 나타날 확률)을 최대화하기 위해 계속해서 word vector를 조정함
❓ 왜 c가 주어졌을 때 o가 나타날 확률을 높이기 위해 노력하는가?
현재 corpus는 실제로 사용되는 문장들임
따라서 c가 주어졌을 때 그 주변에 있는 o는 그렇게 사용되는 게 맞는 것! (o들이 나올 때는 c가 나와야 한다는 정답이 주어진 것!)
따라서 c 주변에 o가 있을 확률은 높아야 함 (실제로 그렇게 사용되고 있다는 거니까!)
![]() |
![]() |
Likelihood (가능도, 우도)
- 어떤 값이 관측되었을 때, 이것이 어떤 확률 분포에서 왔을 지에 대한 확률
- θ(center word)가 관측되었을 때 현재의 Context word가 해당 위치에 있을 확률
⇒ 확률이 높은 게 좋은거니까 Likelihood는 최대화되어야 함!
목적함수 (=손실함수)
- Average negative log likelihood
- Likelihood에서
- 값을 최소화하기 위한 negative
- 곱을 합으로 나타내기 위한 log
- 평균을 위한
⇒ 손실이 가장 적어야 좋은 거니까 Objective function의 값은 최소화되어야 함!
∴ Minimizing objective function ⇔ Maximizing predictive accuracy
⇒ 앞으로는 Objective function을 최소화함으로써 Word2vec의 성능을 높일 것임!
∴ center word c와 context word o에 대해서
🤯 왜 이런 식이 나오는가?
⇒ 이건 softmax function의 일종임
![]() |
![]() |
따라서 목적함수의 기울기를 구하는 법을 알아보고자 한다.
📏 사용되는 수학 개념
: 편미분 기호 - 미분을 통해 기울기를 구할 수 있음
이러한 함수 f가 있다고 할 때, x에 대한 편미분을 구하면 ⇒ x가 아닌 y는 상수로 취급하여 계산하고 x의 제곱은 2x가 됨
출처 : 편미분이란?
log * exp
∴ log(exp(x)) = x
Chain Rule
자연로그의 미분
미분
![]() |
![]() |
⇒ 기울기가 0에 가까워야 하니까, 실제 context word와 예측된 context word 간의 차이가 적을수록 모델의 성능 ↑
영상 강의는 여기에서 끝났는데, 강의자료는 아직 남아있어 조금 혼란이 있었다. 하지만 해당 자료는 다음 강의에 나오는 것을 확인하였다.
딥러닝이나 머신러닝에 대해서는 아는 바가 아예 없어서 강의를 이해하는 데 조금 힘들었는데, 특히 수학을 건들지 않은 지가 오래 되어서..^^ 공식 이해에도 어려움이 있었다. 앞으로도 천천히 이해해야할 것 같다.