掃盲貼:什麼是深度學習,其工作原理是什麼?

全文共4854字,預計學習時長

10分鐘

掃盲貼:什麼是深度學習,其工作原理是什麼?

攝影|Chevanon Photography 來源|Pexels



什麼是深度學習?


簡單來說,深度學習就是樣本研究。

從最基本的概念上看,深度學習就是機器學習的一種方法,教計算機篩選輸入的信息,進而對信息進行預測和分類。其觀察結果可以通過圖片、文字或聲音的方式呈現。

深度學習的靈感來源於人腦過濾信息的方式。其初衷是通過模擬人腦運行模式來做些不一樣的事情。

掃盲貼:什麼是深度學習,其工作原理是什麼?

GIF來源:GIPHY


這是正兒八經/真實的人工神經網絡。

人腦中有大約1億個神經元。每個神經元都與另外約10萬個同類相連,人類現在正試圖將類似的工作原理應用到機器上。

人腦中的神經元分為胞體(body),樹突(dendrites)和軸突(axon)。神經元發出的信號經由軸突和傳送到下一個神經元的樹突。這種信號連接被稱作神經元突觸(synapse)。

單個的神經元其實沒多大用。但如果有很多神經元互相合作就能發揮奇效。這就是深度學習算法背後的理念!從觀察中獲得輸入數據,再將輸入數據進行篩選。這類篩選產生的輸出數據就是下一層篩選的輸入數據,這個過程不斷進行,直到獲得最後的輸出信號!

神經元(結點)會收到一個或多個數據(輸入值),經神經元繼續傳播。該神經元傳遞的信號就是輸出信號。

讀者可以將輸入信號的篩選看作是自己的感官:比如說你看到、聞到或是感覺到的東西。這些是一個信號觀察中獨立的變量。該信息會被拆分成數字,變成電腦可以讀取的二進制數據。最好給這些變量設置統一標準或格式,確保都在同一範圍內。

程序員會使用很多非線性處理單位來提取、轉換數據特徵。每道篩選步驟都會使用上一步的輸出數據作為輸入數據。其獲取的數據所支撐的概念分為三六九等。在這一個等級上,每層都需要學習如何將輸入數據轉換成更加抽象、內容更豐富的表達形式。

掃盲貼:什麼是深度學習,其工作原理是什麼?

圖片|ahmedged 來源|Pixabay


對圖片來說,這就意味著輸入數據可能是一個像素矩陣。第一層篩選可能為邊界加密,並形成一些像素。第二層篩選可能會再加上鼻子眼睛。下一層篩選可能捕捉到圖像中有人臉,如此往復。


神經元內部在發生著什麼?


輸入結點會按數字排序輸入信息。該信息表現為激活值,其中每個神經元結點都會被賦予一個數字。數字越大,激活的程度就越深。

根據連接強度(權重)和轉換函數,激活值會被傳送到下一個結點。每次接收一個激活值,每個結點都會計算激活值的總和(權重總和),再根據轉換函數進行編輯。接著,結點會使用激活函數。激活函數是應用於某一特定神經元的。這一步之後,神經元就知道它要不要再繼續傳播這個信號。

每個神經元突觸都會被賦予一定的權重,這一步對人工神經網絡(ANNs, Artificial Neural Networks)至關重要。人工神經網絡通過調整權重來決定信號傳播的程度。程序員在調試自己的網絡時,如何調整權重這一決定權就握在自己手裡。

整個激活過程貫穿整個網絡,直到它突破輸出結點。輸出結點會以人類可理解的方式給出信息。程序員的設計的網絡會使用成本函數對輸出值和預計輸出值進行對比,並對模型的表現進行評估,表示為真實值和預測值之間的差異。針對各自網絡的具體錯誤,有不同類型的成本函數可供選擇。程序員要儘量減少使用損失函數。從本質上講,損失函數得出的值越低,得到的結果就越接近預期值。獲得信息反饋後,神經網絡會通過調整權重的方式學習儘可能少使用損失函數的方法。這個過程叫做反向傳播。

在前向傳播中,信息進入輸入層,通過網絡傳播以獲取輸出值,將這個值和預期結果進行對比。接著計算錯誤,再使信息反向傳播。這樣做既能訓練網絡,又能更新權重。得益於算法設計,程序員可以通過反向傳播的方式實現同時調整所有權重。這樣如果出現任何錯誤,就能找到是網絡的哪部分在負責。

將權重調整到最優級別,我們進入下一步測試階段。

掃盲貼:什麼是深度學習,其工作原理是什麼?

圖|Yogendra Singh 圖源|Pexels


人工神經網絡是如何學習的呢?


