搜尋意圖: 如果你在找「點積 是什麼」或「點積 和相近概念差在哪」,先看這頁的短定義、完整說明與延伸比較。
TL;DR: 兩個向量逐元素相乘後加總的純量值,衡量向量間的相似程度與方向一致性。
實用情境: 適合用在閱讀 AI 文章、產品文件或和同事討論時,先用一頁快速對齊概念。
下一步: 先讀完定義,再往下看延伸比較與對應工具,把概念轉成實際應用。
兩個向量逐元素相乘後加總的純量值,衡量向量間的相似程度與方向一致性。
點積(Dot Product)是向量運算中的基礎操作,在機器學習與深度學習的各個環節都扮演著關鍵角色。理解點積的數學定義與幾何直覺,是掌握神經網路、注意力機制與相似度搜尋等技術的必要前提。
數學定義上,給定兩個 n 維向量 a = [a1, a2, ..., an] 與 b = [b1, b2, ..., bn],其點積定義為 a · b = a1b1 + a2b2 + ... + an*bn,結果是一個純量(scalar),不再是向量。以具體數字為例,若 a = [1, 2, 3],b = [4, 5, 6],則 a · b = 1×4 + 2×5 + 3×6 = 4 + 10 + 18 = 32。
幾何意義是點積最直覺的理解方式。點積等於 |a| × |b| × cos(θ),其中 |a| 與 |b| 分別是兩向量的模長,θ 是兩向量之間的夾角。這個公式揭示了幾個重要性質:當兩向量方向完全相同時(θ=0),cos(0)=1,點積等於兩模長的乘積,為最大正值;當兩向量互相垂直時(θ=90°),cos(90°)=0,點積為零,表示兩向量完全不相關;當兩向量方向相反時(θ=180°),cos(180°)=-1,點積為最大負值。
在深度學習中,點積的應用範圍極廣。全連接層(Fully Connected Layer)的核心計算就是輸入向量與權重矩陣的點積,即矩陣乘法的逐行內積,輸出每個神經元的加權和。卷積層在展開計算時本質上也涉及大量點積運算。
Transformer 架構中的縮放點積注意力(Scaled Dot-Product Attention)是當代大型語言模型的核心機制。其計算公式為 Attention(Q, K, V) = softmax(Q × K^T / sqrt(d_k)) × V,其中 Q(Query)與 K(Key)之間的點積衡量了每個查詢與各個鍵的相關程度。除以 sqrt(d_k) 是為了防止點積值在維度很高時過大,避免 softmax 函數進入飽和區導致梯度消失。這個設計讓模型能夠動態地決定在生成每個輸出詞元時應該「注意」輸入序列的哪些位置。
餘弦相似度(Cosine Similarity)是另一個與點積密切相關的概念。餘弦相似度的定義是 cos(θ) = (a · b) / (|a| × |b|),即先計算點積,再除以兩向量模長的乘積,將結果正規化到 -1 到 1 的範圍。這使得餘弦相似度只關注向量的方向,而不受向量絕對大小的影響。在文字嵌入(text embedding)的相似度搜尋中,如果所有向量都已正規化為單位向量(模長為 1),餘弦相似度就等於點積,因此可以用高效的矩陣乘法批量計算所有向量對之間的相似度。
向量資料庫(Vector Database)在執行近似最近鄰(Approximate Nearest Neighbor,ANN)搜尋時,核心操作之一就是大量的點積計算。現代 GPU 和專用 AI 加速晶片(如 Google TPU)都對矩陣乘法(本質上是批量點積)做了深度硬體優化,使得能夠在毫秒內完成數十億次點積運算。
點積與矩陣乘法的關係也值得理解。矩陣乘法 C = A × B 中,C 的每個元素 C[i][j] 等於 A 的第 i 列向量與 B 的第 j 欄向量的點積。因此矩陣乘法是點積的批量化版本,而深度學習框架(如 PyTorch 的 torch.matmul 或 NumPy 的 np.dot)的底層優化正是圍繞著如何在 GPU 上高效執行大規模矩陣乘法而設計的。
在 iPAS AI 應用規劃師考試中,點積相關考題通常測驗考生是否理解注意力機制的計算流程、向量相似度的計算方式、以及基本的線性代數直覺。建議重點掌握:點積的數學定義與計算步驟、幾何意義(夾角與相似度的關係)、以及在 Transformer 縮放點積注意力中的具體應用。
常見問題
點積和矩陣乘法是什麼關係?
矩陣乘法是點積的批量化版本。在計算矩陣乘積 C = A × B 時,結果矩陣 C 的每個元素 C[i][j] 等於 A 的第 i 列向量與 B 的第 j 欄向量的點積。因此如果 A 是 m×k 矩陣,B 是 k×n 矩陣,那麼計算 C 需要 m×n 次點積運算,每次點積對 k 個元素做逐元素乘法並加總。深度學習框架中的矩陣乘法算子(如 torch.matmul)正是利用 GPU 的並行計算能力,同時計算所有這些點積,這是深度學習模型能在 GPU 上高效運行的根本原因。
Transformer 的注意力機制為什麼要對點積除以根號 d_k?
這是為了防止點積值在維度很高時過大,進而導致 softmax 函數進入飽和區。當 Q 和 K 的維度 d_k 很大時,點積的期望方差會隨 d_k 增大而增大,造成某些點積值遠大於其他值,softmax 輸出會趨近於 one-hot 向量(只有最大值接近 1,其他接近 0)。這種極端的 softmax 輸出會導致梯度幾乎為零,模型難以學習。除以 sqrt(d_k) 可以將點積的方差控制在合理範圍,使 softmax 的輸出更加平滑,梯度流動更加順暢,訓練更加穩定。
為什麼向量相似度搜尋通常用點積而不是歐氏距離?
兩者各有適用場景,但在文字嵌入等應用中點積(或餘弦相似度)通常更合適。歐氏距離衡量的是兩點在空間中的絕對距離,受向量模長影響很大;如果兩個語義相近的詞語的嵌入向量模長差異很大(例如出現頻率不同導致的訓練效果差異),歐氏距離可能無法正確反映其語義相似性。餘弦相似度只關注向量的方向,不受模長影響。在實際系統中,如果將所有向量預先正規化為單位向量,餘弦相似度與點積等價,且可以利用高度優化的矩陣乘法批量計算,效率遠高於逐對計算歐氏距離。