理解這25個概念,你的人工智能,深度學習,機器學習纔算入門!

人工智能,深度學習,機器學習—不管你在作什麼,若是你對它不是很瞭解的話—去學習它。不然的話不用三年你就跟不上時代的潮流了。

                                                                                            ——馬克.庫班git

 

馬克.庫班的這個觀點可能聽起來很極端——可是它所傳達的信息是徹底正確的! 咱們正處於一場革命的旋渦之中——一場由大數據和計算能力引發的革命。github

 

只須要一分鐘,咱們來想象一下,在20世紀初,若是一我的不瞭解電力,他/她會以爲如何?你會習慣於以某種特定的方式來作事情,日復一日,年復一年,而你周圍的一切事情都在發生變化,一件須要不少人才能完成的事情僅依靠一我的和電力就能夠輕鬆搞定,而咱們今天正以機器學習和深度學習的方式在經歷一場類似的旅程。算法

 

因此,若是你尚未探索或理解深度學習的神奇力量——那你應該從今天就開始進入這一領域。網絡

 

誰應該讀這篇文章?架構

 

若是你是一個想學習或理解深度學習的人,這篇文章是爲你量身定作的。在本文中,我將介紹深度學習中經常使用的各類術語。機器學習

 

若是你想知道我爲何要寫這篇文章——我之因此在寫,是由於我但願你開始你的深度學習之旅,而不會遇到麻煩或是被嚇倒。當我第一次開始閱讀關於深度學習資料的時候,有幾個我據說過的術語,可是當我試圖理解它的時候,它倒是使人感到很迷惑的。而當咱們開始閱讀任何有關深度學習的應用程序時,總會有不少個單詞重複出現。函數

 

在本文中,我爲你建立了一個相似於深度學習的字典,你能夠在須要使用最經常使用術語的基本定義時進行參考。我但願在你閱讀這篇文章以後,你就不會再受到這些術語的困擾了。學習

 

與主題相關的術語大數據

 

爲了幫助你瞭解各類術語,我已經將它們分紅3組。若是你正在尋找特定術語,你能夠跳到該部分。若是你是這個領域的新手,那我建議你按照我寫的順序來通讀它們。優化

 

1.神經網絡基礎(Basics of Neural Networks)

                                 ——經常使用激活函數(Common Activation Functions)

 

2.卷積神經網絡(Convolutional Neural Networks)

 

3.循環神經網絡(Recurrent Neural Networks)

 

神經網絡基礎

 

1)神經元(Neuron)——就像造成咱們大腦基本元素的神經元同樣,神經元造成神經網絡的基本結構。想象一下,當咱們獲得新信息時咱們該怎麼作。當咱們獲取信息時,咱們通常會處理它,而後生成一個輸出。相似地,在神經網絡的狀況下,神經元接收輸入,處理它併產生輸出,而這個輸出被髮送到其餘神經元用於進一步處理,或者做爲最終輸出進行輸出。

 

 

2)權重(Weights)——當輸入進入神經元時,它會乘以一個權重。例如,若是一個神經元有兩個輸入,則每一個輸入將具備分配給它的一個關聯權重。咱們隨機初始化權重,並在模型訓練過程當中更新這些權重。訓練後的神經網絡對其輸入賦予較高的權重,這是它認爲與不那麼重要的輸入相比更爲重要的輸入。爲零的權重則表示特定的特徵是微不足道的。

 

讓咱們假設輸入爲a,而且與其相關聯的權重爲W1,那麼在經過節點以後,輸入變爲a * W1

 

 

3)誤差(Bias)——除了權重以外,另外一個被應用於輸入的線性份量被稱爲誤差。它被加到權重與輸入相乘的結果中。基本上添加誤差的目的是來改變權重與輸入相乘所得結果的範圍的。添加誤差後,結果將看起來像a* W1 +誤差。這是輸入變換的最終線性份量。

 

4)激活函數(Activation Function)——一旦將線性份量應用於輸入,將會須要應用一個非線性函數。這經過將激活函數應用於線性組合來完成。激活函數將輸入信號轉換爲輸出信號。應用激活函數後的輸出看起來像f(a * W1 + b),其中f()就是激活函數。

 

