내적이란? AI가 두 벡터의 관계를 하나의 숫자로 계산하는 원리
지난 글에서는 행렬이 입력 벡터를 새로운 출력 벡터로 바꾸는 변환 규칙이라는 점을 살펴봤습니다. 그런데 행렬의 한 행과 입력 벡터가 만나 출력 숫자 하나를 만드는 순간에는 정확히 어떤 계산이 일어날까요? 그 핵심이 내적(Dot Product) 입니다. 내적은 두 벡터의 같은 위치에 있는 성분끼리 곱하고, 그 결과를 모두 더해 하나의 숫자로 만드는 연산입니다. 계산법은 단순하지만 행렬곱, 신경망의 가중합, Attention 점수, 임베딩 검색으로 이어지는 중요한 연결점입니다. 이번 글에서는 공식만 외우지 않고, 내적의 결과가 왜 두 벡터의 방향과 관계를 반영하는지까지 알아보겠습니다. 내적이란? 같은 차원의 두 벡터 a = [a₁, a₂, …, aₙ]과 b = [b₁, b₂, …, bₙ]이 있을 때 내적은 다음과 같이 정의합니다. a · b = a₁b₁ + a₂b₂ + … + aₙbₙ 핵심은 두 단계입니다. 첫째, 같은 위치의 성분끼리 곱합니다. 둘째, 만들어진 곱을 모두 더합니다. 벡터 두 개를 입력으로 받지만 결과는 벡터가 아니라 숫자 하나입니다. 이런 하나의 숫자를 스칼라(Scalar) 라고 합니다. 두 벡터의 차원은 같아야 합니다. [2, 3]과 [4, −1]은 모두 2차원이므로 내적할 수 있지만, [2, 3]과 [4, −1, 5]는 성분을 일대일로 짝지을 수 없어 그대로는 계산할 수 없습니다. NumPy 공식 문서도 1차원 배열의 내적을 같은 위치의 곱을 합산하는 연산으로 설명하며, 마지막 차원의 크기가 맞지 않으면 오류가 발생한다고 명시합니다. NumPy inner 공식 문서 숫자로 직접 계산해 보기 a = [2, 3], b = [4, −1]이라고 해 보겠습니다. 첫 번째 성분끼리 곱하면 2×4 = 8이고, 두 번째 성분끼리 곱하면 3×(−1) = −3입니다. 두 결과를 더하면 8 + (−3) = 5이므로 a · b = 5입니다. 내적은 단순한 전체 합과 다릅니다. a의 첫 번째 ...