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