本文為原創(chuàng)文章,歡迎轉(zhuǎn)載肮雨,但請(qǐng)務(wù)必注明出處剿吻。
上文介紹從運(yùn)動(dòng)的角度直觀的理解向量拾弃,這一節(jié)主要介紹線性變換及其與矩陣的關(guān)系讯檐。
線性代數(shù)的核心之一是線性變換羡疗,英文是linear transformation。變換(transformation)可以理解為一個(gè)函數(shù)(function) f(x)别洪,對(duì)于線性代數(shù)來說叨恨,函數(shù)的輸入就是一個(gè)向量,而輸出則是變換后的向量挖垛。一種理解這種”向量的函數(shù)“的方法是使用運(yùn)動(dòng)痒钝,即用”運(yùn)動(dòng)“的思維來思考”變換“。當(dāng)輸入是一個(gè)向量痢毒,經(jīng)過變換后的輸出是另一向量送矩,相當(dāng)于這個(gè)輸入向量移動(dòng)到了對(duì)應(yīng)的輸出向量位置。從系統(tǒng)整體上來考慮哪替,變換可以看成將每一個(gè)輸入向量都移動(dòng)到了對(duì)應(yīng)輸出向量的位置栋荸。比如在平面(二維空間)上,每一點(diǎn)(即每一個(gè)向量)經(jīng)過變換都被移動(dòng)到了對(duì)應(yīng)的其他位置凭舶。
變換包括線性變換和非線性變換晌块,這些變換可以對(duì)空間里的對(duì)象(即向量)進(jìn)行升降維,縮放帅霜,旋轉(zhuǎn)匆背,平移和扭曲。比如义屏,在神經(jīng)網(wǎng)絡(luò)中常見的是輸入向量加權(quán)后再加上偏移量靠汁,最后放到激活函數(shù)里,即
其中闽铐,W 是神經(jīng)網(wǎng)絡(luò)中某一層的權(quán)重矩陣蝶怔,b 是該層上每個(gè)神經(jīng)元的偏移向量, σ(?) 是激活函數(shù)兄墅。于是踢星,W?x 可以看成是使用權(quán)重矩陣 W 對(duì)輸入向量 x 進(jìn)行里變換,變換的結(jié)果是對(duì)輸入向量進(jìn)行了降維隙咸,縮放或旋轉(zhuǎn)(即線性變換)沐悦;而加上偏移向量 b 就是對(duì)線性變換結(jié)果 W?x 進(jìn)行了平移 (其實(shí) W?x+b 就是仿射變換(affine tranformation));而激活函數(shù) σ(?) 的運(yùn)用就是對(duì)結(jié)果進(jìn)行扭曲五督、擠壓和變形(非線性變換)藏否,很有意思吧。
回過頭來冠场,上面說了變換既是函數(shù)又是運(yùn)動(dòng),這個(gè)怎么理解呢本砰?其實(shí)我們的高等數(shù)學(xué)因?yàn)橐霕O限的概念研究的就是”運(yùn)動(dòng)的數(shù)學(xué)“ [1]碴裙。既然是運(yùn)動(dòng),那么就一定有方向和大小点额,這就是為什么向量可以求導(dǎo)舔株,為什么用梯度下降算法求最小值時(shí)需要沿著負(fù)梯度方向更新,這些在后面會(huì)介紹咖楣。
1督笆、線性變換
在這里我們只關(guān)注線性變換芦昔,直觀上線性變換需要滿足兩個(gè)條件[4]:
- 直線在變換后仍然保持為直線诱贿,不能有所彎曲;
- 原點(diǎn)必須保持固定咕缎,即線性變換前后原點(diǎn)的位置保持不變珠十。
對(duì)于第1條,比如在直角坐標(biāo)系中雖然變換后的坐標(biāo)線是直線凭豪,原點(diǎn)也沒變化焙蹭,但是坐標(biāo)上的刻度間隔距離發(fā)生變化,導(dǎo)致原坐標(biāo)系里的對(duì)角線在變換后發(fā)生了彎曲嫂伞,這樣的變換也不是線性變換孔厉。也就是說,線性變換是”保持網(wǎng)格線平行且同一個(gè)方向上(如x-軸方向或y-軸方向)等距分布“的變換[4]帖努,如圖二撰豺。如果1滿足,2不滿足拼余,則是仿射變換 affine transform污桦,在計(jì)算機(jī)圖形學(xué)中常用。
好了,到這里在直觀上已經(jīng)對(duì)線性變換有了直觀的了解:線性變換就是空間中的向量從一個(gè)位置運(yùn)動(dòng)到另一個(gè)位置达罗。那么如何來描述這個(gè)運(yùn)動(dòng)呢坝撑?
2、用矩陣描述線性變換
線性變換是空間中向量的線性運(yùn)動(dòng)(沿著直線移動(dòng)),那么這種向量的直線移動(dòng)該如何度量呢绍载,怎樣從數(shù)學(xué)上來描述這種移動(dòng)诡宗?前面我們說了要從系統(tǒng)整體上來考慮,變換可以看成將每一個(gè)輸入向量都移動(dòng)到了對(duì)應(yīng)輸出向量的位置击儡。注意塔沃,這里說的是空間中的每一個(gè)輸入向量的移動(dòng)都考慮進(jìn)來。而第一節(jié)中我們介紹了空間是基向量的張成阳谍,也就是說空間中的每一個(gè)輸入向量都可以用基向量線性表示蛀柴。所以,我們只需要對(duì)空間中的基向量進(jìn)行相應(yīng)的線性變換矫夯,然后變換后的向量就可以用這個(gè)變換后的基向量進(jìn)行線性組合鸽疾。
回憶在第一節(jié)時(shí)候我們介紹了向量的線性組合如下:
由于線性組合可以用矩陣與向量的乘積表示,于是假設(shè)矩陣 A=[v1 … vn]训貌, 即矩陣 A 的列是由向量 v1 … vn 組成制肮,那么上式可以表示成:
其中,
我們回到線性變換递沪,我們剛剛說了”變換后的向量可以用這個(gè)變換后的基向量進(jìn)行線性組合“豺鼻,那么就是說我們可以用變換后的基向量來作為矩陣 A 的列,這個(gè)時(shí)候矩陣 A 乘以任意輸入向量就可以得到變換后的輸出向量(比如這里的向量 α 就可以看成是一個(gè)輸入向量)款慨。到這里儒飒,我們將矩陣和線性變換聯(lián)系起來了,簡(jiǎn)單總結(jié)就是:
- 線性變換就是在空間移動(dòng)輸入向量
- 由于任何向量都可以是空間基向量的線性組合檩奠,所以向量的線性變換可以看成兩步:首先對(duì)基向量進(jìn)行變換桩了;然后,變換后的基向量進(jìn)行線性組合得到輸出向量埠戳。
- 如果一個(gè)矩陣 A 的列由變換后的基向量組成井誉,那么矩陣 A 就描述這個(gè)線性變換。不同的線性變換規(guī)則會(huì)得到不同的矩陣乞而,而這些矩陣就是相似矩陣送悔,后面會(huì)介紹。
還有一個(gè)地方值得說一下爪模,第三節(jié)的時(shí)候我們?cè)诮忉審埑傻臅r(shí)候欠啤,我們提到過”縮放基向量再相加“的思想,也就是首先固定基向量屋灌,只改變每個(gè)基向量的長(zhǎng)度進(jìn)行縮放洁段,然后相加后就可以張成整個(gè)空間。而線性變換可以看成是一個(gè)相反的運(yùn)算過程:線性變換首先固定了縮放大泄补(也就是上面說的輸入向量 α )祠丝,根據(jù)不同的線性變換規(guī)則得到變換后的基向量(即基向量變化了疾呻,也就是改變基向量的長(zhǎng)度和方向),從而得到變換后向輸出向量写半。
在數(shù)學(xué)計(jì)算上岸蜗,變換后的基向量組成了矩陣 A 的列,他乘以輸入向量就得到了輸出向量叠蝇。 我們可以把矩陣 A 左乘向量 x (即 Ax)就看成是向量 x 的一個(gè)函數(shù) f(x)璃岳。
說到這里還是比較抽象,舉例吧(非常重要悔捶,下面的例子基于[4])铃慷。
首先,平面上直角坐標(biāo)系的兩個(gè)標(biāo)準(zhǔn)基向量分別為 i? =[1,0]? 和 i? =[1,0]?蜕该,那么對(duì)于平面里一個(gè)向量 [?1,2]?=?1i? +2j? (即基向量的線性組合犁柜,如圖三)。
如何對(duì)向量 [?1,2]? 進(jìn)行線性變換呢?然后首先對(duì)標(biāo)準(zhǔn)基向量 i? 和 j? 進(jìn)行變換等到變換后的基向量淤齐,然后對(duì)變換后的基向量進(jìn)行同樣線性組合就可以得到變換后的向量(如圖四)股囊。這里的”同樣線性組合“就是上面說的變換后的基向量進(jìn)行線性組合時(shí)的縮放不變(即仍然是-1和2)袜匿。
從這里看出,線性變換首先需要確定的是基向量應(yīng)該如何變換怪嫌,即確定矩陣 A义锥。比如這個(gè)例子,首先確定標(biāo)準(zhǔn)基向量 i? 和 j? 的變換方式岩灭,即
那么對(duì)于任意輸入向量 [x,y]? 都可以由變換后的基向量的線性組合得到輸入向量:
其中矩陣 A 的列是由變換后的基向量 i? 和 變換后的基向量 j? 組成拌倍。
這就是線性變換!
3噪径、矩陣與矩陣相乘及線性變換復(fù)合
為什么有矩陣與矩陣相乘柱恤?矩陣與矩陣相乘到底該如何理解?在線性變換里得到了很好的解釋找爱。
舉個(gè)例子(例子來自[4])梗顺,比如二維平面中我們首先定義線性變換規(guī)則:首先逆時(shí)針旋轉(zhuǎn)旋轉(zhuǎn)90度,然后再”剪切(shear)“一次车摄。
首先寺谤,基向量 i? 和 j? 經(jīng)過逆時(shí)針旋轉(zhuǎn)90度后分別變換為:
所以逆時(shí)針旋轉(zhuǎn)90度后的”變換矩陣“ A 為:
接著第二步進(jìn)行”剪切(shear)“仑鸥,剪切就是保持基向量 i? 不變,而 j? 旋轉(zhuǎn)到對(duì)角線上变屁,即
所以”剪切“變換的”變換矩陣“ B 為:
這個(gè)過程下圖五所示眼俊。
這種分多個(gè)不同線性變換步驟后完成的最終的變換就是”線性變換復(fù)合(composition)“。具體到這個(gè)例子誊役,最終的線性變換就是旋轉(zhuǎn)與剪切兩個(gè)連續(xù)變換的復(fù)合获列,即首先對(duì)基向量 i? 和 j? 進(jìn)行逆時(shí)針90度旋轉(zhuǎn),得到作為中間結(jié)果的變換后的基向量 i? 和 變換后的基向量 j? 蛔垢;然后再對(duì)這個(gè)中間結(jié)果的變換后的 i? 和 變換后的 j? 進(jìn)行剪切變換击孩,得到最終的的變換后的 i? 和 變換后的 j? 。
在第一節(jié)的時(shí)候也提到過”復(fù)合“鹏漆,那么什么是復(fù)合呢巩梢?復(fù)合就是矩陣與矩陣相乘相乘! 很有意思吧艺玲,矩陣與矩陣相乘可以看成是把一個(gè)線性變換拆成多個(gè)步驟括蝠,回憶一下,在概率論里我們?cè)谇舐?lián)合概率不也是這樣的道理嗎饭聚?
那么這兩個(gè)矩陣應(yīng)該怎么相乘呢忌警?上面我們說到,對(duì)向量進(jìn)行線性變換就是左乘一個(gè)矩陣秒梳。所以法绵,多個(gè)連續(xù)的線性變換就是相應(yīng)的“變換矩陣”按順序依次左乘! 另外酪碘,一個(gè)線性變換可以看成是一個(gè)函數(shù)朋譬,那么多個(gè)線性變換就可以看成復(fù)合函數(shù)!
回到上面的例子兴垦,假設(shè)平面上任意一個(gè)向量 [x,y]?徙赢,對(duì)他進(jìn)行上面的旋轉(zhuǎn)和剪切的線性變換,那么就是依次對(duì)該向量左乘矩陣 A 和 矩陣 B:
由于矩陣相乘符合結(jié)合律探越,所以上式可以寫成:
上面兩個(gè)式子的結(jié)果完全相同狡赐,為什么呢?其實(shí)是因?yàn)?/p>
等式右邊的矩陣 C(即復(fù)合矩陣)的列剛好分別是基向量 i? 和基向量 j? 經(jīng)過逆時(shí)針90度旋轉(zhuǎn)和剪切后對(duì)應(yīng)的位置扶关,這也可以看成是基向量 i? 和基向量 j? 只經(jīng)過一個(gè)步驟就完成了上面需要連續(xù)兩個(gè)步驟才能完成的變換阴汇,所以本質(zhì)上式一樣的,所以相等节槐。
這里也可以看出因?yàn)橄冗M(jìn)行逆時(shí)針90度旋轉(zhuǎn)再進(jìn)行剪切得到的線性變換結(jié)果搀庶,與先進(jìn)行剪切再進(jìn)行逆時(shí)針90度旋轉(zhuǎn)得到的線性變換結(jié)果是不一樣的拐纱,這就是直觀的解釋了矩陣與矩陣相乘沒有交換律,即
4哥倔、相似矩陣
第一節(jié)和第三節(jié)中我們說過秸架,空間的基向量不是唯一的,即可以同一個(gè)空間可以選定不同的基向量(其實(shí)空間的基向量確定空間的坐標(biāo)系咆蒿《ǎ基向量不同,坐標(biāo)系也不同)沃测,那么相同的線性變換就可能有不同的轉(zhuǎn)換矩陣表示形式缭黔。那么屬于相同線性變換的轉(zhuǎn)換矩陣有什么關(guān)系呢?比如烏龜穿上馬甲與沒穿上馬甲都應(yīng)該是同一個(gè)烏龜蒂破,不能說穿上了馬甲就不認(rèn)識(shí)了馏谨。烏龜穿上馬甲與沒穿上馬甲應(yīng)該是應(yīng)該是同一個(gè)事物的不同表現(xiàn)形式,他們應(yīng)該是相似的附迷。
相似矩陣就是這個(gè)意思惧互,相似矩陣可以看成是同一個(gè)線性變換的不同描述,即如果矩陣 A與 B 是同一個(gè)線性變換的兩個(gè)不同的描述喇伯,則一定能找到一個(gè)非奇異矩陣 P喊儡,使得 A與 B 滿足[3]:
5、小結(jié)
本文介紹了線性變換與矩陣的關(guān)系稻据,主要介紹了:
- 矩陣作為向量的線性變換的描述艾猜,矩陣左乘向量,其結(jié)果就是將向量從一個(gè)位置變換(移動(dòng))到另一個(gè)位置攀甚;
- 矩陣作為一組基向量的線性變換的描述箩朴,矩陣左乘一個(gè)以一組基向量作為列向量的矩陣,就是把線性空間中的一個(gè)坐標(biāo)系(由一組基向量決定)變換到另一個(gè)坐標(biāo)系(由變換后的一組基向量決定)秋度。
References:
- 《重溫微積分》,齊民友
- Neural Networks, Manifolds, and Topology
- 理解矩陣
- 3Blue1Brown