神經(jīng)網(wǎng)絡(luò)(NN)幾乎可以在每個(gè)領(lǐng)域幫助我們用創(chuàng)造性的方式解決問(wèn)題。本文將介紹神經(jīng)網(wǎng)絡(luò)的相關(guān)知識(shí)。讀后你將對(duì)神經(jīng)網(wǎng)絡(luò)有個(gè)大概了解,它是如何工作的?如何創(chuàng)建神經(jīng)網(wǎng)絡(luò)?
神經(jīng)網(wǎng)絡(luò)的發(fā)展歷史
神經(jīng)網(wǎng)絡(luò)起源于 WarrenMcCulloch 和 Walter Pitts 于 1943 年首次建立的神經(jīng)網(wǎng)絡(luò)模型。他們的模型完全基于數(shù)學(xué)和算法,由于缺乏計(jì)算資源,模型無(wú)法測(cè)試。
后來(lái),在 1958 年,F(xiàn)rank Rosenblatt 創(chuàng)建了第一個(gè)可以進(jìn)行模式識(shí)別的模型,改變了現(xiàn)狀。即感知器。但是他只提出了 notation 和模型。實(shí)際的神經(jīng)網(wǎng)絡(luò)模型仍然無(wú)法測(cè)試,此前的相關(guān)研究也較少。
第一批可以測(cè)試并具有多個(gè)層的神經(jīng)網(wǎng)絡(luò)于 1965 年由 Alexey Ivakhnenko 和 Lapa 創(chuàng)建。
之后,由于機(jī)器學(xué)習(xí)模型具有很強(qiáng)可行性,神經(jīng)網(wǎng)絡(luò)的研究停滯不前。很多人認(rèn)為這是因?yàn)?Marvin Minsky 和 Seymour Papert 在 1969 年完成的書(shū)《感知機(jī)》(Perceptrons)導(dǎo)致的。
然而,這個(gè)停滯期相對(duì)較短。6 年后,即 1975 年,Paul Werbos 提出反向傳播,解決了 XOR 問(wèn)題,并且使神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)效率更高。
1992 年,最大池化(max-pooling)被提出,這有助于 3D 目標(biāo)識(shí)別,因?yàn)樗邆淦揭撇蛔冃裕瑢?duì)變形具備一定魯棒性。
2009 年至 2012 年間,JürgenSchmidhuber 研究小組創(chuàng)建的循環(huán)神經(jīng)網(wǎng)絡(luò)和深度前饋神經(jīng)網(wǎng)絡(luò)獲得了模式識(shí)別和機(jī)器學(xué)習(xí)領(lǐng)域 8 項(xiàng)國(guó)際競(jìng)賽的冠軍。
2011 年,深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)開(kāi)始將卷積層與最大池化層合并,然后將其輸出傳遞給幾個(gè)全連接層,再傳遞給輸出層。這些被稱為卷積神經(jīng)網(wǎng)絡(luò)。
在這之后還有更多的研究。
什么是神經(jīng)網(wǎng)絡(luò)?
了解神經(jīng)網(wǎng)絡(luò)的一個(gè)好方法是將它看作復(fù)合函數(shù)。你輸入一些數(shù)據(jù),它會(huì)輸出一些數(shù)據(jù)。
3 個(gè)部分組成了神經(jīng)網(wǎng)絡(luò)的的基本架構(gòu):
- 單元/神經(jīng)元
- 連接/權(quán)重/參數(shù)
- 偏置項(xiàng)
你可以把它們看作建筑物的「磚塊」。根據(jù)你希望建筑物擁有的功能來(lái)安排磚塊的位置。水泥是權(quán)重。無(wú)論權(quán)重多大,如果沒(méi)有足夠的磚塊,建筑物還是會(huì)倒塌。然而,你可以讓建筑以最小的精度運(yùn)行(使用最少的磚塊),然后逐步構(gòu)建架構(gòu)來(lái)解決問(wèn)題。
我將在后面的章節(jié)中更多地討論權(quán)重、偏置項(xiàng)和單元。
單元/神經(jīng)元
作為神經(jīng)網(wǎng)絡(luò)架構(gòu)三個(gè)部分中最不重要的部分,神經(jīng)元是包含權(quán)重和偏置項(xiàng)的函數(shù),等待數(shù)據(jù)傳遞給它們。接收數(shù)據(jù)后,它們執(zhí)行一些計(jì)算,然后使用激活函數(shù)將數(shù)據(jù)限制在一個(gè)范圍內(nèi)(多數(shù)情況下)。
我們將這些單元想象成一個(gè)包含權(quán)重和偏置項(xiàng)的盒子。盒子從兩端打開(kāi)。一端接收數(shù)據(jù),另一端輸出修改后的數(shù)據(jù)。數(shù)據(jù)首先進(jìn)入盒子中,將權(quán)重與數(shù)據(jù)相乘,再向相乘的數(shù)據(jù)添加偏置項(xiàng)。這是一個(gè)單元,也可以被認(rèn)為是一個(gè)函數(shù)。該函數(shù)與下面這個(gè)直線方程類似:
想象一下有多個(gè)直線方程,超過(guò) 2 個(gè)可以促進(jìn)神經(jīng)網(wǎng)絡(luò)中的非線性。從現(xiàn)在開(kāi)始,你將為同一個(gè)數(shù)據(jù)點(diǎn)(輸入)計(jì)算多個(gè)輸出值。這些輸出值將被發(fā)送到另一個(gè)單元,然后神經(jīng)網(wǎng)絡(luò)會(huì)計(jì)算出最終輸出值。
權(quán)重/參數(shù)/連接
作為神經(jīng)網(wǎng)絡(luò)最重要的部分,這些(和偏置項(xiàng))是用神經(jīng)網(wǎng)絡(luò)解決問(wèn)題時(shí)必須學(xué)習(xí)的數(shù)值。這就是你現(xiàn)在需要知道的。
偏置項(xiàng)
這些數(shù)字代表神經(jīng)網(wǎng)絡(luò)認(rèn)為其在將權(quán)重與數(shù)據(jù)相乘之后應(yīng)該添加的內(nèi)容。當(dāng)然,它們經(jīng)常出錯(cuò),但神經(jīng)網(wǎng)絡(luò)隨后也學(xué)習(xí)到最佳偏置項(xiàng)。
超參數(shù)
超參數(shù)必須手動(dòng)設(shè)置。如果將神經(jīng)網(wǎng)絡(luò)看作一臺(tái)機(jī)器,那么改變機(jī)器行為的 nob 就是神經(jīng)網(wǎng)絡(luò)的超參數(shù)。
你可以閱讀我的另一篇文章(https://towardsdatascience.com/gas-and-nns-6a41f1e8146d),了解如何優(yōu)化神經(jīng)網(wǎng)絡(luò)超參數(shù)。
激活函數(shù)
也稱為映射函數(shù)(mapping function)。它們?cè)?x 軸上輸入數(shù)據(jù),并在有限的范圍內(nèi)(大部分情況下)輸出一個(gè)值。大多數(shù)情況下,它們被用于將單元的較大輸出轉(zhuǎn)換成較小的值。你選擇的激活函數(shù)可以大幅提高或降低神經(jīng)網(wǎng)絡(luò)的性能。如果你喜歡,你可以為不同的單元選擇不同的激活函數(shù)。
以下是一些常見(jiàn)的激活函數(shù):
- Sigmoid
Sigmoid 函數(shù)
- Tanh
tanh 函數(shù)
- ReLU:修正線性單元
修正線性單元函數(shù)
- Leaky ReLU
Leaky ReLU 函數(shù)
層
這是神經(jīng)網(wǎng)絡(luò)在任何問(wèn)題中都可獲得復(fù)雜度的原因。增加層(具備單元)可增加神經(jīng)網(wǎng)絡(luò)輸出的非線性。
每個(gè)層都包含一定數(shù)量的單元。大多數(shù)情況下單元的數(shù)量完全取決于創(chuàng)建者。但是,對(duì)于一個(gè)簡(jiǎn)單的任務(wù)而言,層數(shù)過(guò)多會(huì)增加不必要的復(fù)雜性,且在大多數(shù)情況下會(huì)降低其準(zhǔn)確率。反之亦然。
每個(gè)神經(jīng)網(wǎng)絡(luò)有兩層:輸入層和輸出層。二者之間的層稱為隱藏層。下圖所示的神經(jīng)網(wǎng)絡(luò)包含一個(gè)輸入層(8 個(gè)單元)、一個(gè)輸出層(4 個(gè)單元)和 3 個(gè)隱藏層(每層包含 9 個(gè)單元)。
深度神經(jīng)網(wǎng)絡(luò)
具有兩個(gè)或更多隱藏層且每層包含大量單元的神經(jīng)網(wǎng)絡(luò)稱為深度神經(jīng)網(wǎng)絡(luò),它催生了深度學(xué)習(xí)這一新的學(xué)習(xí)領(lǐng)域。上圖所示神經(jīng)網(wǎng)絡(luò)就是這樣一個(gè)例子。
神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)時(shí)發(fā)生了什么?
教神經(jīng)網(wǎng)絡(luò)解決問(wèn)題的最常見(jiàn)方式是使用梯度下降。梯度下降相關(guān)內(nèi)容,參見(jiàn):https://hackernoon.com/gradient-descent-aynk-7cbe95a778da。
除梯度下降外,另一種常見(jiàn)的訓(xùn)練神經(jīng)網(wǎng)絡(luò)方法是使用反向傳播。使用這種方法,神經(jīng)網(wǎng)絡(luò)輸出層的誤差會(huì)通過(guò)微積分中的鏈?zhǔn)揭?guī)則向后傳播。這對(duì)于沒(méi)有微積分知識(shí)的初學(xué)者來(lái)說(shuō)可能會(huì)難以理解,但也不要被嚇倒,反向傳播相關(guān)內(nèi)容,推薦閱讀:http://neuralnetworksanddeeplearning.com/chap2.html。
訓(xùn)練神經(jīng)網(wǎng)絡(luò)有許多注意事項(xiàng)。但對(duì)于初學(xué)者來(lái)說(shuō),沒(méi)有必要在一篇文章中了解全部。
實(shí)現(xiàn)細(xì)節(jié)(如何管理項(xiàng)目中的所有因素)
為了解釋如何管理項(xiàng)目中的所有因素,我創(chuàng)建了一個(gè) Jupyter Notebook,包含一個(gè)學(xué)習(xí) XOR 邏輯門(mén)的小型神經(jīng)網(wǎng)絡(luò)。Jupyter Notebook 地址:https://github.com/Frixoe/xor-neural-network/blob/master/XOR-Net-Noteboo...。
在查看并理解 Notebook 內(nèi)容后,你應(yīng)該對(duì)如何構(gòu)建基礎(chǔ)神經(jīng)網(wǎng)絡(luò)有一個(gè)大致的了解。
Notebook 創(chuàng)建的神經(jīng)網(wǎng)絡(luò)的訓(xùn)練數(shù)據(jù)以矩陣排列,這是常見(jiàn)的數(shù)據(jù)排列方式。不同項(xiàng)目中的矩陣維度可能會(huì)有所不同。
大量數(shù)據(jù)通常分為兩類:訓(xùn)練數(shù)據(jù)(60%)和測(cè)試數(shù)據(jù)(40%)。神經(jīng)網(wǎng)絡(luò)先使用訓(xùn)練數(shù)據(jù),然后在測(cè)試數(shù)據(jù)上測(cè)試網(wǎng)絡(luò)的準(zhǔn)確率。
關(guān)于神經(jīng)網(wǎng)絡(luò)的更多信息(更多資源鏈接)
如果你仍然無(wú)法理解神經(jīng)網(wǎng)絡(luò),那么推薦以下資源:
YouTube:
Siraj Raval (https://www.youtube.com/channel/UCWN3xxRkmTPmbKwht9FuE5A)
3Blue1Brown (https://www.youtube.com/channel/UCYO_jab_esuFRV4b17AJtAw)
The Coding Train (https://www.youtube.com/playlist?list=PLRqwX-V7Uu6aCibgK1PTWWu9by6XFdCfh)
Brandon Rohrer (https://www.youtube.com/channel/UCsBKTrp45lTfHa_p49I2AEQ)
giant_neural_network (https://www.youtube.com/channel/UCrBzGHKmGDcwLFnQGHJ3XYg)
Hugo Larochelle (https://www.youtube.com/channel/UCiDouKcxRmAdc5OeZdiRwAg)
Jabrils (https://www.youtube.com/channel/UCQALLeQPoZdZC4JNUboVEUg)
Luis Serrano (https://www.youtube.com/channel/UCgBncpylJ1kiVaPyP-PZauQ)
Coursera:
Neural Networks for Machine Learning (https://www.coursera.org/learn/neural-networks) by University of Toronto
Deep Learning Specialization (https://www.coursera.org/specializations/deep-learning) by Andrew Ng
Introduction to Deep Learning (https://www.coursera.org/learn/intro-to-deep-learning) by National Research University Higher School of Economics
編輯:hfy
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4773瀏覽量
100880 -
卷積
+關(guān)注
關(guān)注
0文章
95瀏覽量
18527 -
神經(jīng)元
+關(guān)注
關(guān)注
1文章
363瀏覽量
18468 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5506瀏覽量
121265
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論