在下圖中,咱們將「n」個輸入給定爲X1到Xn而與其相應的權重爲Wk1到Wkn。咱們有一個給定值爲bk的誤差。權重首先乘以與其對應的輸入,而後與誤差加在一塊兒。而這個值叫作u。

 

U =ΣW* X+ b

 

激活函數被應用於u,即 f(u),而且咱們會從神經元接收最終輸出,如yk = f(u)。

 

 

經常使用的激活函數

 

最經常使用的激活函數就是Sigmoid,ReLU和softmax

 

a)Sigmoid——最經常使用的激活函數之一是Sigmoid,它被定義爲:

 

 

來源:維基百科

 

Sigmoid變換產生一個值爲0到1之間更平滑的範圍。咱們可能須要觀察在輸入值略有變化時輸出值中發生的變化。光滑的曲線使咱們可以作到這一點,所以優於階躍函數。

 

b)ReLU(整流線性單位)——與Sigmoid函數不一樣的是,最近的網絡更喜歡使用ReLu激活函數來處理隱藏層。該函數定義爲:

 

 

當X>0時,函數的輸出值爲X;當X<=0時,輸出值爲0。函數圖以下圖所示:

 

來源:cs231n

 

使用ReLU函數的最主要的好處是對於大於0的全部輸入來講,它都有一個不變的導數值。常數導數值有助於網絡訓練進行得更快。

 

c) Softmax——Softmax激活函數一般用於輸出層,用於分類問題。它與sigmoid函數是很相似的,惟一的區別就是輸出被歸一化爲總和爲1。Sigmoid函數將發揮做用以防咱們有一個二進制輸出,可是若是咱們有一個多類分類問題,softmax函數使爲每一個類分配值這種操做變得至關簡單,而這能夠將其解釋爲機率。

 

以這種方式來操做的話,咱們很容易看到——假設你正在嘗試識別一個可能看起來像8的6。該函數將爲每一個數字分配值以下。咱們能夠很容易地看出,最高几率被分配給6,而下一個最高几率分配給8,依此類推……

 

 

5)神經網絡(Neural Network)——神經網絡構成了深度學習的支柱。神經網絡的目標是找到一個未知函數的近似值。它由相互聯繫的神經元造成。這些神經元具備權重和在網絡訓練期間根據錯誤來進行更新的誤差。激活函數將非線性變換置於線性組合,而這個線性組合稍後會生成輸出。激活的神經元的組合會給出輸出值。

 

一個很好的神經網絡定義——

 

「神經網絡由許多相互關聯的概念化的人造神經元組成,它們之間傳遞相互數據,而且具備根據網絡」經驗「調整的相關權重。神經元具備激活閾值,若是經過其相關權重的組合和傳遞給他們的數據知足這個閾值的話,其將被解僱;發射神經元的組合致使「學習」。

 

6)輸入/輸出/隱藏層(Input / Output / Hidden Layer)——正如它們名字所表明的那樣,輸入層是接收輸入那一層,本質上是網絡的第一層。而輸出層是生成輸出的那一層,也能夠說是網絡的最終層。處理層是網絡中的隱藏層。這些隱藏層是對傳入數據執行特定任務並將其生成的輸出傳遞到下一層的那些層。輸入和輸出層是咱們可見的,而中間層則是隱藏的。

 

來源:cs231n

 

7)MLP(多層感知器)——單個神經元將沒法執行高度複雜的任務。所以,咱們使用堆棧的神經元來生成咱們所須要的輸出。在最簡單的網絡中,咱們將有一個輸入層、一個隱藏層和一個輸出層。每一個層都有多個神經元,而且每一個層中的全部神經元都鏈接到下一層的全部神經元。這些網絡也能夠被稱爲徹底鏈接的網絡。

 

 

8)正向傳播(Forward Propagation)——正向傳播是指輸入經過隱藏層到輸出層的運動。在正向傳播中,信息沿着一個單一方向前進。輸入層將輸入提供給隱藏層,而後生成輸出。這過程當中是沒有反向運動的。

 

9)成本函數(Cost Function)——當咱們創建一個網絡時,網絡試圖將輸出預測得儘量靠近實際值。咱們使用成本/損失函數來衡量網絡的準確性。而成本或損失函數會在發生錯誤時嘗試懲罰網絡。

 

