P2-3.4 내적(dot product), 길이(norm), 거리(distance), 유사도(similarity)¶
Section ID:
P2-3.4Version:v2026.07.20
벡터(vector), 행렬(matrix), 행렬 곱(matrix multiplication)까지 읽고 나면 다음 질문이 남습니다. 두 벡터가 얼마나 비슷한가, 얼마나 떨어져 있는가, 길이가 큰 벡터와 방향이 비슷한 벡터를 어떻게 구분하는가입니다. 이 질문이 바로 내적(dot product), 길이(norm), 거리(distance), 유사도(similarity)로 이어집니다.
행렬 곱이 벡터를 결합해 새 값을 만드는 계산이라면, 내적과 거리와 유사도는 벡터를 비교하는 계산입니다. 그래서 벡터를 만든 다음에는, 그 벡터를 어떤 기준으로 읽을지까지 함께 붙잡아야 합니다. 용어를 다시 빠르게 확인할 때는 개념사전도 함께 봅니다.
핵심 기준: 내적(dot product), 길이(norm), 거리(distance), 유사도(similarity)¶
- 내적(dot product)을 두 벡터의 대응 성분을 곱해 더한 값으로 설명할 수 있습니다.
- 길이(norm)를 벡터 크기 또는 세기의 요약값으로 읽을 수 있습니다.
- 거리(distance)는 떨어짐, 유사도(similarity)는 닮음을 재는 기준이라고 구분할 수 있습니다.
- 같은 방향이 중요한지, 같은 크기까지 중요한지에 따라 비교 기준이 달라진다고 말할 수 있습니다.
- k-NN, 임베딩, 유사도 검색을 읽기 위한 최소 비교 언어를 갖출 수 있습니다.
먼저 붙잡을 한 장면¶
이 절에서 가장 먼저 붙잡아야 할 장면은 같은 기준으로 세 벡터를 비교하는 일입니다.
| 비교 대상 | 먼저 보게 되는 점 | 지금 붙잡을 질문 |
|---|---|---|
q = [1, 1], a = [2, 2] | 방향은 같고 크기는 더 큼 | 방향이 중요한가, 크기도 중요한가 |
q = [1, 1], b = [1, 0] | 한 축이 빠져 덜 닮음 | 좌표상 가까운가, 쓰임새가 비슷한가 |
q = [1, 1], c = [10, 10] | 매우 멀지만 방향은 거의 같음 | 거리와 코사인 유사도가 다른 답을 내는가 |
즉 이 절의 핵심은 벡터를 계산한다가 아니라 무엇을 같다고 볼 것인가를 먼저 고르는 일입니다.
세 가지 기준¶
| 기준 | 왜 중요한가 | 이 절에서 필요한 이해 수준 |
|---|---|---|
내적은 함께 움직이는 정도를 보는 요약값이다 | 행렬 곱과 유사도 계산 사이를 이어 주기 때문입니다. | 같은 위치끼리 곱하고 더하는 이유를 읽습니다. |
| 길이와 방향은 같은 정보가 아니다 | 큰 벡터와 비슷한 방향의 벡터를 구분하게 해 주기 때문입니다. | 크기와 방향을 다른 개념으로 이해합니다. |
| 거리와 유사도는 질문이 다르다 | k-NN과 임베딩 검색을 같은 문제로 섞지 않게 해 주기 때문입니다. | 얼마나 떨어졌나와 얼마나 닮았나를 분리해 읽습니다. |
내적은 두 벡터를 한 숫자로 접는 계산이다¶
내적(dot product)은 같은 위치의 값을 곱하고 모두 더해 벡터 두 개의 관계를 숫자 하나로 접는 계산입니다.
이 계산은 두 벡터가 같은 방향 성분을 얼마나 공유하는가를 빠르게 요약할 때 유용합니다. 그래서 행렬 곱 설명과도 자연스럽게 이어집니다. 행렬 곱의 한 칸 역시 결국 한 행과 한 열의 내적이라고 볼 수 있기 때문입니다.
가장 작은 예로 보면:
내적값이 크다고 해서 항상 좋다는 뜻은 아닙니다. 다만 같은 방향 성분이 많이 겹치면 내적값이 커지고, 서로 반대 성분이 크면 값이 작아지거나 음수가 될 수 있습니다. 그래서 내적은 두 벡터 관계를 한 숫자로 압축한 요약값으로 읽는 편이 안전합니다.
여기서 한 번 더 짧게 정리하면:
| 질문 | 내적이 잘 보는 것 |
|---|---|
| 같은 방향 성분이 얼마나 겹치는가 | 잘 봄 |
| 절대적인 거리 차이가 얼마나 나는가 | 직접 답하지는 않음 |
| 길이가 큰 벡터가 더 큰 점수를 받는가 | 그럴 수 있음 |
길이(norm)는 벡터의 크기를 읽는 값이다¶
벡터 길이(norm)는 벡터가 원점에서 얼마나 떨어져 있는지, 또는 얼마나 큰 세기를 갖는지를 요약하는 값입니다.
초심자에게는 가장 자주 만나는 2-노름만 먼저 붙잡으면 충분합니다.
길이가 크다는 말은 값들이 전반적으로 더 크게 뻗어 있다는 뜻이고, 길이가 작다는 말은 원점에 더 가깝다는 뜻입니다.
예를 들어:
는 3-4-5 삼각형으로 바로 읽을 수 있습니다. 반면 [30, 40]은 같은 방향이지만 길이는 10배 큽니다. 이 차이 때문에 방향은 비슷하지만 크기는 다른 벡터를 따로 구분해야 합니다.
이 장면을 비교표로 보면 더 분명합니다.
| 벡터 | 방향 | 길이 |
|---|---|---|
[3, 4] | 기준 방향 | 5 |
[30, 40] | 거의 같은 방향 | 50 |
[4, -3] | 다른 방향 | 5 |
거리와 유사도는 다른 질문에 답한다¶
거리(distance)와 유사도(similarity)는 둘 다 비교 기준이지만 같은 질문에 답하지는 않습니다.
| 기준 | 먼저 묻는 질문 |
|---|---|
| 거리(distance) | 얼마나 떨어져 있는가 |
| 유사도(similarity) | 얼마나 닮아 있는가 |
거리에서는 보통 가까울수록 비슷할 가능성을 떠올립니다. 반면 유사도는 같은 방향이나 같은 쓰임새인가를 더 직접적으로 묻습니다.
그래서 뒤에서:
k-NN은 거리 기준으로 가까운 사례를 먼저 봅니다.임베딩 검색은 유사도 기준으로 비슷한 후보를 먼저 올립니다.
작은 예를 보겠습니다.
a는q와 방향이 거의 같고, 길이도 더 깁니다.b는 길이는 비슷하지만 한 축이 빠져 있습니다.
이때 질문이 가장 같은 방향을 찾는가라면 a가 더 자연스럽고, 좌표상 가장 가까운 점을 찾는가를 보면 계산 결과가 달라질 수 있습니다. 그래서 비교 문제를 읽을 때는 무엇을 같다고 볼 것인가부터 먼저 정해야 합니다.
여기서 독자가 바로 써먹을 수 있는 질문-기준 표를 남기면 다음과 같습니다.
| 문제 장면 | 먼저 떠올릴 기준 |
|---|---|
| 가장 가까운 샘플을 고른다 | 거리(distance) |
| 방향이나 의미가 가장 비슷한 벡터를 찾는다 | 유사도(similarity), 코사인 유사도 |
| 행렬 곱의 한 칸이 왜 그렇게 계산되는지 본다 | 내적(dot product) |
| 벡터의 세기나 크기를 본다 | 길이(norm) |
왜 코사인 유사도가 따로 필요한가¶
코사인 유사도(cosine similarity)는 길이보다 방향 유사성을 더 강조하는 비교 기준입니다. 같은 방향을 보더라도 절댓값 크기가 달라질 수 있기 때문에, 어느 쪽을 더 중요하게 볼 것인가가 문제에 따라 달라집니다.
예를 들어:
- 구매 금액처럼 크기 자체가 중요한 문제는 길이 차이도 의미가 큽니다.
- 문장 임베딩처럼 쓰임새가 더 중요한 문제는 방향 유사성이 더 중요할 수 있습니다.
그래서 코사인 유사도는 벡터 검색과 임베딩 문맥에서 자주 다시 등장합니다.
예를 들어 [1, 1]과 [10, 10]은 길이는 크게 다르지만 방향은 같습니다. 거리만 보면 멀지만, 코사인 유사도는 두 벡터가 거의 같은 방향이라고 판단합니다. 반대로 [1, 1]과 [1, -1]은 길이는 비슷해도 방향이 매우 다릅니다. 이 차이가 거리와 방향 유사성을 분리해 읽어야 하는 이유입니다.
아주 짧은 비교 결과만 남기면:
| 비교 | 거리 관점 | 방향 유사성 관점 |
|---|---|---|
[1, 1] vs [10, 10] | 멀다 | 매우 비슷하다 |
[1, 1] vs [1, -1] | 길이만 보면 비슷할 수 있음 | 방향은 크게 다르다 |
아주 짧은 판단 기준¶
벡터 비교 문제를 만났을 때는 먼저 다음 세 질문을 던지면 됩니다.
- 크기까지 중요한가, 방향만 중요한가?
- 가장 가까운 이웃을 찾는가, 가장 비슷한 표현을 찾는가?
- 비교 대상 벡터들이 같은 공간과 같은 차원에 놓여 있는가?
이 세 질문이 정리되면 거리, 내적, 코사인 유사도 중 무엇이 먼저 나와야 할지도 훨씬 덜 헷갈립니다.
체크리스트¶
- 내적을
같은 위치 값을 곱해 더하는 계산으로 설명할 수 있는가? - 길이와 방향이 다른 정보라는 점을 말할 수 있는가?
- 거리와 유사도의 차이를 한 문장으로 구분할 수 있는가?
[1, 1]과[10, 10]이 왜 거리와 코사인 유사도에서 다르게 읽히는지 설명할 수 있는가?- k-NN과 임베딩 검색이 왜 같은 비교 질문이 아닌지 말할 수 있는가?
- 벡터 비교 문제를 만났을 때
크기까지 중요한가, 방향이 더 중요한가를 먼저 물을 수 있는가?
이 비교 기준이 다시 보이는 장면¶
| 뒤에서 다시 만나는 장면 | 여기서 먼저 남겨 둘 감각 |
|---|---|
| Part 4의 k-NN | 가까운 사례를 찾는다는 말은 거리 기준을 정한다는 뜻입니다. |
| Part 6의 임베딩 | 의미를 벡터로 놓는다는 말은 벡터 비교 기준이 같이 필요하다는 뜻입니다. |
| Part 6의 벡터 검색 | 관련 후보를 먼저 고른다는 말은 유사도 순서를 만든다는 뜻입니다. |
따라서 여기서 중요한 것은 벡터를 만든다에서 멈추지 않고, 벡터를 어떻게 비교할 것인가까지 함께 읽는 일입니다.
출처와 참고 자료¶
- NumPy Developers,
numpy.dot. 1차원 배열에서는 내적(inner product), 2차원 배열에서는 행렬 곱으로 읽힌다고 직접 설명하므로, 이 절의 내적 직관을 뒷받침합니다. https://numpy.org/doc/stable/reference/generated/numpy.dot.html / 확인일: 2026-07-19 - NumPy Developers,
numpy.linalg.norm. 벡터 노름과 행렬 노름의 기본 뜻을 직접 확인할 수 있으므로, 길이(norm)를 크기 요약값으로 읽는 이 절의 설명을 뒷받침합니다. https://numpy.org/doc/stable/reference/generated/numpy.linalg.norm.html / 확인일: 2026-07-19 - scikit-learn developers,
cosine_similarity. 코사인 유사도를 정규화된 내적(normalized dot product)으로 직접 설명하므로, 유사도와 방향 비교를 연결하는 이 절의 설명을 보강합니다. https://scikit-learn.org/stable/modules/generated/sklearn.metrics.pairwise.cosine_similarity.html / 확인일: 2026-07-19