questionet
단어 벡터(word vector), 코사인 유사도(cosine similarity) 본문
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 , b ) 의 값은
- 1<= cos ( a , b ) <=1 구간 안에 있다.
즉 두 벡터의 내적을 두 벡터의 유클리드 거리를 곱한 값으로 나눈 결과가
-1일 때는 두 벡터가 서로 반대 방향으로 평행이고 (유사도가 낮고)
0일 때는 직교 상태
1일 때는 서로 같은 방향으로 평행이 된다. (유사도가 높다)
A1 : 즉 두 단어 벡터의 코사인 유사도가 높다는 말은
두 벡터가 비슷하다는, 두 단어가 비슷하다는 의미가 된다.
Q2 : 두 벡터가 비슷하다는 게 정확히 무슨 뜻일까?
A2 :
단어의 의미를 벡터로 수치화 했을 때,
벡터의 차원이 충분히 높을수록
더 다양한 의미와 쓰임에 관한 정보를 담아낼 수 있을 것이다.
어떤 두 단어 벡터의 요소 위치별 대응하는 값의 크기가 같거나 비슷하다면
두 단어는
의미 면에서나 품사와 같은 문법적 쓰임 등의 정보면에서
아주 유사한 단어라고 볼 수 있을 것이다.
Q3 : 크기가 아닌 각도로 유사도를 표현한다는 아이디어가 매우 매력적이다.
그런데 단순히 유의, 반의 관계만으로도 충분할까?
단어간의 포함관계, 추상화 정도, 단어가 가진 힘 등 보다 복잡한 관계를 수치화하는 방법은 없을까?
'Deep questions > 수학적 바탕' 카테고리의 다른 글
선형변환과 linear layer 의 관계 (1) | 2024.02.20 |
---|---|
정규화 (0) | 2021.08.24 |
확률로 보기 (0) | 2021.02.13 |