咱們在運行網絡時的目標是提升咱們的預測精度並減小偏差,從而最大限度地下降成本。最優化的輸出是那些成本或損失函數值最小的輸出。

 

若是我將成本函數定義爲均方偏差,則能夠寫爲:

 

C= 1/m ∑(y–a)^2,

 

其中m是訓練輸入的數量,a是預測值,y是該特定示例的實際值。

 

學習過程圍繞最小化成原本進行。

 

10)梯度降低(Gradient Descent)——梯度降低是一種最小化成本的優化算法。要直觀地想想,在登山的時候,你應該會採起小步驟,一步一步走下來,而不是一會兒跳下來。所以,咱們所作的就是,若是咱們從一個點x開始,咱們向下移動一點,即Δh,並將咱們的位置更新爲x-Δh,而且咱們繼續保持一致,直到達到底部。考慮最低成本點。

 

圖:https://www.youtube.com/watch?v=5u4G23_OohI

 

在數學上,爲了找到函數的局部最小值,咱們一般採起與函數梯度的負數成比例的步長。

 

你能夠經過這篇文章來詳細瞭解梯度降低。

 

11)學習率(Learning Rate)——學習率被定義爲每次迭代中成本函數中最小化的量。簡單來講,咱們降低到成本函數的最小值的速率是學習率。咱們應該很是仔細地選擇學習率,由於它不該該是很是大的,以致於最佳解決方案被錯過,也不該該很是低,以致於網絡須要融合。

 

http://cs231n.github.io/neural-networks-3/

 

12)反向傳播(Backpropagation)——當咱們定義神經網絡時,咱們爲咱們的節點分配隨機權重和誤差值。一旦咱們收到單次迭代的輸出,咱們就能夠計算出網絡的錯誤。而後將該錯誤與成本函數的梯度一塊兒反饋給網絡以更新網絡的權重。 最後更新這些權重,以便減小後續迭代中的錯誤。使用成本函數的梯度的權重的更新被稱爲反向傳播。

 

在反向傳播中,網絡的運動是向後的,錯誤隨着梯度從外層經過隱藏層流回,權重被更新。

 

13)批次(Batches)——在訓練神經網絡的同時,不用一次發送整個輸入,咱們將輸入分紅幾個隨機大小相等的塊。與整個數據集一次性饋送到網絡時創建的模型相比,批量訓練數據使得模型更加廣義化。

 

14)週期(Epochs)——週期被定義爲向前和向後傳播中全部批次的單次訓練迭代。這意味着1個週期是整個輸入數據的單次向前和向後傳遞。

 

你能夠選擇你用來訓練網絡的週期數量,更多的週期將顯示出更高的網絡準確性,然而,網絡融合也須要更長的時間。另外,你必須注意,若是週期數過高,網絡可能會過分擬合。

 

15)丟棄(Dropout)——Dropout是一種正則化技術,可防止網絡過分擬合套。顧名思義,在訓練期間,隱藏層中的必定數量的神經元被隨機地丟棄。這意味着訓練發生在神經網絡的不一樣組合的神經網絡的幾個架構上。你能夠將Dropout視爲一種綜合技術,而後將多個網絡的輸出用於產生最終輸出。

 

來源:Original paper

 

16)批量歸一化(Batch Normalization)——做爲一個概念,批量歸一化能夠被認爲是咱們在河流中設定爲特定檢查點的水壩。這樣作是爲了確保數據的分發與但願得到的下一層相同。當咱們訓練神經網絡時,權重在梯度降低的每一個步驟以後都會改變,這會改變數據的形狀如何發送到下一層。

 

 

可是下一層預期分佈相似於以前所看到的分佈。 因此咱們在將數據發送到下一層以前明確規範化數據。

 

 

卷積神經網絡

 

17)濾波器(Filters)——CNN中的濾波器與加權矩陣同樣,它與輸入圖像的一部分相乘以產生一個迴旋輸出。咱們假設有一個大小爲28 * 28的圖像,咱們隨機分配一個大小爲3 * 3的濾波器,而後與圖像不一樣的3 * 3部分相乘,造成所謂的卷積輸出。濾波器尺寸一般小於原始圖像尺寸。在成本最小化的反向傳播期間,濾波器值被更新爲重量值。

 

