您當前的位置:首頁 > 攝影

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

作者:由 量子學園 發表于 攝影時間:2017-05-31

王瀚宸 編譯自 Analytics Vidhya

量子位 出品 | 公眾號 QbitAI

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

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

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

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

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

這25個術語被分成三組:

神經網路中的基礎概念(包含常用的一些啟用函式)

卷積神經網路

遞迴神經網路

基礎概念:

(1) 神經元(Neuron)

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

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

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

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

(2) 加權/權重(Weights)

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

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

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

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

深度學習入門指南: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個初學者要知道的概念

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

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

(a) Sigmoid函式

作為最常用的啟用函式之一,它的定義如下:

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

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

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

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

△ 來源:維基百科

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

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

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

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

當x大於0時,函式輸出x,其餘的情況輸出為0。函式的影象是:

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

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

△ 來源:cs231n

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

(c) softmax函式

softmax啟用函式通常應用在分類問題的輸出層上。

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

(5) 神經網路

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

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

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

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

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

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

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

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

△ 來源:cs231n

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

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

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

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

深度學習入門指南: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個初學者要知道的概念

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

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

(11) 學習速率(learning rate)

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

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

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

(12) 反向傳播(back propagation)

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

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

(13) 分批(Batches)

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

(14) 週期(epochs)

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

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

(15) Dropout方法

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

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

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

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

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

https://

arxiv。org/pdf/1207。0580

。pdf

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

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

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

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

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

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

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

卷積神經網路

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

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

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

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

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

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

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

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

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

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

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

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

△ 來源:cs231n

(19) 池化(pooling)

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

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

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

△ 來源:cs231n

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

(20) 補白(padding)

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

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

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

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

(21) 資料增強(Data Augmentation)

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

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

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

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

遞迴神經網路

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

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

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

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

△ 來源:cs231n

(23) 遞迴神經網路(RNN-Recurrent Neural Network)

遞迴神經網路通常被用於處理序列化的資料,即前一項的輸出是用來預測下一項的 。

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

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

(24) 梯度消失問題

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

(25) 梯度爆炸問題

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

【完】

One More Thing…

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