深度學(xué)習到底是啥,看完下文你就懂了
o 受限玻爾茲曼機和深度信念網(wǎng)絡(luò )
o Dropout
o 處理不平衡的技巧
o SMOTE :合成少數過(guò)采樣技術(shù)
o 神經(jīng)網(wǎng)絡(luò )中對成本敏感的學(xué)習
在 2006 年之前,訓練深度監督前饋神經(jīng)網(wǎng)絡(luò )總是失敗的,其主要原因都是導致過(guò)度擬合,即訓練錯誤減少,而驗證錯誤增加。
深度網(wǎng)絡(luò )通常意味著(zhù)具有多于 1 個(gè)隱藏層的人工神經(jīng)網(wǎng)絡(luò )。訓練深層隱藏層需要更多的計算能力,具有更深的深度似乎更好,因為直覺(jué)神經(jīng)元可以使用下面圖層中的神經(jīng)元完成的工作,從而導致數據的分布式表示。
Bengio 認為隱藏層中的神經(jīng)元可被看作是其下面的層中的神經(jīng)元所學(xué)到的特征檢測器( feature detector )。這個(gè)結果處于作為一個(gè)神經(jīng)元子集的更好泛化( generalization )中,而這個(gè)神經(jīng)元子集可從輸入空間中的特定區域的數據上進(jìn)行學(xué)習。
而且,由于相同功能所需的計算單元越少,效率就越高,所以更深的架構可以更高效。分布式背后的核心思想是共享統計優(yōu)勢,將不同架構的組件重用于不同的目的。
深度神經(jīng)架構是由多個(gè)利用非線(xiàn)性操作的層組成的,例如在帶有許多隱藏層的神經(jīng)網(wǎng)絡(luò )中。數據集中常常存在各種變化的因素,例如數據各自的性質(zhì)經(jīng)??赡塥毩⒌刈兓?。
深度學(xué)習算法可以獲取解釋數據中的統計變化,以及它們如何相互作用以生成我們觀(guān)察到的數據類(lèi)型。較低層次的抽象更直接地與特定的觀(guān)察聯(lián)系在一起,另一方面,更高層次的更抽象,因為他們與感知數據的聯(lián)系更加偏遠。
深度架構學(xué)習的重點(diǎn)是自動(dòng)發(fā)現從低級特征到更高級別概念的抽象。算法可以在不需要手動(dòng)定義必要抽象的情況下啟用發(fā)現這些定義。
數據集中的訓練樣本的多樣性必須至少與測試集中的一樣多,否則算法就不能一概而論。深度學(xué)習方法旨在學(xué)習特征層次結構,將更低層次的特征組合成更高層次的抽象。
具有大量參數的深度神經(jīng)網(wǎng)絡(luò )是非常強大的機器學(xué)習系統。但是,過(guò)度擬合在深度網(wǎng)絡(luò )中是一個(gè)嚴重的問(wèn)題。過(guò)度擬合是指當驗證錯誤開(kāi)始增加而訓練錯誤下降時(shí)。 Dropout 是解決這個(gè)問(wèn)題的正則化技術(shù)之一,這將在后面討論。
今天,深度學(xué)習技術(shù)取得成功的最重要因素之一是計算能力的提高。圖形處理單元( GPU )和云計算對于將深度學(xué)習應用于許多問(wèn)題至關(guān)重要。
云計算允許計算機集群和按需處理,通過(guò)并行訓練神經(jīng)網(wǎng)絡(luò )來(lái)幫助減少計算時(shí)間。另一方面, GPU 是用于高性能數學(xué)計算的專(zhuān)用芯片,加速了矩陣的計算。
在 06-07 這一年,三篇論文徹底改變了深度學(xué)習的學(xué)科。他們工作中的關(guān)鍵原則是每層都可以通過(guò)無(wú)監督學(xué)習進(jìn)行預先訓練,一次完成一層。最后,通過(guò)誤差反向傳播的監督訓練微調所有層,使得這種通過(guò)無(wú)監督學(xué)習進(jìn)行的初始化比隨機初始化更好。
受限玻爾茲曼機和深度信念網(wǎng)絡(luò )
其中有一種無(wú)監督算法是受限玻爾茲曼機( RBM ),可用于預訓練深層信念網(wǎng)絡(luò )。 RBM 是波爾茲曼機的簡(jiǎn)化版本,它的設計靈感來(lái)自于統計力學(xué),它可以模擬給定數據集的基本分布的基于能量的概率,從中可以得出條件分布。
玻爾茲曼機是隨機處理可見(jiàn)單元和隱藏單元的雙向連接網(wǎng)絡(luò )。原始數據對應于 ' 可見(jiàn) ' 神經(jīng)元和樣本到觀(guān)察狀態(tài),而特征檢測器對應 ' 隱藏 ' 神經(jīng)元。在波爾茲曼機中,可見(jiàn)神經(jīng)元為網(wǎng)絡(luò )和其運行環(huán)境提供輸入。訓練過(guò)程中,可見(jiàn)神經(jīng)元被鉗制(設置成定義值,由訓練數據確定)。另一方面,隱藏的神經(jīng)元可以自由操作。
然而,玻爾茲曼機因為其連通性而非常難以訓練。一個(gè) RBM 限制了連通性從而使得學(xué)習變得簡(jiǎn)單。在組成二分圖( bipartite graph )的單層中,隱藏單元沒(méi)有連接。它的優(yōu)勢是隱藏單位可以獨立更新,并且與給定的可見(jiàn)狀態(tài)平行。
這些網(wǎng)絡(luò )由確定隱藏 / 可見(jiàn)狀態(tài)概率的能量函數控制。隱藏 / 可見(jiàn)單位的每個(gè)可能的連接結構( joint configurations )都有一個(gè)由權重和偏差決定的 Hopfield 能量。連接結構的能量由吉布斯采樣優(yōu)化,它可通過(guò)最小化 RBM 的最低能量函數學(xué)習參數。

