資料來(lái)源:getwallpapers.com
深度學(xué)習(xí)是機(jī)器學(xué)習(xí)中重要分支之一。它的目的是教會(huì)計(jì)算機(jī)做那些對(duì)于人類(lèi)來(lái)說(shuō)相當(dāng)自然的事情。深度學(xué)習(xí)也是無(wú)人駕駛汽車(chē)背后的一項(xiàng)關(guān)鍵性技術(shù),可以幫無(wú)人車(chē)識(shí)別停車(chē)標(biāo)志、區(qū)分行人與路燈柱。它是手機(jī)、平板、電視和免提揚(yáng)聲器等設(shè)備實(shí)現(xiàn)語(yǔ)音控制的關(guān)鍵。深度學(xué)習(xí)近期以其前所未有的成果獲得了廣泛關(guān)注。
在深度學(xué)習(xí)中,計(jì)算機(jī)模型直接從圖像、文本或聲音中學(xué)習(xí)直接如何執(zhí)行分類(lèi)任務(wù)。深度學(xué)習(xí)模型可以達(dá)到最高的準(zhǔn)確度,有時(shí)甚至超過(guò)了人類(lèi)的水平。我們通常使用大量標(biāo)記的數(shù)據(jù)和包含許多層的神經(jīng)網(wǎng)絡(luò)體系結(jié)構(gòu)來(lái)訓(xùn)練模型。
資源
深度學(xué)習(xí)的模型可應(yīng)用到各種復(fù)雜任務(wù)中:
1. 人工神經(jīng)網(wǎng)絡(luò)(ANN)進(jìn)行回歸和分類(lèi)
2. 用于計(jì)算機(jī)視覺(jué)的卷積神經(jīng)網(wǎng)絡(luò)(CNN)
3. 遞歸神經(jīng)網(wǎng)絡(luò)(RNN)用于時(shí)間序列分析
4. 自組織地圖以進(jìn)行特征提取
5. 推薦系統(tǒng)的深玻爾茲曼機(jī)
6. 推薦系統(tǒng)的自動(dòng)編碼器
在本文中,我們將盡可能的介紹人工神經(jīng)網(wǎng)絡(luò)(ANN)的所有相關(guān)內(nèi)容。
“人工神經(jīng)網(wǎng)絡(luò)(ANN)是一種信息處理范例,它受到生物神經(jīng)系統(tǒng)(大腦)信息處理方式的啟發(fā)。由大量高度互連的處理元件(神經(jīng)元)組成,這些元件協(xié)同工作以解決特定問(wèn)題。”
主要內(nèi)容:
1. 神經(jīng)元
2. 激活功能
3. 激活功能的類(lèi)型
4. 神經(jīng)網(wǎng)絡(luò)如何工作
5. 神經(jīng)網(wǎng)絡(luò)如何學(xué)習(xí)(反向傳播)
6. 梯度下降
7. 隨機(jī)梯度下降
8. 隨機(jī)梯度下降訓(xùn)練神經(jīng)網(wǎng)絡(luò)
神經(jīng)元
神經(jīng)元(也稱(chēng)為神經(jīng)細(xì)胞)是大腦和神經(jīng)系統(tǒng)的基本單元,通過(guò)樹(shù)突接收來(lái)自外部世界的刺激信息,對(duì)該信息進(jìn)行處理后,通過(guò)軸突輸出給其他細(xì)胞。
生物神經(jīng)元
細(xì)胞體(Soma):神經(jīng)元細(xì)胞的主要部分,包含細(xì)胞核,進(jìn)行必要的生化反應(yīng)。
樹(shù)突:神經(jīng)元周?chē)?lèi)似頭發(fā)的管狀結(jié)構(gòu)。主要負(fù)責(zé)接受輸入信號(hào)。
軸突:這是一種細(xì)長(zhǎng)的管狀結(jié)構(gòu),類(lèi)似于傳輸線(xiàn)。
突觸:神經(jīng)元以復(fù)雜的空間排列相互連接。軸突末端再次分支,是一種高度復(fù)雜、高度專(zhuān)一的結(jié)構(gòu),我們稱(chēng)之為突觸。兩個(gè)神經(jīng)元之間的聯(lián)系就發(fā)生在這些突觸處。
樹(shù)突接收其他神經(jīng)元信息輸入。細(xì)胞體處理這些傳入信息,得到相應(yīng)的輸出結(jié)果,該結(jié)果通過(guò)軸突和突觸發(fā)送到其他神經(jīng)元。
電信號(hào)流過(guò)神經(jīng)元。
下圖代表了受生物神經(jīng)元啟發(fā)的ANN一般模型。它也被稱(chēng)為感知器。
單層神經(jīng)網(wǎng)絡(luò)一般稱(chēng)為感知器,給定輸入它將計(jì)算得到輸出。
感知器
在上圖中,x0, x1, x2, x3...x(n)代表該網(wǎng)絡(luò)的輸入(獨(dú)立變量),每一個(gè)輸入在經(jīng)過(guò)所謂的樹(shù)突時(shí)都要乘以相應(yīng)的權(quán)重。該權(quán)重表示為w0, w1, w2, w3….w(n),它顯示特定節(jié)點(diǎn)的強(qiáng)度。b是偏差值。偏差值可以向上或向下移動(dòng)激活函數(shù)。
最簡(jiǎn)單的情況,將這些乘積相加并輸入傳遞函數(shù)(激活函數(shù))得到結(jié)果,然后將該結(jié)果作為輸出發(fā)送。
激活函數(shù)
激活函數(shù)對(duì)于ANN學(xué)習(xí)和理解真正復(fù)雜的東西很重要。它們的主要目的是將ANN中節(jié)點(diǎn)的輸入信號(hào)轉(zhuǎn)換為輸出信號(hào),此輸出信號(hào)將作為下一層的輸入。
激活函數(shù)通過(guò)計(jì)算加權(quán)總和偏差值來(lái)決定是否激活該神經(jīng)元。目的是引入非線(xiàn)性。
如果我們不應(yīng)用激活函數(shù),那么輸出信號(hào)將僅僅是線(xiàn)性函數(shù)(一階多項(xiàng)式)。線(xiàn)性函數(shù)很容易求解,功耗也相對(duì)較小,但是它們的復(fù)雜性受到一定的限制。因此沒(méi)有激活函數(shù),我們的模型就無(wú)法進(jìn)行學(xué)習(xí),也無(wú)法對(duì)復(fù)雜的數(shù)據(jù)進(jìn)行建模,例如圖像,視頻,音頻,語(yǔ)音等。
為什么我們需要非線(xiàn)性函數(shù)?
非線(xiàn)性函數(shù)是一種具有曲率的函數(shù)。現(xiàn)在我們需要神經(jīng)網(wǎng)絡(luò)能夠進(jìn)行學(xué)習(xí),能夠表示將輸入映射到輸出的任意復(fù)雜函數(shù)。因此神經(jīng)網(wǎng)絡(luò)也被認(rèn)為是 “通用函數(shù)逼近器”。
激活函數(shù)的類(lèi)型:
1. 閾值激活函數(shù)—(二進(jìn)制階躍函數(shù))
二進(jìn)制階躍函數(shù)是基于閾值的激活函數(shù)。如果輸入值高于某個(gè)閾值,則神經(jīng)元被激活并將完全相同的信號(hào)發(fā)送到下一層;低于某個(gè)閾值則不被激活。
二進(jìn)制函數(shù)
此函數(shù)的問(wèn)題是創(chuàng)建一個(gè)二進(jìn)制分類(lèi)器(1或0),但是如果我們要連接多個(gè)這樣的神經(jīng)元以引入更多類(lèi),如Class1、Class2、Class3等。在這種情況下,所有神經(jīng)元都將給出1 ,我們將無(wú)法進(jìn)行判斷。
2. Sigmoid激活函數(shù)-(邏輯函數(shù))
Sigmoid函數(shù)是一種數(shù)學(xué)函數(shù),具有特征性的“ S”形曲線(xiàn)或S型曲線(xiàn),范圍在0到1之間,因此它用于需要預(yù)測(cè)概率為輸出。
Sigmoid曲線(xiàn)
Sigmoid函數(shù)是可微的,這意味著我們可以求解任意2個(gè)點(diǎn)的曲線(xiàn)斜率。Sigmoid激活函數(shù)的缺點(diǎn)是,如果提供較大的負(fù)輸入,則可能導(dǎo)致神經(jīng)網(wǎng)絡(luò)在訓(xùn)練時(shí)卡住。
3. 雙曲正切函數(shù)—(tanh)
類(lèi)似于Sigmoid,但性能更好。它本質(zhì)上是非線(xiàn)性的,因此我們可以對(duì)各層進(jìn)行疊加。該函數(shù)的范圍是(-1,1)。
雙曲正切函數(shù)
此功能的主要優(yōu)點(diǎn)是,負(fù)輸入映射為負(fù)輸出,而只有零值輸入會(huì)被映射為接近零輸出。因此,在訓(xùn)練過(guò)程中卡頓的可能性較小。
4. 整流線(xiàn)性單元-(ReLu)
ReLu是CNN和ANN中最常用的激活函數(shù),范圍從零到無(wú)窮大。[0,∞]
ReLu
如果x為正,則給出輸出為“ x”;如果x為負(fù),否則輸出為0。ReLu看起來(lái)是線(xiàn)性函數(shù)的問(wèn)題,但本質(zhì)上是非線(xiàn)性的,并且ReLu的組合也是非線(xiàn)性的。實(shí)際上,它是一個(gè)很好的近似器,可以通過(guò)組合Relu來(lái)近似大部分函數(shù)。
它一般應(yīng)用于神經(jīng)網(wǎng)絡(luò)的隱藏層。對(duì)于輸出層而言,分類(lèi)問(wèn)題通常使用softmax函數(shù),回歸問(wèn)題使用線(xiàn)性函數(shù)。
這里存在的一個(gè)問(wèn)題是,某些梯度在訓(xùn)練過(guò)程中可能會(huì)消失。這會(huì)導(dǎo)致權(quán)重更新,任何數(shù)據(jù)點(diǎn)都無(wú)法激活該神經(jīng)元。ReLu基本導(dǎo)致了神經(jīng)元的死亡。
為了解決這一問(wèn)題,引入了Leaky ReLu。Leaky ReLu引入了一個(gè)小斜率來(lái)保證不出現(xiàn)上述問(wèn)題。Leaky ReLu范圍從-∞到+∞。
ReLu vs Leaky ReLu
Leaky增加了ReLu函數(shù)的輸出范圍。通常,a = 0.01。當(dāng)a不為0.01時(shí),則稱(chēng)為隨機(jī)ReLu。
神經(jīng)網(wǎng)絡(luò)如何工作?
讓我們以房地產(chǎn)價(jià)格為例,首先,我們將不同的因素匯總到一行數(shù)據(jù)中: Area, Bedrooms, Distance to city and Age.
輸入值通過(guò)加權(quán)的突觸直接到達(dá)輸出層。四個(gè)輸入值均會(huì)被分析并輸入到激活函數(shù)中,產(chǎn)生輸出結(jié)果。
這很簡(jiǎn)單,但是通過(guò)在輸入和輸出層之間添加一個(gè)隱藏層可以擴(kuò)大神經(jīng)網(wǎng)絡(luò)的功能并提高其準(zhǔn)確性。
具有隱藏層的神經(jīng)網(wǎng)絡(luò)(僅顯示非0值)
現(xiàn)在在上圖中,所有4個(gè)變量都通過(guò)突觸連接到神經(jīng)元。但是,并非所有的突觸都被加權(quán)。權(quán)值包括0值和非0值。在這里,非零值表示重要性,0值表示輸入被丟棄。
讓我們以第一個(gè)神經(jīng)元的Area和Distance to City為非零的示例為例,這意味著它們對(duì)第一個(gè)神經(jīng)元重要。另外兩個(gè)變量,Bedrooms而Age權(quán)值為0,因此不通過(guò)第一神經(jīng)元。
您可能想知道為什么第一個(gè)神經(jīng)元只考慮四個(gè)變量中的兩個(gè)。距離城市越遠(yuǎn)房子變得越便宜,這在房地產(chǎn)市場(chǎng)上很普遍。因此,這個(gè)神經(jīng)元所做的事情可能是尋找離市區(qū)較近的房屋。
神經(jīng)元很多,每個(gè)神經(jīng)元用這些變量的不同組合進(jìn)行相似的計(jì)算。一旦滿(mǎn)足標(biāo)準(zhǔn),神經(jīng)元就會(huì)使用激活函數(shù)進(jìn)行計(jì)算。
下一個(gè)神經(jīng)元加權(quán)的突觸可能是Distance to the city和Bedrooms。因此神經(jīng)元以非常靈活的方式工作,全面的搜索以查找特定的事物。
神經(jīng)網(wǎng)絡(luò)如何學(xué)習(xí)?
讓我們先來(lái)做一個(gè)類(lèi)比。神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)與我們正常的學(xué)習(xí)方式密切相關(guān),我們首先完成一定的工作,并得到教練的糾正,下一次以更好的方式來(lái)完成這個(gè)工作。類(lèi)似地,神經(jīng)網(wǎng)絡(luò)需要培訓(xùn)者,來(lái)描述該網(wǎng)絡(luò)對(duì)輸入做出的反應(yīng)。用實(shí)際值和預(yù)測(cè)值之間的差異,計(jì)算一個(gè)誤差值(也稱(chēng)為成本函數(shù)),并將其發(fā)送回系統(tǒng)。
成本函數(shù):實(shí)際值與輸出值之間平方差的一半。
對(duì)于網(wǎng)絡(luò)的每一層,都會(huì)分析成本函數(shù),并用其調(diào)整下一個(gè)輸入的閾值和權(quán)重。我們的目標(biāo)是使成本函數(shù)最小化。成本函數(shù)越低,實(shí)際值就越接近于預(yù)測(cè)值。這樣隨著網(wǎng)絡(luò)的不斷學(xué)習(xí),每次運(yùn)行的誤差都減小。
我們通過(guò)整個(gè)神經(jīng)網(wǎng)絡(luò)反饋結(jié)果數(shù)據(jù)。將輸入變量連接到神經(jīng)元的加權(quán)突觸是我們唯一可以控制的事情,因此只要實(shí)際值和預(yù)測(cè)值之間存在差異,我們就需要調(diào)整權(quán)重。一旦稍微調(diào)整它們并再次運(yùn)行神經(jīng)網(wǎng)絡(luò),便會(huì)產(chǎn)生一個(gè)新的成本函數(shù),我們希望它可以比上一個(gè)小。重復(fù)此過(guò)程,直到將成本函數(shù)降低到盡可能小的水平為止。
上述過(guò)程稱(chēng)為反向傳播,并通過(guò)網(wǎng)絡(luò)連續(xù)進(jìn)行,直到將誤差值保持在最小值為止。
反向傳播
調(diào)整權(quán)重的方法有兩種:
1.蠻力方法
2.批梯度下降
蠻力法
適合單層前饋網(wǎng)絡(luò)。在這里,我們需要考慮許多可能的權(quán)重。在這種方法中,我們想要舍棄除U形曲線(xiàn)底部權(quán)值以外的所有其他權(quán)重。最佳權(quán)值可以使用簡(jiǎn)單的消除技術(shù)找到。如果我們只需要優(yōu)化一個(gè)權(quán)重,那么這種方法很有效。但如果是具有許多權(quán)重的復(fù)雜神經(jīng)網(wǎng)絡(luò),該方法將因維數(shù)太高而無(wú)法實(shí)現(xiàn)。
分批梯度下降
它是一階迭代優(yōu)化算法,在訓(xùn)練具有不同權(quán)重模型的過(guò)程中找到最小成本值(損失)。
梯度下降
在“梯度下降”過(guò)程中,我們不會(huì)一次都查看每個(gè)權(quán)重并剔除錯(cuò)誤的權(quán)重,而是查看函數(shù)斜率。
如果斜率→負(fù)值,則表示您沿著曲線(xiàn)下降。
如果斜率→正,則不執(zhí)行任何操作
這樣,可以消除大量不正確的權(quán)重。
隨機(jī)梯度下降(SGD)
如上圖所示,當(dāng)我們具有凸曲線(xiàn)時(shí),漸變下降效果很好。但是,如果我們沒(méi)有凸曲線(xiàn),則漸變下降將失敗。
“ 隨機(jī) ” 一詞是指與隨機(jī)概率相關(guān)的系統(tǒng)或過(guò)程。因此,在隨機(jī)梯度下降中,隨機(jī)選擇一些樣本,而不是每次迭代的整個(gè)數(shù)據(jù)集。
隨機(jī)梯度下降
在SGD中,我們一次獲取一行數(shù)據(jù),通過(guò)神經(jīng)網(wǎng)絡(luò)運(yùn)行該數(shù)據(jù),然后調(diào)整權(quán)重。對(duì)于第二行,我們運(yùn)行它,然后比較Cost函數(shù),然后再次調(diào)整權(quán)重。
SGD幫助我們避免了局部極小值的問(wèn)題。它比Gradient Descent快得多,因?yàn)樗淮芜\(yùn)行每一行,并且不必將整個(gè)數(shù)據(jù)加載到內(nèi)存中即可進(jìn)行計(jì)算。
要注意的一件事是,由于SGD通常比典型的Gradient Descent噪聲更大,因此由于其下降的隨機(jī)性,通常需要更多的迭代次數(shù)才能達(dá)到最小值。盡管與典型的Gradient Descent相比,它需要更多的迭代次數(shù)才能達(dá)到最小值,但在計(jì)算消耗上仍比典型的Gradient Descent少得多。因此,在大多數(shù)情況下,SGD優(yōu)于分批梯度下降。
利用隨機(jī)梯度下降訓(xùn)練神經(jīng)網(wǎng)絡(luò)
步驟1→將權(quán)重隨機(jī)初始化為接近0但不為0的小數(shù)。
步驟2→在輸入層中輸入數(shù)據(jù)集的第一個(gè)觀測(cè)值,每個(gè)要素放在一個(gè)節(jié)點(diǎn)中。
步驟3→ 正向傳播:從左到右,神經(jīng)元按順序被激活,直到獲得預(yù)測(cè)值。每個(gè)神經(jīng)元的影響都受權(quán)重的限制。
步驟4→將預(yù)測(cè)結(jié)果與實(shí)際結(jié)果進(jìn)行比較,并測(cè)量的誤差(成本函數(shù))。
步驟5→ 反向傳播:從右到左,誤差反向傳播。根據(jù)它們對(duì)錯(cuò)誤造成的影響來(lái)更新權(quán)重。學(xué)習(xí)率決定了我們更新權(quán)重的程度。
步驟6→重復(fù)步驟1至5,并在每次比較后更新權(quán)重(強(qiáng)化學(xué)習(xí))
步驟7→當(dāng)整個(gè)訓(xùn)練集通過(guò)ANN時(shí),就完成了。
結(jié)論
資料來(lái)源:techcrunch.com
神經(jīng)網(wǎng)絡(luò)是一個(gè)全新的新概念,它還有很大潛力。可以應(yīng)用于各種不同的概念中,并在測(cè)試階段通過(guò)特定的反向傳播和糾錯(cuò)機(jī)制進(jìn)行學(xué)習(xí)。這些多層系統(tǒng)也許可以有一天僅靠學(xué)習(xí)來(lái)減少發(fā)生錯(cuò)誤的可能性,而無(wú)需人工糾正。
如果本文對(duì)小伙伴有幫助,希望大家多多關(guān)注哦,小白學(xué)視覺(jué)堅(jiān)持每天給大家?guī)?lái)圖像處理干貨知識(shí)哦!