-
當前位置:首頁 > 創(chuàng)意學院 > 技術(shù) > 專題列表 > 正文
它的輸入范圍是 ,而之于剛好為(0,1),正好滿足概率分布為(0,1)的要求。我們用概率去描述分類器,自然比單純的某個閾值要方便很多;
它是一個單調(diào)上升的函數(shù),具有良好的連續(xù)性,不存在不連續(xù)點。
向量中的每個元素的大小都在[0,1]
向量所有元素的和為 1
神經(jīng)網(wǎng)絡多分類(神經(jīng)網(wǎng)絡多分類問題)
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于神經(jīng)網(wǎng)絡多分類的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。
開始之前先推薦一個非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計劃、工作報告、論文、代碼、作文、做題和對話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準,寫出的就越詳細,有微信小程序端、在線網(wǎng)頁版、PC客戶端
官網(wǎng):https://ai.de1919.com。
創(chuàng)意嶺作為行業(yè)內(nèi)優(yōu)秀的企業(yè),服務客戶遍布全球各地,如需了解SEO相關(guān)業(yè)務請撥打電話175-8598-2043,或添加微信:1454722008
本文目錄:
一、圖神經(jīng)網(wǎng)絡和超圖神經(jīng)網(wǎng)絡在多標簽分類中的優(yōu)勢對比
在目前的基于圖結(jié)構(gòu)的多標簽圖像分類方法中,圖神經(jīng)網(wǎng)絡和超圖神經(jīng)網(wǎng)絡都是用于學習多標簽之間的標簽依賴關(guān)系的方法。那么這兩種方法在學習標簽之間的依賴關(guān)系上有什么對比優(yōu)勢?本文嘗試簡要分析。
首先需要簡單介紹圖神經(jīng)網(wǎng)絡和超圖神經(jīng)網(wǎng)絡的網(wǎng)絡結(jié)構(gòu):
1.圖神經(jīng)網(wǎng)絡
對于每個標簽類別,首先通過外部知識(通常是通過詞向量模型)獲取初始的詞向量,每個標簽類別作為圖中的一個結(jié)點,結(jié)點的初始表示就是對應的標簽的詞向量。然后,通過公式:
超圖神經(jīng)網(wǎng)絡與圖神經(jīng)網(wǎng)絡很不同的一點是他的結(jié)構(gòu)表示。超圖的矩陣表示和圖不一樣,不再是結(jié)點和結(jié)點的關(guān)系,而是邊和結(jié)點的關(guān)系。即每條邊有幾個結(jié)點,或者說當前結(jié)點屬于哪幾條邊。而且,超圖神經(jīng)網(wǎng)絡的卷積過程相比圖神經(jīng)網(wǎng)絡的復雜:
二、神經(jīng)網(wǎng)絡:卷積神經(jīng)網(wǎng)絡(CNN)
神經(jīng)網(wǎng)絡 最早是由心理學家和神經(jīng)學家提出的,旨在尋求開發(fā)和測試神經(jīng)的計算模擬。
粗略地說, 神經(jīng)網(wǎng)絡 是一組連接的 輸入/輸出單元 ,其中每個連接都與一個 權(quán) 相關(guān)聯(lián)。在學習階段,通過調(diào)整權(quán)值,使得神經(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)絡有三個要素: 拓撲結(jié)構(gòu)、連接方式、學習規(guī)則
神經(jīng)網(wǎng)絡的拓撲結(jié)構(gòu) :神經(jīng)網(wǎng)絡的單元通常按照層次排列,根據(jù)網(wǎng)絡的層次數(shù),可以將神經(jīng)網(wǎng)絡分為單層神經(jīng)網(wǎng)絡、兩層神經(jīng)網(wǎng)絡、三層神經(jīng)網(wǎng)絡等。結(jié)構(gòu)簡單的神經(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)部的連接,連接的強度用權(quán)來表示。
根據(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ī)則分:
相關(guān)學習網(wǎng)絡:根據(jù)連接間的激活水平改變權(quán)系數(shù)
糾錯學習網(wǎng)絡:根據(jù)輸出單元的外部反饋改變權(quán)系數(shù)
自組織學習網(wǎng)絡:對輸入進行自適應地學習
摘自《數(shù)學之美》對人工神經(jīng)網(wǎng)絡的通俗理解:
神經(jīng)網(wǎng)絡種類很多,常用的有如下四種:
1)Hopfield網(wǎng)絡,典型的反饋網(wǎng)絡,結(jié)構(gòu)單層,有相同的單元組成
2)反向傳播網(wǎng)絡,前饋網(wǎng)絡,結(jié)構(gòu)多層,采用最小均方差的糾錯學習規(guī)則,常用于語言識別和分類等問題
3)Kohonen網(wǎng)絡:典型的自組織網(wǎng)絡,由輸入層和輸出層構(gòu)成,全連接
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)絡連接上,被隱式地存儲在連接的權(quán)值中。
神經(jīng)網(wǎng)絡的學習就是通過迭代算法,對權(quán)值逐步修改的優(yōu)化過程,學習的目標就是通過改變權(quán)值使訓練集的樣本都能被正確分類。
神經(jīng)網(wǎng)絡特別適用于下列情況的分類問題:
1) 數(shù)據(jù)量比較小,缺少足夠的樣本建立模型
2) 數(shù)據(jù)的結(jié)構(gòu)難以用傳統(tǒng)的統(tǒng)計方法來描述
3) 分類模型難以表示為傳統(tǒng)的統(tǒng)計模型
缺點:
1) 需要很長的訓練時間,因而對于有足夠長訓練時間的應用更合適。
2) 需要大量的參數(shù),這些通常主要靠經(jīng)驗確定,如網(wǎng)絡拓撲或“結(jié)構(gòu)”。
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)絡設計是一個實驗過程,并可能影響準確性。權(quán)的初值也可能影響準確性。如果某個經(jīng)過訓練的網(wǎng)絡的準確率太低,則通常需要采用不同的網(wǎng)絡拓撲或使用不同的初始權(quán)值,重復進行訓練。
后向傳播算法學習過程:
迭代地處理一組訓練樣本,將每個樣本的網(wǎng)絡預測與實際的類標號比較。
每次迭代后,修改權(quán)值,使得網(wǎng)絡預測和實際類之間的均方差最小。
這種修改“后向”進行。即,由輸出層,經(jīng)由每個隱藏層,到第一個隱藏層(因此稱作后向傳播)。盡管不能保證,一般地,權(quán)將最終收斂,學習過程停止。
算法終止條件:訓練集中被正確分類的樣本達到一定的比例,或者權(quán)系數(shù)趨近穩(wěn)定。
后向傳播算法分為如下幾步:
1) 初始化權(quán)
網(wǎng)絡的權(quán)通常被初始化為很小的隨機數(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的連接的權(quán),Errk是單元k的誤差
更新 權(quán) 和 偏差 ,以反映傳播的誤差。
權(quán)由下式更新:
其中,△wij是權(quán)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ū)分不同的物體。
可以很自然的想到:可以不可以模仿人類大腦的這個特點,構(gòu)造多層的神經(jīng)網(wǎng)絡,較低層的識別初級的圖像特征,若干底層特征組成更上一層特征,最終通過多個層級的組合,最終在頂層做出分類呢?答案是肯定的,這也是許多深度學習算法(包括CNN)的靈感來源。
卷積神經(jīng)網(wǎng)絡是一種多層神經(jīng)網(wǎng)絡,擅長處理圖像特別是大圖像的相關(guān)機器學習問題。卷積網(wǎng)絡通過一系列方法,成功將數(shù)據(jù)量龐大的圖像識別問題不斷降維,最終使其能夠被訓練。
CNN最早由Yann LeCun提出并應用在手寫字體識別上。LeCun提出的網(wǎng)絡稱為LeNet,其網(wǎng)絡結(jié)構(gòu)如下:
這是一個最典型的卷積網(wǎng)絡,由 卷積層、池化層、全連接層 組成。其中卷積層與池化層配合,組成多個卷積組,逐層提取特征,最終通過若干個全連接層完成分類。
CNN通過卷積來模擬特征區(qū)分,并且通過卷積的權(quán)值共享及池化,來降低網(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)絡結(jié)構(gòu)簡化
用100個10x10的小過濾器,就能夠描述整幅圖片上的底層特征。
卷積運算的定義如下圖所示:
如上圖所示,一個5x5的圖像,用一個3x3的 卷積核 :
101
010
101
來對圖像進行卷積操作(可以理解為有一個滑動窗口,把卷積核與對應的圖像像素做乘積然后求和),得到了3x3的卷積結(jié)果。
這個過程可以理解為使用一個過濾器(卷積核)來過濾圖像的各個小區(qū)域,從而得到這些小區(qū)域的特征值。在實際訓練過程中, 卷積核的值是在學習過程中學到的。
在具體應用中,往往有多個卷積核,可以認為, 每個卷積核代表了一種圖像模式 ,如果某個圖像塊與此卷積核卷積出的值大,則認為此圖像塊十分接近于此卷積核。如果設計了6個卷積核,可以理解為這個圖像上有6種底層紋理模式,也就是用6種基礎模式就能描繪出一副圖像。以下就是24種不同的卷積核的示例:
池化 的過程如下圖所示:
可以看到,原始圖片是20x20的,對其進行采樣,采樣窗口為10x10,最終將其采樣成為一個2x2大小的特征圖。
之所以這么做,是因為即使做完了卷積,圖像仍然很大(因為卷積核比較小),所以為了降低數(shù)據(jù)維度,就進行采樣。
即使減少了許多數(shù)據(jù),特征的統(tǒng)計屬性仍能夠描述圖像,而且由于降低了數(shù)據(jù)維度,有效地避免了過擬合。
在實際應用中,分為最大值采樣(Max-Pooling)與平均值采樣(Mean-Pooling)。
LeNet網(wǎng)絡結(jié)構(gòu):
注意,上圖中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)整權(quán)矩陣。
三、幾種常見的循環(huán)神經(jīng)網(wǎng)絡結(jié)構(gòu)RNN、LSTM、GRU
傳統(tǒng)文本處理任務的方法中一般將TF-IDF向量作為特征輸入。顯而易見,這樣的表示實際上丟失了輸入的文本序列中每個單詞的順序。在神經(jīng)網(wǎng)絡的建模過程中,一般的前饋神經(jīng)網(wǎng)絡,如卷積神經(jīng)網(wǎng)絡,通常接受一個定長的向量作為輸入。卷積神經(jīng)網(wǎng)絡對文本數(shù)據(jù)建模時,輸入變長的字符串或者單詞串,然后通過滑動窗口加池化的方式將原先的輸入轉(zhuǎn)換成一個固定長度的向量表示,這樣做可以捕捉到原文本中的一些局部特征,但是兩個單詞之間的長距離依賴關(guān)系還是很難被學習到。
循環(huán)神經(jīng)網(wǎng)絡卻能很好地處理文本數(shù)據(jù)變長并且有序的輸入序列。它模擬了人閱讀一篇文章的順序,從前到后閱讀文章中的每一個單詞,將前面閱讀到的有用信息編碼到狀態(tài)變量中去,從而擁有了一定的記憶能力,可以更好地理解之后的文本。
其網(wǎng)絡結(jié)構(gòu)如下圖所示:
由圖可見,t是時刻,x是輸入層,s是隱藏層,o是輸出層,矩陣W就是隱藏層上一次的值作為這一次的輸入的權(quán)重。
如果反復把式 2 帶入到式 1,將得到:
其中f和g為激活函數(shù),U為輸入層到隱含層的權(quán)重矩陣,W為隱含層從上一時刻到下一時刻狀態(tài)轉(zhuǎn)移的權(quán)重矩陣。在文本分類任務中,f可以選取Tanh函數(shù)或者ReLU函數(shù),g可以采用Softmax函數(shù)。
通過最小化損失誤差(即輸出的y與真實類別之間的距離),我們可以不斷訓練網(wǎng)絡,使得得到的循環(huán)神經(jīng)網(wǎng)絡可以準確地預測文本所屬的類別,達到分類目的。相比于卷積神經(jīng)網(wǎng)絡等前饋神經(jīng)網(wǎng)絡,循環(huán)神經(jīng)網(wǎng)絡由于具備對序列順序信息的刻畫能力,往往能得到更準確的結(jié)果。
RNN的訓練算法為:BPTT
BPTT的基本原理和BP算法是一樣的,同樣是三步:
1.前向計算每個神經(jīng)元的輸出值;
2.反向計算每個神經(jīng)元的誤差項值,它是誤差函數(shù)E對神經(jīng)元j的加權(quán)輸入的偏導數(shù);
3.計算每個權(quán)重的梯度。
最后再用隨機梯度下降算法更新權(quán)重。
具體參考: https://www.jianshu.com/p/39a99c88a565
最后由鏈式法則得到下面以雅可比矩陣來表達的每個權(quán)重的梯度:
由于預測的誤差是沿著神經(jīng)網(wǎng)絡的每一層反向傳播的,因此當雅克比矩陣的最大特征值大于1時,隨著離輸出越來越遠,每層的梯度大小會呈指數(shù)增長,導致梯度爆炸;反之,若雅克比矩陣的最大特征值小于1,梯度的大小會呈指數(shù)縮小,產(chǎn)生梯度消失。對于普通的前饋網(wǎng)絡來說,梯度消失意味著無法通過加深網(wǎng)絡層次來改善神經(jīng)網(wǎng)絡的預測效果,因為無論如何加深網(wǎng)絡,只有靠近輸出的若干層才真正起到學習的作用。 這使得循環(huán)神經(jīng)網(wǎng)絡模型很難學習到輸入序列中的長距離依賴關(guān)系 。
關(guān)于RNN梯度下降的詳細推導可以參考: https://zhuanlan.zhihu.com/p/44163528
梯度爆炸的問題可以通過梯度裁剪來緩解,即當梯度的范式大于某個給定值時,對梯度進行等比收縮。而梯度消失問題相對比較棘手,需要對模型本身進行改進。深度殘差網(wǎng)絡是對前饋神經(jīng)網(wǎng)絡的改進,通過殘差學習的方式緩解了梯度消失的現(xiàn)象,從而使得我們能夠?qū)W習到更深層的網(wǎng)絡表示;而對于循環(huán)神經(jīng)網(wǎng)絡來說,長短時記憶模型及其變種門控循環(huán)單元等模型通過加入門控機制,很大程度上彌補了梯度消失所帶來的損失。
LSTM的網(wǎng)絡機構(gòu)圖如下所示:
與傳統(tǒng)的循環(huán)神經(jīng)網(wǎng)絡相比,LSTM仍然是基于xt和ht−1來計算ht,只不過對內(nèi)部的結(jié)構(gòu)進行了更加精心的設計,加入了輸入門it 、遺忘門ft以及輸出門ot三個門和一個內(nèi)部記憶單元ct。輸入門控制當前計算的新狀態(tài)以多大程度更新到記憶單元中;遺忘門控制前一步記憶單元中的信息有多大程度被遺忘掉;輸出門控制當前的輸出有多大程度上取決于當前的記憶單元。
在經(jīng)典的LSTM模型中,第t層的更新計算公式為
其中it是通過輸入xt和上一步的隱含層輸出ht−1進行線性變換,再經(jīng)過激活函數(shù)σ得到的。輸入門it的結(jié)果是向量,其中每個元素是0到1之間的實數(shù),用于控制各維度流過閥門的信息量;Wi 、Ui兩個矩陣和向量bi為輸入門的參數(shù),是在訓練過程中需要學習得到的。遺忘門ft和輸出門ot的計算方式與輸入門類似,它們有各自的參數(shù)W、U和b。與傳統(tǒng)的循環(huán)神經(jīng)網(wǎng)絡不同的是,從上一個記憶單元的狀態(tài)ct−1到當前的狀態(tài)ct的轉(zhuǎn)移不一定完全取決于激活函數(shù)計算得到的狀態(tài),還由輸入門和遺忘門來共同控制。
在一個訓練好的網(wǎng)絡中,當輸入的序列中沒有重要信息時,LSTM的遺忘門的值接近于1,輸入門的值接近于0,此時過去的記憶會被保存,從而實現(xiàn)了長期記憶功能;當輸入的序列中出現(xiàn)了重要的信息時,LSTM應當把其存入記憶中,此時其輸入門的值會接近于1;當輸入的序列中出現(xiàn)了重要信息,且該信息意味著之前的記憶不再重要時,輸入門的值接近1,而遺忘門的值接近于0,這樣舊的記憶被遺忘,新的重要信息被記憶。經(jīng)過這樣的設計,整個網(wǎng)絡更容易學習到序列之間的長期依賴。
GRU是在LSTM上進行簡化而得到的,GRU的網(wǎng)絡結(jié)構(gòu)如下所示:
Zt代表更新門,更新門的作用類似于LSTM中的遺忘門和輸入門,它能決定要丟棄哪些信息和要添加哪些新信息。
Rt代表重置門,重置門用于決定丟棄先前信息的程度。
要注意的是,h只是一個變量,因此在每個時刻,包括最后的線性組合,h都是在用以前的自己和當前的備選答案更新自己。舉例來說,這一個變量好比一杯酒,每次我們要把一部分酒倒出去,并把倒出去的酒和新加入的原料混合,然后在倒回來,這里的reset控制的就是要倒出去的,并且混合好之后再倒回來的酒的比例,而update控制的則是用多大的比例混合新原料和倒出來的之前調(diào)制好的酒。同理,也可以以此理解LSTM,LSTM的遺忘門功能上和reset相似,而輸入門與update相似,不同之處在于LSTM還控制了當前狀態(tài)的exposure,也就是輸出門的功能,這是GRU所沒有的。
1.百面機器學習
2. https://zhuanlan.zhihu.com/p/45649187
3. https://www.jianshu.com/p/39a99c88a565
四、二分類和多分類的區(qū)別
二分類、多分類與多標簽的基本概念
二分類:表示分類任務中有兩個類別,比如我們想識別一幅圖片是不是貓。也就是說,訓練一個分類器,輸入一幅圖片,用特征向量x表示,輸出是不是貓,用y=0或1表示。二類分類是假設每個樣本都被設置了一個且僅有一個標簽 0 或者 1。
多類分類(Multiclass classification): 表示分類任務中有多個類別, 比如對一堆水果圖片分類, 它們可能是橘子、蘋果、梨等. 多類分類是假設每個樣本都被設置了一個且僅有一個標簽: 一個水果可以是蘋果或者梨, 但是同時不可能是兩者。
多標簽分類(Multilabel classification): 給每個樣本一系列的目標標簽. 可以想象成一個數(shù)據(jù)點的各屬性不是相互排斥的(一個水果既是蘋果又是梨就是相互排斥的), 比如一個文檔相關(guān)的話題. 一個文本可能被同時認為是宗教、政治、金融或者教育相關(guān)話題。
多分類問題與二分類問題關(guān)系
首先,兩類問題是分類問題中最簡單的一種。其次,很多多類問題可以被分解為多個兩類問題進行求解(請看下文分解)。所以,歷史上有很多算法都是針對兩類問題提出的。下面我們來分析如何處理多分類問題:
直接分成多類
一對一的策略
給定數(shù)據(jù)集D這里有N個類別,這種情況下就是將這些類別兩兩配對,從而產(chǎn)生N(N−1)2個二分類任務,在測試的時候把樣本交給這些分類器,然后進行投票。
一對其余策略
將每一次的一個類作為正例,其余作為反例,總共訓練N個分類器。測試的時候若僅有一個分類器預測為正的類別則對應的類別標記作為最終分類結(jié)果,若有多個分類器預測為正類,則選擇置信度最大的類別作為最終分類結(jié)果。
多標簽問題與二分類問題關(guān)系
面臨的問題: 圖片的標簽數(shù)目不是固定的,有的有一個標簽,有的有兩個標簽,但標簽的種類總數(shù)是固定的,比如為5類。
解決該問題: 采用了標簽補齊的方法,即缺失的標簽全部使用0標記,這意味著,不再使用one-hot編碼。例如:標簽為:-1,1,1,-1,1 ;-1表示該類標簽沒有,1表示該類標簽存在,則這張圖片的標簽編碼為:
0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1
2.如何衡量損失?
計算出一張圖片各個標簽的損失,然后取平均值。
3.如何計算精度
計算出一張圖片各個標簽的精度,然后取平均值。
該處理方法的本質(zhì):把一個多標簽問題,轉(zhuǎn)化為了在每個標簽上的二分類問題。
損失函數(shù)的選擇問題
基于邏輯回歸的二分類問題
對于logistic回歸,有:
邏輯回歸有以下優(yōu)點:
對數(shù)損失函數(shù)(logarithmic loss function) 或?qū)?shù)似然損失函數(shù)(log-likehood loss function) 。
邏輯回歸中,采用的則是對數(shù)損失函數(shù)。根據(jù)上面的內(nèi)容,我們可以得到邏輯回歸的對數(shù)似然損失函數(shù)cost function:
將以上兩個表達式合并為一個,則單個樣本的損失函數(shù)可以描述為:
這就是邏輯回歸最終的損失函數(shù)表達式。
基于 Softmax 的多分類問題
softmax層中的softmax 函數(shù)是logistic函數(shù)在多分類問題上的推廣,它將一個N維的實數(shù)向量壓縮成一個滿足特定條件的N維實數(shù)向。壓縮后的向量滿足兩個條件:
因此,softmax適用于多分類問題中對每一個類別的概率判斷,softmax的函數(shù)公式如下:
基于 Softmax 的多分類問題采用的是 log似然代價函數(shù)(log-likelihood cost function)來解決。
單個樣本的 log似然代價函數(shù)的公式為:
其中, 表示標簽向量的第 i個分量。因為往往只有一個分量為 1 其余的分量都為 0,所以可以去掉損失函數(shù)中的求和符號,化簡為,
其中, 是向量 y 中取值為 1 對應的第 j個分量的值。
交叉熵損失函數(shù)與 log 似然代價函數(shù)關(guān)系 本質(zhì)一樣
有的文獻中也稱 log 似然代價函數(shù)為交叉熵損失函數(shù),這兩個都是交叉熵損失函數(shù),但是看起來長的卻有天壤之別。為什么同是交叉熵損失函數(shù),長的卻不一樣呢?
因為這兩個交叉熵損失函數(shù)對應不同的最后一層的輸出。第一個對應的最后一層是 sigmoid,用于二分類問題,第二個對應的最后一層是 softmax,用于多分類問題。但是它們的本質(zhì)是一樣的,請看下面的分析。
首先來看信息論中交叉熵的定義:
交叉熵是用來描述兩個分布的距離的,神經(jīng)網(wǎng)絡訓練的目的就是使 g(x) 逼近 p(x)。
sigmoid + 交叉熵
先看看 sigmoid 作為神經(jīng)網(wǎng)絡最后一層的情況。sigmoid 作為最后一層輸出的話,那就不能吧最后一層的輸出看作成一個分布了,因為加起來不為 1。現(xiàn)在應該將最后一層的每個神經(jīng)元看作一個分布,對應的 target 屬于二項分布(target的值代表是這個類的概率),那么第 i 個神經(jīng)元交叉熵為
其實這個式子可以用求和符號改寫,
其中,
Softmax + 對數(shù)似然
現(xiàn)在來看 softmax 作為神經(jīng)網(wǎng)絡最后一層的情況。g(x)是什么呢?就是最后一層的輸出 y 。p(x)是什么呢?就是我們的one-hot標簽。我們帶入交叉熵的定義中算一下,就會得到:
交叉熵損失函數(shù)與 log 似然損失函數(shù)的總結(jié)
注意到不管是交叉熵損失函數(shù)與 log 似然損失函數(shù),交叉熵損失函數(shù)用于二分類問題, log 似然損失函數(shù)用于多分類,但是對于某一個樣本只屬于一個類別,只有一個標簽。如果用 one-hot 編碼樣本的標簽那么,對于標簽向量只有一個分量的值為 1 其余的值都為 0。
所以不管是交叉熵損失函數(shù)與 log 似然損失函數(shù),都可以化簡為,
其中, 是向量 y 中取值為 1 對應的第 j 個分量的值。這兩個長的不一樣的損失函數(shù)實際上是對應的不同的輸出層。本質(zhì)上是一樣的。
我的建議是,采用 Kears 中的命名方法,對于二分類的交叉熵損失函數(shù)稱之為 “二分類交叉熵損失函數(shù)(binary_crossentropy)” ,對于多分類的交叉熵損失函數(shù)稱之為 “多類別交叉熵損失函數(shù)(categorical_crossentropy)”。
在 Kears 中也有提示(注意: 當使用categorical_crossentropy損失時,你的目標值應該是分類格式 (即,如果你有10個類,每個樣本的目標值應該是一個10維的向量,這個向量除了表示類別的那個索引為1,其他均為0)。 為了將 整數(shù)目標值 轉(zhuǎn)換為 分類目標值,你可以使用Keras實用函數(shù)to_categorical:)
多標簽分類 + 二分類交叉熵損失函數(shù)
多標簽問題與二分類問題關(guān)系在上文已經(jīng)討論過了,方法是計算一個樣本各個標簽的損失(輸出層采用sigmoid函數(shù)),然后取平均值。把一個多標簽問題,轉(zhuǎn)化為了在每個標簽上的二分類問題。
以上就是關(guān)于神經(jīng)網(wǎng)絡多分類相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進行咨詢,客服也會為您講解更多精彩的知識和內(nèi)容。
推薦閱讀:
上海神經(jīng)科醫(yī)院排行榜(上海神經(jīng)科科醫(yī)院排名前十)
全國神經(jīng)科醫(yī)院排行榜(全國神經(jīng)科醫(yī)院排行榜最新)