想讓程序按你的意願行事,有兩種方法。第一種是硬植程序(hard-programmed)。直接告訴程序你想讓它為你做什麼。第二種就是神經網絡。給它輸入信息以及期待的輸出信息,讓它自己去學習。

讓網絡自己學習就省去了輸入規則這個步驟。一旦網絡訓練成熟,給它一張圖片就能輕鬆區分輸出信息。


前饋和反饋網絡


前饋網絡包括輸入數據、輸出數據以及隱藏的篩選層。信號只能單向傳播(向前)。輸入數據經過不斷進行計算的篩選層,每個處理元素都根據輸入數據的權重總和來進行運算,其結果就變為新的輸入數據進入到下一個篩選層(前饋)。前饋網絡常用於數據挖掘中。

如循環神經網絡之類的反饋網絡有反饋通道。這意味著信號能通過循環進行雙向傳播。所有神經元都可以隨意進行連接。因為循環的參與,這種類型的神經網絡變為一種非線性的動態系統,不斷變化直到達到一種平衡。網絡為互相連接的各個元素尋找最佳安排方案時,通常用反饋網絡來找到問題的最優解。


什麼是加權和?


神經元的輸入數據可以是一組數據特徵,也可以是上一個篩選層裡神經元的輸出數據。每兩個神經元之間有一種特殊的突觸,並有其特殊的權重。若數據要從一個神經元傳輸到另一個神經元,必須要經過突觸,給“過路費”(權重)。對於突觸傳來的輸入數據,神經元會應用激活函數到加權和,並將計算結果傳輸到下一層的神經元。在談論在一個網絡中更新權重時,通常是指在突觸環節調整權重。

神經元的輸入數據是上一個篩選層所有神經元產出的調整權重後的輸出數據。與當前神經元相連接的突觸會有權重,每個輸入數據會與之相乘。如果上一個神經元有三個輸入數據或神經元,當前篩選層的每一個神經元就會有三個不同的權重:每個突觸都有不一樣的權重。

長話短說,一個結點的激活函數決定該結點的輸出數據。

激活函數(或轉換函數)將輸入數據轉換成輸出數據,在一定範圍內映射輸出數據,比如0到1或者-1到1。在細胞裡,激活函數通常被看作動作電位發放率的抽象形式。其數字代表了神經元發射的可能性。簡而言之,這個函數是二元的,只有是(神經元會發射),或否(神經元不會發射)兩種情況。輸出數據要麼是0或者1(代表開或關,是或否),要麼是範圍內的任何值。如果圖像中的物體是一隻貓,定義在0到1之間,比如說,輸出數據是0.9就代表有90%的幾率證明圖像中的物體是一隻貓。

如何選擇?有很多激活函數,下文舉四個常用例子:


閥函數(Threshold Function)


這是一個階梯函數。如果輸入數據的總和達到閥值,該函數結果為0。如果總和大於等於0,那麼函數結果為1。閥函數的結果非常客觀,只有是非之分。

掃盲貼:什麼是深度學習,其工作原理是什麼?

例:閥函數



雙彎曲函數(Sigmoid Function)


該方程通常應用於邏輯迴歸。與閥函數不同的是,它是從0到1的緩慢發展。雙彎曲函數在輸出數據的篩選層非常實用,也廣泛用於線性迴歸。

掃盲貼:什麼是深度學習,其工作原理是什麼?

例:雙彎曲函數


雙曲線正切函數(Hyperbolic Tangent Function)


雙曲線正切函數和雙彎曲函數非常相似。但其不同點在於,雙彎曲函數的範圍是從0到1,它的值可以小於0,也就是說它的範圍在-1到1之間。雖然這和人腦的工作方式不太一樣,但使用雙曲線正切函數來訓練神經網絡可以得到更好的效果。在使用雙曲線函數時,神經網絡有時候會突然卡住,特別是輸入數據中有很多負數,輸出數據接近0的時候,會擾亂網絡的學習進程。

掃盲貼:什麼是深度學習,其工作原理是什麼?

例:雙曲線正切函數(tanh)


線性整流函數(Rectifier Function)


在神經網絡宇宙中,這可能是最受歡迎的激活函數了。它效率最高,並且在生物學角度上也是可行的。雖然曲線上有一個節點,但節點之後的曲線是平滑並且緩慢發展的。也就是說,輸出數據要麼是0,要麼是一定比例的“是”。線性整流函數不需要進行標準化或者其他複雜的計算。

掃盲貼:什麼是深度學習,其工作原理是什麼?

例:線性整流函數


假如說預期值是以二進制表示的,要麼是,要麼否。你想使用哪個激活函數呢?

從上述例子,你可以使用閥函數或雙彎曲函數。閥函數會給出“是”或“否”的反饋(對應1或0)。雙曲線函數會給出“是”的可能性。

