[CS224N] Introduction and Word Vectors
※ 스탠포드 자연어처리강좌인 2019 CS224N을 듣고 정리하여 블로그에 포스팅하기로 했습니다.
영어강의고 전문지식이 미숙하다보니 내용정리에 틀린점이 있을 가능성이 다분합니다. 일단은 정리용으로 포스팅하겠습니다.
강의의 원문 링크입니다. https://web.stanford.edu/class/cs224n/
우리가 하려고 하는것은 단어의 의미(meaning)을 표현하는 것입니다.
그렇다면 Meaning 이란 무엇일까요. 바로 우리가 word나 phrase 등을 통해서 표현하고자 하는 idea를 뜻합니다.
텍스트가 아니더라도 writing이 아닌 다른 art의 방식으로도 아이디어는 표현될 수 있겠죠.
컴퓨터 사이언스에는 Denotational semantics(표시적 의미론) 으로 형식적인 의미를 제공합니다.(artificial한)
signifier을 보고 그 속에 담긴 숨겨진 의미를 파악할 수 있습니다. 상징적인 symbol 예를들어 횃불은 단순히 불타는 막대 외에도 자유라는 의미 또한 있습니다.
WordNet은 어떠한 단어에 대한 synonym sets(동의어)와 hypernyms(계층적 의미를 담고 있는 상위어?)를 제공하지만 그 단어에 대한 connotation이나 nuance를 담지 못하는 한계가 있습니다.
그래서 처음에 단어를 represent한 방법은 One-hot vector 였습니다. 예를들어 모텔은 [0000010000], 호텔은 [000100000] 이런식으로 해당 단어의 space에 1을 지정하는 방식으로 단어를 구분하는 것입니다. 여기서 발생하는 문제는 엄청나게 많은 단어, 또한 파생단어가 있을 텐데 정작 의미있는단어는 하나이다 보니 벡터가 엄청나게 커지게됩니다.
그보다 큰 문제는 단어간의 relationship을 파악하는데 어려움이 생기는 것이지요. 앞서 예시를 든 motel과 hotel의 두 벡터들은 orthogonal(직교)하며 유사성을 찾기 어렵습니다. L2 Distance라고도 불리는 Euclidian Distance, 다른 차원에 있는 벡터들의 거리를 계산, 를 써보면 모든 단어간의 거리는 1이 되죠. 그렇다면 유사성을 담아내는 벡터를 찾아내야 합니다.
Distibutional semantics 는 1957년에 나온 개념인데 단어의 의미는 그 단어 주변에서 빈번히 등장하는 단어들에 의해서 정해진다는 것입니다. 그 단어의 context를 알려면 그 단어 근처에서 등장하는 단어를 봐야한다는거죠.(일정 window size내에서) 이는 당연하지만 매우 효과적인 개념입니다.
이제 단어들 간의 유사성을 설명하는 방법으로 그 유명한 Word2Vec이 나옵니다. 예시 그림에서 보면 알 수 있듯이 window size 2에서 중심 단어인 banking을 중심으로 앞뒤 2개의 단어가 있을 때의 중심단어의 조건부확률을 계산합니다.
수식을 보면 1부터 T까지인 t는 단어의 인덱스를 의미하고 window size인 m내에서 Wt;세타의 확률을 계산하는 것을 알 수 있습니다. 이것을 기계학습에서 흔히 하는 - log함수의 목적 함수의 형태로 변환 할 수 있습니다. 마이너스를 붙여주는 건 최대확률을 구하는 확률식에서 loss의 최솟값을 구하는 함수식으로 바꿔주기 위해서입니다. 또한 corpus의 개수인 T로 나눠줌으로써 scale의 차이에 따른 영향을 감소시킵니다. log함수를 씌운 것은 곱셈합을 덧셈으로 바꿔주기 위함이고 나머지 식은 Likelihood를 구한 식과 별 차이가 없습니다. 세타 j를 줄여나가면서 가장 적합한 단어를 찾아나가게 됩니다.
Word2vec에는 중심단어를 토대로 주변단어를 예측하는 skip-gram과 그 반대인 이전 조경현교수님강의에서도 포스팅했던 continous of bag words(cbow) 가 있는데 강의에서는 skip-gram에 대한 내용인 것 같습니다. 이제 어떻게 확률을 구하는지 보겠습니다.
중간에 내용이해가 안되는 부분은 ratsgo님의 blog 의 word2vec포스팅을 참조하였습니다. 좌변의 c는 center word 로 중심단어가 주어졌을 때 주변단어인 o의 확률을 의미하고 우변은 이제 소프트맥스 함수의 형태로 오렌지 박스는 중심단어와 주변단어간의 유사성을 벡터내적으로 계산하는 부분입니다.
'machine learning' 카테고리의 다른 글
[3Blue1Brown] 신경망이란 무엇인가 (0) | 2021.12.18 |
---|---|
딥러닝을 이용한 자연어 처리(3) (0) | 2019.07.19 |
딥러닝을 이용한 자연어처리(2) (0) | 2019.07.11 |
딥러닝을 이용한 자연어 처리(1) (0) | 2019.06.29 |
댓글
이 글 공유하기
다른 글
-
[3Blue1Brown] 신경망이란 무엇인가
[3Blue1Brown] 신경망이란 무엇인가
2021.12.18 -
딥러닝을 이용한 자연어 처리(3)
딥러닝을 이용한 자연어 처리(3)
2019.07.19 -
딥러닝을 이용한 자연어처리(2)
딥러닝을 이용한 자연어처리(2)
2019.07.11 -
딥러닝을 이용한 자연어 처리(1)
딥러닝을 이용한 자연어 처리(1)
2019.06.29