벡터의 내적 (Dot Product of Vectors)
쉽게 풀면
바닥에 놓인 막대기 하나를 향해 태양이 수직으로 빛을 비춘다고 생각해 보세요. 태양 광선이 만드는 그림자는 원래 막대기보다 짧아지는데, 막대기와 그림자가 놓인 방향 사이의 각도가 클수록 그림자는 더 짧아집니다. 두 벡터의 내적은 이와 비슷합니다.
한 벡터를 다른 벡터의 방향으로 "빛을 비춰 투영시켰을 때" 생기는 그림자의 길이에, 그 방향 벡터의 크기를 곱한 값이 바로 내적입니다. 두 벡터가 같은 방향을 향할수록 내적 값은 커지고, 완전히 수직(90도)이면 그림자가 아예 생기지 않으므로 내적은 0이 됩니다. 반대 방향을 향하면 내적은 음수가 됩니다.
즉 내적은 "두 벡터가 얼마나 같은 방향을 보고 있는가"를 하나의 숫자로 알려주는 도구입니다.
왜 중요한가
딥러닝과 자연어처리에서 단어, 문장, 이미지 같은 데이터는 대부분 고차원 벡터(임베딩)로 표현되는데, 이때 두 벡터가 얼마나 비슷한 의미나 특성을 갖는지를 계산하는 가장 기본적인 연산이 바로 내적입니다. 어텐션 메커니즘의 유사도 계산, 추천 시스템의 취향 매칭, 신호처리의 상관관계 분석 등 서로 다른 분야의 핵심 수식 안에 내적이 공통적으로 들어 있어, 내적을 이해하는 것이 여러 최신 연구 논문의 수식을 읽는 출발점이 됩니다.
계산과 범위
- 정의:
a·b = Σ aibi = |a||b|cos θ. 성분으로 계산하는 식과 각도로 쓰는 식은 같은 값을 줍니다. - 결과는 스칼라입니다. 대칭(a·b = b·a)이고 각 인자에 대해 선형이며, a·a = |a|²입니다.
- 범위: 코시-슈바르츠 부등식에 의해 −|a||b| ≤ a·b ≤ |a||b|. 같은 방향이면 최댓값, 반대 방향이면 최솟값, 서로 수직이면 0입니다(영벡터가 아닐 때).
- 단위: 두 벡터 단위의 곱입니다. 힘(N)과 변위(m)의 내적은 일(N·m = J)입니다.
해석 기준
- 부호: 양수이면 두 벡터가 이루는 각이 90도보다 작고, 0이면 직교, 음수이면 90도보다 큽니다.
- 크기: 벡터 길이에 따라 커지므로 방향 유사도만 보려면 두 길이의 곱으로 나눕니다. 그 값이 코사인 유사도이고 범위는 −1~1입니다. 임베딩이 이미 길이 1로 정규화되어 있으면 내적과 코사인 유사도는 같습니다.
- 투영:
a·b/|b|는 a를 b 방향에 투영한 길이(부호 포함)입니다. - 가상의 예: a = (3, 4), b = (4, 3)이면 a·b = 24, |a| = |b| = 5이므로 cos θ = 24/25 = 0.96, θ ≈ 16.3도입니다. 힘 (10, 5) N이 (3, 0) m 이동에 한 일은 30 J입니다. (1, 2)와 (−2, 1)의 내적은 0이어서 직교합니다(계산 확인).
- 고차원에서는 내적이 차원의 제곱근에 비례해 커집니다. 성분이 서로 독립이고 평균 0·분산 1인 두 벡터의 내적의 표준편차는 약 √d입니다(d = 64이면 약 8, 시뮬레이션에서 7.99). 트랜스포머의 스케일드 내적 어텐션이 √dk로 나누는 이유입니다(Vaswani et al., 2017).
보고 방법
| 항목 | 적는 내용 |
|---|---|
| 정의 | 유클리드 내적인지 가중 내적인지, 차원 |
| 정규화 | 벡터를 길이 1로 정규화했는지(내적 = 코사인 유사도) |
| 스케일 | 어텐션에서 √dk 등으로 나누었는지 |
| 비교 | 내적, 코사인 유사도, 유클리드 거리 중 무엇을 유사도로 썼는지(결과 해석에 영향) |
| 단위 | 물리량이면 단위(예: J) |
논문에서는 이렇게 쓰입니다
실제 논문에서
이 용어를 직접 쓴 국내 논문 문장을 아직 수집하지 못했습니다. 수집되는 대로 출처와 함께 싣겠습니다.
예시 문장
아래는 용어의 쓰임을 보여 주려고 만든 예시로, 실제 논문에서 가져온 문장이 아닙니다.
이 문장은 사용자의 취향과 상품의 특성을 각각 벡터로 표현한 뒤, 두 벡터의 내적이 클수록(즉 방향이 비슷할수록) 그 상품이 사용자 취향과 잘 맞는다고 판단해 추천에 활용했다는 뜻입니다.
자연어처리 분야에서는 문장 내 단어들이 서로 얼마나 관련 있는지를 파악하는 데 내적이 핵심 연산으로 쓰인다는 것을 보여줍니다.
물리학·공학 분야에서는 내적이 방향이 다른 두 벡터 중 한쪽이 실제로 기여하는 성분의 크기를 구하는 데 쓰인다는 것을 보여주는 예문입니다.
조금 더 깊게 보면
내적은 좌표를 이용해 각 성분끼리 곱한 뒤 모두 더하는 방식으로도 계산할 수 있으며, 이는 각도를 이용한 정의와 수학적으로 동일한 값을 줍니다.
두 벡터의 내적을 각 벡터의 크기로 나누면 코사인 유사도라는 지표가 되는데, 이는 벡터의 절대적인 크기와 무관하게 방향(패턴)만 비교하고 싶을 때 자연어처리나 추천 시스템에서 특히 자주 사용됩니다.
고차원 임베딩을 다루는 논문에서는 내적, 코사인 유사도, 유클리드 거리 등 여러 유사도 지표 중 어떤 것을 사용했는지가 결과 해석에 영향을 줄 수 있으므로 함께 명시되는 경우가 많습니다.
주의할 점
벡터의 내적 결과는 벡터가 아니라 방향이 없는 스칼라(단순한 숫자)라는 점에 유의해야 합니다. 벡터끼리 곱했으니 결과도 벡터일 거라 오해하기 쉽지만, 내적은 크기만 남는 연산입니다. 이러한 벡터 표현은 임베딩처럼 데이터를 숫자 벡터로 바꾸는 여러 분야에서 유사도를 계산하는 기본 도구로 널리 쓰입니다.
헷갈리기 쉬운 용어
벡터끼리의 곱이 여러 가지라 결과의 종류로 구별합니다.
| 연산 | 결과 | 의미 |
|---|---|---|
| 내적 | 스칼라 | 같은 방향 정도, 투영, 일 |
| 벡터의 외적 | 벡터(3차원) | 두 벡터에 수직인 벡터, 크기는 평행사변형 넓이 |
| 원소별(아다마르) 곱 | 벡터 | 성분끼리 곱함 |
| 코사인 유사도 | 스칼라(−1~1) | 내적을 두 길이의 곱으로 나눈 값 |
| 행렬 곱 | 행렬 | 행과 열의 내적을 모은 것 |
참고 문헌
- Strang, G. (2016). Introduction to Linear Algebra (5th ed.). Wellesley-Cambridge Press.
- Marsden, J. E., & Tromba, A. J. (2011). Vector Calculus (6th ed.). W. H. Freeman.
- Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A. N., Kaiser, Ł., & Polosukhin, I. (2017). Attention is all you need. Advances in Neural Information Processing Systems, 30, 5998–6008.
표의 기준값은 위 문헌에 근거한 관례이며, 분야·학술지마다 다른 기준을 쓸 수 있습니다.