-
當前位置:首頁 > 創(chuàng)意學院 > 技術 > 專題列表 > 正文
1、線性模型
神經(jīng)網(wǎng)絡是線性分類器嗎(神經(jīng)網(wǎng)絡是線性分類器嗎為什么)
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關于神經(jīng)網(wǎng)絡是線性分類器嗎的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。
開始之前先推薦一個非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計劃、工作報告、論文、代碼、作文、做題和對話答疑等等
只需要輸入關鍵詞,就能返回你想要的內(nèi)容,越精準,寫出的就越詳細,有微信小程序端、在線網(wǎng)頁版、PC客戶端
官網(wǎng):https://ai.de1919.com。
創(chuàng)意嶺作為行業(yè)內(nèi)優(yōu)秀的企業(yè),服務客戶遍布全球各地,如需了解SEO相關業(yè)務請撥打電話175-8598-2043,或添加微信:1454722008
本文目錄:
一、線性模型
這一篇的內(nèi)容旨在對之前學習過的四種不同線性分類模型( Logistic 回歸、softmax回歸、感知器和支持向量機 )做一個整理。這些模型的區(qū)別主要在于使用了不同的損失函數(shù)。
線性模型(Linear Model)是機器學習中應用最廣泛的模型,指通過樣本特征的線性組合來進行預測的模型。給定一個 維樣本 ,其線性組合函數(shù)為:
其中 為 維的權重向量, 為偏置。線性回歸就是典型的線性模型,直接用 來預測輸出目標 。
在分類問題中,由于輸出 是一些離散的標簽, 的值域為實數(shù),因此無法直接用 來進行預測,需要引入一個 非線性的決策函數(shù)(Decision Function) 來預測輸出目標:
其中 也稱為 判別函數(shù)(Discriminant Function) 。
也就是說,一個線性分類模型(Linear Classification Model)或線性分類器(Linear Classifier),是由一個(或多個)線性的判別函數(shù) 和非線性的決策函數(shù) 組成。
二分類(Binary Classification)的類標簽 只有兩種取值,通??稍O為 。
在二分類中我們只需要一個線性判別函數(shù) 。所有滿足 的點組成一個分割超平面(Hyperplane),稱為決策邊界(Decision Boundary)或決策平面(Decision Surface)。決策邊界將特征空間一分為二,劃分成兩個區(qū)域,每個區(qū)域對應一個類別。
線性模型試圖學習到參數(shù) ,使得對于每個樣本 盡量滿足:
上面兩個公式也可以合并,即參數(shù) 盡量滿足:
接下來我們會看到,對線性模型來說, 這一表達式是十分重要的。
于是我們可以定義: 對于訓練集 ,若存在權重向量 ,對所有樣本都滿足 ,那么訓練集 是線性可分的 。
接下來我們考慮多分類的情形,假設一個多類分類問題的類別為 ,常用的方式有以下三種:
若存在類別 ,對所有的其他類別 ,都滿足 ,那么 屬于類別 。即:
“一對其余”和“一對一”都存在一個缺陷:特征空間中會存在一些難以確定類別的區(qū)域,而“argmax”方式很好地解決了這個問題 。下圖給出了用這三種方式進行三類分類的示例,其中不同顏色的區(qū)域表示預測的類別,紅色直線表示判別函數(shù) 的直線。在“argmax”方式中,類 和類 的決策邊界實際上由 決定,其法向量為 。
在本節(jié)中我們采用 以符合Logistic 回歸的描述習慣。
為解決連續(xù)線性函數(shù)不適合進行分類的問題,我們引入非線性函數(shù) 來預測類別標簽的后驗概率 :
其中 通常稱為 激活函數(shù)(Activation Function) ,其作用是把線性函數(shù)的值域從實數(shù)區(qū)間“擠壓”到了 之間,可以用來表示概率。
在Logistic回歸中,我們使用Logistic函數(shù)來作為激活函數(shù)。標簽 的后驗概率為:
標簽 的后驗概率為:
進行變換后得到:
其中 為樣本 為正反例后驗概率的比值,稱為 幾率(Odds) ,幾率的對數(shù)稱為對數(shù)幾率。因此,Logistic 回歸也稱為 對數(shù)幾率回歸(Logit Regression) 。
Logistic回歸采用交叉熵作為損失函數(shù),并使用梯度下降法來對參數(shù)進行優(yōu)化。 其風險函數(shù)為:
風險函數(shù) 是關于參數(shù) 的連續(xù)可導的凸函數(shù)。因此Logistic回歸除了梯度下降法之外還可以用高階的優(yōu)化方法,比如牛頓法,來進行優(yōu)化。
Softmax回歸,也稱為多項(multinomial)或多類(multi-class)的Logistic回歸,是 Logistic回歸在多類分類問題上的推廣 。
對于多類問題,類別標簽 可以有 個取值。給定一個樣本x,Softmax回歸預測的屬于類別 的條件概率為:
其中 是第 類的權重向量。
Softmax回歸的決策函數(shù)可以表示為:
給定 個訓練樣本 , Softmax回歸使用交叉熵損失函數(shù)來學習最優(yōu)的參數(shù)矩陣 。
采用交叉熵損失函數(shù),Softmax回歸模型的風險函數(shù)為:
風險函數(shù) 關于 的梯度為:
采用梯度下降法,Softmax回歸的訓練過程為:
感知器可謂是最簡單的人工神經(jīng)網(wǎng)絡,只有一個神經(jīng)元。
感知器是一種簡單的兩類線性分類模型,其分類準則為:
給定N 個樣本的訓練集: ,其中 ,感知器學習算法試圖找到一組參數(shù) ,使得對于每個樣本 有
感知器的學習算法是一種錯誤驅動的在線學習算法,先初始化一個權重向量 (通常是全零向量),然后每次分錯一個樣本 時,即 ,就用這個樣本來更新權重:
根據(jù)感知器的學習策略,可以反推出 感知器的損失函數(shù) 為:
采用隨機梯度下降,其每次更新的梯度為:
感知器收斂性不再證明,參考之前的筆記 https://www.jianshu.com/p/d83aa6c8068f 。
感知器的學習到的權重向量和訓練樣本的順序相關。 在迭代次序上排在后面的錯誤樣本,比前面的錯誤樣本對最終的權重向量影響更大 。比如有1000個訓練樣本,在迭代100個樣本后,感知器已經(jīng)學習到一個很好的權重向量。在接下來的899個樣本上都預測正確,也沒有更新權重向量。但是在最后第1000 個樣本時預測錯誤,并更新了權重。這次更新可能反而使得權重向量變差。
為了改善這種情況,可以使用“參數(shù)平均”的策略來提高感知器的魯棒性,也叫 投票感知器 (投票感知器是一種集成模型)。
投票感知器記錄第 次更新后得到的權重 在之后的訓練過程中正確分類樣本的次數(shù) 。這樣最后的分類器形式為:
投票感知器雖然提高了感知器的泛化能力,但是需要保存 個權重向量。在實際操作中會帶來額外的開銷。因此,人們經(jīng)常會使用一個簡化的版本,也叫做平均感知器:
其中 為平均的權重向量。
給定N 個樣本的訓練集: ,其中 ,如果兩類樣本是線性可分的,即存在一個超平面:
將兩類樣本分開,那么對于每個樣本都有 。
數(shù)據(jù)集 中每個樣本 到分割超平面的距離為:
定義整個數(shù)據(jù)集 中所有樣本到分割超平面的最短距離為間隔(Margin) :
如果間隔 越大,其分割超平面對兩個數(shù)據(jù)集的劃分越穩(wěn)定,不容易受噪聲等因素影響。支持向量機的目標是尋找一個超平面 使得 最大,即:
令 ,則上式等價于:
數(shù)據(jù)集中所有滿足 的點,都稱為 支持向量 。
接下來的推導不詳細敘述了,之前的筆記里已經(jīng)記錄過。
軟間隔的優(yōu)化問題形式如下:
其中 稱為 Hinge損失函數(shù) 。 可以看作是正則化系數(shù)。
其實這一節(jié)才是整理的關鍵,有助于厘清各個分類器之間的聯(lián)系。
二、神經(jīng)網(wǎng)絡:卷積神經(jīng)網(wǎng)絡(CNN)
神經(jīng)網(wǎng)絡 最早是由心理學家和神經(jīng)學家提出的,旨在尋求開發(fā)和測試神經(jīng)的計算模擬。
粗略地說, 神經(jīng)網(wǎng)絡 是一組連接的 輸入/輸出單元 ,其中每個連接都與一個 權 相關聯(lián)。在學習階段,通過調(diào)整權值,使得神經(jīng)網(wǎng)絡的預測準確性逐步提高。由于單元之間的連接,神經(jīng)網(wǎng)絡學習又稱 連接者學習。
神經(jīng)網(wǎng)絡是以模擬人腦神經(jīng)元的數(shù)學模型為基礎而建立的,它由一系列神經(jīng)元組成,單元之間彼此連接。從信息處理角度看,神經(jīng)元可以看作是一個多輸入單輸出的信息處理單元,根據(jù)神經(jīng)元的特性和功能,可以把神經(jīng)元抽象成一個簡單的數(shù)學模型。
神經(jīng)網(wǎng)絡有三個要素: 拓撲結構、連接方式、學習規(guī)則
神經(jīng)網(wǎng)絡的拓撲結構 :神經(jīng)網(wǎng)絡的單元通常按照層次排列,根據(jù)網(wǎng)絡的層次數(shù),可以將神經(jīng)網(wǎng)絡分為單層神經(jīng)網(wǎng)絡、兩層神經(jīng)網(wǎng)絡、三層神經(jīng)網(wǎng)絡等。結構簡單的神經(jīng)網(wǎng)絡,在學習時收斂的速度快,但準確度低。
神經(jīng)網(wǎng)絡的層數(shù)和每層的單元數(shù)由問題的復雜程度而定。問題越復雜,神經(jīng)網(wǎng)絡的層數(shù)就越多。例如,兩層神經(jīng)網(wǎng)絡常用來解決線性問題,而多層網(wǎng)絡就可以解決多元非線性問題
神經(jīng)網(wǎng)絡的連接 :包括層次之間的連接和每一層內(nèi)部的連接,連接的強度用權來表示。
根據(jù)層次之間的連接方式,分為:
1)前饋式網(wǎng)絡:連接是單向的,上層單元的輸出是下層單元的輸入,如反向傳播網(wǎng)絡,Kohonen網(wǎng)絡
2)反饋式網(wǎng)絡:除了單項的連接外,還把最后一層單元的輸出作為第一層單元的輸入,如Hopfield網(wǎng)絡
根據(jù)連接的范圍,分為:
1)全連接神經(jīng)網(wǎng)絡:每個單元和相鄰層上的所有單元相連
2)局部連接網(wǎng)絡:每個單元只和相鄰層上的部分單元相連
神經(jīng)網(wǎng)絡的學習
根據(jù)學習方法分:
感知器:有監(jiān)督的學習方法,訓練樣本的類別是已知的,并在學習的過程中指導模型的訓練
認知器:無監(jiān)督的學習方法,訓練樣本類別未知,各單元通過競爭學習。
根據(jù)學習時間分:
離線網(wǎng)絡:學習過程和使用過程是獨立的
在線網(wǎng)絡:學習過程和使用過程是同時進行的
根據(jù)學習規(guī)則分:
相關學習網(wǎng)絡:根據(jù)連接間的激活水平改變權系數(shù)
糾錯學習網(wǎng)絡:根據(jù)輸出單元的外部反饋改變權系數(shù)
自組織學習網(wǎng)絡:對輸入進行自適應地學習
摘自《數(shù)學之美》對人工神經(jīng)網(wǎng)絡的通俗理解:
神經(jīng)網(wǎng)絡種類很多,常用的有如下四種:
1)Hopfield網(wǎng)絡,典型的反饋網(wǎng)絡,結構單層,有相同的單元組成
2)反向傳播網(wǎng)絡,前饋網(wǎng)絡,結構多層,采用最小均方差的糾錯學習規(guī)則,常用于語言識別和分類等問題
3)Kohonen網(wǎng)絡:典型的自組織網(wǎng)絡,由輸入層和輸出層構成,全連接
4)ART網(wǎng)絡:自組織網(wǎng)絡
深度神經(jīng)網(wǎng)絡:
Convolutional Neural Networks(CNN)卷積神經(jīng)網(wǎng)絡
Recurrent neural Network(RNN)循環(huán)神經(jīng)網(wǎng)絡
Deep Belief Networks(DBN)深度信念網(wǎng)絡
深度學習是指多層神經(jīng)網(wǎng)絡上運用各種機器學習算法解決圖像,文本等各種問題的算法集合。深度學習從大類上可以歸入神經(jīng)網(wǎng)絡,不過在具體實現(xiàn)上有許多變化。
深度學習的核心是特征學習,旨在通過分層網(wǎng)絡獲取分層次的特征信息,從而解決以往需要人工設計特征的重要難題。
Machine Learning vs. Deep Learning
神經(jīng)網(wǎng)絡(主要是感知器)經(jīng)常用于 分類
神經(jīng)網(wǎng)絡的分類知識體現(xiàn)在網(wǎng)絡連接上,被隱式地存儲在連接的權值中。
神經(jīng)網(wǎng)絡的學習就是通過迭代算法,對權值逐步修改的優(yōu)化過程,學習的目標就是通過改變權值使訓練集的樣本都能被正確分類。
神經(jīng)網(wǎng)絡特別適用于下列情況的分類問題:
1) 數(shù)據(jù)量比較小,缺少足夠的樣本建立模型
2) 數(shù)據(jù)的結構難以用傳統(tǒng)的統(tǒng)計方法來描述
3) 分類模型難以表示為傳統(tǒng)的統(tǒng)計模型
缺點:
1) 需要很長的訓練時間,因而對于有足夠長訓練時間的應用更合適。
2) 需要大量的參數(shù),這些通常主要靠經(jīng)驗確定,如網(wǎng)絡拓撲或“結構”。
3) 可解釋性差 。該特點使得神經(jīng)網(wǎng)絡在數(shù)據(jù)挖掘的初期并不看好。
優(yōu)點:
1) 分類的準確度高
2)并行分布處理能力強
3)分布存儲及學習能力高
4)對噪音數(shù)據(jù)有很強的魯棒性和容錯能力
最流行的基于神經(jīng)網(wǎng)絡的分類算法是80年代提出的 后向傳播算法 。后向傳播算法在多路前饋神經(jīng)網(wǎng)絡上學習。
定義網(wǎng)絡拓撲
在開始訓練之前,用戶必須說明輸入層的單元數(shù)、隱藏層數(shù)(如果多于一層)、每一隱藏層的單元數(shù)和輸出層的單元數(shù),以確定網(wǎng)絡拓撲。
對訓練樣本中每個屬性的值進行規(guī)格化將有助于加快學習過程。通常,對輸入值規(guī)格化,使得它們落入0.0和1.0之間。
離散值屬性可以重新編碼,使得每個域值一個輸入單元。例如,如果屬性A的定義域為(a0,a1,a2),則可以分配三個輸入單元表示A。即,我們可以用I0 ,I1 ,I2作為輸入單元。每個單元初始化為0。如果A = a0,則I0置為1;如果A = a1,I1置1;如此下去。
一個輸出單元可以用來表示兩個類(值1代表一個類,而值0代表另一個)。如果多于兩個類,則每個類使用一個輸出單元。
隱藏層單元數(shù)設多少個“最好” ,沒有明確的規(guī)則。
網(wǎng)絡設計是一個實驗過程,并可能影響準確性。權的初值也可能影響準確性。如果某個經(jīng)過訓練的網(wǎng)絡的準確率太低,則通常需要采用不同的網(wǎng)絡拓撲或使用不同的初始權值,重復進行訓練。
后向傳播算法學習過程:
迭代地處理一組訓練樣本,將每個樣本的網(wǎng)絡預測與實際的類標號比較。
每次迭代后,修改權值,使得網(wǎng)絡預測和實際類之間的均方差最小。
這種修改“后向”進行。即,由輸出層,經(jīng)由每個隱藏層,到第一個隱藏層(因此稱作后向傳播)。盡管不能保證,一般地,權將最終收斂,學習過程停止。
算法終止條件:訓練集中被正確分類的樣本達到一定的比例,或者權系數(shù)趨近穩(wěn)定。
后向傳播算法分為如下幾步:
1) 初始化權
網(wǎng)絡的權通常被初始化為很小的隨機數(shù)(例如,范圍從-1.0到1.0,或從-0.5到0.5)。
每個單元都設有一個偏置(bias),偏置也被初始化為小隨機數(shù)。
2) 向前傳播輸入
對于每一個樣本X,重復下面兩步:
向前傳播輸入,向后傳播誤差
計算各層每個單元的輸入和輸出。輸入層:輸出=輸入=樣本X的屬性;即,對于單元j,Oj = Ij = Xj。隱藏層和輸出層:輸入=前一層的輸出的線性組合,即,對于單元j, Ij =wij Oi + θj,輸出=
3) 向后傳播誤差
計算各層每個單元的誤差。
輸出層單元j,誤差:
Oj是單元j的實際輸出,而Tj是j的真正輸出。
隱藏層單元j,誤差:
wjk是由j到下一層中單元k的連接的權,Errk是單元k的誤差
更新 權 和 偏差 ,以反映傳播的誤差。
權由下式更新:
其中,△wij是權wij的改變。l是學習率,通常取0和1之間的值。
偏置由下式更新:
其中,△θj是偏置θj的改變。
Example
人類視覺原理:
深度學習的許多研究成果,離不開對大腦認知原理的研究,尤其是視覺原理的研究。1981 年的諾貝爾醫(yī)學獎,頒發(fā)給了 David Hubel(出生于加拿大的美國神經(jīng)生物學家) 和Torsten Wiesel,以及Roger Sperry。前兩位的主要貢獻,是“發(fā)現(xiàn)了視覺系統(tǒng)的信息處理”, 可視皮層是分級的 。
人類的視覺原理如下:從原始信號攝入開始(瞳孔攝入像素Pixels),接著做初步處理(大腦皮層某些細胞發(fā)現(xiàn)邊緣和方向),然后抽象(大腦判定,眼前的物體的形狀,是圓形的),然后進一步抽象(大腦進一步判定該物體是只氣球)。
對于不同的物體,人類視覺也是通過這樣逐層分級,來進行認知的:
在最底層特征基本上是類似的,就是各種邊緣,越往上,越能提取出此類物體的一些特征(輪子、眼睛、軀干等),到最上層,不同的高級特征最終組合成相應的圖像,從而能夠讓人類準確的區(qū)分不同的物體。
可以很自然的想到:可以不可以模仿人類大腦的這個特點,構造多層的神經(jīng)網(wǎng)絡,較低層的識別初級的圖像特征,若干底層特征組成更上一層特征,最終通過多個層級的組合,最終在頂層做出分類呢?答案是肯定的,這也是許多深度學習算法(包括CNN)的靈感來源。
卷積神經(jīng)網(wǎng)絡是一種多層神經(jīng)網(wǎng)絡,擅長處理圖像特別是大圖像的相關機器學習問題。卷積網(wǎng)絡通過一系列方法,成功將數(shù)據(jù)量龐大的圖像識別問題不斷降維,最終使其能夠被訓練。
CNN最早由Yann LeCun提出并應用在手寫字體識別上。LeCun提出的網(wǎng)絡稱為LeNet,其網(wǎng)絡結構如下:
這是一個最典型的卷積網(wǎng)絡,由 卷積層、池化層、全連接層 組成。其中卷積層與池化層配合,組成多個卷積組,逐層提取特征,最終通過若干個全連接層完成分類。
CNN通過卷積來模擬特征區(qū)分,并且通過卷積的權值共享及池化,來降低網(wǎng)絡參數(shù)的數(shù)量級,最后通過傳統(tǒng)神經(jīng)網(wǎng)絡完成分類等任務。
降低參數(shù)量級:如果使用傳統(tǒng)神經(jīng)網(wǎng)絡方式,對一張圖片進行分類,那么,把圖片的每個像素都連接到隱藏層節(jié)點上,對于一張1000x1000像素的圖片,如果有1M隱藏層單元,一共有10^12個參數(shù),這顯然是不能接受的。
但是在CNN里,可以大大減少參數(shù)個數(shù),基于以下兩個假設:
1)最底層特征都是局部性的,也就是說,用10x10這樣大小的過濾器就能表示邊緣等底層特征
2)圖像上不同小片段,以及不同圖像上的小片段的特征是類似的,也就是說,能用同樣的一組分類器來描述各種各樣不同的圖像
基于以上兩個假設,就能把第一層網(wǎng)絡結構簡化
用100個10x10的小過濾器,就能夠描述整幅圖片上的底層特征。
卷積運算的定義如下圖所示:
如上圖所示,一個5x5的圖像,用一個3x3的 卷積核 :
101
010
101
來對圖像進行卷積操作(可以理解為有一個滑動窗口,把卷積核與對應的圖像像素做乘積然后求和),得到了3x3的卷積結果。
這個過程可以理解為使用一個過濾器(卷積核)來過濾圖像的各個小區(qū)域,從而得到這些小區(qū)域的特征值。在實際訓練過程中, 卷積核的值是在學習過程中學到的。
在具體應用中,往往有多個卷積核,可以認為, 每個卷積核代表了一種圖像模式 ,如果某個圖像塊與此卷積核卷積出的值大,則認為此圖像塊十分接近于此卷積核。如果設計了6個卷積核,可以理解為這個圖像上有6種底層紋理模式,也就是用6種基礎模式就能描繪出一副圖像。以下就是24種不同的卷積核的示例:
池化 的過程如下圖所示:
可以看到,原始圖片是20x20的,對其進行采樣,采樣窗口為10x10,最終將其采樣成為一個2x2大小的特征圖。
之所以這么做,是因為即使做完了卷積,圖像仍然很大(因為卷積核比較?。?,所以為了降低數(shù)據(jù)維度,就進行采樣。
即使減少了許多數(shù)據(jù),特征的統(tǒng)計屬性仍能夠描述圖像,而且由于降低了數(shù)據(jù)維度,有效地避免了過擬合。
在實際應用中,分為最大值采樣(Max-Pooling)與平均值采樣(Mean-Pooling)。
LeNet網(wǎng)絡結構:
注意,上圖中S2與C3的連接方式并不是全連接,而是部分連接。最后,通過全連接層C5、F6得到10個輸出,對應10個數(shù)字的概率。
卷積神經(jīng)網(wǎng)絡的訓練過程與傳統(tǒng)神經(jīng)網(wǎng)絡類似,也是參照了反向傳播算法
第一階段,向前傳播階段:
a)從樣本集中取一個樣本(X,Yp),將X輸入網(wǎng)絡;
b)計算相應的實際輸出Op
第二階段,向后傳播階段
a)計算實際輸出Op與相應的理想輸出Yp的差;
b)按極小化誤差的方法反向傳播調(diào)整權矩陣。
三、圖神經(jīng)網(wǎng)絡是怎么煉成的:GNN基本原理簡介
此文算是對Google Research這篇 A Gentle Introduction to Graph Neural Networks 神作的閱讀筆記.
十多年來,研究人員開發(fā)了一種稱之為圖神經(jīng)網(wǎng)絡(Graph Neural Networks,GNNs)的技術,旨在將如今在深度學習的諸多任務中摧枯拉朽的神經(jīng)網(wǎng)絡,應用到圖結構之上,從而讓神經(jīng)網(wǎng)絡捕捉到更錯綜復雜的交叉特征,以期待在一些任務上取得更佳的效果。鑒于操作圖數(shù)據(jù)結構的復雜性,盡管已經(jīng)發(fā)展了十幾年,它在實際應用中卻剛剛起步,即時是google也才開始研究將其被應用到藥品研發(fā)、物理模擬、假新聞檢測、交通預測和推薦系統(tǒng)等領域。
盡管GNN是一個新興的研究領域,但圖結構的數(shù)據(jù)其實在我們身邊無處不在。那么什么是圖呢?
這個理科生應該都清楚,圖有點(Vertex)和邊(Edge)兩部分組成,一個圖就代表了各個實體節(jié)點(node)之間的關系(edge):
每個節(jié)點或者邊都可以包含它的一些屬性信息,比如如果一個節(jié)點表示一個人,那么就可以包含這個人的姓名、性別、身高、體重之類的..我們研究需要的信息。
而這些信息,都可以用通用的向量的形式存入其中:
還有別忘了一點,邊是可以有方向的,按此我們還能分為有向圖或是無向圖。邊的方向代表了信息的傳遞方向,例如a是b的微信好友,那b也是a的微信好友,好友關系自然是沒方向的,而比如a是b的爹,那顯然b就不是a的爹,此時叫爹的關系就是有有方向的。
圖結構的構建是非常靈活的,可以根據(jù)個人的設計構建出各種不一樣的圖。而作為開發(fā)者顯然要結合實際解決的問題來構建合適的圖。
正如前面所提到的,圖無處不在。你可能已經(jīng)熟悉例如知識圖譜、社交網(wǎng)絡之類的圖數(shù)據(jù)。當時顯然,圖是一種極其強大的通用數(shù)據(jù)表示,傳統(tǒng)神經(jīng)網(wǎng)絡中用到的歐式空間的數(shù)據(jù),同樣可以用圖來表示,例如可以將圖像和文本建模為圖結構數(shù)據(jù)。
比如,我們可以將一張圖片的每個像素作為圖的節(jié)點,再將相鄰的像素用邊連接起來,就構造了一個該圖像的圖。
如上圖展示了一個5*5的圖片的鄰接矩陣表示和圖表示。
我們將每個單詞作為節(jié)點,并將每個節(jié)點連接到下一個節(jié)點,就得到了一個文本的圖:
當然,在實踐中我們并不會這樣來編碼文本和圖像,因為所有的圖和文本都是非常規(guī)則的結構,表示成圖就多此一舉了。
我們再來看一些例子,這些數(shù)據(jù)的結構更加復雜,除了圖之外很難用其他方式來表達。
分子是構成物質(zhì)的基石,我們可以用節(jié)點來表示它的原子和電子,用邊來表示共價鍵,這樣便將一個分子表示成了一個圖:
不同的圖可以表示出不同的分子結構:
都說社會是一個大熔爐,身處其中的人和事物之間會發(fā)生極其復雜的關系。這種關系的表示用普通的表格數(shù)據(jù)是很難表示的,而圖卻能很好的展現(xiàn)。
下圖是將莎士比亞歌劇《奧賽羅》中的任務關系表示成圖:
怎么樣,如果沒看過歌劇能推測出那些是主角嗎?
下面是將一個空手道競標賽的對戰(zhàn)關系構建為圖:
類似的可以表示為圖的數(shù)據(jù)還有很多很多,比如論文的引用之類統(tǒng)統(tǒng)都可以表示為圖,下面是現(xiàn)實世界中不同規(guī)模的數(shù)據(jù)圖表示的統(tǒng)計數(shù)據(jù):
可見,各種各樣規(guī)模的數(shù)據(jù)都可以輕松的用圖來表示。
在上面我們列舉了這么多的圖,那么我們該對這些圖數(shù)據(jù)執(zhí)行什么任務呢?
圖上的預測任務一般分為三類:
下面我們通過具體的示例來說明GNN怎么來解決上述的三個級別的預測問題。
在圖級別的任務中,我們的目標是預測整個圖的屬性。例如我們通過分子圖,來預測該分子的氣味或是者它是否是與某些疾病有關的受體。
它的輸入是完整的圖:
輸出是圖的分類:
節(jié)點級任務一般就是預測每個節(jié)點的類型。
一個經(jīng)典的例子就是Zach的空手道俱樂部。該數(shù)據(jù)集市一個單一的社交網(wǎng)絡圖,猶豫政治分歧,講師Hi先生和管理員John之間不和導致空手道俱樂部分裂,其中的學員一部分效忠于Hi先生,一部分效忠于John。每個節(jié)點代表空手道聯(lián)系著,邊代表空手道之外這些成員的互動,預測問題就是判斷這些節(jié)點是效忠于誰的。
邊級任務其實就是預測每個邊的屬性.
在目標檢測的語義分割任務中,我們也許不止要識別每個目標的類型,還需要預測各個目標之間的關系.我們可以將其描述為邊級別的分類任務:給定表示圖像中的對象的節(jié)點,我們希望預測哪些節(jié)點共享一條邊,或者該邊的值是多少。如果我們希望發(fā)現(xiàn)實體之間的連接,我們可以考慮圖是完全連通的,并根據(jù)它們的預測值修剪邊來得到一個稀疏圖。
用圖表示就是這樣的過程:
那么我們要如何使用神經(jīng)網(wǎng)絡來處理上述各種類型的任務呢?
首先要考慮的是如何將圖結構數(shù)據(jù)適配到神經(jīng)網(wǎng)絡.
回想一下啊,傳統(tǒng)的神經(jīng)網(wǎng)絡輸入的往往是矩陣形式的數(shù)據(jù),那么要如何把圖作為輸入呢?
圖表示有四種類型的信息:節(jié)點(nodes),邊(edges),全局上下文(global-context),聯(lián)通性(connectivity).對于前三種信息,有一個非常簡單的方案,比如將節(jié)點排序,然后每個節(jié)點表示為一個向量,所有節(jié)點就得到了一個節(jié)點的矩陣,同理,邊和上下文也可以這么搞.
但是要標識連通性就沒有這么簡單了,也許你會想到用臨街矩陣來表示,但是這樣表示會有明顯的缺陷,因為節(jié)點數(shù)的規(guī)模往往是巨大的,對于一個數(shù)百萬節(jié)點的圖,那將耗費大量的空間,而且得到的矩陣往往也十分的稀疏,可以說空間利用率會很低.
當然,你也許會想,可以用稀疏矩陣來存儲,這樣就只需要存儲連通的情況,空間利用率將大大提升,但是我們還要考慮到一點,就是稀疏矩陣的高性能計算一直是個艱難的,尤其是在用到GPU的情況.
并且,使用鄰接矩陣還有一個問題就是各種不同的鄰接矩陣可以標識相同的連通性,而這些矩陣并不能保證在神經(jīng)網(wǎng)絡中取的相同的效果.比如,同樣的連通性,通過調(diào)換列的順序,就能得到不同的鄰接矩陣:
現(xiàn)在,我們成功的將圖結構成功表示成了置換不變的矩陣格式,終于可以使用圖形神經(jīng)網(wǎng)絡(GNN)來做圖形預測任務了。
GNN是對保持圖對稱性(置換不變性)的圖的所有屬性(節(jié)點、邊、全局上下文)的可優(yōu)化變換。
我們將使用Gilmer等人提出的“消息傳遞神經(jīng)網(wǎng)絡”框架構建GNN,并使用Battaglia等人介紹的圖網(wǎng)絡網(wǎng)絡架構示意圖。GNNS采用“圖輸入,圖輸出”架構,這意味著這些模型類型接受圖作為輸入,其中包含節(jié)點,邊和全局上下文的信息,并逐步地轉換這些圖嵌入,而不會更改輸入的連接圖結構。
我們使用最開始提到的那個圖來構建一個最簡單的GNN,輸入的圖是相應節(jié)點,邊,全局信息的向量,我們針對每個向量使用一個MLP層來作變換,于是得到一個新的圖.
針對上述構建的最簡單的GNN,我們?nèi)绾卧谏厦婷枋龅娜魏稳蝿罩羞M行預測呢?這里我們僅僅考慮二進制分類的情況,但這個框架可以很容易地擴展到多類或回歸的情況。
如果是對節(jié)點分類,我們只要在最后一層接一個線性類器就可以了:
但是上面的預測過程有點過于簡單了,完全沒有用到圖的結構信息,我們在此基礎上增加一個pooling操作,以增加它的邊緣信息:
具體操作是把待預測節(jié)點的鄰居節(jié)點以及全局的信息進行聚合再做預測,即將這些embedding向量加到一起得到一個新的向量,再輸入到最后的線性分類器.
同理,如果我們只有節(jié)點相應邊的信息的話,也可以用類似的方式pooling,然后得到節(jié)點的向量表示再輸入分類器:
反之,如果我們只有節(jié)點的信息,那么也可以用邊所連接的兩個節(jié)點來pooling出邊的向量,然后將器輸入到分類器預測邊的類型:
顯然,不管是哪種任務,整個GNN的推理過程都是一樣的,可以表示為這樣一個端到端的過程:
不過,顯而易見的,這個簡單的GNN在分類前只是對每個向量進行了一個變換,而沒有用到圖結構的任何信息,雖然在最后做預測的時候做了一些pooling的聚合,但也始終沒有用到adjacency的信息,因此這個GNN的作用相當有限,但是它為我們提供了一個圖結構層變換和堆疊的基本思路.
針對上面最簡單GNN的不足,我們可以在其中根據(jù)連通性增加更加復雜的變換從而引入整個圖結構的信息,我們將這個過程稱之為信息傳遞.
信息傳遞包含三個步驟:
這個過程有點類似于卷積操作,每個節(jié)點匯聚了其鄰居的節(jié)點,經(jīng)過多個層的變換,它將涵蓋全圖的信息.
于是我們可以將這個節(jié)點信息傳遞應用到上述的圖變換過程中:
然后,我們發(fā)現(xiàn)它并沒用用上邊的信息,于是可以把邊信息也加上,變成這樣:
既然把邊的信息加上了,那怎么可以漏掉全局信息呢,于是完整的信息傳遞就可以表示成這樣:
以上,我們梳理了最簡單的GNNs是怎么完成的,你應該已經(jīng)對GNN有了一個基本的了解,就像學會了傳統(tǒng)神經(jīng)網(wǎng)絡中最簡單的全連接網(wǎng)絡類似,關于GNN還有更多不同種類的更復雜的圖需要取了解和學習,但你只要掌握了以上的思想,學習起來也是十分容易的.
四、如何訓練神經(jīng)網(wǎng)絡
1、先別著急寫代碼
訓練神經(jīng)網(wǎng)絡前,別管代碼,先從預處理數(shù)據(jù)集開始。我們先花幾個小時的時間,了解數(shù)據(jù)的分布并找出其中的規(guī)律。
Andrej有一次在整理數(shù)據(jù)時發(fā)現(xiàn)了重復的樣本,還有一次發(fā)現(xiàn)了圖像和標簽中的錯誤。所以先看一眼數(shù)據(jù)能避免我們走很多彎路。
由于神經(jīng)網(wǎng)絡實際上是數(shù)據(jù)集的壓縮版本,因此您將能夠查看網(wǎng)絡(錯誤)預測并了解它們的來源。如果你的網(wǎng)絡給你的預測看起來與你在數(shù)據(jù)中看到的內(nèi)容不一致,那么就會有所收獲。
一旦從數(shù)據(jù)中發(fā)現(xiàn)規(guī)律,可以編寫一些代碼對他們進行搜索、過濾、排序。把數(shù)據(jù)可視化能幫助我們發(fā)現(xiàn)異常值,而異常值總能揭示數(shù)據(jù)的質(zhì)量或預處理中的一些錯誤。
2、設置端到端的訓練評估框架
處理完數(shù)據(jù)集,接下來就能開始訓練模型了嗎?并不能!下一步是建立一個完整的訓練+評估框架。
在這個階段,我們選擇一個簡單又不至于搞砸的模型,比如線性分類器、CNN,可視化損失。獲得準確度等衡量模型的標準,用模型進行預測。
這個階段的技巧有:
· 固定隨機種子
使用固定的隨機種子,來保證運行代碼兩次都獲得相同的結果,消除差異因素。
· 簡單化
在此階段不要有任何幻想,不要擴增數(shù)據(jù)。擴增數(shù)據(jù)后面會用到,但是在這里不要使用,現(xiàn)在引入只會導致錯誤。
· 在評估中添加有效數(shù)字
在繪制測試集損失時,對整個測試集進行評估,不要只繪制批次測試損失圖像,然后用Tensorboard對它們進行平滑處理。
· 在初始階段驗證損失函數(shù)
驗證函數(shù)是否從正確的損失值開始。例如,如果正確初始化最后一層,則應在softmax初始化時測量-log(1/n_classes)。
· 初始化
正確初始化最后一層的權重。如果回歸一些平均值為50的值,則將最終偏差初始化為50。如果有一個比例為1:10的不平衡數(shù)據(jù)集,請設置對數(shù)的偏差,使網(wǎng)絡預測概率在初始化時為0.1。正確設置這些可以加速模型的收斂。
· 人類基線
監(jiān)控除人為可解釋和可檢查的損失之外的指標。盡可能評估人的準確性并與之進行比較?;蛘邔y試數(shù)據(jù)進行兩次注釋,并且對于每個示例,將一個注釋視為預測,將第二個注釋視為事實。
· 設置一個獨立于輸入的基線
最簡單的方法是將所有輸入設置為零,看看模型是否學會從輸入中提取任何信息。
· 過擬合一個batch
增加了模型的容量并驗證我們可以達到的最低損失。
· 驗證減少訓練損失
嘗試稍微增加數(shù)據(jù)容量。
以上就是關于神經(jīng)網(wǎng)絡是線性分類器嗎相關問題的回答。希望能幫到你,如有更多相關問題,您也可以聯(lián)系我們的客服進行咨詢,客服也會為您講解更多精彩的知識和內(nèi)容。
推薦閱讀:
高燒42度一天人死了(高燒后神經(jīng)受損的表現(xiàn))
杭州城市監(jiān)理建設有限公司(杭州城市監(jiān)理建設有限公司是國企嗎)