圖:pixabay 「機器人圈」導(dǎo)覽:很多人認為深度學習很枯燥,大部分情況是因為對深度學習的學術(shù)詞語,,特別是專有名詞很困惑,,即便對相關(guān)從業(yè)者,亦很難深入淺出地解釋這些詞語的含義,。本文編譯自Analytics Vidhya,,相信讀過此文的圈友,會對深度學習有個全新的認識,,機器人圈希望可以為圈友的深度學習之路起到一些輔助作用,。文章略長,時長大約20分鐘,,請仔細閱讀收藏,。 人工智能,深度學習,,機器學習—無論你在做什么,,如果你對它不是很了解的話—去學習它。否則的話不用三年你就跟不上時代的潮流了。 ——馬克.庫班 馬克.庫班的這個觀點可能聽起來很極端——但是它所傳達的信息是完全正確的,! 我們正處于一場革命的旋渦之中——一場由大數(shù)據(jù)和計算能力引起的革命,。 只需要一分鐘,我們來想象一下,,在20世紀初,,如果一個人不了解電力,他/她會覺得如何,?你會習慣于以某種特定的方式來做事情,,日復(fù)一日,年復(fù)一年,,而你周圍的一切事情都在發(fā)生變化,,一件需要很多人才能完成的事情僅依靠一個人和電力就可以輕松搞定,而我們今天正以機器學習和深度學習的方式在經(jīng)歷一場相似的旅程,。 所以,,如果你還沒有探索或理解深度學習的神奇力量——那你應(yīng)該從今天就開始進入這一領(lǐng)域。 誰應(yīng)該讀這篇文章,? 如果你是一個想學習或理解深度學習的人,,這篇文章是為你量身定做的。在本文中,,我將介紹深度學習中常用的各種術(shù)語,。 如果你想知道我為什么要寫這篇文章——我之所以在寫,是因為我希望你開始你的深度學習之旅,,而不會遇到麻煩或是被嚇倒,。當我第一次開始閱讀關(guān)于深度學習資料的時候,有幾個我聽說過的術(shù)語,,但是當我試圖理解它的時候,,它卻是令人感到很迷惑的。而當我們開始閱讀任何有關(guān)深度學習的應(yīng)用程序時,,總會有很多個單詞重復(fù)出現(xiàn),。 在本文中,我為你創(chuàng)建了一個類似于深度學習的字典,,你可以在需要使用最常用術(shù)語的基本定義時進行參考,。我希望在你閱讀這篇文章之后,,你就不會再受到這些術(shù)語的困擾了,。 與主題相關(guān)的術(shù)語 為了幫助你了解各種術(shù)語,我已經(jīng)將它們分成3組,。如果你正在尋找特定術(shù)語,,你可以跳到該部分。如果你是這個領(lǐng)域的新手,那我建議你按照我寫的順序來通讀它們,。 1.神經(jīng)網(wǎng)絡(luò)基礎(chǔ)(Basics of Neural Networks) ——常用激活函數(shù)(Common Activation Functions) 2.卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks) 3.循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Networks) 神經(jīng)網(wǎng)絡(luò)基礎(chǔ) 1)神經(jīng)元(Neuron)——就像形成我們大腦基本元素的神經(jīng)元一樣,,神經(jīng)元形成神經(jīng)網(wǎng)絡(luò)的基本結(jié)構(gòu)。想象一下,,當我們得到新信息時我們該怎么做,。當我們獲取信息時,我們一般會處理它,,然后生成一個輸出,。類似地,在神經(jīng)網(wǎng)絡(luò)的情況下,,神經(jīng)元接收輸入,,處理它并產(chǎn)生輸出,而這個輸出被發(fā)送到其他神經(jīng)元用于進一步處理,,或者作為最終輸出進行輸出,。 2)權(quán)重(Weights)——當輸入進入神經(jīng)元時,,它會乘以一個權(quán)重。例如,,如果一個神經(jīng)元有兩個輸入,,則每個輸入將具有分配給它的一個關(guān)聯(lián)權(quán)重。我們隨機初始化權(quán)重,,并在模型訓練過程中更新這些權(quán)重,。訓練后的神經(jīng)網(wǎng)絡(luò)對其輸入賦予較高的權(quán)重,這是它認為與不那么重要的輸入相比更為重要的輸入,。為零的權(quán)重則表示特定的特征是微不足道的,。 讓我們假設(shè)輸入為a,并且與其相關(guān)聯(lián)的權(quán)重為W1,,那么在通過節(jié)點之后,,輸入變?yōu)閍 * W1 3)偏差(Bias)——除了權(quán)重之外,,另一個被應(yīng)用于輸入的線性分量被稱為偏差。它被加到權(quán)重與輸入相乘的結(jié)果中,?;旧咸砑悠畹哪康氖莵砀淖儥?quán)重與輸入相乘所得結(jié)果的范圍的。添加偏差后,,結(jié)果將看起來像a* W1 +偏差,。這是輸入變換的最終線性分量,。 4)激活函數(shù)(Activation Function)——一旦將線性分量應(yīng)用于輸入,將會需要應(yīng)用一個非線性函數(shù),。這通過將激活函數(shù)應(yīng)用于線性組合來完成,。激活函數(shù)將輸入信號轉(zhuǎn)換為輸出信號。應(yīng)用激活函數(shù)后的輸出看起來像f(a * W1 + b),,其中f()就是激活函數(shù),。 在下圖中,我們將“n”個輸入給定為X1到Xn而與其相應(yīng)的權(quán)重為Wk1到Wkn,。我們有一個給定值為bk的偏差,。權(quán)重首先乘以與其對應(yīng)的輸入,然后與偏差加在一起,。而這個值叫做u,。 U =ΣW* X+ b 激活函數(shù)被應(yīng)用于u,即 f(u),,并且我們會從神經(jīng)元接收最終輸出,,如yk = f(u)。 常用的激活函數(shù) 最常用的激活函數(shù)就是Sigmoid,ReLU和softmax a)Sigmoid——最常用的激活函數(shù)之一是Sigmoid,,它被定義為: 來源:維基百科 Sigmoid變換產(chǎn)生一個值為0到1之間更平滑的范圍。我們可能需要觀察在輸入值略有變化時輸出值中發(fā)生的變化,。光滑的曲線使我們能夠做到這一點,,因此優(yōu)于階躍函數(shù)。 b)ReLU(整流線性單位)——與Sigmoid函數(shù)不同的是,,最近的網(wǎng)絡(luò)更喜歡使用ReLu激活函數(shù)來處理隱藏層,。該函數(shù)定義為: 當X>0時,,函數(shù)的輸出值為X;當X<> 來源:cs231n 使用ReLU函數(shù)的最主要的好處是對于大于0的所有輸入來說,它都有一個不變的導(dǎo)數(shù)值,。常數(shù)導(dǎo)數(shù)值有助于網(wǎng)絡(luò)訓練進行得更快,。 c)Softmax——Softmax激活函數(shù)通常用于輸出層,用于分類問題,。它與sigmoid函數(shù)是很類似的,,唯一的區(qū)別就是輸出被歸一化為總和為1。Sigmoid函數(shù)將發(fā)揮作用以防我們有一個二進制輸出,,但是如果我們有一個多類分類問題,,softmax函數(shù)使為每個類分配值這種操作變得相當簡單,而這可以將其解釋為概率,。 以這種方式來操作的話,,我們很容易看到——假設(shè)你正在嘗試識別一個可能看起來像8的6。該函數(shù)將為每個數(shù)字分配值如下,。我們可以很容易地看出,,最高概率被分配給6,而下一個最高概率分配給8,,依此類推…… 5)神經(jīng)網(wǎng)絡(luò)(Neural Network)——神經(jīng)網(wǎng)絡(luò)構(gòu)成了深度學習的支柱,。神經(jīng)網(wǎng)絡(luò)的目標是找到一個未知函數(shù)的近似值,。它由相互聯(lián)系的神經(jīng)元形成。這些神經(jīng)元具有權(quán)重和在網(wǎng)絡(luò)訓練期間根據(jù)錯誤來進行更新的偏差,。激活函數(shù)將非線性變換置于線性組合,,而這個線性組合稍后會生成輸出。激活的神經(jīng)元的組合會給出輸出值,。 一個很好的神經(jīng)網(wǎng)絡(luò)定義—— “神經(jīng)網(wǎng)絡(luò)由許多相互關(guān)聯(lián)的概念化的人造神經(jīng)元組成,,它們之間傳遞相互數(shù)據(jù),并且具有根據(jù)網(wǎng)絡(luò)”經(jīng)驗“調(diào)整的相關(guān)權(quán)重,。神經(jīng)元具有激活閾值,,如果通過其相關(guān)權(quán)重的組合和傳遞給他們的數(shù)據(jù)滿足這個閾值的話,其將被解雇;發(fā)射神經(jīng)元的組合導(dǎo)致“學習”,。 6)輸入/輸出/隱藏層(Input / Output / Hidden Layer)——正如它們名字所代表的那樣,,輸入層是接收輸入那一層,本質(zhì)上是網(wǎng)絡(luò)的第一層,。而輸出層是生成輸出的那一層,,也可以說是網(wǎng)絡(luò)的最終層。處理層是網(wǎng)絡(luò)中的隱藏層,。這些隱藏層是對傳入數(shù)據(jù)執(zhí)行特定任務(wù)并將其生成的輸出傳遞到下一層的那些層,。輸入和輸出層是我們可見的,而中間層則是隱藏的,。 來源:cs231n 7)MLP(多層感知器)——單個神經(jīng)元將無法執(zhí)行高度復(fù)雜的任務(wù)。因此,,我們使用堆棧的神經(jīng)元來生成我們所需要的輸出,。在最簡單的網(wǎng)絡(luò)中,我們將有一個輸入層,、一個隱藏層和一個輸出層,。每個層都有多個神經(jīng)元,并且每個層中的所有神經(jīng)元都連接到下一層的所有神經(jīng)元,。這些網(wǎng)絡(luò)也可以被稱為完全連接的網(wǎng)絡(luò),。 8)正向傳播(Forward Propagation)——正向傳播是指輸入通過隱藏層到輸出層的運動,。在正向傳播中,信息沿著一個單一方向前進,。輸入層將輸入提供給隱藏層,,然后生成輸出。這過程中是沒有反向運動的,。 9)成本函數(shù)(Cost Function)——當我們建立一個網(wǎng)絡(luò)時,,網(wǎng)絡(luò)試圖將輸出預(yù)測得盡可能靠近實際值。我們使用成本/損失函數(shù)來衡量網(wǎng)絡(luò)的準確性,。而成本或損失函數(shù)會在發(fā)生錯誤時嘗試懲罰網(wǎng)絡(luò),。 我們在運行網(wǎng)絡(luò)時的目標是提高我們的預(yù)測精度并減少誤差,從而最大限度地降低成本,。最優(yōu)化的輸出是那些成本或損失函數(shù)值最小的輸出,。 如果我將成本函數(shù)定義為均方誤差,則可以寫為: C= 1/m ∑(y–a)^2,, 其中m是訓練輸入的數(shù)量,,a是預(yù)測值,y是該特定示例的實際值,。 學習過程圍繞最小化成本來進行,。 10)梯度下降(Gradient Descent)——梯度下降是一種最小化成本的優(yōu)化算法。要直觀地想一想,,在爬山的時候,,你應(yīng)該會采取小步驟,一步一步走下來,,而不是一下子跳下來,。因此,我們所做的就是,,如果我們從一個點x開始,,我們向下移動一點,,即Δh,并將我們的位置更新為x-Δh,,并且我們繼續(xù)保持一致,,直到達到底部??紤]最低成本點,。 圖:https://www./watch?v=5u4G23_OohI 在數(shù)學上,為了找到函數(shù)的局部最小值,,我們通常采取與函數(shù)梯度的負數(shù)成比例的步長,。 你可以通過這篇文章來詳細了解梯度下降。 11)學習率(Learning Rate)——學習率被定義為每次迭代中成本函數(shù)中最小化的量,。簡單來說,,我們下降到成本函數(shù)的最小值的速率是學習率。我們應(yīng)該非常仔細地選擇學習率,,因為它不應(yīng)該是非常大的,,以至于最佳解決方案被錯過,也不應(yīng)該非常低,,以至于網(wǎng)絡(luò)需要融合,。 http://cs231n./neural-networks-3/ 12)反向傳播(Backpropagation)——當我們定義神經(jīng)網(wǎng)絡(luò)時,,我們?yōu)槲覀兊墓?jié)點分配隨機權(quán)重和偏差值。一旦我們收到單次迭代的輸出,,我們就可以計算出網(wǎng)絡(luò)的錯誤,。然后將該錯誤與成本函數(shù)的梯度一起反饋給網(wǎng)絡(luò)以更新網(wǎng)絡(luò)的權(quán)重。 最后更新這些權(quán)重,,以便減少后續(xù)迭代中的錯誤,。使用成本函數(shù)的梯度的權(quán)重的更新被稱為反向傳播。 在反向傳播中,,網(wǎng)絡(luò)的運動是向后的,,錯誤隨著梯度從外層通過隱藏層流回,權(quán)重被更新,。 13)批次(Batches)——在訓練神經(jīng)網(wǎng)絡(luò)的同時,,不用一次發(fā)送整個輸入,我們將輸入分成幾個隨機大小相等的塊,。與整個數(shù)據(jù)集一次性饋送到網(wǎng)絡(luò)時建立的模型相比,,批量訓練數(shù)據(jù)使得模型更加廣義化,。 14)周期(Epochs)——周期被定義為向前和向后傳播中所有批次的單次訓練迭代。這意味著1個周期是整個輸入數(shù)據(jù)的單次向前和向后傳遞,。 你可以選擇你用來訓練網(wǎng)絡(luò)的周期數(shù)量,,更多的周期將顯示出更高的網(wǎng)絡(luò)準確性,然而,,網(wǎng)絡(luò)融合也需要更長的時間,。另外,你必須注意,,如果周期數(shù)太高,,網(wǎng)絡(luò)可能會過度擬合。 15)丟棄(Dropout)——Dropout是一種正則化技術(shù),,可防止網(wǎng)絡(luò)過度擬合套,。顧名思義,在訓練期間,,隱藏層中的一定數(shù)量的神經(jīng)元被隨機地丟棄,。這意味著訓練發(fā)生在神經(jīng)網(wǎng)絡(luò)的不同組合的神經(jīng)網(wǎng)絡(luò)的幾個架構(gòu)上。你可以將Dropout視為一種綜合技術(shù),,然后將多個網(wǎng)絡(luò)的輸出用于產(chǎn)生最終輸出,。 來源:Original paper 16)批量歸一化(Batch Normalization)——作為一個概念,,批量歸一化可以被認為是我們在河流中設(shè)定為特定檢查點的水壩。這樣做是為了確保數(shù)據(jù)的分發(fā)與希望獲得的下一層相同,。當我們訓練神經(jīng)網(wǎng)絡(luò)時,,權(quán)重在梯度下降的每個步驟之后都會改變,這會改變數(shù)據(jù)的形狀如何發(fā)送到下一層,。 但是下一層預(yù)期分布類似于之前所看到的分布,。 所以我們在將數(shù)據(jù)發(fā)送到下一層之前明確規(guī)范化數(shù)據(jù),。 卷積神經(jīng)網(wǎng)絡(luò) 17)濾波器(Filters)——CNN中的濾波器與加權(quán)矩陣一樣,,它與輸入圖像的一部分相乘以產(chǎn)生一個回旋輸出。我們假設(shè)有一個大小為28 * 28的圖像,,我們隨機分配一個大小為3 * 3的濾波器,,然后與圖像不同的3 * 3部分相乘,形成所謂的卷積輸出。濾波器尺寸通常小于原始圖像尺寸,。在成本最小化的反向傳播期間,,濾波器值被更新為重量值。 參考一下下圖,,這里filter是一個3 * 3矩陣: 與圖像的每個3 * 3部分相乘以形成卷積特征,。 18)卷積神經(jīng)網(wǎng)絡(luò)(CNN)——卷積神經(jīng)網(wǎng)絡(luò)基本上應(yīng)用于圖像數(shù)據(jù),。假設(shè)我們有一個輸入的大?。?8 * 28 * 3),如果我們使用正常的神經(jīng)網(wǎng)絡(luò),,將有2352(28 * 28 * 3)參數(shù),。并且隨著圖像的大小增加參數(shù)的數(shù)量變得非常大,。我們“卷積”圖像以減少參數(shù)數(shù)量(如上面濾波器定義所示),。當我們將濾波器滑動到輸入體積的寬度和高度時,將產(chǎn)生一個二維激活圖,,給出該濾波器在每個位置的輸出,。我們將沿深度尺寸堆疊這些激活圖,并產(chǎn)生輸出量,。 你可以看到下面的圖,,以獲得更清晰的印象。 19)池化(Pooling)——通常在卷積層之間定期引入池層。這基本上是為了減少一些參數(shù),,并防止過度擬合,。最常見的池化類型是使用MAX操作的濾波器尺寸(2,2)的池層。它會做的是,,它將占用原始圖像的每個4 * 4矩陣的最大值,。 來源:cs231n 你還可以使用其他操作(如平均池)進行池化,,但是最大池數(shù)量在實踐中表現(xiàn)更好。 20)填充(Padding)——填充是指在圖像之間添加額外的零層,,以使輸出圖像的大小與輸入相同,。這被稱為相同的填充。 在應(yīng)用濾波器之后,,在相同填充的情況下,卷積層具有等于實際圖像的大小,。 有效填充是指將圖像保持為具有實際或“有效”的圖像的所有像素,。在這種情況下,在應(yīng)用濾波器之后,,輸出的長度和寬度的大小在每個卷積層處不斷減小,。 21)數(shù)據(jù)增強(Data Augmentation)——數(shù)據(jù)增強是指從給定數(shù)據(jù)導(dǎo)出的新數(shù)據(jù)的添加,這可能被證明對預(yù)測有益,。例如,,如果你使光線變亮,可能更容易在較暗的圖像中看到貓,,或者例如,,數(shù)字識別中的9可能會稍微傾斜或旋轉(zhuǎn)。在這種情況下,,旋轉(zhuǎn)將解決問題并提高我們的模型的準確性,。通過旋轉(zhuǎn)或增亮,我們正在提高數(shù)據(jù)的質(zhì)量,。這被稱為數(shù)據(jù)增強,。 循環(huán)神經(jīng)網(wǎng)絡(luò) 22)循環(huán)神經(jīng)元(Recurrent Neuron)——循環(huán)神經(jīng)元是在T時間內(nèi)將神經(jīng)元的輸出發(fā)送回給它,。如果你看圖,輸出將返回輸入t次,。展開的神經(jīng)元看起來像連接在一起的t個不同的神經(jīng)元,。這個神經(jīng)元的基本優(yōu)點是它給出了更廣義的輸出。 23)循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)——循環(huán)神經(jīng)網(wǎng)絡(luò)特別用于順序數(shù)據(jù),其中先前的輸出用于預(yù)測下一個輸出,。在這種情況下,,網(wǎng)絡(luò)中有循環(huán)。隱藏神經(jīng)元內(nèi)的循環(huán)使他們能夠存儲有關(guān)前一個單詞的信息一段時間,,以便能夠預(yù)測輸出,。隱藏層的輸出在t時間戳內(nèi)再次發(fā)送到隱藏層。展開的神經(jīng)元看起來像上圖,。只有在完成所有的時間戳后,,循環(huán)神經(jīng)元的輸出才能進入下一層。發(fā)送的輸出更廣泛,以前的信息保留的時間也較長,。 然后根據(jù)展開的網(wǎng)絡(luò)將錯誤反向傳播以更新權(quán)重,。這被稱為通過時間的反向傳播(BPTT)。 24)消失梯度問題(Vanishing Gradient Problem)——激活函數(shù)的梯度非常小的情況下會出現(xiàn)消失梯度問題,。在權(quán)重乘以這些低梯度時的反向傳播過程中,,它們往往變得非常小,并且隨著網(wǎng)絡(luò)進一步深入而“消失”,。這使得神經(jīng)網(wǎng)絡(luò)忘記了長距離依賴,。這對循環(huán)神經(jīng)網(wǎng)絡(luò)來說是一個問題,長期依賴對于網(wǎng)絡(luò)來說是非常重要的,。 這可以通過使用不具有小梯度的激活函數(shù)ReLu來解決,。 25)激增梯度問題(Exploding Gradient Problem)——這與消失的梯度問題完全相反,激活函數(shù)的梯度過大,。在反向傳播期間,,它使特定節(jié)點的權(quán)重相對于其他節(jié)點的權(quán)重非常高,這使得它們不重要,。這可以通過剪切梯度來輕松解決,,使其不超過一定值。 |
|
來自: 空明苑 > 《計算機技術(shù)》