深入浅出讲解神经网络的种类及举例说明
- 本文收錄于《深入淺出講解自然語(yǔ)言處理》專(zhuān)欄,此專(zhuān)欄聚焦于自然語(yǔ)言處理領(lǐng)域的各大經(jīng)典算法,將持續(xù)更新,歡迎大家訂閱!
- 個(gè)人主頁(yè):有夢(mèng)想的程序星空
- 個(gè)人介紹:小編是人工智能領(lǐng)域碩士,全棧工程師,深耕Flask后端開(kāi)發(fā)、數(shù)據(jù)挖掘、NLP、Android開(kāi)發(fā)、自動(dòng)化等領(lǐng)域,有較豐富的軟件系統(tǒng)、人工智能算法服務(wù)的研究和開(kāi)發(fā)經(jīng)驗(yàn)。
- 如果文章對(duì)你有幫助,歡迎關(guān)注、點(diǎn)贊、收藏、訂閱。
1.神經(jīng)網(wǎng)絡(luò)的分類(lèi)
神經(jīng)網(wǎng)絡(luò)可以分為三種主要類(lèi)型:前饋神經(jīng)網(wǎng)絡(luò)、反饋神經(jīng)網(wǎng)絡(luò)和圖神經(jīng)網(wǎng)絡(luò)。
2.前饋神經(jīng)網(wǎng)絡(luò)
前饋神經(jīng)網(wǎng)絡(luò)(feedforward neural network)是一種簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò),也被稱(chēng)為多層感知機(jī)(multi-layer perceptron,簡(jiǎn)稱(chēng)MLP),其中不同的神經(jīng)元屬于不同的層,由輸入層-隱藏層-輸出層構(gòu)成,信號(hào)從輸入層往輸出層單向傳遞,中間無(wú)反饋,其目的是為了擬合某個(gè)函數(shù),由一個(gè)有向無(wú)環(huán)圖表示,如下所示:
圖1 前饋神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖
前饋神經(jīng)網(wǎng)絡(luò)中包含激活函數(shù)(sigmoid函數(shù)、tanh函數(shù)等)、損失函數(shù)(均方差損失函數(shù)、交叉熵?fù)p失函數(shù)等)、優(yōu)化算法(BP算法)等。
常用的模型結(jié)構(gòu)有:卷積神經(jīng)網(wǎng)絡(luò)、BP神經(jīng)網(wǎng)絡(luò)、RBF神經(jīng)網(wǎng)絡(luò)、感知器網(wǎng)絡(luò)等。
下面介紹下經(jīng)典的卷積神經(jīng)網(wǎng)絡(luò):
卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks, CNN)是一類(lèi)包含卷積運(yùn)算且具有深度結(jié)構(gòu)的前饋神經(jīng)網(wǎng)絡(luò)(Feedforward Neural Networks)。
相比早期的BP神經(jīng)網(wǎng)絡(luò),卷積神經(jīng)網(wǎng)絡(luò)最重要的特性在于“局部感知”與“參數(shù)共享”。
整體架構(gòu):輸入層——卷積層——池化層——全連接層——輸出層
?圖2 卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖
輸入層:以圖片為例,輸入的是一個(gè)三維像素矩陣,長(zhǎng)和寬表示圖像的像素大小,深度表示色彩通道(黑白為1,RGB彩色為3)。
卷積層:卷積層也是一個(gè)三維矩陣,它的每個(gè)節(jié)點(diǎn)(單位節(jié)點(diǎn)矩陣)都是上一層的一小塊節(jié)點(diǎn)(子節(jié)點(diǎn)矩陣)加權(quán)得來(lái),一小塊的尺寸一般取3*3或5*5。此層的作用是對(duì)每一小快節(jié)點(diǎn)進(jìn)行深入分析,從而提取圖片更高的特征。
池化層:池化層不會(huì)改變?nèi)S矩陣的深度,其作用是縮小矩陣,從而減少網(wǎng)絡(luò)的參數(shù)。
全連接層:跟全連接神經(jīng)網(wǎng)絡(luò)作用一樣。
Softmax層:得到當(dāng)前樣例屬于不同種類(lèi)的概率分布,并完成分類(lèi)。
CNN的整個(gè)訓(xùn)練過(guò)程如下所示:
(1)首先是隨機(jī)初始化所有濾波器以及其他參數(shù)和權(quán)重值;
(2)輸入圖片,進(jìn)行前向傳播,也就是經(jīng)過(guò)卷積層,ReLU和pooling運(yùn)算,最后到達(dá)全連接層進(jìn)行分類(lèi),得到一個(gè)分類(lèi)的結(jié)果,也就是輸出一個(gè)包含每個(gè)類(lèi)預(yù)測(cè)的概率值的向量;
(3)計(jì)算誤差,也就是代價(jià)函數(shù),這里代價(jià)函數(shù)可以有多種計(jì)算方法,比較常用的有平方和函數(shù):
其中,y'為實(shí)際值,y為預(yù)測(cè)值。
(4)使用反向傳播來(lái)計(jì)算網(wǎng)絡(luò)中對(duì)應(yīng)各個(gè)權(quán)重的誤差的梯度,一般是使用梯度下降法來(lái)更新各個(gè)濾波器的權(quán)重值,目的是為了讓輸出的誤差,也就是代價(jià)函數(shù)的值盡可能小。
(5)重復(fù)上述第二到第四步,直到訓(xùn)練次數(shù)達(dá)到設(shè)定好的值。
卷積神經(jīng)網(wǎng)絡(luò)是一種特殊的多層神經(jīng)網(wǎng)絡(luò),像其它的神經(jīng)網(wǎng)絡(luò)一樣,卷積神經(jīng)網(wǎng)絡(luò)也使用一種反向傳播算法來(lái)進(jìn)行訓(xùn)練,不同之處在于網(wǎng)絡(luò)的結(jié)構(gòu)。
卷積神經(jīng)網(wǎng)絡(luò)(CNN)具有一些傳統(tǒng)技術(shù)所沒(méi)有的優(yōu)點(diǎn):
(1)良好的容錯(cuò)能力、并行處理能力和自學(xué)習(xí)能力,可處理環(huán)境信息復(fù)雜,背景知識(shí)不清楚,推理規(guī)則不明確情況下的問(wèn)題;
(2)它允許樣本有較大的缺損、畸變,運(yùn)行速度快,自適應(yīng)性能好,具有較高的分辨率;
(3)它是通過(guò)結(jié)構(gòu)重組和減少權(quán)值將特征抽取功能融合進(jìn)多層感知器,省略識(shí)別前復(fù)雜的圖像特征抽取過(guò)程。
3.反饋神經(jīng)網(wǎng)絡(luò)
反饋神經(jīng)網(wǎng)絡(luò)(feedback neural network)的輸出不僅與當(dāng)前輸入以及網(wǎng)絡(luò)權(quán)重有關(guān),還和網(wǎng)絡(luò)之前的輸入有關(guān)。它是一個(gè)有向循環(huán)圖或是無(wú)向圖,具有很強(qiáng)的聯(lián)想記憶能力和優(yōu)化計(jì)算能力。
常用的模型結(jié)構(gòu)有:RNN、Hopfield網(wǎng)絡(luò)、玻爾茲曼機(jī)、LSTM等。
圖3 反饋神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖
下面介紹下經(jīng)典的循環(huán)神經(jīng)網(wǎng)絡(luò):
循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,簡(jiǎn)稱(chēng)RNN)源自于1982年由Saratha Sathasivam 提出的霍普菲爾德網(wǎng)絡(luò)。
循環(huán)神經(jīng)網(wǎng)絡(luò),是指在全連接神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)上增加了前后時(shí)序上的關(guān)系,可以更好地處理比如機(jī)器翻譯等的與時(shí)序相關(guān)的問(wèn)題。
RNN的目的就是用來(lái)處理序列數(shù)據(jù)的。在傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)模型中,是從輸入層到隱含層再到輸出層,層與層之間是全連接的,每層之間的節(jié)點(diǎn)是無(wú)連接的。但是這種普通的神經(jīng)網(wǎng)絡(luò)對(duì)于很多問(wèn)題都無(wú)能無(wú)力。比如你要預(yù)測(cè)句子的下一個(gè)單詞是什么,一般需要用到前面的單詞,因?yàn)橐粋€(gè)句子中前后單詞并不是獨(dú)立的。
RNN之所以稱(chēng)為循環(huán)神經(jīng)網(wǎng)絡(luò),即一個(gè)序列當(dāng)前的輸出與前面的輸出也有關(guān)。具體的表現(xiàn)形式為網(wǎng)絡(luò)會(huì)對(duì)前面的信息進(jìn)行記憶并應(yīng)用于當(dāng)前輸出的計(jì)算中,即隱藏層之間的節(jié)點(diǎn)不再無(wú)連接而是有連接的,并且隱藏層的輸入不僅包括輸入層的輸出還包括上一時(shí)刻隱藏層的輸出。
RNN用于解決訓(xùn)練樣本輸入是連續(xù)的序列,且序列的長(zhǎng)短不一的問(wèn)題,比如基于時(shí)間序列的問(wèn)題。基礎(chǔ)的神經(jīng)網(wǎng)絡(luò)只在層與層之間建立了權(quán)連接,RNN最大的不同之處就是在層之間的神經(jīng)元之間也建立的權(quán)連接。
RNN神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)如下:
?圖4 循環(huán)神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)圖
循環(huán)神經(jīng)網(wǎng)絡(luò)的輸入是序列數(shù)據(jù),每個(gè)訓(xùn)練樣本是一個(gè)時(shí)間序列,包含多個(gè)相同維度的向量。網(wǎng)絡(luò)的參數(shù)如何通過(guò)訓(xùn)練確定?這里就要使用解決循環(huán)神經(jīng)網(wǎng)絡(luò)訓(xùn)練問(wèn)題的 Back Propagation Through Time 算法,簡(jiǎn)稱(chēng)BPTT。
循環(huán)神經(jīng)網(wǎng)絡(luò)的每個(gè)訓(xùn)練樣本是一個(gè)時(shí)間序列,同一個(gè)訓(xùn)練樣本前后時(shí)刻的輸入值之間有關(guān)聯(lián),每個(gè)樣本的序列長(zhǎng)度可能不相同。訓(xùn)練時(shí)先對(duì)這個(gè)序列中的每個(gè)時(shí)刻的輸入值進(jìn)行正向傳播,再通過(guò)反向傳播計(jì)算出參數(shù)的梯度值并更新參數(shù)。
RNN包含四個(gè)步驟,簡(jiǎn)述如下:
(1)正向計(jì)算每個(gè)神經(jīng)元的輸出值;
(2)反向計(jì)算每個(gè)神經(jīng)元的誤差項(xiàng)?,它是誤差函數(shù)對(duì)神經(jīng)元的加權(quán)輸入的偏導(dǎo)數(shù);
(3)計(jì)算每個(gè)權(quán)重的梯度;
(4)用隨機(jī)梯度下降算法更新權(quán)重。
循環(huán)神經(jīng)網(wǎng)絡(luò)在進(jìn)行反向傳播時(shí)也面臨梯度消失或者梯度爆炸問(wèn)題,這種問(wèn)題表現(xiàn)在時(shí)間軸上。如果輸入序列的長(zhǎng)度很長(zhǎng),人們很難進(jìn)行有效的參數(shù)更新。通常來(lái)說(shuō)梯度爆炸更容易處理一些。梯度爆炸時(shí)我們可以設(shè)置一個(gè)梯度閾值,當(dāng)梯度超過(guò)這個(gè)閾值的時(shí)候可以直接截取。
有如下三種方法解決梯度消失的問(wèn)題:
(1)合理的初始化權(quán)重值。初始化權(quán)重,使每個(gè)神經(jīng)元盡可能不要取極大或極小值,以躲開(kāi)梯度消失的區(qū)域。
(2) 使用 ReLu 代替 sigmoid 和 tanh 作為激活函數(shù)。
(3) 使用其他結(jié)構(gòu)的RNNs,比如長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)(LSTM)和 門(mén)控循環(huán)單元 (GRU),這是最流行的做法。
4.圖神經(jīng)網(wǎng)絡(luò)
圖(graph)是一種在拓?fù)淇臻g內(nèi)按圖結(jié)構(gòu)組織來(lái)關(guān)系推理的函數(shù)集合,包括社交網(wǎng)絡(luò)、知識(shí)圖譜、分子圖神經(jīng)網(wǎng)絡(luò)等。
圖5 圖結(jié)構(gòu)示例
近年來(lái),深度學(xué)習(xí)領(lǐng)域關(guān)于圖神經(jīng)網(wǎng)絡(luò)(Graph Neural Networks,GNN)的研究熱情日益高漲,圖神經(jīng)網(wǎng)絡(luò)已經(jīng)成為各大深度學(xué)習(xí)頂會(huì)的研究熱點(diǎn)。GNN處理非結(jié)構(gòu)化數(shù)據(jù)時(shí)的出色能力使其在網(wǎng)絡(luò)數(shù)據(jù)分析、推薦系統(tǒng)、物理建模、自然語(yǔ)言處理和圖上的組合優(yōu)化問(wèn)題方面都取得了新的突破。
圖神經(jīng)網(wǎng)絡(luò)通常有以下幾種網(wǎng)絡(luò)模型:圖卷積網(wǎng)絡(luò)、圖自編碼器、圖生成網(wǎng)絡(luò)、圖循環(huán)網(wǎng)絡(luò)、圖注意力網(wǎng)絡(luò)。
相關(guān)論文:A Comprehensive Survey on Graph Neural Networks
論文地址:https://arxiv.org/pdf/1901.00596v1.pdf
GNN是直接在圖數(shù)據(jù)結(jié)構(gòu)上運(yùn)行的神經(jīng)網(wǎng)絡(luò)。GNN的典型應(yīng)用便是節(jié)點(diǎn)分類(lèi)。
圖神經(jīng)網(wǎng)絡(luò)就是將圖數(shù)據(jù)和神經(jīng)網(wǎng)絡(luò)進(jìn)行結(jié)合,在圖數(shù)據(jù)上面進(jìn)行端對(duì)端的計(jì)算。
單層的神經(jīng)網(wǎng)絡(luò)計(jì)算公式:
相比較于神經(jīng)網(wǎng)絡(luò)最基本的網(wǎng)絡(luò)結(jié)構(gòu)全連接層(MLP),特征矩陣乘以權(quán)重矩陣,圖神經(jīng)網(wǎng)絡(luò)多了一個(gè)鄰接矩陣。計(jì)算形式很簡(jiǎn)單,三個(gè)矩陣相乘再加上一個(gè)非線性變換:
?圖6?圖神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)示例
圖神經(jīng)網(wǎng)絡(luò)的計(jì)算過(guò)程總結(jié)起來(lái)就是聚合鄰居。圖神經(jīng)網(wǎng)絡(luò)是直接在圖上進(jìn)行計(jì)算,整個(gè)計(jì)算的過(guò)程,沿著圖的結(jié)構(gòu)進(jìn)行,這樣處理的好處是能夠很好的保留圖的結(jié)構(gòu)信息。而能夠?qū)Y(jié)構(gòu)信息進(jìn)行學(xué)習(xí),正是圖神經(jīng)網(wǎng)絡(luò)的能力所在。圖數(shù)據(jù)無(wú)處不在,圖神經(jīng)網(wǎng)絡(luò)的應(yīng)用場(chǎng)景自然非常多樣。
?圖7 圖神經(jīng)網(wǎng)絡(luò)的應(yīng)用場(chǎng)景
關(guān)注微信公眾號(hào)【有夢(mèng)想的程序星空】,了解軟件系統(tǒng)和人工智能算法領(lǐng)域的前沿知識(shí),讓我們一起學(xué)習(xí)、一起進(jìn)步吧!???????
總結(jié)
以上是生活随笔為你收集整理的深入浅出讲解神经网络的种类及举例说明的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: springcloud搭建实战<十一>【
- 下一篇: 成都哪个java培训机构好?