線性代數系列視頻9 - 點積和兩重性
定義點積 (dot product):
v ⃗ ⋅ w ⃗ = [ v 1 v 2 v 3 ] ⋅ [ w 1 w 2 w 3 ] = v 1 w 1 + v 2 w 2 + v 3 w 3
\vec{v} \cdot \vec{w} =
\begin{bmatrix}
v_1 \\
v_2 \\
v_3 \\
\end{bmatrix}
\cdot
\begin{bmatrix}
w_1 \\
w_2 \\
w_3 \\
\end{bmatrix} =
v_1w_1+v_2w_2+v_3w_3
v ⋅ w = ⎣ ⎡ v 1 v 2 v 3 ⎦ ⎤ ⋅ ⎣ ⎡ w 1 w 2 w 3 ⎦ ⎤ = v 1 w 1 + v 2 w 2 + v 3 w 3
首先作者提及我們可能對點積這個概念有一定的理解,知道它可以通過做投影(projection)後相乘的方式被理解。但是爲何按照上述的定義,在數學操作層面,先把對應元素配對相乘後再相加得到的一個數值,會恰恰同幾何學上的一個特殊的投影變換操作(transformation)對應起來呢?
作者提醒我們從對偶性(duality)的角度去看待這個問題,由此也引出了所謂的點積的兩重性的概念。
正文
不同與數學書上的概念性解讀:
L ( a v ⃗ + b w ⃗ ) = a L ( v ⃗ ) + b L ( w ⃗ )
L(a\vec{v}+b\vec{w})=aL(\vec{v})+bL(\vec{w})
L ( a v + b w ) = a L ( v ) + b L ( w )
作者提出先從直觀上理解什麼是線性變換(linear transformation):
假設存在一個向量空間爲二維平面,任意找一條直線,假若一個函數能把其上均勻分佈(evenly spaced)的一系列點(也即是向量),都最終輸出爲一條新的直線,且對應的一系列點之間的距離也是均勻分佈的,那麼這個函數(變換)就是一個將二維輸入轉換爲一維輸出的線性變換。
事實上,只需知道變換 L L L 將 i ^ \hat{i} i ^ 和 j ^ \hat{j} j ^ 分別映射爲哪兩個數值,以這兩個數值構成的 1 × 2 1 \times 2 1 × 2 矩陣就完全表示了該變換。那麼,任意給定二維平面中的向量 u ⃗ \vec{u} u ,都可以由下式:
[ L ( i ^ ) L ( j ^ ) ] ⏞ T r a n s f o r m [ u 1 u 2 ] ⏟ V e c t o r = L ( i ^ ) ⋅ u 1 + L ( j ^ ) ⋅ u 2
\overbrace{ \begin{bmatrix}
L(\hat{i}) & L(\hat{j})
\end{bmatrix} }^{Transform}
\underbrace{ \begin{bmatrix}
u_1 \\
u_2 \\
\end{bmatrix} }_{Vector}=
L(\hat{i}) \cdot u_1 + L(\hat{j}) \cdot u_2
[ L ( i ^ ) L ( j ^ ) ] T r a n s f o r m V e c t o r [ u 1 u 2 ] = L ( i ^ ) ⋅ u 1 + L ( j ^ ) ⋅ u 2
唯一確定經變換後的一維輸出的數值。
注意到 :上式這個運算過程和前面點積的數學定義有着驚人的相似之處,這揭露了這樣一個事實,以列向量的形式存在的向量[ L ( i ^ ) L ( i ^ ) ] \begin{bmatrix} L(\hat{i}) \\ L(\hat{i}) \end{bmatrix} [ L ( i ^ ) L ( i ^ ) ] 本身,必然與以1 × 2 1 \times 2 1 × 2 矩陣形式存在的[ L ( i ^ ) L ( j ^ ) ] \begin{bmatrix} L(\hat{i}) & L(\hat{j}) \end{bmatrix} [ L ( i ^ ) L ( j ^ ) ] 線性變換存在密不可分的聯繫。
爲揭露這一聯繫,作者讓我們先忘記先前知道的點積與投影相關的知識:
任意找到斜放在二維平面且過原點的一維數軸,數軸的原點與二維平面的原點重合,考慮定義這樣一個特殊的變換(函數):輸入爲二維向量,將平面上的每一個二維向量(點)垂直投影到這條數軸上,輸出爲相應的一維座標數值。可以注意到這其實是個線性變換,因爲根據直觀檢驗,直線上的均勻點系列被輸出爲數軸上的均勻點系列(下面的3張圖片):
根據前面所學的知識,這個特殊的變換 L L L 可以表示爲矩陣形式 [ ? ? ] \begin{bmatrix} ?&?\end{bmatrix} [ ? ? ] ,只要先找到 i ^ \hat{i} i ^ 和 j ^ \hat{j} j ^ 分別被映射爲哪兩個數值,兩個問號被這兩個數值填充即可。在這個過程中,與傾斜數軸上單位長度所在點重合的二維單位向量 u ⃗ \vec{u} u 起着很關鍵的作用,它的存在方便了我們去理解其中的對偶性從何而來(下面的2張圖片):
由上面兩張圖所展示出的對偶性可以輕鬆的確定出變換 L L L 的矩陣形式爲[ u x u y ] \begin{bmatrix} u_x & u_y \end{bmatrix} [ u x u y ] ,巧合的是這恰恰就是 u ⃗ \vec{u} u 的橫縱座標值。相應的,任意向量 v ⃗ \vec{v} v 被映射爲:
[ u x u y ] ⏞ T r a n s f o r m [ v 1 v 2 ] ⏟ V e c t o r = u x ⋅ v 1 + u y ⋅ v 2
\overbrace{ \begin{bmatrix}
u_x & u_y
\end{bmatrix} }^{Transform}
\underbrace{ \begin{bmatrix}
v_1 \\
v_2 \\
\end{bmatrix} }_{Vector}=
u_x \cdot v_1 + u_y \cdot v_2
[ u x u y ] T r a n s f o r m V e c t o r [ v 1 v 2 ] = u x ⋅ v 1 + u y ⋅ v 2
這一投影變換的操作過程,同拋卻上述所展示的方法,純粹按定義實施任意單位向量 u ⃗ \vec{u} u 和任意向量 v ⃗ \vec{v} v 的點積 :
u ⃗ ⋅ v ⃗ = [ u x u y ] ⋅ [ v 1 v 2 ] = u x ⋅ v 1 + u y ⋅ v 2
\vec{u} \cdot \vec{v} =
\begin{bmatrix}
u_x \\
u_y \\
\end{bmatrix}
\cdot
\begin{bmatrix}
v_1 \\
v_2 \\
\end{bmatrix} =
u_x \cdot v_1+u_y \cdot v_2
u ⋅ v = [ u x u y ] ⋅ [ v 1 v 2 ] = u x ⋅ v 1 + u y ⋅ v 2
有着近乎完美的契合,從對比兩個過程所站立的
M a t r i x − V e c t o r P r o d u c t ⇔ V e c t o r P r o d u c t Matrix-Vector \ Product \Leftrightarrow Vector \ Product M a t r i x − V e c t o r P r o d u c t ⇔ V e c t o r P r o d u c t 這個角度,我們便能夠理解爲何將單位向量與另一個向量做點積可以解讀爲將該向量投影到單位向量所在的直線上,並取其投影長度(可正可負,計算結果是多少就是多少)這一特定的操作(變換),這就與我們的原有的認知相吻合。如果參與運算的不是單位向量而是任意向量,則可以將這個向量看作一個標量乘以單位向量,標量就是這個向量的模,因而最終變換的結果是投射長度乘以沒有變化的向量的模值(以下3張圖片):
思考一下這個過程,我們有一個從二維空間到數軸的線性變換,它並不是由向量數值或點積運算定義得到的,而只是通過將空間投影到給定數軸上來定義,但是因爲這個變換是線性的,所以它必然可以用某個1 × 2 1 \times 2 1 × 2 矩陣描述,又因爲1 × 2 1 \times 2 1 × 2 矩陣與二維向量相乘的計算過程和轉置該矩陣並求點積的計算過程相同,所以這個投影變換必然會與某個二維向量相關。這裏給你的啓發是,你在任何時候看到一個線性變換,它的輸出空間是一維數軸,無論它是如何定義的,空間中會存在唯一的向量 v ⃗ \vec{v} v 與之相關,就這一意義而言,應用變換和與向量 v ⃗ \vec{v} v 做點積是一樣的。
之後作者提及他對對偶性的粗略解讀:
duality指的是看似毫不相干的兩個數學概念之間的本質上的契合。
並舉這個視頻中學到的例子來說明:
一個向量的對偶是:由它定義的線性變換,而:
一個多維空間到一維空間的線性變換的對偶是:多維空間中的某個特定向量。
作者最終補充到:
兩個向量點乘,就是將其中一個向量轉化爲線性變換,在數值上強調它可能顯得沒有意義,因爲只是兩種看上去恰好相似的計算過程而已,但是我認爲這一過程非常重要,因爲從始至終你都在和向量打交道,一旦你真正瞭解了向量的“個性”,有時候你就會意識到,不把它看作空間中的箭頭,而把它看作線性變換的物質載體,會更容易理解向量。向量就彷彿是一個特定變換的概念性記號,因爲對我們來說,想象空間中的向量比想象整個空間移動到數軸上更加容易。
後記
我個人在看這個視頻的過程中,注意到視頻當中並沒有牽涉到基底的變換這部分的知識,即由矩陣表示的線性變換所涉及的兩組都是不言而自明的,默認都是在自然基底下。
事實上,有的線性代數教材,例如《線性代數及其應用》這本書在定義兩個向量的點積時是用下式定義的:
u ⃗ ⋅ v ⃗ = u ⃗ T v ⃗ = [ u 1 u 2 u 3 ] [ v 1 v 2 v 3 ] = u 1 v 1 + u 2 v 2 + u 3 v 3
\vec{u} \cdot \vec{v} = \vec{u}^T \vec{v} =
\begin{bmatrix}
u_1 & u_2 & u_3
\end{bmatrix}
\begin{bmatrix}
v_1 \\
v_2 \\
v_3
\end{bmatrix} =
u_1v_1 + u_2v_2 + u_3v_3
u ⋅ v = u T v = [ u 1 u 2 u 3 ] ⎣ ⎡ v 1 v 2 v 3 ⎦ ⎤ = u 1 v 1 + u 2 v 2 + u 3 v 3
當時我就不能理解爲什麼定義兩個以列向量形式存在的向量之間的一種運算,會涉及到把其中一個向量轉置爲行向量?這個視頻的知識結合我在《線性代數應該這樣學》中對線性變換的理解,才意識到原來《線性代數及其應用》的作者把那個式子當作點積的定義式其實是不太合理的,應該定義爲:
u ⃗ ⋅ v ⃗ = [ u 1 u 2 u 3 ] ⋅ [ v 1 v 2 v 3 ] = u 1 v 1 + u 2 v 2 + u 3 v 3
\vec{u} \cdot \vec{v} =
\begin{bmatrix}
u_1 \\
u_2 \\
u_3
\end{bmatrix}
\cdot
\begin{bmatrix}
v_1 \\
v_2 \\
v_3
\end{bmatrix} =
u_1v_1 + u_2v_2 + u_3v_3
u ⋅ v = ⎣ ⎡ u 1 u 2 u 3 ⎦ ⎤ ⋅ ⎣ ⎡ v 1 v 2 v 3 ⎦ ⎤ = u 1 v 1 + u 2 v 2 + u 3 v 3 並且在定義該式之後,補充上這樣一句:
[ u 1 u 2 u 3 ] ⋅ [ v 1 v 2 v 3 ] 可 以 等 價 理 解 爲 [ u 1 u 2 u 3 ] [ v 1 v 2 v 3 ] \begin{bmatrix}
u_1 \\
u_2 \\
u_3
\end{bmatrix}
\cdot
\begin{bmatrix}
v_1 \\
v_2 \\
v_3
\end{bmatrix}可以等價理解爲\begin{bmatrix}
u_1 & u_2 & u_3
\end{bmatrix}
\begin{bmatrix}
v_1 \\
v_2 \\
v_3
\end{bmatrix} ⎣ ⎡ u 1 u 2 u 3 ⎦ ⎤ ⋅ ⎣ ⎡ v 1 v 2 v 3 ⎦ ⎤ 可 以 等 價 理 解 爲 [ u 1 u 2 u 3 ] ⎣ ⎡ v 1 v 2 v 3 ⎦ ⎤ ,這樣纔可以稱得上在邏輯體系上是很完善的了。