目錄

向量到底是 1 維還是 5 維?搞懂 Dimension 的兩種意義

在讀線性代數或深度學習的教材時,很快就會碰到一組說法:純量 (Scalar) 是 0 維、向量 (Vector) 是 1 維、矩陣 (Matrix) 是 2 維,超過 3 維就統稱為張量 (Tensor)。(Scalar、Vector 與 Matrix 其實也都可以視為 Tensor,只是軸數比較少而已)

但同一本書再往下翻幾頁,看到像 [1, 2, 3, 4, 5] 這種包含 5 個數字的 Vector 時,作者又會說它是一個「5 維的向量」。

一下 1 維、一下 5 維,Vector 到底是幾維?這篇文章會先把 Scalar、Vector、Matrix 與 Tensor 的關係整理清楚,再回頭回答這個問題。先講結論:Dimension 這個詞在上面兩句話裡,指的根本不是同一件事。

要回答前面的問題,得先把這四個名詞放在同一個框架下看。TensorFlow 的說法最直接:它們全都是 Tensor,差別只在於有幾個「軸」(Axes)。

Scalar、Vector 與 Matrix 三者的對照示意圖,分別以單一數值、一列數值、二維表格呈現,並標出各自的 shape。
Scalar、Vector 與 Matrix 的對照 [source: TensorFlow]
  • Scalar 就是一個數字 (Single Value),它的 shape 中沒有任何元素,也就是沒有任何軸,可以稱它為 Rank-0 的 Tensor。
  • Vector 是一串數字 (List of Values),它的 shape 中有一個元素,代表它具有一個軸,也就是 Rank-1 的 Tensor。
  • Matrix 由兩個軸的元素組成,因此 shape 中有兩個元素,也就是 Rank-2 的 Tensor。

「軸」聽起來抽象,換個角度想就很好懂:要從這個結構裡取出一個數字,需要幾個索引?Scalar 不需要索引,Vector 需要一個(v[2]),Matrix 需要兩個(m[1][2])。索引的個數就是 Rank。

軸再往上加,就不再另外取名字了。

三個軸的 Tensor 示意圖,數值方塊以立方體的形式堆疊排列,shape 由三個元素構成。
三個軸以上的 Tensor [source: TensorFlow]

當軸數來到 3 個以上時,我們就通稱為 Tensor,此時的 shape 中有 3 個元素,也可以稱其為 Rank-3 的 Tensor。這種形狀在實務上很常見,例如一張 RGB 圖片就是(高、寬、通道)三個軸。

由此可知,當我們說 Scalar 是 0-Dimension、Vector 是 1-Dimension、Matrix 是 2-Dimension 時,這裡的 Dimension 指的是「軸」的數量。

然而,如果我們只聚焦在 Vector 上,意思就換了一個。描述一個 Vector 的 Dimension 時,其實是在描述它所處的「向量空間」(Vector Space) 有幾維,也就是這個 Vector 裡有幾個元素。舉例來說:

  • [1, 2, 3] 處在 3-Dimension Vector Space
  • [-1, -5, 4, 5, 8] 處在 5-Dimension Vector Space
  • [0, 0, 0, 0, 0, 0, 0] 處在 7-Dimension Vector Space

一個更貼近實務的例子是 MNIST 手寫數字圖片:一張 28 × 28 的圖片攤平後會變成一個包含 784 個元素的 Vector,所以它就處在 784-Dimension Vector Space 裡,也就是俗稱的「784 維向量」;而對應的答案標籤則是一個 10 維向量。

由此可知,Dimension 有兩種意義:

  • Vector 中的元素數量(代表這一個 Vector 所處的 Vector Space)
  • Tensor 的軸數(代表這一個 Tensor 的 Rank)

回到開頭那個問題:[1, 2, 3, 4, 5] 說它是 1 維或 5 維都沒錯,因為兩種說法在數的東西不一樣。它只有一個軸,所以是 Rank-1、1-Dimension 的 Tensor;同時它有 5 個元素,落在 5 維的向量空間中,所以也是一個 5 維向量。

實際判斷時看上下文就行:談的是資料的「形狀」還是「內容」?在 NumPy、PyTorch 這類框架裡講 dimension,通常是 shape、rank 那一種(例如 ndim);在線性代數的脈絡裡講 dimension,多半指的是向量空間的維度。

Scalar、Vector、Matrix 與 Tensor 的差別,說白了就是軸數的多寡。而 Dimension 這個詞會依脈絡指向兩件不同的事:Tensor 的軸數 (Rank),或是一個 Vector 內含多少元素(也就是它所處向量空間的維度)。下次看到「1 維向量」跟「5 維向量」同時出現時,先確認對方是在數軸還是在數元素,大部分的混淆就解開了。