【随笔】深度学习之美——杨家有女初长成,养在深闺人未识
1.從機器學習到深度學習
一般來說,知識在兩個維度上可以分為四類,如下圖。
 
 在橫向上,對于可推理的,可以用機器學習的方法完成推理,通過人類的先驗知識,把原始數據預處理成各種特征,然后對特征進行分類。然而,分類的效果通常取決于特征的好壞,傳統的機器學習也可以成為“特征工程”。
在縱向上,對于可統計但不可推理的,人們發現可以讓神經網絡自己學習如何抓取數據的特征,并且效果好像更佳。再后來,網絡進一步加深,將特征進一步抽象化,也就是現在說的“深度學習”。
但是,機器自己學出來的特征無法被人類所理解,為了讓神經網絡的效果更好,只能按照經驗去調整網絡的超參數,也就是“有多少人工,就有多少智能”。
有人批判深度學習是一個“黑箱”,缺乏解釋性。但是這種“端到端”的方法亂,似乎與復雜性科學相吻合。人類世界本身就是一個復雜的系統,各個問題互相影像,阡陌縱橫,難以用確定的公式來描述,并且現在對于世界的認知可能具有局限性,難以提取普適的公式定理。
2.神經網絡的細胞——M-P模型
在生物神經網絡中,如果某些神經元的電位超過一個閾值,就會被激活,接著像與他相連的神經元發送化學物質,改變他們的電位,一層層傳播下去。1943年,神經生理學家Warren McCulloch和Walter Pitts,首次實現用一個簡單電路模擬大腦神經元的行為(用邏輯值0和1模擬神經細胞的興奮和抑制狀態)。
 
 神經元的工作模型存在“激活(1)”和“抑制(0)”兩種狀態的跳變,那么理想的激活函就應該是如圖 6-7(a)所示的階躍函數。
 但事實上,在實際使用中,這類函數具有不光滑、不連續等眾多不“友好”的特性,使用得并不廣泛。為什么說它“不友好”呢,這是因為在訓練網絡權重時,通常依賴對某個權重求偏導、尋極值,而不光滑、不連續等通常意味著該函數無法“連續可導”。
因此,我們通常用 sigmoid()函數來代替階躍函數,如圖 6-7(b)所示。無論輸入值(x)的范圍有多大,這個函數都可以將輸出擠壓在[0,1]范圍之內,故此這個函數又被稱為“擠壓函數(Squashing Function )”。
3.深度學習的起點——感知機
1958年,也就是在M-P神經元模型發表15年后,Frank Rosenblatt設計了一個實驗,輸入50組圖片,每組兩張一張標記向左,一張標記向右。每一次練習都是以左面的輸人神經元為開端,先給每個輸入神經元都賦上隨機的權重,然后計算它們的加權輸人之和。如果加權和為負數,則預測結果為 0,否則,預測結果為 1(這里的0或 1,對應于圖片的“左”或“右”,在本質上,感知機實現的就是一個二分類)。如果預測是正確的,則無須修正權重;如果預測有誤,則用學習率(Learning Rate)乘以差錯(期望值與實際值之間的差值),來對應地調整權重,如下圖所示。
 學著,學著,這部感知機就能“感知”出最佳的連接權值。然后,對于一個全新的圖片,授能何人工干預的情況下,它能“獨立”判定出圖片標識為左還是為右。
所謂感知機,其實就是一個由兩層神經元構成的網絡結構,它在輸入層接收外界的輸人,通過激活函數(含閾值)實施變換,最后把信號傳送至輸出層,因此它也被稱為“閾值邏輯單元”。感知機后來成為許多神經網絡的基礎,但客觀來講,它的理論基礎依然建立于皮茨等人提出的“M-P”神經元模型。
感知機雖然可以自己學習,但是存在兩個主要問題:
(1)單層神經網絡無法解決不可線性分割的問題,典型的證據就是不能實現“異或門電路”功能。
 (2)更為嚴重的問題是,即使使用當時最先進的計算機,也沒有足夠的計算能力去完成神經網絡模型訓練所需的超大的計算量(比如調整網絡中的權重參數)
在明斯基(1969年獲得圖靈獎)提出這一問題后,深度學習沉睡了20年。
4.深度學習的復活——多層網絡
1975年感知機“異或”問題被理論界徹底解決,也就是增加神經網絡的層數。這就好比,人是由細胞構成的,在理論上,我們單純從細胞這個層面不斷擴大需考察細胞的數量、特性等,最終也可以區分不同的人。但實際上,我們并不是這么做的,而是通過不斷地抽象,從多個層面來認知不同的人。比如,先從細胞層面構成器官,再從器官層面,構成不同的個人。
 為了優化模型效果,我們定義損失函數 f(x) 來表述預測值和真實值的誤差,優化指的是改變 x 以最小化或最大化某個函數 f(x) 的任務。 我們通常以最小化 f(x) 指代大多數最優化問題。最大化可經由最小化算法最小化 -f(x) 來實現。
 對于函數的某個特定點,它的梯度表示從該點出發,函數值增長最為迅猛的方向,梯度的反方向就是函數值下降最快的方向。如果函數每次都沿著梯度遞減的方向走,自然會走到函數值最小值附近。