如果使用雙曲線函數來決定圖像是一隻貓的概率,比如說,輸出數據0.9就表示有90%的概率證明圖像上就是一隻貓。

掃盲貼:什麼是深度學習,其工作原理是什麼?

圖|minanafoto 圖源|Pixabay


如何調整權重?


硬剛也不是不可以,但即便是隻有5個值的輸入數據和一個隱藏的篩選層,也有10⁷⁵種可能的組合方式。

世界上運算最快的超級計算機的計算時間也會超過宇宙存在的時間。


梯度下降閃亮登場


如果使用梯度下降算法,可以查看權重斜率的角度,找出正負,再順藤摸瓜找到最佳權重,以達到全局最小值。

掃盲貼:什麼是深度學習,其工作原理是什麼?

攝影|RANJAN SIMKHADA 圖源 |Pexels


梯度下降算法能算出一個函數的最小值。就好比困在山頂的人試著下山(找到最小值),路上迷霧重重,根本看不見道,這種情況下梯度下降就能派上用場。看著陡峭的山坡,沿著坡度最大的方向繼續走,可以假設這樣的陡坡也不是立馬就能看清楚的。幸好,有梯度下降這個工具可以幫助測量!

然而,使用這個工具時間太久了。

她想在天黑之前下山,儘可能少使用這個辦法。真正的挑戰是多久使用一次梯度下降函數來確保不會迷路。

在這個例子中,主人公就是算法。山坡的傾斜度就是該點所在平面的錯誤值。小人前進的方向就是平面錯誤的傾斜度。她使用了微分法來幫助自己解決問題,平面的坡度可以通過該點錯誤函數平方的衍生結果來進行計算。小人使用另一種測量方法之前的速度就是這個算法的學習速度。雖然這個比方不是完全恰當的,但它能讓讀者對梯度下降算法有一個大概瞭解。機器也在學習這個梯度下降算法(方向),或許模型可以採用這種方法來降低錯誤率。

掃盲貼:什麼是深度學習,其工作原理是什麼?


坡度下降算法(簡化版!)


坡度下降算法要求成本函數呈凸字型,但萬一不是呢?

掃盲貼:什麼是深度學習,其工作原理是什麼?


現在呢?


一般來說,梯度下降算法會限於本地最小值而不是全局最小值,導致最終的網絡低於平均值。這種情況下,通常將每一行的數據輸入到同樣的神經網絡,先看一眼權重是多少,再進行調整。這個過程叫做批量梯度下降。在隨機梯度下降法中,需要逐行檢查,輸入進神經網絡,調整權重,再換到下一行。也就是說你要一行一行地調整權重。

隨機梯度下降法波動更大,這樣能幫助定位全局最小值。顧名思義,樣本順序是隨機的,而不是一個數據集中單獨的數據組。雖然看起來可能會很慢,但實際操作起來速度很快,因為不需要把所有數據都導入內存再等所有數據一起運行。這個方法最大的優勢就在於它是確定性算法。也就是說如果每次初始權重都一樣,每次運行網絡得到的結果都是一樣的。隨機梯度下降法永遠都是在隨機的狀態下運作,也可以用體量較小的數據用梯度下降的方式來計算,在同一時間運行很多行數據,再更新權重。

程序員們提出並使用了很多改進隨機梯度下降法的算法,包括隱式更新(ISDG)、動量算法、平均隨機梯度下降法、自適應梯度算法(AdaGrad),均方根傳播算法(RMSProp),自適應動量法(Adam),等等。

下面總結一下用隨機梯度下降法訓練人工神經網絡的技術要點:

•隨機生成權重,其值為接近0的小數字。

•將數據集的首次觀察數據當作輸入數據導入篩選層,保證每一個輸入節點都保留數據特徵。

•前向傳播——從左到右,每個神經元的激活都受制於權重,在沒有得到預測結果之前一直進行這個過程。

•將預測結果和實際結果相比較再對生成的錯誤進行評估。

•反向傳播——從右到左,錯誤是反向傳播的。權重會根據各自對錯誤的佔比不斷更新。(機器學習的速率決定更新權重的頻率)。

•強化學習(重複步驟1—5,每次觀察後更新權重),或者批量學習(重複步驟1—5,但完成一批數據的觀察後再更新權重)。

•當整個測試數據組都通過了人工神經網絡後,就能打開新世界的大門。重複上述步驟,開啟更多大門吧。

掃盲貼:什麼是深度學習,其工作原理是什麼?


留言 點贊 發個朋友圈

我們一起分享AI學習與發展的乾貨

如需轉載,請後臺留言,遵守轉載規範


分享到:


相關文章: