深度學習入門指南:25個初學者需要知道的概念

深度學習 機器學習 CNN 人工智能 量子位 2017-05-30

王瀚宸 編譯自 Analytics Vidhya

量子位 出品 | 公眾號 QbitAI

人工智能,深度學習,機器學習……不管你在從事什麼工作,都需要了解這些概念。否則的話,三年之內你就會變成一隻恐龍。 —— 馬克·庫班

庫班的這句話,乍聽起來有些偏激,但是“話糙理不糙”,我們現在正處於一場由大數據和超算引發的改革洪流之中。

首先,我們設想一下,如果一個人生活在20世紀早期卻不知電為何物,是怎樣一種體驗。在過去的歲月裡,他已經習慣於用特定的方法來解決相應的問題,霎時間周圍所有的事物都發生了劇變。以前需要耗費大量人力物力的工作,現在只需要一個人和電就能完成了。

而在現在的背景下,機器學習、深度學習就是新的“電力”。

所以呢,如果你還不瞭解深度學習有多麼強大,不妨就從這篇文章開始。在這篇文章中,作者Dishashree Gupta為想了解深度學習的人,羅列並解釋了25個這一領域最常用的術語。

這25個術語被分成三組:

  • 神經網絡中的基礎概念(包含常用的一些激活函數)

  • 卷積神經網絡

  • 遞歸神經網絡

基礎概念:

(1) 神經元(Neuron)

正如我們大腦中的基本組成單元,神經元是組成神經網絡的基礎結構。設想一下當接觸到新的信息時,我們的身體會對其進行處理,最後產生一些特定的反應。

相似地,在神經網絡中,在收到輸入的信號之後,神經元通過處理,然後把結果輸出給其它的神經元或者直接作為最終的輸出。

深度學習入門指南:25個初學者需要知道的概念

(2) 加權/權重(Weights)

當輸入信號進入到神經元后,會被乘以相應的權重因子。舉例來說,假設一個神經元有兩個輸入信號,那麼每個輸入將會存在著一個與之相應的權重因子。在初始化網絡的時候,這些權重會被隨機設置,然後在訓練模型的過程中再不斷地發生更改。

在經過訓練後的神經網絡中,一個輸入具有的權重因子越高,往往意味著它的重要性更高,對輸出的影響越大。另一方面,當權重因子為0時意味著這個輸入是無價值的。

如下圖所示,假設輸入為a,相應的權重為W1。那麼通過賦權節點後相應的輸入應變為a*W1。

深度學習入門指南:25個初學者需要知道的概念

(3) 偏置/偏倚(Bias)

除了權重之外,輸入還需要經過另外一種線性處理,叫做偏置。通過把偏置b與加權後的輸入信號a*W1直接相加,以此作為激活函數的輸入信號。

(4) 激活函數

之前線性處理之後的輸入信號通過激活函數進行非線性變換,從而得到輸出信號。即最後輸出的信號具有f(a*W1+b)的形式,其中f()為激活函數。

在下面的示意圖中, 設X1…Xn等n個輸入分別對應著權重因子Wk1…Wkn以及相應的偏置b1…bn。我們把輸入Xi乘以對應的權重因子Wki再加上bi的結果稱為u。

u=∑w*x+b

這個激活函數f是作用在u上的,也就是說這個神經元最終的輸出結果為yk = f(u)

深度學習入門指南:25個初學者需要知道的概念

接下來我們講一講常用的一些激活函數:Sigmoid函數, 線性整流函數(ReLU) 和 softmax函數

(a) Sigmoid函數

作為最常用的激活函數之一,它的定義如下:

深度學習入門指南:25個初學者需要知道的概念

深度學習入門指南:25個初學者需要知道的概念

來源:維基百科

sigmoid函數為值域在0到1之間的光滑函數,當需要觀察輸入信號數值上微小的變化時,與階梯函數相比,平滑函數(比如Sigmoid函數)的表現更好。

(b) 線性整流函數(ReLU-Rectified Linear Units)

近來的神經網絡傾向於使用ReLU替代掉sigmoid函數作為隱層的激活函數,它的定義如下:

f(x) = max(x,0).

當x大於0時,函數輸出x,其餘的情況輸出為0。函數的圖像是:

深度學習入門指南:25個初學者需要知道的概念

來源:cs231n

使用ReLU函數的好處是,對於所有大於0的輸入,導數是恆定的,這能夠加快訓練網絡的速度。

(c) softmax函數

softmax激活函數通常應用在分類問題的輸出層上。

它與Sigmoid函數相似,唯一的不同是softmax函數輸出結果是歸一化的。sigmoid函數能夠在雙輸出的時候奏效,但當面對多種類分類問題的時候,softmax函數可以方便地直接將各個分類出現的概率算出。

(5) 神經網絡

神經網絡是構成深度學習系統的框架。神經網絡的任務是找到一個未知函數的近似表達方式,它是由彼此相連的神經元所組成,這些神經元會在訓練網絡的過程中根據誤差來更改它們的權重和偏置。激活函數將非線性變化用線性變化的組合來表示,最終產生輸出。

關於神經網絡最好的定義是由Matthew Mayo給出的:

神經網絡是由大量彼此相連、概念化的人造神經元組成的,這些神經元彼此之間傳遞著數據,相應的權重也會隨著神經網絡的經歷而進行調整。神經元們有著激活的閾值,當它們遇到相應的數據以及權重時會被激活,這些被激活的神經元組合起來導致了“學習”行為的產生。

(6) 輸入層/輸出層/隱藏層

從名字中就能看出,輸入層代表接受輸入數據的一層,基本上是網絡的第一層;輸出層是產生輸出的一層,或者是網絡的最後一層,而網絡中間的處理層叫做隱藏層。

這些隱藏層對輸入的數據進行特定的處理,再將其輸入到下一層。輸入層和輸出層是可見的,而中間層通常是被隱藏起來的。

深度學習入門指南:25個初學者需要知道的概念

來源:cs231n

(7) 多層感知器(MLP-Multi Layer Perceptron)

一個單一的神經元不能夠完成複雜的任務,因此需要將它們堆疊起來工作進而產生有用的輸出。

最簡單的神經網絡包括一個輸入層、一個隱藏層和一個輸出層。每一層都由多個神經元組成,每一層的每個神經元都與下一層中的所有神經元相連。這樣的網絡可以被稱為是全連接網絡

深度學習入門指南:25個初學者需要知道的概念

(8) 正向傳播(forward propagation)

正向傳播是指信號從輸入層經過隱藏層到輸出層的傳輸過程。在正向傳播中,信號是沿著單一方向進行傳播,即輸入層給隱藏層提供輸入,進而最終產生相應的輸出。

(9) 成本函數(cost function)

在神經網絡的建造過程中,建造者們希望輸出的結果能夠儘可能地接近實際值,因此使用成本函數來描述網絡的這種準確性。

神經網絡的目標是增加預測的準確性從而減少誤差,即最小化成本函數。通常情況下,最優化的輸出結果往往對應著成本函數的最小值。

如果採用均方誤差作為成本誤差,即表示為C= 1/m ∑(y – a)2,其中m是訓練過程中輸入數據的個數,a是相應的預測值,y代表實際值。

模型學習的過程就是圍繞著最小化成本而進行的。

(10) 梯度下降(gradient descent)

梯度下降是一種最小化成本函數的優化算法。

在梯度下降中,從起始點x開始,一次移動一點,比如說移動delta h,然後將位置信息更換為x-delta h,如此重複下去,直到達到局部的極小值,此時認為極小值就是成本最小的地方。

深度學習入門指南:25個初學者需要知道的概念

數學上說,沿著函數的負梯度運動就能得到函數的局域最小值。

(11) 學習速率(learning rate)

學習速率定義為在每次迭代過程中對成本函數的最小化次數。簡單來說,學習速率就是指朝著成本函數最小值的下降速率。選擇學習速率需要很謹慎,過大會導致可能越過最優解,過小會導致收斂花費太多的時間。

