questionet

단어 벡터(word vector), 코사인 유사도(cosine similarity) 본문

Deep questions/수학적 바탕

단어 벡터(word vector), 코사인 유사도(cosine similarity)

orthanc 2021. 2. 14. 01:39

Q1 : 단어 벡터 사이의 관계를 측정하는 방법이 있을까?

설명 순서
1 코사인 법칙
2 벡터의 norm
3 코사인 유사도

1 코사인 법칙

벡터 a, b가 이루는 각이 θ일 때,
두 벡터의 내적은 
각 벡터의 길이(유클리드 거리)와 cosθ를 곱한 것과 같다. 

결론을 선취하자면 이때 두 벡터 x, y의 코사인 유사도는 아래와 같다. 

즉 두 벡터 사이가 이루는 각도를
두 벡터의 내적과 유클리드 거리로 표현한 것이다. 
다른 한편으로 보면
 x, y 각 벡터를 정규화한 다음 내적하는 것과 같다


2 벡터의 norm

벡터는 크기와 방향을 가진 양이다.
norm은 크기(거리)의 일반화다.

벡터의 크기는 ||x|| 이렇게 표현한다.
(cf) 실수의 크기는 |x|, 실수의 절대값이다)

일반화의 방법에 두 가지가 있다.

L1 norm
벡터의 각 원소의 절대값들을 모두 더한 것이다.
(맨하탄 거리와 같다)

L2 norm
각 벡터의 원소들을 제곱해서 더한 값에 루트를 씌운 값이다.   
(유클리드 거리와 같다)



L2 norm을 이렇게 표현할 수 있다.


어떤 사람은 이렇게도 쓴다.
(약식 표현 같은데 혼동을 불러 일으키므로 이렇게 쓰진 말자)


3 코사인 유사도
cos ( a ) 의 값은
- 1<= cos ( a ) <=1 구간 안에 있다.

즉 두 벡터의 내적을 두 벡터의 유클리드 거리를 곱한 값으로 나눈 결과가 

              -1일 때는 두 벡터가 서로 반대 방향으로 평행이고   (유사도가 낮고)
               0일 때는 직교 상태 
               1일 때는 서로 같은 방향으로 평행이 된다.            (유사도가 높다)

A1 : 즉 두 단어 벡터의 코사인 유사도가 높다는 말은
      두 벡터가 비슷하다는, 두 단어가 비슷하다는 의미가 된다.

Q2 : 두 벡터가 비슷하다는 게 정확히 무슨 뜻일까?

A2 :
단어의 의미를 벡터로 수치화 했을 때,
벡터의 차원이 충분히 높을수록
더 다양한 의미와 쓰임에 관한 정보를 담아낼 수 있을 것이다.

어떤 두 단어 벡터의 요소 위치별 대응하는 값의 크기가 같거나 비슷하다면
두 단어는
의미 면에서나 품사와 같은 문법적 쓰임 등의 정보면에서 
아주 유사한 단어라고 볼 수 있을 것이다.

Q3 : 크기가 아닌 각도로 유사도를 표현한다는 아이디어가 매우 매력적이다.
그런데 단순히 유의, 반의 관계만으로도 충분할까?

단어간의 포함관계, 추상화 정도, 단어가 가진 힘 등 보다 복잡한 관계를 수치화하는 방법은 없을까?

'Deep questions > 수학적 바탕' 카테고리의 다른 글

선형변환과 linear layer 의 관계  (1) 2024.02.20
정규화  (0) 2021.08.24
확률로 보기  (0) 2021.02.13
Comments