본문 바로가기

인공지능/스터디

Embedding

Embedding의 필요성

skip gram은 encording이 아닌 embedding에 포함되어 있다.

embedding은 단어를 벡터로 표현하는 encording과 유사하지만 큰 차이점이 있다.

https://www.youtube.com/watch?v=sY4YyacSsLc&t=521s

onehotencording은 encording의 대표적이 예시인데, 하지만 이 벡터들은 유사도가 없다. 예를 들어, king과 man은 woman보다 유사도가 높아야하는데 이를 표현할 수가 없다. 

이 문제점을 보완하기 위해 embedding이 나왔다.

embedding을 적용하면 encoding보다는 낮은 차원이 나오지만 의미있는 숫자로 구성되어 유사도를 표현할 수 있다.

 

 

Embedding 절차

1. neighbor 설정(window)

https://www.youtube.com/watch?v=sY4YyacSsLc

skip gram은 문장이 주어졌을 때 특정 단어에서 window size만큼 붙어있는 단어들을 예측한다.

예를 들어 brave는 king, man 모두 1만큼 떨어져있기 때문에 brave의 enighbor라고 표현할 수 있다.

skip gram을 하기 위해서는 이 단어들을 모두 one-hot encording 적용시켜야 한다.

 

우리가 찾고싶은 값은 brave를 넣었을 때 brave의 neighbor들이 출력되어야 한다.

즉, 위의 사진에서 neighbor라고 표현되어 있는 값들이 label이 된다.

 

2. training

https://www.youtube.com/watch?v=sY4YyacSsLc&t=521s

먼저 모델의 구조를 보자. input과 output의 차원은 같아야 하며 hidden layer는 output 차원보다는 낮아야한다.

그 이유는 hidden layer가 단어를 뜻하는것이 아니라 유사도를 표현해야 하기 때문이다.

 

여기서 output과 target의 차이에 대한 cost를 이용해 hidden layer를 학습시킨다.

king을 학습한다고 예측해보자. 모델을 거치고나면 output값이 나오고 softmax를 적용해 최종 target이 된다.

아래의 표를 살펴보면 king이 brave를 출력한것을 확인할 수 있다.

https://www.youtube.com/watch?v=sY4YyacSsLc&t=521s

 

 

3. Embedding 결과

최종적으로 학습된 결과를 보면 다음과 같다. input으로 onehotencording이 들어오면 hidden layer를 거쳐 최종 embedding이 나타나는데, 결국 hidden layer의 w값이 embedding값(유사도)이다.

https://www.youtube.com/watch?v=sY4YyacSsLc&t=521s