在上圖中,左層代表可見(jiàn)層,右層代表隱藏層
在深度信念網(wǎng)絡(luò )( DBN )中, RBM 由輸入數據進(jìn)行訓練,輸入數據具有隱藏層中隨機神經(jīng)元捕獲的輸入數據的重要特征。在第二層中,訓練特征的激活被視為輸入數據。第二個(gè) RBM 層的學(xué)習過(guò)程可以看作是學(xué)習特征的特征 。 每次當一個(gè)新的層被添加到深度信念網(wǎng)絡(luò )中時(shí),原始訓練數據的對數概率上的可變的更低的界限就會(huì )獲得提升。

上圖顯示了 RBM 將其數據分布轉換為隱藏單元的后驗分布
隨機初始化 RBM 的權重,導致 p ( x )和 q ( x )的分布差異。學(xué)習期間,迭代調整權重以最小化 p ( x )和 q ( x )之間的誤差。 q ( x )是原始數據的近似值, p ( x )是原始數據。
調整來(lái)自神經(jīng)元和另一神經(jīng)元的突觸權重的規則不依賴(lài)于神經(jīng)元是可見(jiàn)的還是隱藏的。由 RBM 層更新的參數被用作 DBN 中的初始化,通過(guò)反向傳播的監督訓練來(lái)微調所有層。
對于 KDD Cup 1999 的 IDS 數據,使用多模態(tài)( Bernoulli-Gaussian ) RBM 是不錯的選擇,因為 KDD Cup 1999 由混合數據類(lèi)型組成,特別是連續和分類(lèi)。在多模 RBM 中是使用兩個(gè)不同的通道輸入層,一個(gè)是用于連續特征的高斯輸入單元,另一個(gè)是使用二進(jìn)制特征的伯努利輸入單元層。今天我們就不進(jìn)行詳細講解。
Dropout
最近的發(fā)展是想深度網(wǎng)絡(luò )引入強大的正規化矩陣來(lái)減少過(guò)度擬合。在機器學(xué)習中,正則化是附加信息,通常是一種懲罰機制被引入,以懲罰導致過(guò)度擬合的模型的復雜性。
Dropout 是由 Hinton 引入的深度神經(jīng)網(wǎng)絡(luò )的正則化技術(shù),其包括通過(guò)在每一個(gè)訓練迭代上隨機關(guān)掉一部分神經(jīng)元,而是在測試時(shí)間使用整個(gè)網(wǎng)絡(luò )(權重按比例縮小),從而防止特征檢測器的共適應。
Dropout 通過(guò)等同于訓練一個(gè)共享權重的指數模型減少過(guò)擬合。對于給定的訓練迭代,存在不同 dropout 配置的不同指數,所以幾乎可以肯定每次訓練出的模型都不一樣。在測試階段,使用了所有模型的平均值,作為強大的總體方法。

在上圖中, dropout 隨機舍棄神經(jīng)網(wǎng)絡(luò )層之間的連接

