코사인 유사도(Cosine similarity)
두 벡터(vector) 사이 각의 코사인(cosine). 길이는 무시하고 방향만 비교하므로, 문서·추천·임베딩(embedding)처럼 '얼마나 많이'보다 '무엇에 관한 것인가'가 중요한 곳에서 쓴다.
두 벡터가 얼마나 같은 쪽을 가리키는지는 사이각 θ가 알려 줍니다. 각을 직접 재기보다 그 코사인을 쓰는 까닭은 계산이 쉽기 때문입니다. 내적(dot product)을 두 길이로 나누기만 하면 됩니다. 노랑 a와 파랑 b의 끝을 끌어 보세요. 지금 θ =
같은 방향이면 1, 직각이면 0, 정반대면 −1입니다. 이제 b의 길이만
그래서 거리와도 이어집니다. 단위원 위 두 점을 잇는
길이를 무시하는 것이 왜 좋을까요? 문서를 단어마다 나온 횟수를 적은 벡터로 바꿔 봅시다. A는 고양이에 관한 짧은 글, B는 고양이에 관한 다른 글을
코사인 유사도로는 A와 B가
이어지는 곳. 두 벡터에서 각각 평균(mean)을 빼고 코사인을 재면 상관계수(correlation coefficient)가 됩니다. 0과 1로만 된 벡터(무엇을 가졌는가)라면 코사인은
단어를 수백 차원의 벡터로 나타내는 단어 임베딩(word embedding)에서 두 단어가 얼마나 비슷한지는 대개 이 코사인으로 잽니다. 질문과 문서를 같은 공간의 벡터로 바꾼 뒤 코사인이 큰 문서를 찾아 언어 모델(language model)의 문맥에 넣어 주는 검색 증강 생성(retrieval-augmented generation)도 이 계산 위에 서 있습니다.
이 개념이 나오는 긴 글
이 개념 위에 세워진 것
이 개념을 언급하는 페이지
- 내적
… 두 문서가 얼마나 비슷한지 잴 때 쓰입니다. 긴 문서와 짧은 문서도 공평하게 비교할 수 있기 때문입니다(코사인 유사도). 문서와 질문을 벡터로 바꾸고 코사인 유사도가 큰 문서를 찾아 언어 모델의 문맥에 넣는 방법이 ⟦검색 …
- 상관관계
… 상호 정보량은 두 변수가 독립일 때, 그리고 그때만 0입니다. 두 벡터 사이 각의 코사인으로 닮음을 재는코사인 유사도는 문서 검색과 추천에서 흔히 쓰입니다. 두 데이터 열에서 각각 평균을 뺀 다음 코사인 유사도를 구하면, …
- 최근접 이웃 분류
… 좌표마다 평균을 빼고 표준편차로 나누어 눈금을 맞추거나(표준화) 마할라노비스 거리를 씁니다. 문서라면코사인 유사도, 철자라면 편집 거리, 0과 1의 문자열이라면 해밍 거리로 이웃을 찾습니다. 방법은 그대로 두고 …
- 차원의 저주
… 같은 이유로, 정육면체의 한가운데를 원점으로 옮겨 놓고 보면 무작위로 고른 두 점의 방향은 거의 직각이어서코사인 유사도가 0 근처에 몰립니다. 한 꼭짓점을 원점으로 두면 모든 좌표가 양수라서 이렇게 되지 않습니다. 공간이 텅 …
- 자카드 지수
… 집합을 0과 1의 벡터로 보면 교집합의 크기는 내적이 되고, 같은 내적을 다른 방식으로 나누면코사인 유사도가 됩니다. 컴퓨터 비전에서는 예측한 상자와 정답 상자가 겹친 넓이 ÷ 합친 넓이를 IoU라 부르며 같은 …
- 쇠렌센–다이스 계수
… a|^2+|\vec b|^2) 이고, 분모의 산술평균을 기하평균 |\vec a||\vec b| 으로 바꾸면코사인 유사도가 됩니다. 한쪽에만 있는 것의 개수 FP + FN은 해밍 거리입니다. 철자가 비슷한 단어를 찾을 때는 …
- 거리 함수
… 답이 깔끔하게 나오기 때문입니다. 비슷함을 재는 값을 거리로 바꿀 때도 조심해야 합니다. 1에서코사인 유사도를 뺀 값은 삼각부등식을 지키지 않을 수 있어 엄밀한 거리가 아닙니다. 방향이 0°, 45°, 90°인 세 …
- 유클리드 거리
… \lVert q - d\rVert^2 = 2 - 2\cos(q, d) 라서, 유클리드 거리로 가까운 순서와코사인 유사도로 비슷한 순서가 같아집니다. 문서 임베딩을 찾는 검색 증강 생성 시스템이 흔히 벡터를 길이 1로 …
- 편집 거리
… 긴 문서끼리는 글자를 하나하나 편집하는 대신, 각 단어가 몇 번 나오는지를 모은 벡터를 만들어코사인 유사도로 비교하는 편이 흔합니다. 글자 순서보다 어떤 낱말을 얼마나 썼는지가 내용을 더 잘 드러내기 때문입니다. …
- 단어 임베딩
… 고리이고, 청록 고리가 그곳에서 코사인으로 가장 가까운 낱말입니다. 가까움을 유클리드 거리가 아니라코사인 유사도로 재는 까닭은, 자주 나오는 낱말일수록 세어 얻은 벡터가 길어지기 때문입니다. 길이를 무시하고 방향만 …
- 퍼셉트론
… 커지는데 w의 길이는 고친 횟수의 제곱근에 비례하는 만큼(R√k)까지만 자라므로, 둘 사이 각의 코사인(코사인 유사도)이 1을 넘지 않으려면 고치는 횟수에 한계가 있어야 합니다. 점들을 'XOR처럼 놓인 점들'로 바꾸면 …
- 기계 학습
… 검증⟧, 차원의 저주에서 다룹니다. 거리로 배우는 방법은 최근접 이웃 분류, k-평균 군집,코사인 유사도, 마할라노비스 거리에, 선형대수로 배우는 방법은 최소제곱 회귀와 주성분 분석에 있습니다. 확률 …
- 서포트 벡터 머신과 커널
… 문제의 답이 같아지는 이유는 볼록 최적화의 쌍대성에서 옵니다. 커널은 두 점의 비슷함을 재는 함수라서코사인 유사도같은 유사도와 같은 줄기에 있고, 자료를 커널로 옮긴 뒤 퍼진 방향을 찾으면 커널 주성분 분석이 …
- 어텐션
… 소프트맥스가 왜 지수 꼴인지는 최대 엔트로피 원리가 설명합니다. 쿼리와 키를 길이 1로 맞추면 점수는코사인 유사도가 되고, 그때 온도를 0으로 보낸 극한이 최근접 이웃 찾기입니다. 어텐션이 문맥 안에서 쿼리와 가까운 …
- 검색 증강 생성
… 비슷한 방향을 가리키도록 학습된 벡터이고(단어 임베딩과 같은 생각입니다), 방향이 얼마나 비슷한지는코사인 유사도로 잽니다. \cos(q, d) = \frac{q\cdot d}{\lVert q\rVert\,\lVert …
- 언어 모델의 발전사: RLHF 이후
… 점수를 확률로 바꾸는 소프트맥스, 그것으로 전문가를 고르는 희소 라우팅, 벡터의 방향으로 글을 찾는코사인 유사도, 여러 번 뽑아 고르는 표본과 검증, 그리고 모든 것의 바탕인 다음 토큰 예측과 ⟦확률적 경사 …