下面以 f(x)=x^2 為例,f’(x)=2x。以 x=10 作為初始值,學習率 n=0.2。經過第一次迭代后,x=10-0.2×2=6,迭代曲線如下圖:
 如果學習率太小,可能迭代很久都不達到最小值點,相反,如果太大,可能產生震蕩,如下圖:
 f(x)=x^2 的輸入只有一個變量,如果神經網絡的輸入層有多個變量,其構成一組輸入向量,此時損失函數如下:
 
其中
 和上面一樣,我們要在多維空間上實現最快遞減,如下圖:
 
 我們知道曲面上方向導數的最大值的方向就代表了梯度的方向,因此我們在做梯度下降的時候,應該是沿著梯度的反方向進行權重的更新,可以有效的找到全局的最優解。權重更新過程如下:
 上述即批量梯度下降,其在更新權重時,使用所有的樣本,也就是說每個樣本都參與調整權重,這樣可以達到全局最優,但是時間也會很長,同時容易陷入局部最優解。更新公式如下:
 隨機梯度下降:在每次更新時用1個樣本,隨機也就是用樣本中的一個例子近似所有的樣本,以此調整權重。相比于批量梯度,這樣的方法更快收斂,雖然不是全局最優,但是大的整體的方向是向全局最優解的,而且有助于逃逸出局部最小值點。更新公式如下:
 小批量隨機梯度下降:在每次更新時用b個樣本來近似全部的,在深度學習中,這種方法用的是最多的。因為小批量不僅可以反映樣本的一個分布情況,而且收斂也不會很慢,中庸之道。
5.深度學習的突破——BP算法
在19世紀70年代,人工神經網絡面臨一個重大的挑戰性問題:增加神經網絡的層數雖然可為其提供更大的靈活性,讓網絡具有更強的表征能力,也就是說,能解決的問題更多,但隨之而來的數量龐大的網絡參數的訓練,一直是制約多層神經網絡發展的一個重要瓶頸。
1986年由杰弗里·辛頓(Geoffirey Hinton)和大衛·魯姆哈特(David Rumelhart)等人提出BP算法,其論文“借助反向傳播算法的學習表征(Leaming Representations by Back-propagating errors)發表在著名學術期刊Nature(自然)上。
該論文首次系統而簡潔地闡述了反向傳播算法在神經網絡模型上的應用。BP算法把網絡權值糾錯的運算量,從原來的與神經元數目的平方成正比,下降到只和神經元數目本身成正比。
6.深度學習的崛起——卷積神經網絡
BP神經網絡的應用對象是全連接神經網絡,隨著梯度的逐層減小,導致它對網線權值的調整作用越來越小,故此,BP算法多用于淺層網絡結構(通常小7層),這就限制了BP 算法的數據表征能力,從而也就限制了BP的性能限。
1968 年,神經生物學家大衛·休伯爾(David Hunter Hubel)與托斯坦·威澤爾(Torsten N. Wiesel)在研究動物視覺信息處理時,有兩個重要而有趣的發現:
(1)對于視覺的編碼,動物大腦皮層的神經元實際上是存在局部感受域的,具體來說,它們是局部敏感的且具有方向選擇性。
(2)動物大腦皮層是分級、分層處理信息的。在大腦的初級視覺皮層中存在幾種細胞:簡單細胞、復雜細胞和超復雜細胞,這些不同類型的細胞承擔著不同抽象層次的視覺感知功能。
神而洞察的專注可能要勝過廣而膚淺的觀察。
受該理念的啟發,1980年日本學者福島邦彥( Fukushima )提出了神經認知機( Neocognitron,亦譯為“新識別機”)模型,這是一個使用無監督學習訓練的神經網絡模型,其實也就是卷積神經網絡的雛形。
自此之后,很多計算機科學家先后對神經認知機做了深人研究和改進,但效果卻不盡如人意。直到 1990 年,在 AT&T貝爾實驗室工作的 Yamn LeCun等人,把有監督的反向傳播(BP)算法應用于福島邦彥等人提出的架構,從而奠定了現代CNN的結構。
 
 
 
 參考文獻:
 [1]《深度學習之美:AI時代的數據處理與最佳實踐》
 [2]《動手學深度學習》
 [3]《tensorflow實戰google深度框架》
 [4] 如何理解隨機梯度下降(stochastic gradient descent,SGD)? - Evan的回答 - 知乎
 https://www.zhihu.com/question/264189719/answer/291167114
猜你喜歡:👇🏻
 ?【隨筆】卷積神經網絡中的卷積怎么卷?
 ?【隨筆】激活函數是怎樣一種存在?
 ?【隨筆】通用近似定理
總結
以上是生活随笔為你收集整理的【随笔】深度学习之美——杨家有女初长成,养在深闺人未识的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 数据分析sql面试必会6题经典_师兄大厂
- 下一篇: 【笔记】An explainable d
