벡터의 내적 (Dot Product of Vectors)

수학
한 줄 정의: 벡터의 내적은 두 벡터의 크기와 그 사이 각도의 코사인 값을 곱해서, 방향은 없고 크기만 있는 하나의 실수(스칼라)를 구하는 연산입니다.

쉽게 풀면

바닥에 놓인 막대기 하나를 향해 태양이 수직으로 빛을 비춘다고 생각해 보세요. 태양 광선이 만드는 그림자는 원래 막대기보다 짧아지는데, 막대기와 그림자가 놓인 방향 사이의 각도가 클수록 그림자는 더 짧아집니다. 두 벡터의 내적은 이와 비슷합니다. 한 벡터를 다른 벡터의 방향으로 "빛을 비춰 투영시켰을 때" 생기는 그림자의 길이에, 그 방향 벡터의 크기를 곱한 값이 바로 내적입니다. 두 벡터가 같은 방향을 향할수록 내적 값은 커지고, 완전히 수직(90도)이면 그림자가 아예 생기지 않으므로 내적은 0이 됩니다. 반대 방향을 향하면 내적은 음수가 됩니다. 즉 내적은 "두 벡터가 얼마나 같은 방향을 보고 있는가"를 하나의 숫자로 알려주는 도구입니다.

왜 중요한가

딥러닝과 자연어처리에서 단어, 문장, 이미지 같은 데이터는 대부분 고차원 벡터(임베딩)로 표현되는데, 이때 두 벡터가 얼마나 비슷한 의미나 특성을 갖는지를 계산하는 가장 기본적인 연산이 바로 내적입니다. 어텐션 메커니즘의 유사도 계산, 추천 시스템의 취향 매칭, 신호처리의 상관관계 분석 등 서로 다른 분야의 핵심 수식 안에 내적이 공통적으로 들어 있어, 내적을 이해하는 것이 여러 최신 연구 논문의 수식을 읽는 출발점이 됩니다.

논문에서는 이렇게 쓰입니다

"제안한 추천 시스템은 사용자 임베딩 벡터와 아이템 임베딩 벡터의 내적을 유사도 점수로 사용하였으며, 내적 값이 높을수록 해당 아이템을 추천할 확률이 높아지도록 설계하였다."

이 문장은 사용자의 취향과 상품의 특성을 각각 벡터로 표현한 뒤, 두 벡터의 내적이 클수록(즉 방향이 비슷할수록) 그 상품이 사용자 취향과 잘 맞는다고 판단해 추천에 활용했다는 뜻입니다.

"트랜스포머의 셀프 어텐션 층은 쿼리 벡터와 키 벡터의 내적을 계산하여 각 단어 간의 연관도를 산출한 뒤, 이를 소프트맥스 함수로 정규화하여 어텐션 가중치로 사용하였다."

자연어처리 분야에서는 문장 내 단어들이 서로 얼마나 관련 있는지를 파악하는 데 내적이 핵심 연산으로 쓰인다는 것을 보여줍니다.

"두 힘 벡터의 내적을 이용하여 한 힘이 물체의 이동 방향으로 작용한 일(work)의 양을 계산하였다."

물리학·공학 분야에서는 내적이 방향이 다른 두 벡터 중 한쪽이 실제로 기여하는 성분의 크기를 구하는 데 쓰인다는 것을 보여주는 예문입니다.

조금 더 깊게 보면

내적은 좌표를 이용해 각 성분끼리 곱한 뒤 모두 더하는 방식으로도 계산할 수 있으며, 이는 각도를 이용한 정의와 수학적으로 동일한 값을 줍니다. 두 벡터의 내적을 각 벡터의 크기로 나누면 코사인 유사도라는 지표가 되는데, 이는 벡터의 절대적인 크기와 무관하게 방향(패턴)만 비교하고 싶을 때 자연어처리나 추천 시스템에서 특히 자주 사용됩니다. 고차원 임베딩을 다루는 논문에서는 내적, 코사인 유사도, 유클리드 거리 등 여러 유사도 지표 중 어떤 것을 사용했는지가 결과 해석에 영향을 줄 수 있으므로 함께 명시되는 경우가 많습니다.

주의할 점

벡터의 내적 결과는 벡터가 아니라 방향이 없는 스칼라(단순한 숫자)라는 점에 유의해야 합니다. 벡터끼리 곱했으니 결과도 벡터일 거라 오해하기 쉽지만, 내적은 크기만 남는 연산입니다. 이러한 벡터 표현은 임베딩처럼 데이터를 숫자 벡터로 바꾸는 여러 분야에서 유사도를 계산하는 기본 도구로 널리 쓰입니다.

관련 용어