如何輕鬆解鎖神經網路的數學姿勢

優達學城Udacity發表於2018-01-11
線性代數往往是學習機器學習和深度學習的一大障礙,為了解決這個問題,我們特別邀請了 Udacity 機器學習&深度學習導師 Aaron,幫助大家梳理神經網路中涉及的數學知識,以及理解其物理含義。希望大家讀過之後,可以使大家對於神經網路有更多角度的理解,幫助大家推導以及理解其中的數學公式。

線性代數

矩陣乘以向量的物理含義

矩陣乘法我更喜歡稱作線性轉換。一個矩陣乘以向量中,矩陣相當於一個轉換函式,而向量是一個輸入,已知了輸入和函式,我們就可以知道輸出。這裡需要強調的是,向量共有兩種形式,一種為列向量,一種為行向量。在預設情況下,向量是指列向量。大部分的國內教材中,並沒有特意提到這一點。很多人接觸到編寫程式碼時,都是以行向量的形式開始學習,導致後續有很多概念產生混淆。在本文中,若無特殊說明,向量的形式預設為列向量。

首先我們先看以下的2道熱身題:

1. 假設讀者並不知道矩陣乘法的運算準則,能否在假想的幾何空間中,快速地反應出答案是多少呢?給大家30s。(記住,不可以通過運演算法則來進行計算)

如何輕鬆解鎖神經網路的數學姿勢如何輕鬆解鎖神經網路的數學姿勢

2. 同樣地,利用假想的幾何空間想象,是否可以立即解答出矩陣M是什麼?

如何輕鬆解鎖神經網路的數學姿勢如何輕鬆解鎖神經網路的數學姿勢

如果讀者可以快速解答出上面的問題,那麼恭喜您,您已經瞭解了線性代數空間轉換的本質;如果沒有解答出,那就是我寫這篇文章的意義。

先拋開上面兩道題,這裡來介紹一下矩陣。

線性代數與空間幾何是存在緊密的聯絡的。基本所有的線性代數都有其對應的幾何表示方法。理解幾何,是理解線性代數的核心所在。

以二維空間來說,舉個栗子:

如何輕鬆解鎖神經網路的數學姿勢

 現在,我們來看一張動圖:

如何輕鬆解鎖神經網路的數學姿勢

更多動圖的資訊請關注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 的方式,快速成長為最前沿領域的優秀人才。

如何輕鬆解鎖神經網路的數學姿勢

如何輕鬆解鎖神經網路的數學姿勢

如何輕鬆解鎖神經網路的數學姿勢

課程席位有限!若想加入課程,請掃描下方二維碼立即入群搶佔席位!

如何輕鬆解鎖神經網路的數學姿勢



相關文章