深度學習入門指南:25個初學者需要知道的概念

(12) 反向傳播(back propagation)

在定義一個神經網絡的過程中, 每個節點會被隨機地分配權重和偏置。一次迭代後,我們可以根據產生的結果計算出整個網絡的偏差,然後用偏差結合成本函數的梯度,對權重因子進行相應的調整,使得下次迭代的過程中偏差變小。這樣一個結合成本函數的梯度來調整權重因子的過程就叫做反向傳播。

在反向傳播中,信號的傳遞方向是朝後的,誤差連同成本函數的梯度從輸出層沿著隱藏層傳播,同時伴隨著對權重因子的調整。

(13) 分批(Batches)

當在訓練一個神經網絡的時候,相對於一次性將所有的數據全輸入進去,有一個更好的方法:先將數據隨機地分為幾個大小一致的數據塊,再分批次輸入。跟一次性訓練出來的模型相比,分批訓練能夠使模型的適用性更好 。

(14) 週期(epochs)

一個週期表示對所有的數據批次都進行了一次迭代,包括一次正向傳播和一次反向傳播,所以一個週期/紀元就意味著對所有的輸入數據分別進行一次正向傳播和反向傳播。

訓練網絡週期的次數是可以選擇的,往往週期數越高,模型的準確性就越高,但是,耗時往往就越長。同樣你還需要考慮如果週期/紀元的次數過高,那麼可能會出現過擬合的情況。

(15) Dropout方法

Dropout是一個可以阻止網絡過擬合的規則化方法。就像它的名字那樣,在訓練過程中隱藏的某些特定神經元會被忽略掉(drop)。這意味著網絡的訓練是在幾個不同的結構上完成的。

這種dropout的方式就像是一場合奏,多個不同結構網絡的輸出組合產生最終的輸出結果。

深度學習入門指南:25個初學者需要知道的概念

來源:Hinton論文《Improving neural networks by preventing co-adaptation of feature detectors》

地址:https://arxiv.org/pdf/1207.0580.pdf

(16) 分批標準化(Batch Normalization)

分批標準化就像是人們在河流中用以監測水位的監察站一樣。這是為了保證下一層網絡得到的數據擁有合適的分佈。在訓練神經網絡的過程中,每一次梯度下降後權重因子都會得到改變,從而會改變相應的數據結構。

深度學習入門指南:25個初學者需要知道的概念

但是下一層網絡希望能夠得到與之前分佈相似的數據,因此在每一次數據傳遞前都需要對數據進行一次正則化處理。

深度學習入門指南:25個初學者需要知道的概念

卷積神經網絡

(17) 過濾器/濾波器(Filter)

CNN中的濾波器,具體是指將一個權重矩陣,我們用它乘以輸入圖像的一部分,產生相應的卷積輸出。

比方說,對於一個28×28的圖片,將一個3×3的濾波器與圖片中3×3的矩陣依次相乘,從而得到相應的卷積輸出。濾波器的尺寸通常比原始圖片要小,與權重相似,在最小化成本的反向傳播中,濾波器也會被更新。

就像下面這張圖片一樣,通過一個過濾器,依次乘以圖片中每個3×3的分塊,從而產生卷積的結果。

深度學習入門指南:25個初學者需要知道的概念

(18) CNN(卷積神經網絡)

卷積神經網絡通常用來處理圖像數據,假設輸入數據的形狀為28×28×3(28pixels×28pixels×RGB Value),那麼對於傳統的神經網絡來說就會有2352(28×28×3)個變量。隨著圖像尺寸的增加,那麼變量的數量就會急劇增加。

因此,通過對圖片進行卷積,可以減少變量的數目。隨著過濾器沿著圖像上寬和高的兩個方向滑動,就會產生一個相應的2維激活映射,最後再沿縱向將所有的激活映射堆疊在一起,就產生了最後的輸出。

可以參照下面這個示意圖。

深度學習入門指南:25個初學者需要知道的概念

來源:cs231n