在上圖中,連接被丟棄的概率,同時(shí)在訓練時(shí)間中權重按比例縮小到 pw
在機器學(xué)習競賽中,平均很多模型通常是許多機器學(xué)習競賽獲勝者的關(guān)鍵,使用許多不同類(lèi)型的模型,然后在測試時(shí)間將其結合起來(lái)進(jìn)行預測。
隨機森林是一個(gè)非常強大的 bagging 算法,它是通過(guò)對許多決策樹(shù)進(jìn)行平均而創(chuàng )建的,給它們提供了不同的訓練樣本集和替換。眾所周知,決策樹(shù)很容易適應數據并且在測試時(shí)間快速,因此通過(guò)給予不同的訓練集合來(lái)平均不同的單獨樹(shù)木是可以承受的。
然而,對深度神經(jīng)網(wǎng)絡(luò )使用相同的方法,在計算上是非常昂貴。訓練單獨的深度神經(jīng)網(wǎng)絡(luò )和訓練多個(gè)深度神經(jīng)網(wǎng)絡(luò )計算成本已經(jīng)很高了,然后平均似乎是不切實(shí)際的。此外,我們需要的是在測試有效的單個(gè)網(wǎng)絡(luò ),而不是有大量的大型神經(jīng)網(wǎng)絡(luò )。
Dropout 是平均許多大型神經(jīng)網(wǎng)絡(luò )的有效方法。每次訓練模型時(shí),隱藏單元都可以省略。因此,在測試時(shí)我們應該使用權重減半的“平均網(wǎng)絡(luò )”模型。平均網(wǎng)絡(luò )等同于將 所有可能網(wǎng)絡(luò )預測的標簽上概率分布的幾何平均值與單個(gè)隱藏的單位層和 softmax 輸出層。
另一種看待 Dropout 的方法是,它能夠防止特征檢測器之間的共適應( co-adaption )。特征檢測器的共適應意味著(zhù)如果隱藏單元知道存在哪些其他隱藏單元,則可以在訓練數據上與它們進(jìn)行協(xié)調。但是,在測試數據集上,復合協(xié)調很可能無(wú)法一概而論。
Dropout 也可以以一種較低的概率在輸入層中使用,通常為 20 %的概率。這里的概念和降噪自動(dòng)編碼器發(fā)展出的概念相同。在此方法中,一些輸入會(huì )被遺漏。這會(huì )對準確性造成傷害,但也能改善泛化能力,其方式類(lèi)似于在訓練時(shí)將噪聲添加到數據集中。
在 2013 年出現了 Dropout 的一種變體,稱(chēng)為 Drop connect 。它不再是以特定的概率權重舍棄隱藏單位,而是以一定的概率隨機舍棄。實(shí)驗結果已經(jīng)表明,在 MNIST 數據集上 Drop connect 網(wǎng)絡(luò )比的 dropout 網(wǎng)絡(luò )表現的更好。
處理類(lèi)別失衡的技巧
當一個(gè)類(lèi)別(少數類(lèi))相比于其他類(lèi)別(多數類(lèi))明顯代表性不足的時(shí)候就會(huì )產(chǎn)生類(lèi)別失衡問(wèn)題。這個(gè)難題有著(zhù)現實(shí)意義,會(huì )對誤分類(lèi)少數類(lèi)造成極高的代價(jià),比如檢測欺詐或入侵這樣的異?;顒?dòng)。這里有多種技術(shù)可以處理類(lèi)別失衡難題,如下面解釋的這一種:
SMOTE :合成少數過(guò)采樣技術(shù)
解決類(lèi)失衡問(wèn)題的一種廣泛使用的方法是對數據集進(jìn)行重采樣。抽樣方法涉及通過(guò)調整少數群體和多數群體的先驗分布來(lái)預處理和平衡訓練數據集。 SMOTE 是一種過(guò)抽樣的方法,其中通過(guò)創(chuàng )建“合成”示例而不是通過(guò)對替換進(jìn)過(guò)行采樣來(lái)對少數類(lèi)別進(jìn)行過(guò)采樣。
已經(jīng)有人提出說(shuō)通過(guò)替換進(jìn)行的少數類(lèi)過(guò)采樣不能顯著(zhù)改進(jìn)結果,不如說(shuō)它趨于過(guò)擬合少數類(lèi)的分類(lèi)。相反, SMOTE 算法在“特征空間”而不是“數據空間”中運行。它通過(guò)對少數類(lèi)別進(jìn)行過(guò)度抽樣來(lái)創(chuàng )建合成樣本,從而更好地推廣。
這個(gè)想法的靈感來(lái)自于通過(guò)對真實(shí)數據進(jìn)行操作來(lái)創(chuàng )建額外的訓練數據,以便有更多數據有助于推廣預測。
在此算法中第一個(gè)最近鄰( neighbours )是為了少數類(lèi)計算的。然后,就可以以下列方式計算少數類(lèi)的合成特征:選擇最鄰近的一個(gè)隨機數字,然后使用這一數字與原始少數類(lèi)數據點(diǎn)的距離。
該距離乘以 0 和 1 之間的隨機數,并將結果作為附加樣本添加到原始少數類(lèi)數據的特征向量,從而創(chuàng )建合成的少數類(lèi)樣本。
神經(jīng)網(wǎng)絡(luò )中成本敏感的學(xué)習
成本敏感性學(xué)習似乎是解決分類(lèi)問(wèn)題的類(lèi)不均衡問(wèn)題的一種非常有效的方法。接下來(lái)我們描述特定于神經(jīng)網(wǎng)絡(luò )的三種成本敏感的方法。
在測試未見(jiàn)過(guò)的示例時(shí),將該類(lèi)的先驗概率合并到神經(jīng)網(wǎng)絡(luò )的輸出層中:

根據成本調整學(xué)習率。應將更高的學(xué)習率分配給具有高誤分類(lèi)成本的樣本,從而對這些例子的權重變化產(chǎn)生更大的影響:

修改均方誤差函數。結果是,反向傳播進(jìn)行的學(xué)習將最小化誤分類(lèi)成本。新的誤差函數是:

其成本因子是 K[i , j] 。
這個(gè)新的誤差函數產(chǎn)生一個(gè)新的增量規則,用于更新網(wǎng)絡(luò )的權重:

其中第一個(gè)方程表示輸出神經(jīng)元的誤差函數,第二個(gè)方程表示隱層神經(jīng)元的誤差函數。
評論