參考一下下圖,這裏filter是一個3 * 3矩陣:

與圖像的每一個3 * 3部分相乘以造成卷積特徵。

 

 

18)卷積神經網絡(CNN)——卷積神經網絡基本上應用於圖像數據。假設咱們有一個輸入的大小(28 * 28 * 3),若是咱們使用正常的神經網絡,將有2352(28 * 28 * 3)參數。而且隨着圖像的大小增長參數的數量變得很是大。咱們「卷積」圖像以減小參數數量(如上面濾波器定義所示)。當咱們將濾波器滑動到輸入體積的寬度和高度時,將產生一個二維激活圖,給出該濾波器在每一個位置的輸出。咱們將沿深度尺寸堆疊這些激活圖,併產生輸出量。

 

你能夠看到下面的圖,以得到更清晰的印象。

 

 

19)池化(Pooling)——一般在卷積層之間按期引入池層。這基本上是爲了減小一些參數,並防止過分擬合。最多見的池化類型是使用MAX操做的濾波器尺寸(2,2)的池層。它會作的是,它將佔用原始圖像的每一個4 * 4矩陣的最大值。

 

來源:cs231n

 

你還可使用其餘操做(如平均池)進行池化,可是最大池數量在實踐中表現更好。

 

20)填充(Padding)——填充是指在圖像之間添加額外的零層,以使輸出圖像的大小與輸入相同。這被稱爲相同的填充。

 

 

在應用濾波器以後,在相同填充的狀況下,卷積層具備等於實際圖像的大小。

 

有效填充是指將圖像保持爲具備實際或「有效」的圖像的全部像素。在這種狀況下,在應用濾波器以後,輸出的長度和寬度的大小在每一個卷積層處不斷減少。

 

21)數據加強(Data Augmentation)——數據加強是指從給定數據導出的新數據的添加,這可能被證實對預測有益。例如,若是你使光線變亮,可能更容易在較暗的圖像中看到貓,或者例如,數字識別中的9可能會稍微傾斜或旋轉。在這種狀況下,旋轉將解決問題並提升咱們的模型的準確性。經過旋轉或增亮,咱們正在提升數據的質量。這被稱爲數據加強。

 

 

循環神經網絡


 

22)循環神經元(Recurrent Neuron)——循環神經元是在T時間內將神經元的輸出發送回給它。若是你看圖,輸出將返回輸入t次。展開的神經元看起來像鏈接在一塊兒的t個不一樣的神經元。這個神經元的基本優勢是它給出了更廣義的輸出。

 

 

23)循環神經網絡(RNN)——循環神經網絡特別用於順序數據,其中先前的輸出用於預測下一個輸出。在這種狀況下,網絡中有循環。隱藏神經元內的循環使他們可以存儲有關前一個單詞的信息一段時間,以便可以預測輸出。隱藏層的輸出在t時間戳內再次發送到隱藏層。展開的神經元看起來像上圖。只有在完成全部的時間戳後,循環神經元的輸出才能進入下一層。發送的輸出更普遍,之前的信息保留的時間也較長。

 

而後根據展開的網絡將錯誤反向傳播以更新權重。這被稱爲經過時間的反向傳播(BPTT)。

 

24)消失梯度問題(Vanishing Gradient Problem)——激活函數的梯度很是小的狀況下會出現消失梯度問題。在權重乘以這些低梯度時的反向傳播過程當中,它們每每變得很是小,而且隨着網絡進一步深刻而「消失」。這使得神經網絡忘記了長距離依賴。這對循環神經網絡來講是一個問題,長期依賴對於網絡來講是很是重要的。

 

這能夠經過使用不具備小梯度的激活函數ReLu來解決。

 

25)激增梯度問題(Exploding Gradient Problem)——這與消失的梯度問題徹底相反,激活函數的梯度過大。在反向傳播期間,它使特定節點的權重相對於其餘節點的權重很是高,這使得它們不重要。這能夠經過剪切梯度來輕鬆解決,使其不超過必定值。

 

做者: 多啦A亮&阿童木     

來自: 機器人圈(jiqirenchanye)

相關文章
相關標籤/搜索