-
當(dāng)前位置:首頁(yè) > 創(chuàng)意學(xué)院 > 技術(shù) > 專題列表 > 正文
神經(jīng)網(wǎng)絡(luò)系統(tǒng)設(shè)計(jì)(神經(jīng)網(wǎng)絡(luò)系統(tǒng)設(shè)計(jì)論文)
大家好!今天讓創(chuàng)意嶺的小編來(lái)大家介紹下關(guān)于神經(jīng)網(wǎng)絡(luò)系統(tǒng)設(shè)計(jì)的問(wèn)題,以下是小編對(duì)此問(wèn)題的歸納整理,讓我們一起來(lái)看看吧。
開(kāi)始之前先推薦一個(gè)非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對(duì)話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫(xiě)出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁(yè)版、PC客戶端
官網(wǎng):https://ai.de1919.com。
創(chuàng)意嶺作為行業(yè)內(nèi)優(yōu)秀的企業(yè),服務(wù)客戶遍布全球各地,如需了解SEO相關(guān)業(yè)務(wù)請(qǐng)撥打電話175-8598-2043,或添加微信:1454722008
本文目錄:
一、神經(jīng)網(wǎng)絡(luò)(Neural Network)
(1)結(jié)構(gòu):許多樹(shù)突(dendrite)用于輸入,一個(gè)軸突 (axon)用于輸出。
(2)特性:興奮性和傳導(dǎo)性。興奮性是指當(dāng)信號(hào)量超過(guò)某個(gè)閾值時(shí),細(xì)胞體就會(huì)被激活,產(chǎn)生電脈沖。傳導(dǎo)性是指電脈沖沿著軸突并通過(guò)突觸傳遞到其它神經(jīng)元。
(3)有兩種狀態(tài)的機(jī)器:激活時(shí)為“是”,不激活時(shí)為“否”。神經(jīng)細(xì)胞的狀態(tài)取決于從其他神經(jīng)細(xì)胞接收到的信號(hào)量,以及突觸的性質(zhì)(抑制或加強(qiáng))。
(1)神經(jīng)元——不重要
① 神經(jīng)元是包含權(quán)重和偏置項(xiàng)的 函數(shù) :接收數(shù)據(jù)后,執(zhí)行一些計(jì)算,然后使用激活函數(shù)將數(shù)據(jù)限制在一個(gè)范圍內(nèi)(多數(shù)情況下)。
② 單個(gè)神經(jīng)元:線性可分的情況下,本質(zhì)是一條直線, ,這條直線將數(shù)據(jù)劃分為兩類。而線性分類器本身就是一個(gè)單層神經(jīng)網(wǎng)絡(luò)。
③ 神經(jīng)網(wǎng)絡(luò):非線性可分的情況下,神經(jīng)網(wǎng)絡(luò)通過(guò)多個(gè)隱層的方法來(lái)實(shí)現(xiàn)非線性的函數(shù)。
(2)權(quán)重/參數(shù)/連接(Weight)——最重要
每一個(gè)連接上都有一個(gè)權(quán)重。一個(gè)神經(jīng)網(wǎng)絡(luò)的訓(xùn)練算法就是讓權(quán)重的值調(diào)整到最佳,以使得整個(gè)網(wǎng)絡(luò)的預(yù)測(cè)效果最好。
(3)偏置項(xiàng)(Bias Units)——必須
① 如果沒(méi)有偏置項(xiàng),所有的函數(shù)都會(huì)經(jīng)過(guò)原點(diǎn)。
② 正則化偏置會(huì)導(dǎo)致欠擬合:若對(duì)偏置正則化,會(huì)導(dǎo)致激活變得更加簡(jiǎn)單,偏差就會(huì)上升,學(xué)習(xí)的能力就會(huì)下降。
③ 偏置的大小度量了神經(jīng)元產(chǎn)生激勵(lì)(激活)的難易程度。
(1)定義:也稱為轉(zhuǎn)換函數(shù),是一種將輸入 (input) 轉(zhuǎn)成輸出 (output) 的函數(shù)。
(2)作用:一般直線擬合的精確度要比曲線差很多,引入激活函數(shù)能給神經(jīng)網(wǎng)絡(luò) 增加一些非線性 的特性。
(3)性質(zhì):
① 非線性:導(dǎo)數(shù)不是常數(shù),否則就退化成直線。對(duì)于一些畫(huà)一條直線仍然無(wú)法分開(kāi)的問(wèn)題,非線性可以把直線變彎,就能包羅萬(wàn)象;
② 可微性:當(dāng)優(yōu)化方法是基于梯度的時(shí)候,處處可導(dǎo)為后向傳播算法提供了核心條件;
③ 輸出范圍:一般限定在[0,1],使得神經(jīng)元對(duì)一些比較大的輸入會(huì)比較穩(wěn)定;
④ 非飽和性:飽和就是指,當(dāng)輸入比較大的時(shí)候輸出幾乎沒(méi)變化,會(huì)導(dǎo)致梯度消失;
⑤ 單調(diào)性:導(dǎo)數(shù)符號(hào)不變,輸出不會(huì)上躥下跳,讓神經(jīng)網(wǎng)絡(luò)訓(xùn)練容易收斂。
(1)線性函數(shù) (linear function)—— purelin()
(2)符號(hào)函數(shù) (sign function)—— hardlim()
① 如果z值高于閾值,則激活設(shè)置為1或yes,神經(jīng)元將被激活。
② 如果z值低于閾值,則激活設(shè)置為0或no,神經(jīng)元不會(huì)被激活。
(3)對(duì)率函數(shù) (sigmoid function)—— logsig()
① 優(yōu)點(diǎn):光滑S型曲線連續(xù)可導(dǎo),函數(shù)閾值有上限。
② 缺點(diǎn):❶ 函數(shù)飽和使梯度消失,兩端梯度幾乎為0,更新困難,做不深;
❷ 輸出不是0中心,將影響梯度下降的運(yùn)作,收斂異常慢;
❸ 冪運(yùn)算相對(duì)來(lái)講比較耗時(shí)
(4)雙曲正切函數(shù)(hyperbolic tangent function)—— tansig()
① 優(yōu)點(diǎn):取值范圍0中心化,防止了梯度偏差
② 缺點(diǎn):梯度消失現(xiàn)象依然存在,但相對(duì)于sigmoid函數(shù)問(wèn)題較輕
(5)整流線性單元 ReLU 函數(shù)(rectified linear unit)
① 優(yōu)點(diǎn):❶ 分段線性函數(shù),它的非線性性很弱,因此網(wǎng)絡(luò)做得很深;
❷ 由于它的線性、非飽和性, 對(duì)于隨機(jī)梯度下降的收斂有巨大的加速作用;
② 缺點(diǎn):❶ 當(dāng)x<0,梯度都變成0,參數(shù)無(wú)法更新,也導(dǎo)致了數(shù)據(jù)多樣化的丟失;
❷ 輸出不是0中心
(6)滲漏型整流線性單元激活函數(shù) Leaky ReLU 函數(shù)
① 優(yōu)點(diǎn):❶ 是為解決“ReLU死亡”問(wèn)題的嘗試,在計(jì)算導(dǎo)數(shù)時(shí)允許較小的梯度;
❷ 非飽和的公式,不包含指數(shù)運(yùn)算,計(jì)算速度快。
② 缺點(diǎn):❶ 無(wú)法避免梯度爆炸問(wèn)題; (沒(méi)有體現(xiàn)優(yōu)于ReLU)
❷ 神經(jīng)網(wǎng)絡(luò)不學(xué)習(xí) α 值。
(7)指數(shù)線性單元 ELU (Exponential Linear Units)
① 優(yōu)點(diǎn):❶ 能避免“死亡 ReLU” 問(wèn)題;
❷ 能得到負(fù)值輸出,這能幫助網(wǎng)絡(luò)向正確的方向推動(dòng)權(quán)重和偏置變化;
❸ 在計(jì)算梯度時(shí)能得到激活,而不是讓它們等于 0。
② 缺點(diǎn):❶ 由于包含指數(shù)運(yùn)算,所以計(jì)算時(shí)間更長(zhǎng);
❷ 無(wú)法避免梯度爆炸問(wèn)題; (沒(méi)有體現(xiàn)優(yōu)于ReLU)
❸ 神經(jīng)網(wǎng)絡(luò)不學(xué)習(xí) α 值。
(8)Maxout(對(duì) ReLU 和 Leaky ReLU的一般化歸納)
① 優(yōu)點(diǎn):❶ 擁有ReLU的所有優(yōu)點(diǎn)(線性和不飽和)
❷ 沒(méi)有ReLU的缺點(diǎn)(死亡的ReLU單元)
❸ 可以擬合任意凸函數(shù)
② 缺點(diǎn) :參數(shù)數(shù)量增加了一倍。難訓(xùn)練,容易過(guò)擬合
(9)Swish
① 優(yōu)點(diǎn):❶ 在負(fù)半軸也有一定的不飽和區(qū),參數(shù)的利用率更大
❷ 無(wú)上界有下界、平滑、非單調(diào)
❸ 在深層模型上的效果優(yōu)于 ReLU
每個(gè)層都包含一定數(shù)量的單元(units)。增加層可增加神經(jīng)網(wǎng)絡(luò)輸出的非線性。
(1)輸入層:就是接收原始數(shù)據(jù),然后往隱層送
(2)輸出層:神經(jīng)網(wǎng)絡(luò)的決策輸出
(3)隱藏層:神經(jīng)網(wǎng)絡(luò)的關(guān)鍵。把前一層的向量變成新的向量,讓數(shù)據(jù)變得線性可分。
(1)結(jié)構(gòu):僅包含輸入層和輸出層,直接相連。
(2)作用:僅能表示 線性可分 函數(shù)或決策,且一定可以在有限的迭代次數(shù)中收斂。
(3)局限:可以建立與門(mén)、或門(mén)、非門(mén)等,但無(wú)法建立更為復(fù)雜的異或門(mén)(XOR),即兩個(gè)輸入相同時(shí)輸出1,否則輸出0。 (“AI winter”)
(1)目的:擬合某個(gè)函數(shù) (兩層神經(jīng)網(wǎng)絡(luò)可以逼近任意連續(xù)函數(shù))
(2)結(jié)構(gòu):包含輸入層、隱藏層和輸出層 ,由于從輸入到輸出的過(guò)程中不存在與模型自身的反饋連接,因此被稱為“前饋”。 (層與層之間全連接)
(3)作用: 非線性 分類、聚類、預(yù)測(cè)等,通過(guò)訓(xùn)練,可以學(xué)習(xí)到數(shù)據(jù)中隱含的知識(shí)。
(4)局限:計(jì)算復(fù)雜、計(jì)算速度慢、容易陷入局部最優(yōu)解,通常要將它們與其他網(wǎng)絡(luò)結(jié)合形成新的網(wǎng)絡(luò)。
(5)前向傳播算法(Forward Propagation)
① 方法:從左至右逐級(jí)依賴的算法模型,即網(wǎng)絡(luò)如何根據(jù)輸入X得到輸出Y,最終的輸出值和樣本值作比較, 計(jì)算出誤差 。
② 目的:完成了一次正反向傳播,就完成了一次神經(jīng)網(wǎng)絡(luò)的訓(xùn)練迭代。通過(guò)輸出層的誤差,快速求解對(duì)每個(gè)ω、b的偏導(dǎo),利用梯度下降法,使Loss越來(lái)越小。
② 局限:為使最終的誤差達(dá)到最小,要不斷修改參數(shù)值,但神經(jīng)網(wǎng)絡(luò)的每條連接線上都有不同權(quán)重參數(shù),修改這些參數(shù)變得棘手。
(6)誤差反向傳播(Back Propagation)
① 原理:梯度下降法求局部極值
② 方法:從后往前,從輸出層開(kāi)始計(jì)算 L 對(duì)當(dāng)前層的微分,獲得各層的誤差信號(hào),此誤差信號(hào)即作為修正單元權(quán)值的依據(jù)。計(jì)算結(jié)束以后,所要的兩個(gè)參數(shù)矩陣的 梯度 就都有了。
③ 局限:如果激活函數(shù)是飽和的,帶來(lái)的缺陷就是系統(tǒng)迭代更新變慢,系統(tǒng)收斂就慢,當(dāng)然這是可以有辦法彌補(bǔ)的,一種方法是使用 交叉熵函數(shù) 作為損失函數(shù)。
(1)原理:隨著網(wǎng)絡(luò)的層數(shù)增加,每一層對(duì)于前一層次的抽象表示更深入。在神經(jīng)網(wǎng)絡(luò)中,每一層神經(jīng)元學(xué)習(xí)到的是前一層神經(jīng)元值的更抽象的表示。通過(guò)抽取更抽象的特征來(lái)對(duì)事物進(jìn)行區(qū)分,從而獲得更好的區(qū)分與分類能力。
(2)方法:ReLU函數(shù)在訓(xùn)練多層神經(jīng)網(wǎng)絡(luò)時(shí),更容易收斂,并且預(yù)測(cè)性能更好。
(3)優(yōu)點(diǎn):① 易于構(gòu)建,表達(dá)能力強(qiáng),基本單元便可擴(kuò)展為復(fù)雜的非線性函數(shù)
② 并行性號(hào),有利于在分布是系統(tǒng)上應(yīng)用
(4)局限:① 優(yōu)化算法只能獲得局部極值,性能與初始值相關(guān)
② 調(diào)參理論性缺乏
③ 不可解釋,與實(shí)際任務(wù)關(guān)聯(lián)性模糊
(1)原理:由手工設(shè)計(jì)卷積核變成自動(dòng)學(xué)習(xí)卷積核
(2)卷積(Convolutional layer): 輸入與卷積核相乘再累加 (內(nèi)積、加權(quán)疊加)
① 公式:
② 目的:提取輸入的不同特征,得到維度很大的 特征圖(feature map)
③ 卷積核:需要訓(xùn)練的參數(shù)。一般為奇數(shù)維,有中心像素點(diǎn),便于定位卷積核
④ 特點(diǎn):局部感知、參數(shù)變少、權(quán)重共享、分層提取
(3)池化(Pooling Layer):用更高層的抽象表達(dá)來(lái)表示主要特征,又稱“降采樣”
① 分類: 最大 (出現(xiàn)與否)、平均(保留整體)、隨機(jī)(避免過(guò)擬合)
② 目的:降維,不需要訓(xùn)練參數(shù),得到新的、維度較小的特征
(4)步長(zhǎng)(stride):若假設(shè)輸入大小是n∗n,卷積核的大小是f∗f,步長(zhǎng)是s,則最后的feature map的大小為o∗o,其中
(5)填充(zero-padding)
① Full模式:即從卷積核(fileter)和輸入剛相交開(kāi)始做卷積,沒(méi)有元素的部分做補(bǔ)0操作。
② Valid模式:卷積核和輸入完全相交開(kāi)始做卷積,這種模式不需要補(bǔ)0。
③ Same模式:當(dāng)卷積核的中心C和輸入開(kāi)始相交時(shí)做卷積。沒(méi)有元素的部分做補(bǔ)0操作。
(7)激活函數(shù):加入非線性特征
(8)全連接層(Fully-connected layer)
如果說(shuō)卷積層、池化層和激活函數(shù)層等是將原始數(shù)據(jù)映射到隱層特征空間(決定計(jì)算速度),全連接層則起到將學(xué)到的“分布式特征表示”映射到樣本標(biāo)記空間的作用(決定參數(shù)個(gè)數(shù))。
參考:
[1] 神經(jīng)網(wǎng)絡(luò)(入門(mén)最詳細(xì))_ruthy的博客-CSDN博客_神經(jīng)網(wǎng)絡(luò)算法入門(mén)
[2] 神經(jīng)網(wǎng)絡(luò)(容易被忽視的基礎(chǔ)知識(shí)) - Evan的文章 - 知乎
[3] 人工神經(jīng)網(wǎng)絡(luò)——王的機(jī)器
[4] 如何簡(jiǎn)單形象又有趣地講解神經(jīng)網(wǎng)絡(luò)是什么? - 舒小曼的回答 - 知乎
[5] 神經(jīng)網(wǎng)絡(luò)15分鐘入門(mén)!足夠通俗易懂了吧 - Mr.括號(hào)的文章 - 知乎
[6] 神經(jīng)網(wǎng)絡(luò)——最易懂最清晰的一篇文章_illikang的博客-CSDN博客_神經(jīng)網(wǎng)絡(luò)
[7] 直覺(jué)化深度學(xué)習(xí)教程——什么是前向傳播——CSDN
[8] “反向傳播算法”過(guò)程及公式推導(dǎo)(超直觀好懂的Backpropagation)_aift的專欄-CSDN
[9] 卷積、反卷積、池化、反池化——CSDN
[10] 浙大機(jī)器學(xué)習(xí)課程- bilibili.com
二、Keras快速構(gòu)建神經(jīng)網(wǎng)絡(luò)模型
用Keras搭建神經(jīng)網(wǎng)絡(luò)的步驟:
深度學(xué)習(xí)框架Keras——像搭積木般構(gòu)建神經(jīng)網(wǎng)絡(luò),主要分為7個(gè)部分,每個(gè)部分只需要幾個(gè)keras API函數(shù)就能實(shí)現(xiàn),用戶即可像搭積木般一層層構(gòu)建神經(jīng)網(wǎng)絡(luò)模型。
1. 創(chuàng)建模型 Create model
2. 添加層級(jí) Add Layer
3. 模型編譯 Compile
4. 數(shù)據(jù)填充 Fit
5. 模型評(píng)估 Evaluate
6. 模型預(yù)測(cè) Predict
7. 模型保存 Save model
下面章節(jié)會(huì)對(duì)每一部分具體來(lái)介紹。。。
Keras 中主要有三類模型:Sequential model, Functional model, Subclass model
在開(kāi)始創(chuàng)建模型之前,首先需要引入tensorflow和keras模塊,然后再創(chuàng)建一個(gè)Sequential model
Sequential API定義如下:
layers參數(shù)可以為空, 然后通過(guò)add method向模型中添加layer,相對(duì)應(yīng)的通過(guò)pop method移除模型中l(wèi)ayer。
創(chuàng)建Function API模型,可以調(diào)用Keras.Model來(lái)指定多輸入多數(shù)出。
Keras.Model定義:
Layers是神經(jīng)網(wǎng)絡(luò)基本構(gòu)建塊。一個(gè)Layer包含了tensor-in/tensor-out的計(jì)算方法和一些狀態(tài),并保存在TensorFlow變量中(即layers的權(quán)重weights)。
Layers主要分為6個(gè)類別,基礎(chǔ)層,核心層,卷基層,池化層,循環(huán)層,融合層。
對(duì)派生類的實(shí)現(xiàn)可以用以下方法:
** init (): 定義layer的屬性,創(chuàng)建layer的靜態(tài)變量。
** build(self, input_shape): 創(chuàng)建依賴于輸入的變量,可以調(diào)用add_weight()。
** call(self, *args, **kwargs): 在確保已調(diào)用build()之后,在 call 中調(diào)用。
** get_config(self): 返回包含用于初始化此層的配置的字典類型。
創(chuàng)建SimpleDense派生類,在build()函數(shù)里添加trainable weights。實(shí)現(xiàn)y=input*w +b
結(jié)果輸出:
創(chuàng)建ComputeSum派生類,在 init 函數(shù)里添加 non-trainable weights。實(shí)現(xiàn)輸入矩陣沿軸0元素相加后,x=x+self.total
結(jié)果輸出:
核心層是最常用的層,涉及到數(shù)據(jù)的轉(zhuǎn)換和處理的時(shí)候都會(huì)用到這些層。
Dense層就是所謂的全連接神經(jīng)網(wǎng)絡(luò)層,簡(jiǎn)稱全連接層。全連接層中的每個(gè)神經(jīng)元與其前一層的所有神經(jīng)元進(jìn)行全連接。
Dense 實(shí)現(xiàn)以下操作: output = activation(dot(input, kernel) + bias) 其中 activation 是按逐個(gè)元素計(jì)算的激活函數(shù),kernel 是由網(wǎng)絡(luò)層創(chuàng)建的權(quán)值矩陣,以及 bias 是其創(chuàng)建的偏置向量 (只在 use_bias 為 True 時(shí)才有用)。
將激活函數(shù)應(yīng)用于輸出。輸入信號(hào)進(jìn)入神經(jīng)元后進(jìn)行的運(yùn)算處理。
sigmoid、tanh、ReLU、softplus的對(duì)比曲線如下圖所示:
激活函數(shù)可以通過(guò)設(shè)置單獨(dú)的激活層Activation實(shí)現(xiàn),也可以在構(gòu)造層對(duì)象時(shí)通過(guò)傳遞 activation 參數(shù)實(shí)現(xiàn):
Dropout在訓(xùn)練中每次更新時(shí),將輸入單元的按比率隨機(jī)設(shè)置為0,這有助于防止過(guò)擬合。未設(shè)置為0的輸入將按1 /(1-rate)放大,以使所有輸入的總和不變。
請(qǐng)注意,僅當(dāng)訓(xùn)練設(shè)置為T(mén)rue時(shí)才應(yīng)用Dropout層,以便在推理過(guò)程中不會(huì)丟棄任何值。 使用model.fit時(shí),訓(xùn)練將自動(dòng)適當(dāng)?shù)卦O(shè)置為T(mén)rue。
將輸入展平。不影響批量大小。注意:如果輸入的形狀是(batch,)沒(méi)有特征軸,則展平會(huì)增加通道尺寸,而輸出的形狀是(batch, 1)。
將輸入重新調(diào)整為特定的尺寸
將任意表達(dá)式封裝為L(zhǎng)ayer對(duì)象。在Lambda層,以便在構(gòu)造模型時(shí)可以使用任意TensorFlow函數(shù)。 Lambda層最適合簡(jiǎn)單操作或快速實(shí)驗(yàn)。 Lambda層是通過(guò)序列化Python字節(jié)碼來(lái)保存的。
使用覆蓋值覆蓋序列,以跳過(guò)時(shí)間步。
對(duì)于輸入張量的每一個(gè)時(shí)間步(張量的第一個(gè)維度),如果所有時(shí)間步中輸入張量的值與mask_value相等,則將在所有下游層中屏蔽(跳過(guò))該時(shí)間步。如果任何下游層不支持覆蓋但仍然收到此類輸入覆蓋信息,會(huì)引發(fā)異常。
舉例說(shuō)明:
Embedding 是一個(gè)將離散變量轉(zhuǎn)為連續(xù)向量表示的一個(gè)方式。該層只能用作模型中的第一層。
Embedding 有以下3個(gè)主要目的: 在 embedding 空間中查找最近鄰,這可以很好的用于根據(jù)用戶的興趣來(lái)進(jìn)行推薦。 作為監(jiān)督性學(xué)習(xí)任務(wù)的輸入。 用于可視化不同離散變量之間的關(guān)系.
舉例說(shuō)明:
輸出結(jié)果:
由維基百科的介紹我們可以得知,卷積是一種定義在兩個(gè)函數(shù)(𝑓跟𝑔)上的數(shù)學(xué)操作,旨在產(chǎn)生一個(gè)新的函數(shù)。那么𝑓和𝑔的卷積就可以寫(xiě)成𝑓∗𝑔,數(shù)學(xué)定義如下:
對(duì)應(yīng)到不同方面,卷積可以有不同的解釋:𝑔 既可以看作我們?cè)谏疃葘W(xué)習(xí)里常說(shuō)的核(Kernel),也可以對(duì)應(yīng)到信號(hào)處理中的濾波器(Filter)。而 𝑓 可以是我們所說(shuō)的機(jī)器學(xué)習(xí)中的特征(Feature),也可以是信號(hào)處理中的信號(hào)(Signal)。f和g的卷積 (𝑓∗𝑔)就可以看作是對(duì)𝑓的加權(quán)求和。
一維時(shí)域卷積操作:
二維圖像卷積操作:
卷積運(yùn)算的目的是提取輸入的不同特征,第一層卷積層可能只能提取一些低級(jí)的特征如邊緣、線條和角等層級(jí),更多層的網(wǎng)路能從低級(jí)特征中迭代提取更復(fù)雜的特征。
一維卷積層(即時(shí)域卷積),用以在一維輸入信號(hào)上進(jìn)行鄰域?yàn)V波。
舉例說(shuō)明:
結(jié)果輸出:
2D 卷積層 (例如對(duì)圖像的空間卷積)。
舉例說(shuō)明:
結(jié)果輸出:
3D卷積層(例如體積上的空間卷積)
舉例說(shuō)明:
結(jié)果輸出:
深度可分離1D卷積。該層執(zhí)行分別作用在通道上的深度卷積,然后是混合通道的逐點(diǎn)卷積。 如果use_bias為T(mén)rue并提供了一個(gè)偏差初始值設(shè)定項(xiàng),則它將偏差向量添加到輸出中。 然后,它可選地應(yīng)用激活函數(shù)以產(chǎn)生最終輸出。
深度可分離的2D卷積??煞蛛x的卷積包括首先執(zhí)行深度空間卷積(它分別作用于每個(gè)輸入通道),然后是點(diǎn)向卷積,它將混合所得的輸出通道。 depth_multiplier參數(shù)控制在深度步驟中每個(gè)輸入通道生成多少個(gè)輸出通道。
直觀上,可分離的卷積可以理解為將卷積內(nèi)核分解為兩個(gè)較小內(nèi)核的一種方式,或者是Inception塊的一種極端版本。
轉(zhuǎn)置卷積層 (有時(shí)被成為反卷積)。對(duì)轉(zhuǎn)置卷積的需求一般來(lái)自希望使用 與正常卷積相反方向的變換,將具有卷積輸出尺寸的東西 轉(zhuǎn)換為具有卷積輸入尺寸的東西, 同時(shí)保持與所述卷積相容的連通性模式。
池化層是模仿人的視覺(jué)系統(tǒng)對(duì)數(shù)據(jù)進(jìn)行降維,用更高層次的特征表示圖像。實(shí)施池化的目的:降低信息冗余;提升模型的尺度不變性、旋轉(zhuǎn)不變性。 防止過(guò)擬合。
通常有最大池化層,平均池化層。
池化層有三種形態(tài):1D 用于一維數(shù)據(jù),2D 一般用于二維圖像數(shù)據(jù),3D 帶時(shí)間序列數(shù)據(jù)的圖像數(shù)據(jù)
循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network, 簡(jiǎn)稱 RNN),循環(huán)神經(jīng)網(wǎng)絡(luò)的提出便是基于記憶模型的想法,期望網(wǎng)絡(luò)能夠記住前面出現(xiàn)的特征,并依據(jù)特征推斷后面的結(jié)果,而且整體的網(wǎng)絡(luò)結(jié)構(gòu)不斷循環(huán),因此得名為循環(huán)神經(jīng)網(wǎng)絡(luò)。
長(zhǎng)短期記憶網(wǎng)絡(luò)(Long-Short Term Memory, LSTM )論文首次發(fā)表于1997年。由于獨(dú)特的設(shè)計(jì)結(jié)構(gòu),LSTM適合于處理和預(yù)測(cè)時(shí)間序列中間隔和延遲非常長(zhǎng)的重要事件。
舉例說(shuō)明:
結(jié)果輸出:
GRU 門(mén)控循環(huán)單元- Cho et al. 2014.
在LSTM中引入了三個(gè)門(mén)函數(shù):輸入門(mén)、遺忘門(mén)和輸出門(mén)來(lái)控制輸入值、記憶值和輸出值。而在GRU模型中只有兩個(gè)門(mén):分別是更新門(mén)和重置門(mén)。與LSTM相比,GRU內(nèi)部少了一個(gè)”門(mén)控“,參數(shù)比LSTM少,但是卻也能夠達(dá)到與LSTM相當(dāng)?shù)墓δ堋?紤]到硬件的計(jì)算能力和時(shí)間成本,因而很多時(shí)候我們也就會(huì)選擇更加”實(shí)用“的GRU。
舉例說(shuō)明:
結(jié)果輸出:
循環(huán)神經(jīng)網(wǎng)絡(luò)層基類。
關(guān)于指定 RNN 初始狀態(tài)的說(shuō)明
您可以通過(guò)使用關(guān)鍵字參數(shù) initial_state 調(diào)用它們來(lái)符號(hào)化地指定 RNN 層的初始狀態(tài)。 initial_state 的值應(yīng)該是表示 RNN 層初始狀態(tài)的張量或張量列表。
可以通過(guò)調(diào)用帶有關(guān)鍵字參數(shù) states 的 reset_states 方法來(lái)數(shù)字化地指定 RNN 層的初始狀態(tài)。 states 的值應(yīng)該是一個(gè)代表 RNN 層初始狀態(tài)的 Numpy 數(shù)組或者 Numpy 數(shù)組列表。
關(guān)于給 RNN 傳遞外部常量的說(shuō)明
可以使用 RNN. call (以及 RNN.call)的 constants 關(guān)鍵字參數(shù)將「外部」常量傳遞給單元。 這要求 cell.call 方法接受相同的關(guān)鍵字參數(shù) constants。 這些常數(shù)可用于調(diào)節(jié)附加靜態(tài)輸入(不隨時(shí)間變化)上的單元轉(zhuǎn)換,也可用于注意力機(jī)制。
舉例說(shuō)明:
在訓(xùn)練模型之前,我們需要配置學(xué)習(xí)過(guò)程,這是通過(guò)compile方法完成的。
他接收三個(gè)參數(shù):優(yōu)化器 opt
三、MATLAB控制系統(tǒng)仿真與實(shí)例詳解的目錄
第1章 控制系統(tǒng)仿真基礎(chǔ) 1
1.1 自動(dòng)控制理論與控制技術(shù)概述 1
1.1.1 自動(dòng)控制理論的發(fā)展概況 1
1.1.2 自動(dòng)控制系統(tǒng)簡(jiǎn)介 4
1.2 計(jì)算機(jī)仿真概述 5
1.2.1 系統(tǒng)與模型 6
1.2.2 計(jì)算機(jī)仿真 7
1.2.3 仿真的作用 8
1.2.4 仿真算法和仿真軟件 8
1.2.5 計(jì)算機(jī)仿真的一般過(guò)程 9
第2章 MATLAB程序設(shè)計(jì)語(yǔ)言基礎(chǔ) 11
2.1 MATLAB基礎(chǔ) 11
2.1.1 MATLAB的產(chǎn)生與發(fā)展 11
2.1.2 MATLAB的主要特點(diǎn) 13
2.2 MATLAB操作平臺(tái) 14
2.2.1 MATLAB的安裝與啟動(dòng) 14
2.2.2 MATLAB的運(yùn)行環(huán)境 15
2.3 MATLAB幫助系統(tǒng) 18
2.3.1 聯(lián)機(jī)幫助系統(tǒng) 19
2.3.2 命令窗口查詢幫助 20
2.3.3 聯(lián)機(jī)演示系統(tǒng) 22
2.3.4 常用的命令和技巧 23
2.4 MATLAB的數(shù)值計(jì)算功能 24
2.4.1 MATLAB數(shù)據(jù)類型 24
2.4.2 矩陣的生成 26
2.4.3 矩陣的基本數(shù)學(xué)運(yùn)算 37
2.4.4 數(shù)組運(yùn)算 46
2.4.5 向量和下標(biāo) 53
2.4.6 矩陣的相關(guān)函數(shù) 59
2.4.7 多項(xiàng)式運(yùn)算 69
2.5 MATLAB在數(shù)值分析中的應(yīng)用 71
2.6 MATLAB的圖形可視化 74
2.6.1 二維圖形的繪制 74
2.6.2 三維圖形的繪制 78
2.6.3 圖形的輸出 80
2.7 MATLAB的程序設(shè)計(jì) 80
2.7.1 M文件 80
2.7.2 函數(shù)變量及變量作用域 82
2.7.3 子函數(shù)與局部函數(shù) 83
2.7.4 流程控制語(yǔ)句 84
2.8 符號(hào)運(yùn)算功能 86
第3章 控制系統(tǒng)理論基礎(chǔ) 91
3.1 經(jīng)典控制理論基礎(chǔ) 91
3.1.1 開(kāi)環(huán)控制系統(tǒng)與閉環(huán)控制系統(tǒng) 91
3.1.2 控制系統(tǒng)分類 97
3.2 經(jīng)典控制理論的研究?jī)?nèi)容 100
3.2.1 傳遞函數(shù)模型 101
3.2.2 零極點(diǎn)增益模型 105
3.2.3 控制系統(tǒng)的時(shí)域分析 105
3.2.4 控制系統(tǒng)的根軌跡分析 114
3.2.5 控制系統(tǒng)的頻域分析 115
3.3 現(xiàn)代控制理論基礎(chǔ) 117
3.3.1 狀態(tài)空間模型 117
3.3.2 能控性和能觀測(cè)性 118
3.3.3 能控性和能觀測(cè)性實(shí)現(xiàn) 118
3.3.4 極點(diǎn)配置設(shè)計(jì) 125
3.3.5 最優(yōu)控制設(shè)計(jì) 126
3.4 智能控制理論基礎(chǔ) 128
3.4.1 智能控制的概念和特點(diǎn) 129
3.4.2 神經(jīng)網(wǎng)絡(luò)控制 129
3.4.3 模糊控制 134
第4章 Simulink交互式仿真環(huán)境 137
4.1 Simulink簡(jiǎn)介 137
4.1.1 Simulink概述 137
4.1.2 Simulink的啟動(dòng)與界面 138
4.2 Simulink中常用模塊 140
4.2.1 CommonlyUsedBlocks(常用模塊庫(kù)) 140
4.2.2 Continuous(連續(xù)系統(tǒng)模塊庫(kù)) 142
4.2.3 Discontinuous(非連續(xù)系統(tǒng)模塊庫(kù)) 142
4.2.4 Discrete(離散系統(tǒng)模塊庫(kù)) 143
4.2.5 MathOperations(數(shù)學(xué)運(yùn)算模塊庫(kù)) 144
4.2.6 Sinks(接收模塊庫(kù)) 145
4.2.7 Sources(信號(hào)源模塊庫(kù)) 146
4.3 Simulink建?!?47
4.3.1 Simulink簡(jiǎn)單模型的建立 147
4.3.2 模塊的操作 149
4.3.3 信號(hào)線的操作 150
4.3.4 模型注釋 151
4.3.5 仿真配置 151
4.3.6 建模實(shí)例 155
4.4 子系統(tǒng)及其封裝技術(shù) 157
4.4.1 Simulink子系統(tǒng) 157
4.4.2 封裝模塊 158
4.5 模型運(yùn)行及分析 159
4.5.1 模型特征 159
4.5.2 模型運(yùn)行 159
4.5.3 模型線性化 161
4.5.4 系統(tǒng)平衡點(diǎn)的求取 163
4.6 S-函數(shù) 164
4.6.1 S-函數(shù)的工作方式 164
4.6.2 用MATLAB語(yǔ)言編寫(xiě)S-函數(shù) 166
第5章 控制系統(tǒng)建模 169
5.1 系統(tǒng)的數(shù)學(xué)模型描述 169
5.1.1 連續(xù)系統(tǒng) 169
5.1.2 離散系統(tǒng) 171
5.2 MATLAB中控制系統(tǒng)模型的建立 172
5.2.1 傳遞函數(shù)模型 172
5.2.2 零極點(diǎn)增益模型 176
5.2.3 狀態(tài)空間模型 179
5.3 系統(tǒng)不同模型之間的轉(zhuǎn)換 181
5.4 系統(tǒng)模型的連接 192
5.5 連續(xù)系統(tǒng)與離散系統(tǒng)的相互轉(zhuǎn)化 209
第6章 線性控制系統(tǒng)的分析與仿真 214
6.1 線性系統(tǒng)的時(shí)域分析 214
6.2 線性系統(tǒng)的根軌跡分析 231
6.3 線性系統(tǒng)的頻域分析 237
6.3.1 頻域響應(yīng)分析 237
6.3.2 頻率域穩(wěn)定性分析 246
6.4 線性系統(tǒng)的狀態(tài)空間分析 250
6.4.1 能控性分析 250
6.4.2 能觀性分析 254
6.4.3 極點(diǎn)配置及其MATLAB實(shí)現(xiàn) 257
第7章 PID控制系統(tǒng)設(shè)計(jì)及仿真 262
7.1 PID控制系統(tǒng)設(shè)計(jì)原理 262
7.2 連續(xù)系統(tǒng)的模擬PID仿真 263
7.3 數(shù)字PID控制 264
7.3.1 位置式PID控制算法 264
7.3.2 連續(xù)系統(tǒng)的數(shù)字PID控制仿真 265
7.3.3 離散系統(tǒng)的數(shù)字PID控制仿真 267
7.3.4 增量式PID控制算法及仿真 272
7.3.5 積分分離PID控制算法及仿真 274
7.4 智能PID控制 278
7.4.1 神經(jīng)元PID控制 278
7.4.2 模糊自適應(yīng)PID控制 283
7.4.3 專家PID控制 292
第8章 最優(yōu)控制系統(tǒng)設(shè)計(jì) 295
8.1 最優(yōu)控制的基本概念 295
8.1.1 最優(yōu)控制問(wèn)題 295
8.1.2 最優(yōu)控制的性能指標(biāo)及應(yīng)用類型 297
8.1.3 最優(yōu)控制中的變分法 297
8.1.4 用變分法求連續(xù)系統(tǒng)最優(yōu)控制 302
8.2 連續(xù)系統(tǒng)線性二次型最優(yōu)控制 304
8.2.1 連續(xù)系統(tǒng)線性二次型最優(yōu)控制原理 305
8.2.2 連續(xù)系統(tǒng)二次型最優(yōu)控制的MATLAB函數(shù) 305
8.3 離散系統(tǒng)線性二次型最優(yōu)控制 309
8.3.1 離散系統(tǒng)線性二次型最優(yōu)控制原理 309
8.3.2 離散系統(tǒng)二次型最優(yōu)控制的MATLAB函數(shù) 309
8.4 線性二次型高斯最優(yōu)控制 311
8.4.1 LQG最優(yōu)控制原理 311
8.4.2 LQG最優(yōu)控制的MATLAB實(shí)現(xiàn) 312
8.5 最優(yōu)控制系統(tǒng)設(shè)計(jì)實(shí)例 318
第9章 魯棒控制系統(tǒng)設(shè)計(jì) 322
9.1 魯棒控制系統(tǒng)簡(jiǎn)介 322
9.1.1 奇異值、H2和范數(shù) 323
9.1.2 標(biāo)準(zhǔn)魯棒控制問(wèn)題 323
9.1.3 結(jié)構(gòu)與非結(jié)構(gòu)不確定性 324
9.1.4 使用控制方法 324
9.2 魯棒控制工具箱 326
9.3 魯棒控制系統(tǒng)設(shè)計(jì)方法 329
第10章 神經(jīng)網(wǎng)絡(luò)系統(tǒng)設(shè)計(jì)及其MATLAB實(shí)現(xiàn) 331
10.1 人工神經(jīng)網(wǎng)絡(luò)概述 331
10.2 神經(jīng)網(wǎng)絡(luò)工具箱函數(shù) 332
10.3 神經(jīng)網(wǎng)絡(luò)模型及其MATLAB實(shí)現(xiàn) 334
10.3.1 感知器 334
10.3.2 線性神經(jīng)網(wǎng)絡(luò) 338
10.3.3 BP網(wǎng)絡(luò) 344
10.3.4 徑向基函數(shù)(RBF)神經(jīng)網(wǎng)絡(luò) 350
10.3.5 Hopfield網(wǎng)絡(luò) 353
10.3.6 自組織特征映射神經(jīng)網(wǎng)絡(luò) 357
第11章 模糊控制系統(tǒng)設(shè)計(jì) 361
11.1 模糊控制系統(tǒng) 361
11.1.1 模糊控制系統(tǒng)的基本結(jié)構(gòu)及其原理 361
11.1.2 PD、PI、PID型的模糊控制器 363
11.1.3 模糊控制器的設(shè)計(jì)方法 364
11.2 模糊控制工具箱簡(jiǎn)介 366
11.3 模糊推理系統(tǒng)的建立 367
第12章 系統(tǒng)辨識(shí) 374
12.1 系統(tǒng)辨識(shí)基礎(chǔ) 374
12.1.1 辨識(shí)的內(nèi)容和步驟 375
12.1.2 系統(tǒng)辨識(shí)的分類 376
12.2 系統(tǒng)辨識(shí)常用輸入信號(hào) 376
12.3 最小二乘辨識(shí)及其MATLAB實(shí)現(xiàn) 379
12.3.1 最小二乘算法簡(jiǎn)介 380
12.3.2 最小二乘一次完成算法及其MATLAB實(shí)現(xiàn) 381
12.3.3 最小二乘遞推算法 383
12.3.4 增廣最小二乘算法 385
12.4 極大似然辨識(shí)及其MATLAB實(shí)現(xiàn) 389
12.4.1 極大似然辨識(shí)簡(jiǎn)介 389
12.4.2 動(dòng)態(tài)模型參數(shù)極大似然辨識(shí)及其MATLAB實(shí)現(xiàn) 389
12.5 神經(jīng)網(wǎng)絡(luò)模型辨識(shí)及其MATLAB實(shí)現(xiàn) 392
……
四、圖神經(jīng)網(wǎng)絡(luò)是怎么煉成的:GNN基本原理簡(jiǎn)介
此文算是對(duì)Google Research這篇 A Gentle Introduction to Graph Neural Networks 神作的閱讀筆記.
十多年來(lái),研究人員開(kāi)發(fā)了一種稱之為圖神經(jīng)網(wǎng)絡(luò)(Graph Neural Networks,GNNs)的技術(shù),旨在將如今在深度學(xué)習(xí)的諸多任務(wù)中摧枯拉朽的神經(jīng)網(wǎng)絡(luò),應(yīng)用到圖結(jié)構(gòu)之上,從而讓神經(jīng)網(wǎng)絡(luò)捕捉到更錯(cuò)綜復(fù)雜的交叉特征,以期待在一些任務(wù)上取得更佳的效果。鑒于操作圖數(shù)據(jù)結(jié)構(gòu)的復(fù)雜性,盡管已經(jīng)發(fā)展了十幾年,它在實(shí)際應(yīng)用中卻剛剛起步,即時(shí)是google也才開(kāi)始研究將其被應(yīng)用到藥品研發(fā)、物理模擬、假新聞檢測(cè)、交通預(yù)測(cè)和推薦系統(tǒng)等領(lǐng)域。
盡管GNN是一個(gè)新興的研究領(lǐng)域,但圖結(jié)構(gòu)的數(shù)據(jù)其實(shí)在我們身邊無(wú)處不在。那么什么是圖呢?
這個(gè)理科生應(yīng)該都清楚,圖有點(diǎn)(Vertex)和邊(Edge)兩部分組成,一個(gè)圖就代表了各個(gè)實(shí)體節(jié)點(diǎn)(node)之間的關(guān)系(edge):
每個(gè)節(jié)點(diǎn)或者邊都可以包含它的一些屬性信息,比如如果一個(gè)節(jié)點(diǎn)表示一個(gè)人,那么就可以包含這個(gè)人的姓名、性別、身高、體重之類的..我們研究需要的信息。
而這些信息,都可以用通用的向量的形式存入其中:
還有別忘了一點(diǎn),邊是可以有方向的,按此我們還能分為有向圖或是無(wú)向圖。邊的方向代表了信息的傳遞方向,例如a是b的微信好友,那b也是a的微信好友,好友關(guān)系自然是沒(méi)方向的,而比如a是b的爹,那顯然b就不是a的爹,此時(shí)叫爹的關(guān)系就是有有方向的。
圖結(jié)構(gòu)的構(gòu)建是非常靈活的,可以根據(jù)個(gè)人的設(shè)計(jì)構(gòu)建出各種不一樣的圖。而作為開(kāi)發(fā)者顯然要結(jié)合實(shí)際解決的問(wèn)題來(lái)構(gòu)建合適的圖。
正如前面所提到的,圖無(wú)處不在。你可能已經(jīng)熟悉例如知識(shí)圖譜、社交網(wǎng)絡(luò)之類的圖數(shù)據(jù)。當(dāng)時(shí)顯然,圖是一種極其強(qiáng)大的通用數(shù)據(jù)表示,傳統(tǒng)神經(jīng)網(wǎng)絡(luò)中用到的歐式空間的數(shù)據(jù),同樣可以用圖來(lái)表示,例如可以將圖像和文本建模為圖結(jié)構(gòu)數(shù)據(jù)。
比如,我們可以將一張圖片的每個(gè)像素作為圖的節(jié)點(diǎn),再將相鄰的像素用邊連接起來(lái),就構(gòu)造了一個(gè)該圖像的圖。
如上圖展示了一個(gè)5*5的圖片的鄰接矩陣表示和圖表示。
我們將每個(gè)單詞作為節(jié)點(diǎn),并將每個(gè)節(jié)點(diǎn)連接到下一個(gè)節(jié)點(diǎn),就得到了一個(gè)文本的圖:
當(dāng)然,在實(shí)踐中我們并不會(huì)這樣來(lái)編碼文本和圖像,因?yàn)樗械膱D和文本都是非常規(guī)則的結(jié)構(gòu),表示成圖就多此一舉了。
我們?cè)賮?lái)看一些例子,這些數(shù)據(jù)的結(jié)構(gòu)更加復(fù)雜,除了圖之外很難用其他方式來(lái)表達(dá)。
分子是構(gòu)成物質(zhì)的基石,我們可以用節(jié)點(diǎn)來(lái)表示它的原子和電子,用邊來(lái)表示共價(jià)鍵,這樣便將一個(gè)分子表示成了一個(gè)圖:
不同的圖可以表示出不同的分子結(jié)構(gòu):
都說(shuō)社會(huì)是一個(gè)大熔爐,身處其中的人和事物之間會(huì)發(fā)生極其復(fù)雜的關(guān)系。這種關(guān)系的表示用普通的表格數(shù)據(jù)是很難表示的,而圖卻能很好的展現(xiàn)。
下圖是將莎士比亞歌劇《奧賽羅》中的任務(wù)關(guān)系表示成圖:
怎么樣,如果沒(méi)看過(guò)歌劇能推測(cè)出那些是主角嗎?
下面是將一個(gè)空手道競(jìng)標(biāo)賽的對(duì)戰(zhàn)關(guān)系構(gòu)建為圖:
類似的可以表示為圖的數(shù)據(jù)還有很多很多,比如論文的引用之類統(tǒng)統(tǒng)都可以表示為圖,下面是現(xiàn)實(shí)世界中不同規(guī)模的數(shù)據(jù)圖表示的統(tǒng)計(jì)數(shù)據(jù):
可見(jiàn),各種各樣規(guī)模的數(shù)據(jù)都可以輕松的用圖來(lái)表示。
在上面我們列舉了這么多的圖,那么我們?cè)搶?duì)這些圖數(shù)據(jù)執(zhí)行什么任務(wù)呢?
圖上的預(yù)測(cè)任務(wù)一般分為三類:
下面我們通過(guò)具體的示例來(lái)說(shuō)明GNN怎么來(lái)解決上述的三個(gè)級(jí)別的預(yù)測(cè)問(wèn)題。
在圖級(jí)別的任務(wù)中,我們的目標(biāo)是預(yù)測(cè)整個(gè)圖的屬性。例如我們通過(guò)分子圖,來(lái)預(yù)測(cè)該分子的氣味或是者它是否是與某些疾病有關(guān)的受體。
它的輸入是完整的圖:
輸出是圖的分類:
節(jié)點(diǎn)級(jí)任務(wù)一般就是預(yù)測(cè)每個(gè)節(jié)點(diǎn)的類型。
一個(gè)經(jīng)典的例子就是Zach的空手道俱樂(lè)部。該數(shù)據(jù)集市一個(gè)單一的社交網(wǎng)絡(luò)圖,猶豫政治分歧,講師Hi先生和管理員John之間不和導(dǎo)致空手道俱樂(lè)部分裂,其中的學(xué)員一部分效忠于Hi先生,一部分效忠于John。每個(gè)節(jié)點(diǎn)代表空手道聯(lián)系著,邊代表空手道之外這些成員的互動(dòng),預(yù)測(cè)問(wèn)題就是判斷這些節(jié)點(diǎn)是效忠于誰(shuí)的。
邊級(jí)任務(wù)其實(shí)就是預(yù)測(cè)每個(gè)邊的屬性.
在目標(biāo)檢測(cè)的語(yǔ)義分割任務(wù)中,我們也許不止要識(shí)別每個(gè)目標(biāo)的類型,還需要預(yù)測(cè)各個(gè)目標(biāo)之間的關(guān)系.我們可以將其描述為邊級(jí)別的分類任務(wù):給定表示圖像中的對(duì)象的節(jié)點(diǎn),我們希望預(yù)測(cè)哪些節(jié)點(diǎn)共享一條邊,或者該邊的值是多少。如果我們希望發(fā)現(xiàn)實(shí)體之間的連接,我們可以考慮圖是完全連通的,并根據(jù)它們的預(yù)測(cè)值修剪邊來(lái)得到一個(gè)稀疏圖。
用圖表示就是這樣的過(guò)程:
那么我們要如何使用神經(jīng)網(wǎng)絡(luò)來(lái)處理上述各種類型的任務(wù)呢?
首先要考慮的是如何將圖結(jié)構(gòu)數(shù)據(jù)適配到神經(jīng)網(wǎng)絡(luò).
回想一下啊,傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)輸入的往往是矩陣形式的數(shù)據(jù),那么要如何把圖作為輸入呢?
圖表示有四種類型的信息:節(jié)點(diǎn)(nodes),邊(edges),全局上下文(global-context),聯(lián)通性(connectivity).對(duì)于前三種信息,有一個(gè)非常簡(jiǎn)單的方案,比如將節(jié)點(diǎn)排序,然后每個(gè)節(jié)點(diǎn)表示為一個(gè)向量,所有節(jié)點(diǎn)就得到了一個(gè)節(jié)點(diǎn)的矩陣,同理,邊和上下文也可以這么搞.
但是要標(biāo)識(shí)連通性就沒(méi)有這么簡(jiǎn)單了,也許你會(huì)想到用臨街矩陣來(lái)表示,但是這樣表示會(huì)有明顯的缺陷,因?yàn)楣?jié)點(diǎn)數(shù)的規(guī)模往往是巨大的,對(duì)于一個(gè)數(shù)百萬(wàn)節(jié)點(diǎn)的圖,那將耗費(fèi)大量的空間,而且得到的矩陣往往也十分的稀疏,可以說(shuō)空間利用率會(huì)很低.
當(dāng)然,你也許會(huì)想,可以用稀疏矩陣來(lái)存儲(chǔ),這樣就只需要存儲(chǔ)連通的情況,空間利用率將大大提升,但是我們還要考慮到一點(diǎn),就是稀疏矩陣的高性能計(jì)算一直是個(gè)艱難的,尤其是在用到GPU的情況.
并且,使用鄰接矩陣還有一個(gè)問(wèn)題就是各種不同的鄰接矩陣可以標(biāo)識(shí)相同的連通性,而這些矩陣并不能保證在神經(jīng)網(wǎng)絡(luò)中取的相同的效果.比如,同樣的連通性,通過(guò)調(diào)換列的順序,就能得到不同的鄰接矩陣:
現(xiàn)在,我們成功的將圖結(jié)構(gòu)成功表示成了置換不變的矩陣格式,終于可以使用圖形神經(jīng)網(wǎng)絡(luò)(GNN)來(lái)做圖形預(yù)測(cè)任務(wù)了。
GNN是對(duì)保持圖對(duì)稱性(置換不變性)的圖的所有屬性(節(jié)點(diǎn)、邊、全局上下文)的可優(yōu)化變換。
我們將使用Gilmer等人提出的“消息傳遞神經(jīng)網(wǎng)絡(luò)”框架構(gòu)建GNN,并使用Battaglia等人介紹的圖網(wǎng)絡(luò)網(wǎng)絡(luò)架構(gòu)示意圖。GNNS采用“圖輸入,圖輸出”架構(gòu),這意味著這些模型類型接受圖作為輸入,其中包含節(jié)點(diǎn),邊和全局上下文的信息,并逐步地轉(zhuǎn)換這些圖嵌入,而不會(huì)更改輸入的連接圖結(jié)構(gòu)。
我們使用最開(kāi)始提到的那個(gè)圖來(lái)構(gòu)建一個(gè)最簡(jiǎn)單的GNN,輸入的圖是相應(yīng)節(jié)點(diǎn),邊,全局信息的向量,我們針對(duì)每個(gè)向量使用一個(gè)MLP層來(lái)作變換,于是得到一個(gè)新的圖.
針對(duì)上述構(gòu)建的最簡(jiǎn)單的GNN,我們?nèi)绾卧谏厦婷枋龅娜魏稳蝿?wù)中進(jìn)行預(yù)測(cè)呢?這里我們僅僅考慮二進(jìn)制分類的情況,但這個(gè)框架可以很容易地?cái)U(kuò)展到多類或回歸的情況。
如果是對(duì)節(jié)點(diǎn)分類,我們只要在最后一層接一個(gè)線性類器就可以了:
但是上面的預(yù)測(cè)過(guò)程有點(diǎn)過(guò)于簡(jiǎn)單了,完全沒(méi)有用到圖的結(jié)構(gòu)信息,我們?cè)诖嘶A(chǔ)上增加一個(gè)pooling操作,以增加它的邊緣信息:
具體操作是把待預(yù)測(cè)節(jié)點(diǎn)的鄰居節(jié)點(diǎn)以及全局的信息進(jìn)行聚合再做預(yù)測(cè),即將這些embedding向量加到一起得到一個(gè)新的向量,再輸入到最后的線性分類器.
同理,如果我們只有節(jié)點(diǎn)相應(yīng)邊的信息的話,也可以用類似的方式pooling,然后得到節(jié)點(diǎn)的向量表示再輸入分類器:
反之,如果我們只有節(jié)點(diǎn)的信息,那么也可以用邊所連接的兩個(gè)節(jié)點(diǎn)來(lái)pooling出邊的向量,然后將器輸入到分類器預(yù)測(cè)邊的類型:
顯然,不管是哪種任務(wù),整個(gè)GNN的推理過(guò)程都是一樣的,可以表示為這樣一個(gè)端到端的過(guò)程:
不過(guò),顯而易見(jiàn)的,這個(gè)簡(jiǎn)單的GNN在分類前只是對(duì)每個(gè)向量進(jìn)行了一個(gè)變換,而沒(méi)有用到圖結(jié)構(gòu)的任何信息,雖然在最后做預(yù)測(cè)的時(shí)候做了一些pooling的聚合,但也始終沒(méi)有用到adjacency的信息,因此這個(gè)GNN的作用相當(dāng)有限,但是它為我們提供了一個(gè)圖結(jié)構(gòu)層變換和堆疊的基本思路.
針對(duì)上面最簡(jiǎn)單GNN的不足,我們可以在其中根據(jù)連通性增加更加復(fù)雜的變換從而引入整個(gè)圖結(jié)構(gòu)的信息,我們將這個(gè)過(guò)程稱之為信息傳遞.
信息傳遞包含三個(gè)步驟:
這個(gè)過(guò)程有點(diǎn)類似于卷積操作,每個(gè)節(jié)點(diǎn)匯聚了其鄰居的節(jié)點(diǎn),經(jīng)過(guò)多個(gè)層的變換,它將涵蓋全圖的信息.
于是我們可以將這個(gè)節(jié)點(diǎn)信息傳遞應(yīng)用到上述的圖變換過(guò)程中:
然后,我們發(fā)現(xiàn)它并沒(méi)用用上邊的信息,于是可以把邊信息也加上,變成這樣:
既然把邊的信息加上了,那怎么可以漏掉全局信息呢,于是完整的信息傳遞就可以表示成這樣:
以上,我們梳理了最簡(jiǎn)單的GNNs是怎么完成的,你應(yīng)該已經(jīng)對(duì)GNN有了一個(gè)基本的了解,就像學(xué)會(huì)了傳統(tǒng)神經(jīng)網(wǎng)絡(luò)中最簡(jiǎn)單的全連接網(wǎng)絡(luò)類似,關(guān)于GNN還有更多不同種類的更復(fù)雜的圖需要取了解和學(xué)習(xí),但你只要掌握了以上的思想,學(xué)習(xí)起來(lái)也是十分容易的.
以上就是關(guān)于神經(jīng)網(wǎng)絡(luò)系統(tǒng)設(shè)計(jì)相關(guān)問(wèn)題的回答。希望能幫到你,如有更多相關(guān)問(wèn)題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會(huì)為您講解更多精彩的知識(shí)和內(nèi)容。
推薦閱讀:
圖神經(jīng)網(wǎng)絡(luò)好發(fā)論文嗎
反向傳播神經(jīng)網(wǎng)絡(luò)模型(反向傳播神經(jīng)網(wǎng)絡(luò)模型有哪些)
全國(guó)神經(jīng)科醫(yī)院排行榜(全國(guó)神經(jīng)科醫(yī)院排行榜最新)