平常生活或生產實際中常常須要求一些量,用未知數 x1,x2,....,xn表示這些量,根據問題的實際狀況列出方程組,而最多見的就是線性方程組(固然並非說只能用線性方程組,深度神經網路里就是非線性方程組)。html
須要特別理解和思考的是,數學的各個分支以及天然科學、工程技術中,有很多問題均可以概括爲線性方程組的問題,養成抽象思惟很是重要。 算法
某食品廠收到了某種食品2000kg的訂單,要求這種食品含脂肪5%,碳水化合物12%,蛋白質15%。該廠準備用5種原料配置這種食品,其中每一種原料含脂肪、碳水化合物、蛋白質的百分好比下表示:數組
如今的問題是:可否用上述5種原料配置出2000kg的這種食品?若是能夠,那麼有多少種這種配方?若是不能夠,那麼如何在知足養分成分的狀況下,儘可能的靠近目標產量(2000kg)。網絡
這是一個很是貼近現實業務的問題,咱們從這個例子出來,來一塊兒體會下機器學習是如何運用線性方程組來解決這種問題的。app
設每種原料(A一、A二、A三、A四、A5)所須要的的量分別爲 x1,x2,x3,x4,x5,則將上述問題場景抽象爲以下線性方程組:機器學習
這個方程是咱們在初高中學習中很是熟悉的行方程組,從行視角來看,4行方程組5個未知數,沒法徹底消元,所以方程組的解有無數多個。對應到問題自己的現實場景就是,在實數域空間(強調重點)有無數種搭配方案能夠知足題目的要求。svg
筆者思考:列向量相比行向量,有一種瞬間穿透事物表面,洞悉事物所有內核的哲學意味。若是把行向量比做量的累計,那麼列向量則是質的變化,直接縱向穿透事物的全部維度。函數
上面的問題還能夠用代數學的視角來從新思考,接下來咱們用線性代數的相關知識來重寫上述線性方程組。post
咱們把上述方程組的係數和常數項以列向量的形式抽象爲一個增廣矩陣:學習
在這個場景中,列向量的物理意義仍是相對明確的,即:每kg原料中包含了4個維度的物質量,這4個維度分別爲【原料重量,脂肪量,碳水化合物量,蛋白質量】。A1,A2,A3,A4,A5這5種原料構成了5個實例(樣本),每一個數據樣本的特徵維度是4。
將改增廣矩陣中係數據很和常數矩陣分別寫成列向量組的形式:
,
,其中,
。注意向量的轉置。
,
將要求解的未知量用向量組w來表示:
,
,一個w行向量4個維度都相同,即一個w行向量是一個1維向量。
它的物理意義是:每kg原料中,對4個維度的物質分別包含多少kg的原料。
用向量組簡寫形式表達上面增廣矩陣:
這個公式就是從列向量的角度從新看線性方程組。
筆者思考:在這題的特定場景下,這裏w1必須是1維的列向量,由於這是一個現實物理世界中的問題,咱們不能說咱們取了1kg的原料,咱們同時也取了2kg的原料,這是不符合現實的。
可是在其餘的抽象邏輯場景中,參數向量w經常能夠是高維向量,例如深度神經網絡中,參數權重向量w經常是上百甚至上千維的向量,從這個例子也能夠更直觀地體會到,更高維度的w向量,意味着咱們對輸入向量X中的不一樣維度能夠由更細粒度的「取捨和控制」,more dimension,more complex。
圍繞上述線性方程組,須要研究下列幾個問題:
1. 線性方程組是否必定有解?若是有解,有多少個解? 2. 如何求線性方程組的解?如何高效地求解? 3. 線性方程組有解時,它的每個解是否都符合實際問題的需求,就像上面第一小節的線性方程組,在是屬於上這個線性方程組有無窮多的解,可是實數域在現實世界每每不太實用,大多時候咱們會選擇整數域或者一個有限精度的浮點數域,這樣解的個數就是有限的了。 4. 線性方程組的解不僅一個時,這些解之間有什麼關係?
咱們在實際業務場景中遇到的建模和機器學習問題,基本上能夠概括爲上述問題的抽象和組合。
文章的接下來部分,咱們會圍繞上面的幾個問題展開討論。
Relevant Link:
http://liyangbit.com/math/jupyter-latex/ 《簡明線性代數》 - 丘維聲教授 https://zhuanlan.zhihu.com/p/33691914 內含B站的一組線性代數教學視頻,講的超級通俗易懂
利用向量的加法運算和數乘運算,咱們能夠把數域K上的n元線性方程組:
寫成:
令:
則該線性方程組可寫成:
因而,數域K上的線性方程組有解,等價於下面兩種表達:
K中存在一組數,c1,c2,...,cn,使得成立;即 β 能夠由a1,a2,...,an線性表出。
在上一小節中,咱們把線性方程組有沒有解的問題歸結爲:常數項列向量能不能由係數矩陣的列向量線性表出。接下來問題就是,如何研究中一個向量能不能由一個向量組線性表示呢?
這個問題涉及到向量組的線性相關性的討論,咱們由淺入深,藉助咱們容易理解的3維幾何空間來逐漸理解這個概念。
實數域R上的3維向量空間的元素是3元有序實數組。在幾何空間(由全部以原點爲起點的向量組成)中,取定一個作個座標系後,每一個3元有序實數組表示一個向量。所以能夠把
當作幾何空間。這樣咱們能夠從幾何空間出發,來研究
中一個向量可否由向量組線性表出的問題。
在幾何空間中,設 a1 和 a2 不共線(這是向量基的充分條件)。
若是 a3 能夠由 a1,a2 線性表出,則 a1,a2,a3 共面;
若是 a3 不能由 a1,a2 線性表出,則 a1,a2,a3 不共面;
從解析幾何角度咱們知道:
a1,a2,a3 共面的充分條件是有不全爲零的實數 k1,k2,k3,使得 k1a1 + k2a2 +k3a3 = 0;
a1,a2,a3 不共面的充要條件是:從 k1a1 + k2a2 +k4a4 = 0,直接推出 k1 = 0,k2 = 0,k4 = 0,即只有零解。
從幾何空間的上述例子受到啓發,在中爲了研究一個向量可否由一個向量組線性表出,就須要研究上述兩種類型的向量組,即定義一組向量基,而且計算該向量可否由該向量基線性表出。
下面給出向量組線性相關和線性無關的抽象定義公式,具體如何數值化計算該公式,咱們文章後面繼續深刻討論。
中向量組
稱爲線性相關的,若是有K中不全爲零的數
,使得
。
從線性組合視角來看:即它們有係數不全爲零的線性組合等於零向量。
從線性表出視角來看:即向量組中至少有一個向量能夠由其他向量線性表出,也能夠說這個向量組存在冗餘向量,後面討論PCA的時候會再談到這點。
從齊次線性方程組視角來看:即齊次線性方程組有非零解。
從行列式視角來看:n個n維行向量線性相關當且僅當以
爲行向量組的矩陣的行列式等於零。
中向量組
若是不是線性相關的,則稱爲線性無關的,即若是從
能夠推出全部係數
全爲0,則稱向量組
是線性無關的。
從線性組合視角來看:即它們只有係數全爲零的線性組合纔會等於零向量。
從線性表出視角來看:向量組中每個向量都不能由其他向量線性表出。
從齊次線性方程組視角來看:即齊次線性方程組只有非零解。
從行列式視角來看:n個n維行向量線性相關當且僅當以
爲行向量組的矩陣的行列式不等於零。
根據上述定義以及解析幾何的結論能夠獲得第一小節的問題:
1. 幾何空間中,共面的3個向量是線性相關的,不共面的3個向量是線性無關的; 2. 共線的2個向量是線性相關的,不共線的2個向量是線性無關的;
1. 若是一個向量組線性無關,則它的任何一個部分組也線性無關;
筆者思考:若是高維的向量組是線性無關的,則它的低維子集組一樣也是」緊密的「,即線性無關。
2. 若是一個向量組線性相關,則該向量組中必定存在某個縮短組也線性相關;
咱們能夠藉助3維空間來理解這個定義,下圖中,向量E是一個(x,y,z)3維向量,B和C都是(-x,-y,0)的2維平面上的向量,D是(x,y,0)的2維平面向量,D的方向和B/C相反。
能夠很容易理解,向量組(B,C,D,E)是線性相關的。同時該向量組的一個縮短組(B,C,E)是線性相關的。
可是也容易看到,另外一個縮短組(B,C)是線性無關的。
筆者思考:一個向量組是線性相關的,能夠理解爲這個向量組中存在一個冗餘結構,若是對應的部分組(縮短組)包含了這個冗餘結果則該縮短組也一樣是線性相關的,但若是該縮短組足夠」小「,不包含該冗餘結構,則該部分組是線性無關的。須要讀者朋友注意的是,從3維幾何空間來看線性相關和線性無關很是形象,可是到了更高維的空間就須要藉助公式的推導和定義,由於高維空間超出人的想象空間了。
1. 若是一個向量組的一個部分組線性相關,則整個向量組(延伸組)也線性相關;
證實:
設向量組的一個部分組,例如說
線性相關,則有數域K中不全爲零的數 k1,k2,...,kt,使得
。
從而有。
因爲不全爲零,所以
線性相關。
筆者思考:若是咱們將線性相關理解爲一個存在冗餘的的空間結構的話,低維的部分組若是存在冗餘結構,則維度升高到更高維後,這種冗餘度必然是繼續存在的(用真子集的概念來理解)。
筆者思考:這個很容易理解,一個緊密結構的的向量組,當擴充新的向量進來後,有可能會破壞這種緊密結構。
咱們來一塊兒看一個特殊的線性無關向量組。
在中,向量組」
是線性無關的。證實:
設,即
從而:
由此得出,所以向量組
是線性無關的。
值得注意的是,這個向量組不只是相關無關的,並且向量組內的向量仍是彼此正交的,這樣的向量組能夠做爲其餘向量組的正交基。
上個章節中咱們討論了向量組中部分組和由部分組線性表出一個另外一個向量的話題。
接下來新的問題來了,部分組能夠隨意選取嗎?隨便一個部分組均可以線性表出原向量組中的其他向量嗎?若是不是,那這個部分組的向量個數是多少呢?部分組的選取是惟一的嗎?
帶着這些問題,咱們來討論向量組的秩的問題。
如上圖所示,幾何空間中,設 a1,a2,a3 共面,而且 a1,a2,a3 兩兩不共線。
它的一個部分組 a1,a2 線性無關;
部分組 a1 也線性無關;
部分組 a1,a2 和部分組 a1 雖然都線性無關,可是它們有區別:
對於部分組 a1 來講,添加上 a3 後獲得的部分組 a1,a3 仍然線性無關;
而部分組 a1,a2 添加上 a3 後獲得的 a1,a2,a3 就線性相關的了;
從幾何的視角來看,a1加上a3後,沒有改變部分組的「線性無關緊密結構」。而 a1,a2 加上 a3 後,再也沒法保持原部分組的」線性無關緊密結構「,變成了線性相關。
這個性質很是有趣,也很是有用,在不少算法中,咱們都須要獲取並利用這個極大線性無關組。
中向量組的一個部分組稱爲一個極大線性無關組,當且僅當這個部分組自己是線性無關的,可是從向量組的其他向量(若是還有的話)中任取一個添加進去,獲得的新的部分組都線性相關。
在上述例子中,a2,a3 和 a1,a3 都是 a1,a2,a3 的一個極大線性無關組。
能夠看到,這2個極大線性無關組的向量個數是相等的,這個性質是廣泛存在的嗎?這2個極大線性無關組之間的關係是怎樣的?互相等價的嗎?
若是向量組的每個向量均可以由向量組
線性表出,則稱向量組
能夠由向量組
線性表出。
進一步,若是向量組能夠由向量組
能夠互相線性表出,則稱向量組
能夠由向量組
等價,記做
.
向量組的等價是向量組之間的一種關係,這種關係具備下述三條特性:
1. 反身性:任何一個向量組都與自身等價; 2. 對稱性: 3. 傳遞性:
由上述基本特性能夠推出:向量組的任意兩個極大線性無關組等價。
須要注意的是,向量組的等價性質,不是數值意義上的等價,而是解空間結構的等價性。 兩個向量組等價,是在說這兩個向量組的解空間結構相同。解空間結構相同,進而這兩個向量組的秩也相同,秩能夠理解爲描述解空間結構維度的度量。
這裏仍是從空間幾何角度來幫助理解。
設 a1,a2 不一樣線。若是能夠由 a1,a2 線性表出,則
必定共面,以下圖所示:
能夠看到,向量組雖然有3個向量,可是由於和向量組 a1,a2 等價,因此它的秩依然是2。
設 a1,a2 同線,若是能夠由 a1,a2 線性表出,則
必定共線,即秩爲1,以下圖:
由上述能夠推出一個推論:等價的線性無關的向量組所含向量的個數相等。
這個推論和咱們本章的標題本質是一致的:
方程組(向量組)的解空間結構,就是由該向量組的全部等價的極大線性無關組組成的。其中每一個極大線性無關組都是線性無關的,且他們的向量個數相同(等價的向量組有相同的秩),等於原向量組的秩。
向量組的極大線性無關組所含向量的個數稱爲這個向量組的秩。
有了上面章節的鋪墊後,接下來能夠來討論咱們如何直接用線性方程組的係數和常數項判斷方程組有沒有解,有多少解的問題。
線性方程組有解的充要條件是:它的係數矩陣A與增廣矩陣A'有相同的秩。這個定理能夠這麼理解,線性方程組有解,等價於:
存在一組不全爲0的{a1,...,an},使得有解;
也即 β 能夠由向量組線性表出;
也即向量組線性相關;
向量組是向量組
的一個極大線性無關組,向量組
和向量組
等價;
須要注意的是,這個定理只能判斷線性方程組是否有解,至因而有惟一解仍是有無窮解沒法判斷。
線性方程組有解時,若是它的係數矩陣A的秩等於未知量的個數n,則方程組有惟一解;
若是A的秩小於n,則方程組有無窮多個解;
其次線性方程組有非零解的充要條件是:它的係數矩陣的秩小於未知量的個數;
齊次線性方程組比較特殊,若是它又惟一解那必定是零解,所以其次線性方程組要麼無解,要麼有無窮多個解。
討論了通用線性方程組解的通常性質以後,咱們來縮小範圍,將討論視角集中在齊次線性方程組,齊次線性方程組是一類很是重要的方程組,在機器學習的不少算法和優化理論中都有它的身影。
實數域R上一個3元齊次線性方程表示過原點的一個平面。
所以3元齊次線性方程組的解集W多是如下幾種狀況:
1. 過原點的一條直線 l:W中每一個向量能夠由 l 中的一個方向向量線性表出; 2. 過原點的一個平面 ∏:W中每一個向能夠由平面∏上不共線的兩個向量線性表出; 3. 原點(即零向量);
這代表在3元齊次線性方程組對應的3維空間中,解集W中無窮多個向量能夠用W中一個或兩個向量線性表出。
接下來討論通常狀況下,齊次線性方程組的解空間結構。
齊次線性方程組的解空間(線性子空間)對加法封閉。
齊次線性方程組的解空間(線性子空間)對數量乘法封閉。
綜合上述2個性質得出,齊次線性方程組的解集W是的一個子空間,稱爲方程組的解空間。
齊次線性方程組有非零解時,此時方程組有無限多的解。可是這無限多的解能夠由一組有限多個解來概括表示,這組有限多的解知足如下條件:
1. 線性無關;
2. 方程組的每個解均可以由線性表出;
則稱是齊次線性方程組的一個基礎解系。
若是齊次線性方程組有一個基礎解系,那麼稱爲方程組的通解。
基礎解析是用來表示全部解的一組解集,它自己具備概括總結特性。
數域K上n元齊次線性方程組的係數矩陣A的秩小於未知量個數n時,它必定有基礎解系。而且它的每個基礎解系所含解向量的個數等於 n - rank(A);
設U是的一個子空間,U中的向量組
若是知足下述兩個條件:
1. 線性無關;
2. U中每個向量均可以由線性表出;
則稱是U的一個基(基能夠有不少)。
因而,若是是齊次線性方程組的一個基礎解系,則
同時也能夠被稱爲是解空間W的一個基(基的概念比基礎解析的範圍更泛)。
因爲線性無關,而且
中每個向量均可以由
線性表出,所以
是
的一個基,稱它爲
的標準基。
幾何空間中,任取三個不共面的向量a1,a2,a3,因爲任何一個向量β 能夠由 a1,a2,a3 線性表出,而且 a1,a2,a3 線性無關,所以 a1,a2,a3 是幾何空間的一個基。
能夠證實,的每個非零子空間U 都有一個基。也就是說,任何一個解集,均可以經過對應的一個基(基礎解析)來概括表示。
的非零子空間U的任意兩個基所含向量個數相等,這兩個基互相等價。
設U是的一個非零子空間,U的一個基所含向量的個數稱爲U的維數,記做
或者簡記爲
。特別的,零子空間的維數規定爲0。
因爲是
的一個基,所以
,所以咱們也把
稱爲n維向量空間。
在幾何空間中,任意三個不共面的向量是它的一個基,所以幾何空間是3維空間;
過原點的一個平面,它的任意兩個不共線的向量是它的一個基,所以過原點的平面是2維的子空間;
過原點的一條直線,它的一個方向向量是它的一個基,所以過原點的直線是1維的子空間;
數域K上n元齊次線性方程組有非零解時,它的解空間W的每個基所含向量個數爲 n - rank(A),其中A是方程組的係數矩陣。所以解空間的維數爲
基對於決定子空間的結構起了很是重要的做用,若是知道了子空間U的一個基,那麼U中每個向量均可以由這個基線性表出,而且表出的方式是惟一的,其中係數組成的有序數組稱爲該向量在這個基下的座標。
在中,向量組
的一個極大線性無關組是子空間
的一個基,從而:
該定理代表:向量組的秩等於由它生成的子空間的維數。
從而將線性子空間的基/維數的概念和線性方程組/極大線性無關組/秩的概念聯繫了起來。
數域上n元非齊次線性方程組
的一個解是
中的一個向量,稱它爲方程組的一個解向量。
3元非齊次線性方程組的解集是不過原點的一個平面
,而相應的齊次線性方程組
的解集是過原點的一個平面
,以下圖所示:
能夠由
沿着向量
平移獲得。
因而上每個向量
能夠表示成:
從上面3維幾何空間的的例子咱們受到啓發,n元非齊次線性方程組的解集U,與相應的n元齊次線性方程組的解集W 有以下關係:
其中,是非齊次線性方程組的一個特解,W是方程組的導出組的解集。
咱們把n元齊次線性方程組稱爲非齊次線性方程組的導出組。
1)性質1:n元非齊次線性方程組的兩個解的差是它的導出組的一個解。
2)性質2:n元非齊次線性方程組的一個解與它的導出組的一個解之和,還是非齊次線性方程組的一個解。
當n元非齊次線性方程組有無窮多個解時,它的導出組必有非零解。此時導出組的一個基礎解系,其中 t 是導出組的係數矩陣A的秩。
則非齊次線性方程組的解集U爲:
其中是非齊次線性方程組的一個特解;解集U的表明元素
稱爲非齊次線性方程組的通解。
齊次方程組的解與非齊次方程組的解關係是:
非齊次組的解向量等於齊次組的解+非齊次組的一個特解;
也就是說只要求出齊次組的解空間的一組基礎解系,好比是,一個非齊次組的特解好比是X1,,那麼非齊次組全部解能夠表示爲
因此求非齊次組的通解只需求出其一個特解,再求出對應的齊次組的基礎解系便可。
區別是:
非齊次組的解不能造成線性空間,由於其解向量關於線性運算不封閉:任何齊次組的解的線性組合仍是齊次組的解,可是非齊次組的任意兩個解其組合通常再也不是方程組的解(除非係數之和爲1)而任意兩個非齊次組的解的差變爲對應的齊次組的解。
非齊次線性方程組的解集不能稱爲基礎解系,因這些解不能生成解空間(線性運算不封閉)
Relevant Link:
https://zhidao.baidu.com/question/478480630.html
假設一個維數爲3的線性方程組(即基礎解析的向量個數爲3),該線性方程組包含若干個三元一次方程:
其中每個三元一次方程表明三維空間中的一個平面,也叫由3維基礎解析張成的向量空間。
若是平面個數大於維度,稱爲超定方程;
小於維度,稱爲欠定方程;
等於維度,稱爲適定方程;
知足這個線性方程組的解 x=[x1,x2,x3] 同時屬於全部平面,接下來咱們來討論線性方程組的解的個數從0,1,無窮多時,分別對應的幾何概念。
齊次方程組具備形式,每一個方程對應的平面都是過原點的。根據係數矩陣A的秩不一樣,有如下三種狀況。
A的每一行,即全部平面的法向量[a11,a12,a13],[a21,a22,a23],[a31,a32,a33]...可以張成一個三維空間。
平面只有一個交點:[0,0,0],線性方程有一個解,即零解。
全部平面的法向量,都處於同一個平面內。
因爲三個平面都過同一個點[0,0,0],因此他們共有一條交線,線性方程有無窮多解。
同時要注意的是,這些解共線,換句話說,解集構成了一個二維的子空間。
全部平面的法向量共線,整個線性方程組其實能夠簡化爲一行。
因爲三個平面都過同一個點,全部平面重合於過[0,0,0]的平面,線性方程有無窮多解。
非齊次方程具備形式,至關於把齊次線性方程組對應的若干平面進行總體平移。
這種狀況至關於全部平面都平移
寫成矩陣形式:,即,常數項b能夠表示成A的列的線性組合,即b處於A的列空間內。把A,b並列組成的增廣矩陣[A;b]。
從矩陣的角度來講,增長一列不會減小矩陣的秩,即 r(A) ≤ r([A;b]
若是 r(A) = r([A;b]),則 Ax = b 的解的狀況和Ax=0相同;
若是 r(A) < r([A;b]),則 Ax = b 無解(參考文章前面對線性方程組解存在條件的討論);
Relevant Link:
https://blog.csdn.net/shenxiaolu1984/article/details/54893299 https://technology.cpm.org/general/3dgraph/
向量空間是爲線性代數準備的舞臺。而演員,就是矩陣。
矩陣在線性代數中是一個很是重要而又複雜的概念,從任何一個角度來闡述都是對的,筆者這裏不糾結具體的公式定義,而是從各個視角來展現矩陣的本質,但願能給讀者朋友構建一個全面的多維度認知,對矩陣創建感性和理性上的認識,從而在從此學習更多線性代數知識以及理解機器學習中核心算法時能有幫助。
這樣,矩陣就再也不是係數
了,而是一個函數(或者說是映射)了,矩陣是一個更泛化的概念。
要討論線性變換,首先須要定義線性空間。
空間這個概念是現代數學的核心概念之一。對於空間的理解須要更抽象一些,簡單的說,能裝東西的就是空間。
好比計算機內有存儲單元,那麼就有內存空間;咱們上課有課表,那麼就有課表空間;有一個能裝載夢境的東西,咱們能夠叫它盜夢空間。對於數學來講,空間裏裝載的是能運算的東西。從拓撲空間開始,一步步往上加定義,能夠造成不少空間。
線形空間相對是一種比較初級的空間;若是在裏面定義了範數,就成了賦範線性空間;賦範線性空間知足完備性,就成了巴那赫空間;賦範線性空間中定義角度,就有了內積空間;內積空間再知足完備性,就獲得希爾伯特空間;若是空間裏裝載全部類型的函數,就叫泛函空間。
咱們從咱們生活在其中的(按照牛頓的絕對時空觀)的三維空間開始提及,逐步解釋空間的數學定義,從數學上說,這是一個三維的歐幾里德空間,這個三維的空間有以下幾個特色:
1. 由不少(其實是無窮多個)位置點組成; 2. 這些點之間存在相對的關係; 3. 能夠在空間中定義長度、角度; 4. 這個空間能夠容納運動;
上面的這些性質中,最最關鍵的是第4條,也就是說:容納運動是空間的本質特徵。
認識到了這些,咱們就能夠把咱們關於三維空間的認識擴展到其餘的空間。事實上,無論是什麼空間,都必須容納和支持在其中發生的符合規則的運動(變換)。好比拓撲空間中有拓撲變換,線性空間中有線性變換,仿射空間中有仿射變換,其實這些變換都只不過是對應空間中容許的運動形式而已。本質上來講,「空間」是容納運動的一個對象集合,而變換則規定了對應空間的運動。
線性空間中的任何一個對象,經過選取座標系(基)和座標的辦法,均可以表達爲向量的形式。
只要找到合適的座標軸(也就是基),就創建了一個座標系,就能夠用座標(表示成向量的形式)表示線性空間裏任何一個對象。換句話說,給你一個空間,你就能用基和座標來描述這個空間中的對象。
向量表面上只是一列數,可是因爲向量的有序性,除了這些數自己攜帶的信息以外,還在對應位置上攜帶信息。
線性空間中的運動,被稱爲線性變換。也就是說,從線性空間中的一個點運動到任意的另一個點,均可以經過一個線性變化來完成。
在線性空間中,當選定一組基以後,不只能夠用一個向量來描述空間中的任何一個對象,並且能夠用矩陣乘法來描述該空間中的任何一個運動(變換)。而使某個對象發生對應運動的方法,就是用表明那個運動的矩陣,乘以表明那個對象的向量。
簡而言之,在線性空間中選定基以後,向量(座標)刻畫對象,矩陣刻畫對象的運動(矩陣乘法的本質是運動的施加),用矩陣與向量的乘法施加運動。
上面討論的線性空間和矩陣乘法過於抽象,線性空間擁有向量夾角,向量旋轉等概念,所以這個章節咱們來三角幾何旋轉的角度來直觀的呈現矩陣的本質。
平面上取定一個直角座標系Oxy,全部以原點爲起點的向量組成的集合記做V,讓V中每一個向量繞原點O旋轉角度θ,以下圖所示:
這個旋轉是一個transformation動做,那如何經過數學來形式化定義這個旋轉動做呢?
咱們將上述旋轉角度θ的這個動做記做σ
設的座標爲(x,y),它在旋轉 σ 下的像
的座標爲(x',y')。設以 x 軸的正半軸爲始邊,以射線OP爲終邊的角爲a,設
,從三角函數的定義得:
由此得出:
上式就是旋轉σ的公式,把公式中的係數寫成矩陣的形式:
該矩陣就表示了轉角爲θ的旋轉變換,即將輸入向量的座標總體移動一個角度。旋轉變換是一種線性變換,它將全部向量點共同移動了一個相同的角度。
從向量基(初等數學裏叫座標系)來討論下矩陣映射的本質。
所在平面爲
、
所在平面爲
,都是二維平面,即
。
在下圖中,咱們把也用一個灰色方塊表示(表明了一個映射),
會經過
映射到
:
設:
,其中
爲
的列向量。
根據矩陣乘法的規則有:
則至關於在
空間中,以
爲基,座標爲
的向量,再將
向量用天然基表示,變換過程以下動圖所示:
總體來講,矩陣映射的本質是基改變,致使向量的座標發生變化。
風動?帆動?或者都沒動。也許世界歷來都沒有變換,變的只是你看世界的方式。
咱們前面的小節展現了三角旋轉和矩陣的對應關係,實際上,矩陣不只有旋轉運動,同時還有拉伸運動。
左乘表明進行一個向量基的旋轉:
繼續左乘對角矩陣:
能夠看到:
反向變換(即求逆)也是一樣道理
設,令
,其中
則矩陣C稱爲矩陣A與B的乘積,記做 C = AB
矩陣乘法有幾個要點:
1. 只有左矩陣的列數與右矩陣的行數相同的兩個矩陣才能相乘; 2. 乘積矩陣的(i,j)元等於左矩陣的第 i 行與右矩陣的第 j 列的對應元素的乘積之和; 3. 乘積矩陣的行數等於左矩陣的行數,乘積矩陣的列數等於右矩陣的列數;
進一步來講,矩陣的乘法本質上是將矩陣對應的變換應用到被乘的向量組上。若是是多個矩陣相乘,則能夠理解爲複合變換函數,即f(g(x...)),將全部的變換綜合在一塊兒總體做用於被做用向量組。
繼續上面三角旋轉的例子,如今相繼做旋轉 θ 與 φ,總的效果是做了 θ + φ 的角度,同上理,能夠用矩陣來表示這個疊加的旋轉角度:
咱們把相繼旋轉 θ 與 φ 角度的總效果稱爲 θ 與 φ 的乘積,即:θφ。
對應的,咱們把矩陣C稱爲矩陣A與B的乘積,即 C = AB。
咱們來一塊兒仔細看下矩陣C的元素與矩陣A,B的元素之間有什麼關係。
利用兩角和的餘弦、正弦公式得:
將這個公式轉化爲矩陣元素相乘的公式以下:
能夠看到,這裏就等於矩陣AB相乘的結果,讀者朋友能夠經過矩陣的行列乘法技巧本身在草稿紙上演算一下,相信和筆者第一次看到這個公式同樣會有不同的體會和感覺。
固然,咱們不能說矩陣的乘法就是表明了旋轉,矩陣和乘法之間存在等價性還有更深層次的數學原理這裏沒有闡明,可是三角幾何旋轉這個視角讓咱們很是清晰的體會到了矩陣乘法的本質。
在構建深度神經網絡的時候,咱們腦子裏能夠復現出你構建出的一層層網絡結果,正常不斷的」擰轉「、」扭曲「輸入向量,使其從線性不可分,逐漸成爲一個在另外一個向量基(線性變換改變了向量基)下線性可分的向量組,從而機器學習模型獲得找到一個最佳超分界面進行二分類或者多分類。
下圖展現了將原始向量組旋轉180°對應的矩陣:
讀者朋友能夠本身修改矩陣的元素值,觀察不一樣的矩陣元素值對應的不一樣的轉換動做。
筆者這裏手工調整了幾個參數,經過gif圖的方式來展現不一樣的矩陣對應的不一樣變換動做:
經過把
映射到
:
再經過把
映射到
:
矩陣的乘法能夠以下圖所示:
Relevant Link:
https://jingyan.baidu.com/article/425e69e6f6c290be14fc165c.html https://www.geogebra.org/search/matrix%20transformation https://www.geogebra.org/m/wsTPe55F https://www.geogebra.org/m/u6jD5As8 https://www.yasuotu.com/gifhecheng https://blog.csdn.net/wenzhilu/article/details/79684667 https://www.matongxue.com/madocs/755.html https://www.matongxue.com/madocs/555.html
文章的開頭,咱們舉了一個工廠生產某種食品的例子。在這個例子中,咱們沒有藉助任何機器學習算法,而是直接基於樣本輸入數據,獲得了一個線性方程組,而後嘗試求解這個線性方程組。
這看起來毫無毛病,我按照你題目給的條件構建一個對應的方程組,而後求解,若是獲得了惟一解,則該解就是最優解,也即惟一的可行解。
但遺憾的是,包括本例在內,現實世界中的幾乎全部場景中,幾乎不可能恰好獲得一個惟一解,換句話說,99.99%的場景中,咱們都沒法獲得一個100% recall,100% precision的model。
在不少時候,咱們基於樣本數據和對應的條件構建出的線性方程組是無解或者有無窮多的解的,這個時候咱們如何該如何繼續下去呢?宣佈放棄,這個問題沒法解決了嗎?
答案顯然不是的,咱們能夠退而求其次,既然沒法100%達到全局最優解,那咱們能夠嘗試得到一個次優解,並使該次優解和最優解的「距離」在全部次優解中最接近。
引入損失函數的目的就是:將原始問題轉換爲另外一個最優化問題,經過求解損失函數下最優解獲得原始問題的一個次優解,損失函數(loss function)的做用就是完成這個」問題域轉換「的橋樑。
引入損失函數後,咱們的優化目標轉換爲了:求得一個使當前損失函數值最小的最優解。那接下來的問題就是,基於損失函數構建的新的方程長什麼樣?解空間結構如何?是否有解?如何求解?
損失函數有不少種選擇,這裏以linear regression最契合的MSE(均方損失函數)爲例:
在線性迴歸問題中,假設模型爲:
線性模型試圖學得。同時在噪聲符合高斯分佈的假設前提下,均方偏差是衡量 f(x) 和 y 之間的差異的最佳損失函數。
咱們構建讓均方偏差最小化的公式,即:
能夠看到,均方偏差最小化公式是一個累加公式,將全部樣本數據(經過下標 i 表示)對應的線性方程值和目標值的差值的平方進行了累計,即全部樣本的偏差的平方和。
讀者朋友能夠這麼理解:將本來基於樣本數據獲得線性方程組,每一列(列向量)都減去一個目標值並計算平方,而後將全部方程都累加起來。注意,有的書籍或者paper在上述公式中還會加入一個1/N,但對最終結果是沒有影響的,由於咱們求的是對w的偏導數,實數在這裏會被忽略。
求解 w 和 b 使最小化的過程,稱爲線性迴歸模型的最小二乘參數估計(parameter estimation)。咱們可將
分別對 w 和 b 求導,獲得:
令上式等於零可獲得 w 和 b 最優解的閉式(closed-form)解,同時損失函數中極值就是上式參數優化公式的最小值,線性規劃問題得解。
上一小節中咱們經過偏導數方式實現了對均方偏差函數的求解,這很直觀利於理解,可是在計算機科學中,求解偏導數的運算並不高效,像sklearn這種數學庫採用的都是矩陣matrix的形式進行快速計算。
Relevant Link:
https://www.cnblogs.com/LittleHann/p/10498579.html https://zhuanlan.zhihu.com/p/27664917 https://www.cnblogs.com/pinard/p/10750718.html http://www.cnblogs.com/pinard/p/10791506.html
咱們將構建一個神經網絡:包括五個全鏈接層,每層都含有不一樣數目的單元,結構以下:
對於單個神經元來講,計算過程對應的線性方程爲:
整個一層隱藏層的權重參數向量組構成了一個向量矩陣W,爲了清楚起見,如下是第二層的全部表達式:
從矩陣視角來看,一層隱藏層對應的矩陣運算公式以下:
上圖中的a 是激活函數,激活函數是一種非線性變換,激活函數對輸入向量組的扭曲是非線性的。
綜上咱們看到,深度神經網絡的本質是線性變換的矩陣+非線性變換的激活函數,經過矩陣的拉伸/旋轉,以及非線性函數的扭曲做用,原始輸入空間的向量基會被轉換到一個新的維度(通常是高維)中,在這個新的線性子空間中,本來線性不可分的向量組可能就能夠變得線性可分,或者在必定的錯誤冗餘下線性可分,進而獲得一個解空間。
大體的回答是,由於非線性性,和高維度的緣由,矩陣偏導數運算、求逆變得十分困難,有時甚至沒法計算。
舉個例子,普通最小二乘的最佳參數表達爲:
雖然咱們能夠得到解析表達,可是當數據量變得很是龐大的時候,連計算矩陣的逆、矩陣求偏導都會變得很是慢。
同時在不少狀況下,咱們沒法得到參數的解析表達,就須要採用迭代的方式逼近最佳的參數值。
相關的一些討論,能夠參閱我另外一篇blog.
https://www.cnblogs.com/LittleHann/p/10498579.html 2)梯度降低算法(Gradient decent)來求解線性迴歸模型參數
咱們從一階泰勒級數展開這個話題開始討論,逐步分析GD梯度降低成立的前提條件以及它的合理性。
首先,泰勒當年爲何要發明這條公式?由於當時數學界對簡單函數的研究和應用已經趨於成熟,而複雜函數,好比:這種一看就頭疼的函數,還有那種根本就找不到表達式的曲線(例如深度神經網絡中,線性和非線性複合層疊,隱層的函數形式已經變得極度複雜)。除了代入一個x能夠獲得它的y,就啥事都很難幹了。因此泰勒同窗就迎難而上!決定讓這些式子通通現出原形,通通變簡單。
能夠簡單的理解爲:泰勒級數展開和微積分的本質原理很相似,都是經過大量小區間的線性近似來模擬原始函數。
以下圖所示:
想要兩個向量的乘積小於零,咱們先來看一下兩個向量乘積包含哪幾種狀況:
A和B均爲向量,α爲兩個向量之間的夾角。A和B的乘積爲:
由上述討論可知,GD梯度降低過程當中,就等價於不斷進行一階泰勒級數展開來」近似「地」沿着目標函數降低的方向「進行前進。但其實咱們也能夠看到,每次前進都伴隨着必定的損失,這是一階泰勒級數和真實函數之間的差值致使的。
要特別強調的是,這既是一個原理性的理解,也是一個工程實踐中要謹記的要點,咱們在使用pytorch/TensorFlow/keras進行項目開發的時候,學習率η必定要設置的足夠小,設置的足夠小,不只僅是爲了讓咱們足夠靠近局部最優,這同時也是一階泰勒級數展開的必要條件,若是不知足這個條件,GD梯度降低自己的偏差就會很大,天然也就沒法有效逼近全局次優解。
由上個小節的討論咱們知道,一階泰勒級數展開自己也只是對原始函數的的一種近似線性模擬,即便你每次選擇的是負梯度方向,也不能100%沿着原始函數的真實方向進行降低,每一次GD迭代都是存在偏差的。
即便採用同二階泰勒級數,偏差也一樣存在,只是會比一階要小,可是階數越往上,計算的複雜度就越大。在通常狀況下,一階泰勒級數展開已經能夠得到比較好的近似度和優化速度了,工業場景中基本上默認採用一階泰勒級數展開。
先拋出結論:以二維圖像爲例,對於二維圖像的某點的Hessian矩陣,其最大特徵值對應了其鄰域二維曲線最大麴率的強度,該特徵值對應的特徵向量對應了鄰域二維曲線最大麴率的方向,即山坡陡的那面,最小特徵值對應的特徵向量對應與其垂直的方向,即平緩的方向。簡單來說,圖像某點的hessian矩陣特徵值大小和符號決定了該點鄰域內的幾何結構。
在進行GD梯度降低的時候,梯度的方向就是最大特徵值對應的特徵向量方向,而特徵值決定了GD學習的步長。
GD中所謂的最大梯度方向,就是Hessian矩陣最大特徵值對應的特徵向量的方向。
那什麼是最小梯度,注意不是加個負號就變成最小了,向量是一個帶方向性的數學量。
最小梯度的方向是Hessian矩陣中最小特徵值對應的特徵向量方向,這個方向和最大梯度的方向是垂直的。
筆者提醒:Hessian矩陣自己也是一種近似,它的本質是二階泰勒導數,而二階泰勒展開自己也是一種近似模擬,只是說這種近似模擬的精確度已經相對比較高了。
咱們先來看下,在一階狀況下,梯度降低(GD)方法:
這裏有一個問題是:如何動態控制步長,當梯度大的時候縮短步長避免overstep,當梯度小的時候適當提升步長以儘早離開低谷區。
顯然,咱們須要將梯度的值引入步長的控制公式中,以獲得動態調整步長的能力。
將函數在局部極值點
附近進行二階Taylor展開近似可得:
,其中,
爲梯度向量,
爲Hessian矩陣。
對上式求導並置0,以求在二階泰勒展開近似原函數的狀況下快速求出函數極值點,可解得:
從上面公式能夠看出,Hessian矩陣起到了控制步長的做用。
繼續推導H,咱們有
,其中
是單位特徵向量矩陣,
是對應特徵值對角矩陣。
重寫上面公式:
能夠看出,這裏控制(每一個特徵方向)步長的,有兩個因素:一階梯度(做爲分子)和Hessian矩陣特徵值(做爲分母)。
Relevant Link:
https://juejin.im/post/5a570c25518825734f529e3b https://www.tinymind.cn/articles/1272?from=articles_commend https://blog.csdn.net/SoHardToNamed/article/details/80550935 https://blog.csdn.net/sinat_15443203/article/details/82048888 https://www.zhihu.com/question/24623031