(19) 池化(pooling)

為了進一步減少變量的數目同時防止過擬合,一種常見的做法是在卷積層中引入池化層(pooling layer)。如下圖所示,最常用的池化層的操作是將原始圖片中每個4×4分塊取最大值形成一個新的矩陣,這叫做最大值池化(max pooling)。

深度學習入門指南:25個初學者需要知道的概念

來源:cs231n

當然也有人嘗試諸如平均池化(average pooling)之類的方式,但在實際情況中最大化池化擁有更好的效果。

(20) 補白(padding)

如下圖所示,補白(padding)通常是指給圖像的邊緣增加額外的空白,從而使得卷積後輸出的圖像跟輸入圖像在尺寸上一致,這也被稱作相同補白(Same Padding)。

深度學習入門指南:25個初學者需要知道的概念

有效補白(Valid Padding)指的是保持圖片上每個真實的像素點,不增加空白,因此在經歷卷積後數據的尺寸會不斷變小。(譯者注:具體是指有效補白每次會丟棄最後不滿足於一次卷積的像素點,比如說filter是3*3的,那麼對於一行有32個pixel的數據,經歷一次卷積後就會丟掉最後2個pixel;而通過相同補白,增加一個空白位,使每行有33個pixel,卷積後數據的尺寸不會變小。

(21) 數據增強(Data Augmentation)

數據增強(Data Augmentation)指的是從已有數據中創造出新的數據,通過增加訓練量以期望能夠提高預測的準確率。

比如在說數字識別中,我們遇到的數字可能是傾斜或旋轉的,因此如果將訓練的圖片進行適度的旋轉,增大訓練量,那麼模型的準確性就可能會得到提高。通過“旋轉”的操作,訓練數據的品質得到了提升,這種過程被稱作數據增強。

深度學習入門指南:25個初學者需要知道的概念

遞歸神經網絡

(22) 遞歸神經元(Recurrent Neural Network)

對於遞歸神經元來說,經由它自己處理過的數據會變成自身下一次的輸入,這個過程總共會進行t次。如下圖所示,將遞歸神經元展開就相當於t個不同的神經元串聯起來,這種神經元的長處是能夠產生一個更全面的輸出結果。

深度學習入門指南:25個初學者需要知道的概念

來源:cs231n

(23) 遞歸神經網絡(RNN-Recurrent Neural Network)

遞歸神經網絡通常被用於處理序列化的數據,即前一項的輸出是用來預測下一項的 。

遞歸神經網絡中存在環的結構,這些神經元上的環狀結構使得它們能夠存儲之前的數據一段時間,從而使得能夠預測輸出。

與遞歸神經元相似,在RNN中隱藏層的輸出會作為下一次的輸入,如此往復經歷t次,再將輸出的結果傳遞到下一層網絡中。這樣,最終輸出的結果會更全面,而且之前訓練的信息被保持的時間會更久。

(24) 梯度消失問題

當激活函數的梯度很小時就會發生梯度消失問題。在反向傳播的過程中,權重因子會被多次乘以這些小的梯度,因此會越變越小,隨著遞歸的深入趨於“消失”, 使得神經網絡失去了長程可靠性。這在遞歸神經網絡中是一個較普遍的問題。

(25) 梯度爆炸問題

與梯度消失問題對應,當激活函數的梯度較大時,就會發生梯度爆炸問題。在反向傳播的過程中,部分節點的大梯度使得他們的權重變得非常大,從而削弱了其他節點對於結果的影響,這個問題可以通過截斷(即設置一個梯度允許的最大值)的方式來有效避免。

【完】

招聘

我們正在招募編輯記者、運營等崗位,工作地點在北京中關村,期待你的到來,一起體驗人工智能的風起雲湧。

相關細節,請在公眾號對話界面,回覆:“招聘”兩個字。

One More Thing…

今天AI界還有哪些事值得關注?在量子位(QbitAI)公眾號會話界面回覆“今天”,看我們全網蒐羅的AI行業和研究動態。筆芯~

相關推薦

推薦中...