線性代數每每是學習機器學習和深度學習的一大障礙,爲了解決這個問題,咱們特別邀請了 Udacity 機器學習&深度學習導師 Aaron,幫助你們梳理神經網絡中涉及的數學知識,以及理解其物理含義。但願你們讀過以後,可使你們對於神經網絡有更多角度的理解,幫助你們推導以及理解其中的數學公式。
線性代數算法
矩陣乘以向量的物理含義編程
矩陣乘法我更喜歡稱做線性轉換。一個矩陣乘以向量中,矩陣至關於一個轉換函數,而向量是一個輸入,已知了輸入和函數,咱們就能夠知道輸出。這裏須要強調的是,向量共有兩種形式,一種爲列向量,一種爲行向量。在默認狀況下,向量是指列向量。大部分的國內教材中,並無特地提到這一點。不少人接觸到編寫代碼時,都是以行向量的形式開始學習,致使後續有不少概念產生混淆。在本文中,若無特殊說明,向量的形式默認爲列向量。網絡
首先咱們先看如下的2道熱身題:機器學習
1. 假設讀者並不知道矩陣乘法的運算準則,可否在假想的幾何空間中,快速地反應出答案是多少呢?給你們30s。(記住,不能夠經過運算法則來進行計算)函數
2. 一樣地,利用假想的幾何空間想象,是否能夠當即解答出矩陣M是什麼?學習
若是讀者能夠快速解答出上面的問題,那麼恭喜您,您已經瞭解了線性代數空間轉換的本質;若是沒有解答出,那就是我寫這篇文章的意義。大數據
先拋開上面兩道題,這裏來介紹一下矩陣。人工智能
線性代數與空間幾何是存在緊密的聯繫的。基本全部的線性代數都有其對應的幾何表示方法。理解幾何,是理解線性代數的核心所在。spa
以二維空間來講,舉個栗子:設計
如今,咱們來看一張動圖:
更多動圖的信息請關注3Blue1Brown主頁,裏面有大量衝破你數學世界觀的知識。
(3Blue1Brown還有視頻集,B站有作了很讚的漢化,不過更鼓勵你們去看英文原版視頻)
咱們來繼續看看錶示方法:
這其中的區別就是基向量不同了,而線性組合的係數 -1 與 2 保持固定不變。
咱們把變換後的基向量放在一塊兒,變爲矩陣:
咱們在來看另外一幅動圖來實踐一下,找到這幅動圖的線性變換矩陣是什麼?
根據上面的方法,鎖定綠色與紅色基向量末尾的位置,這幅動圖的線性變換矩陣爲
而其原來全部座標系上的向量都隨之變換髮生改變。
如今再回頭看看上面的兩道題?是否可以經過想象的空間去快速找到答案?
若是不是方陣咋辦?
上面咱們講的是方陣,那麼若是不是方陣呢?好比一個 3 x 2 的矩陣,或者一個 2 x 3 的矩陣呢? (如下咱們只用中括號來表明具體矩陣的形狀,具體數字並不重要。)
咱們來以 3 x 2 矩陣形式舉例,以下所示:
3 x 2 的矩陣的物理含義就是把一個向量從二維表示方法轉換到三維表示。而轉換矩陣的每一列就表明:將二維空間對應的基向量轉換到三維的樣子。將這種變換規律映射到其餘變換的二維向量;一樣地, 2 x 3 矩陣物理含義就是將一個向量從三維表示轉換成二維表示。轉換矩陣每一列表明:三維空間的基向量映射到二維空間以後的樣子。將這種變換規律映射到其餘變換的三維向量。
如今,咱們再進行下一步操做。若是咱們假設讓一個4維向量,先轉化爲3維向量,在轉化爲二維向量,那麼它的形式是什麼樣子的呢?
經過以上形式,咱們能夠發現若是將一個列向量通過屢次線性轉換,他的順序應該是從右至左的順序。這就是標準的線性代數書中所講到的連續線性變換的形式,從右至左也是線性代數數學家習慣的順序。
可是,在不少神經網絡包括深度學習網絡的課程中咱們能夠看到,更符合咱們閱讀的順序是將一個輸入數據拿進來以後通過一次矩陣轉換,從左至右獲得輸出結果。他們之間有什麼聯繫呢?
經過觀察咱們能夠知道,這其中最大的緣由在於數據的形式,也就是上文中提到的每個樣本表示方法是列向量仍是行向量。若是是列向量,變換的順序就是從右至左;若是是行向量,變換順序就是從左至右。而相應的矩陣形狀也發生反轉。
• 全部形式爲矩陣乘以矩陣
神經網絡中,你們都但願最終的形式爲矩陣乘以矩陣,不但願中間有任何向量的存在,這樣顯得更酷,實際上計算也更快。這很簡單,如今咱們只差最後一步。當咱們把全部數據放在一塊兒,仍是如上方有 m 個 4 維行向量形式的數據,咱們將這些行向量數據堆疊在一塊兒造成 m x 4的矩陣,通過多個矩陣的變換以後輸出爲一個 m x 2 的矩陣。這樣,在計算過程當中,所有爲不一樣形狀的矩陣。固然,你們也能夠想一想若是是列向量該是什麼形式。
以上內容想說明的就是,不管是上方哪種形式,都是正確的。關鍵看輸入的數據是什麼形式,形式決定了數據變換的順序,以及設計矩陣的形狀。
經過以上的形式,其實神經網絡前向傳導和向量在不一樣維度間的連續線性變換及其類似。惟一不一樣的一點就在於,在每次線性轉換後,神經網絡能夠加一個非線性激活函數,使線性轉換變爲非線性轉換。實際上,也就這麼點區別。而非線性激活函數並不會改變數據的形狀,對後續矩陣乘法不形成任何影響。
小結一下上面線性代數部分咱們發現了什麼:
1 線性代數中的向量默認形式是列向量。
2 矩陣的實質就是將座標總體線性變換。
3 矩陣的組合以列向量組合在一塊兒,其表明各自的基向量變換以後的新向量是什麼。
4 矩陣與向量相乘,矩陣與矩陣相乘,順序很重要,其決定權在於實際問題中樣本的表達形式,是行向量仍是列向量。
5 神經網絡的前向傳導與線性代數中連續對於向量的線性變換過程極其類似,只是在層與層之間多了非線性激活函數。
神經網絡求的是什麼?其實就是上方這麼多矩陣中每個位置的數字是多少?這就是咱們最終的目的。那麼如何求?這就須要微積分中鏈式法則的知識了。
因爲篇幅限制,咱們還有不少常見的節點沒有講到, 如 ReLu, sigmoid, dropout 等。神經網絡不只有正向計算,還有反向傳導,這些節點的出現和反向傳導息息相關……
若是你對神經網絡只知其一;不知其二,卻也想加入人工智能浪潮,在職場中挖掘新的機會、成爲頂尖技術人才,讓來自硅谷的 Udacity 幫助你零基礎成爲機器學習高手!
硅谷前沿科技教育平臺 Udacity 聯合 Google、Kaggle、滴滴出行等行業頂尖企業,打造了「機器學習工程師」納米學位項目,帶你從零開始,全面掌握機器學習領域的核心知識,你會在入門課程中學習到數學基礎和編程基礎,在進階課程中全面掌握機器學習領域核心知識,最終將預測模型實際應用於金融、醫療、大數據等領域,成爲搶手機器學習工程師!
畢業時,你將作好準備,在人工智能、無人駕駛等應用方向上大展拳腳。你還將得到 Udacity 的就業推薦服務,得到更多加入IBM、騰訊、滴滴出行等領先科技企業的機會!
在學習過程當中,你不只能夠得到硅谷頂級講師的指導,還將挑戰超酷實戰項目,並享受 Udacity 導師指導、逐行代碼審覈、同步學習小組等學習服務。每週投入10個小時,你就能夠 零基礎 成爲 硅谷認證 的機器學習高手!
機器學習(入門)課程簡介
一站式搞定入門機器學習所須要的編程和數學基礎
Get 知識點:
掌握 Python、微積分、線性代數和統計基礎知識,爲成爲機器學習工程師打好基礎。
挑戰硅谷實戰項目:
你將挑戰一系列有趣的實戰項目,經過 learning by doing 的方式,快速成長爲最前沿領域的優秀人才。
課程席位有限!若想加入課程,請掃描下方二維碼當即入羣搶佔席位!