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