一、神經網絡的歷史

神經網絡是當今深度學習領域技術突破的基石。神經網絡可被看作是一種大規模并行的簡單處理單元,它能夠存儲知識(knowledge)并使用這種知識來做出預測。

神經網絡需要通過學習過程來從其環境中獲取知識,這個過程模擬了生物大腦的工作方式。然后,被稱為突觸權重(synaptic weight)的干涉連接強度可被用于存儲獲取到的知識。在學習過程中,神經網絡的突觸權重會以一種有序的方式進行修改,從而實現所需的目標。1950 年,神經心理學家 Karl Lashley 發表了一篇將大腦視作分布式系統的論文。

人們將神經網絡與人腦進行比較的另一個原因是它們的運行方式都像是非線性的并行信息處理系統,可以執行模式識別和感知這樣的計算。因此,這些網絡在語音、音頻和圖像識別等本質上是非線性的輸入/信號上可以具有非常良好的表現。

神經網絡先驅 McCulloch 和 Pitts 在 1943 年發表了一篇對一個有兩個輸入和一個輸出的模型的研究文章。該模型具有以下特性:

要一個神經元被激活,必需滿足以下條件:

通過對輸入值求和得到的輸出要么是 1,要么是 0;所以這樣的計算存在一個特定的閾值。

Hebb 在其 1949 年的著作《The Organization of Behaviour(行為組織)》中第一次提出了這一思想:為了應對任務的變化,大腦中的連接會不斷發生改變。這樣的規則意味著兩個神經元之間的連接在這同一時間內是激活的。這一思想很快就變成了開發學習的計算模型和自適應系統的靈感來源。

人工神經網絡有能力從被提供的數據中學習,這被稱為自適應學習(adaptive learning),而神經網絡創造其自己的組織或信息表征的能力則被稱為自組織(self-organisation)。

15 年后,Rosenblatt 于 1958 年開發出了感知器(perceptron),成為了神經元的下一個模型。感知器是最簡單的神經網絡,能將數據線性地分為兩類。后來,他隨機地將這些感知器互相連接,并使用了一種試錯方法來改變權重以進行學習。

1969 年,在數學家 Marvin Minsky 和 Seymour Parpert 發表了一篇對感知器的數學分析后,這個方向的研究在接下來的 15 年里陷入了停滯。他們的研究發現感知器無法表征很多重要的問題,比如異或函數(XOR)。其實,那時的計算機還沒有足夠的處理能力來有效地處理大型神經網絡。

1986 年,Rumelhart、Hinton 和 Williams 報告他們所開發的反向傳播(back-propagation)算法能夠解決 XOR 這樣的問題,并由此開啟了第二代神經網絡。同一年,Rumelhart 和 McClelland 編輯的兩卷知名著作《Parallel Distributed Processing: Explorations in the Microstructures of Cognition(并行分布式處理:認知的微結構中的探索)》發表。這本書在反向傳播的應用上產生了很大的影響,而反向傳播也已經在多層感知器的訓練上成為了最為流行的學習算法。

二、單層感知器(SLP)

感知器的最簡單形式是在輸入和輸出之間有一個單層的權重連接。這種形式可被看作是最簡單的前饋網絡(feed-forward network)。在一個前饋網絡中,信息總是向一個方向移動,永不回頭。

圖 1 就是一個單層感知器,可用來更輕松地理解前面所解釋的多層感知器的概念基礎。單層感知器表示了網絡中一個層和其它層之間的連接的 m 權重,該權重可被看作是一組突觸或連接鏈。這個參數表示了每個特征 xj 的重要性。下面是輸入乘以它們各自的突觸連接這一功能的加法器函數:

其偏置 bk 用作對加法器函數 uk 得到 vk 的輸出的仿射變換( affine transformation),其誘導局部域(induced local field)為:

三、多層感知器(MLP)

多層感知器也被稱為前饋神經網絡(feed-forward neural network),由每一層都完全連接到下一層的層序列組成。

一個多層感知器在輸入和輸出層之間有一個或多個隱藏層,其中每一層都包含多個通過權重鏈接彼此互連的神經元。輸入層中神經元的數量即為數據集中屬性的數量,輸出層中神經元數量是對數據集的給定類別的數量。

圖 2 是一個至少有三層的多層感知器,其中每一層都和前一層相連。要使這個架構做到深度,我們需要引入多個隱藏層。

參數的初始化

在參數的初始化中,權重(weight)和偏置(bias)在確定最終模型的過程中發揮了重要的作用。關于初始化策略的文獻資料有很多。

一個好的隨機初始化策略可以避開局部極小值的困境。局部極小值(local minima)問題是指網絡在訓練過程中受困于錯誤的表面而不能深入,即使該網絡還仍有學習的能力。

使用不同的初始化策略進行實驗已經超出了本文的研究范圍。

初始化策略應該根據所使用的激活函數進行選擇。對于雙曲正切函數,初始化區間應該為


其中 fan in 是第 i-1 層的單元的數量,fan out 是第 i 層的單元的數量。類似地,對于 S 型激活函數,初始化區間應該為

這些初始化策略能在網絡訓練的早期階段確保信息向上和向后傳播。

激活函數

激活函數將誘導局部域 v 下的神經元的輸出定義為:

其中 φ( ) 是該激活函數。激活函數有很多種,下面給出常用的一些:

1.閾值函數(Threshold Function)

上圖表示該神經元要么是激活的,要么就是非激活的。但是,該函數是不可微分的,這在使用反向傳播算法時非常重要(稍后解釋)。

2. S 型函數(Sigmoid Function)

和閾值函數一樣,S 型函數是一個取值在 0 到 1 之間的邏輯函數,但該激活函數是連續可微的。

其中 α 是該函數的斜率參數(slope parameter)。此外,該函數在本質上是非線性的,這有助于確保權重和偏置中的較小改變能在神經元的輸出中產生較大的變化。

3.雙曲正切函數(Hyperbolic Tangent Function)

φ(v) = tanh (v)

該函數可讓激活函數的取值在 -1 到 +1 之間。

4.修正線性激活函數(ReLU)

ReLU 是許多邏輯單元之和的平滑近似,能夠產生稀疏的活動向量。下面是該函數的方程式:


在圖 3 中

是對修正器(rectifier)的平滑逼近

5. Maxout 函數

2013 年,Goodfellow 發現使用了一種新的激活函數的 Maxout 網絡是 dropout 的天然搭檔。

Maxout 單元能促進 dropout 的優化以及提升 dropout 的快速近似模型平均技術(fast approximate model averaging technique)的準確度。單個 Maxout 單元可被理解為是對一個任意凸函數的片(piece)形式的線性近似。

Maxout 網絡不僅能學習隱藏單元之間的關系,還能學習每個隱藏單元的激活函數。下面是關于其工作方式的圖形化描述:

圖4 展示了帶有 5 個可見單元、3 個隱藏單元和每個隱藏單元 2 個片的 Maxout 網絡。

其中 W…ij 是通過獲取矩陣

中第二個坐標 i 和第三個坐標 j 的輸入大小的平均向量。中間單元 k 的數量被稱為 Maxout 網絡所用的片(piece)的數量。

反向傳播算法

反向傳播算法可用于訓練前饋神經網絡或多層感知器。這是一種通過改變網絡中的權重和偏置來最小化成本函數(cost function)的方法。為了學習和做出更好的預測,會執行一些 epoch(訓練周期);在這些 epoch 中,由成本函數所決定的誤差會通過梯度下降被反向傳播,直到達到足夠小的誤差。

梯度下降(Gradient descent)

1.mini-batch 梯度下降

比如說在 100 大小的 mini-batch 中,會有 100 個訓練樣本被展示給學習算法,權重也會據此更新。在所有的 mini-batch 都依次呈現之后,每個 epoch 的準確度水平和訓練成本水平的平均都會計算出來。

2.隨機梯度下降

隨機梯度下降被用在實時在線處理中,其中參數僅在呈現一個訓練樣本時才更新,所以準確度水平和訓練成本的平均是從每個 epoch 的整個訓練數據集上獲得的。

3.full batch 梯度下降

在這種方法中,所有的訓練樣本都會被展示給學習算法,然后再更新權重。

成本函數(Cost Function)

成本函數有很多種,這里給出幾個例子:

1.均方誤差函數

其中 yi 是預測的輸出,oi 是真實的輸出。

2.交叉熵函數

其中 f 函數是模型在輸入 xi’s 的標簽是 li 時的預測概率,W 是它的參數,n 是訓練 batch 的大小。

3.負對數似然損失(NLL)函數

NLL 是用于本報告的所有實驗中的成本函數:


其中 y(i) 是輸出的值,x(i) 是特征輸入的值,θ 是參數,D 是訓練集。

學習率(Learning rate)

學習率控制著權重從一次迭代到另一次迭代的變化。一般來說,更小的學習率被認為是穩定的,但學習速度也更慢。另一方面,更高的學習率可能不穩定,會引起振蕩和數值誤差,但會加速學習過程。

動量(Momentum)

動量為避免局部極小值提供了慣性;其思想簡單來說就是為當前的權重更新增加特定比例的先前的權重更新,這有助于避免受困于局部極小值。

其中 α是動量。

Softmax

Softmax 是一種神經傳遞函數,其是可將向量變成概率的輸出層中實現的 logistic 函數的廣義形式。這些概率的總和為 1 且限定于 1。

多層感知器(MLP):總結

對于分類任務,輸出層可能會整合一個 softmax 函數用來給出每個發生類(occurring class)的概率。激活函數使用輸入、權重和偏置在每個層中計算每個神經元的預測輸出。

反向傳播方法一種訓練多層神經網絡的方法,該方法通過修改層之間的突觸連接權重以在糾錯學習函數(需要是連續可微的)的基礎上提升模型的性能。以下的參數在本實驗中進行了評估:

四、深度學習概覽

在 2006 年之前,有各種各樣的訓練深度監督前饋神經網絡的失敗嘗試是由在不可見的數據上的性能的過擬合導致的;即在訓練誤差降低的同時驗證誤差卻在增長。

深度網絡通常是指擁有超過 1 個隱藏層的人工神經網絡。訓練深度隱藏層許多更多算力。更深似乎是更好的,因為直觀上來說,神經元可以利用其下面的層中的神經元所得出的結果,這可以得到數據的分布式表征。

Bengio 認為隱藏層中的神經元可被看作是其下面的層中的神經元所學到的特征檢測器(feature detector)。這個結果處于作為一個神經元子集的更好泛化(generalization)中,而這個神經元子集可從輸入空間中的特定區域的數據上進行學習。

此外,更深度的架構可以更加高效,因為表現相同的功能所需的計算單元更少,從而能實現更高的效率。分布式表征背后的核心思想是統計優勢的共享,其中該架構的不同組件會根據不同的目的而被復用。

深度神經架構是由多個利用非線性操作的層組成的,例如在帶有許多隱藏層的神經網絡中。數據集中常常存在各種變化的因素,例如數據各自的性質經常可能獨立地變化。

深度學習算法可以獲取解釋數據中統計變化的因素和它們交互的方式,從而生成我們觀察的那種類型的數據。較低層次的抽象更直接依賴于特定的觀察;而更高層次的也更抽象,因為它們感知數據的連接也更加遙遠。

深度架構學習的重點是自動發現這樣的抽象——從低水平的特征到更高水平的概念。可以預期,這樣的學習算法可以在沒有人工定義必要的抽象的情況下進行這樣的發現。

數據集中的訓練樣本的多樣性必須至少和測試集一樣,否則學習算法就不能歸納。深度學習方法的目的是學習特征層次,將更低層次的特征組成更高水平的抽象。

帶有大量參數的深度神經網絡是非常強大的機器學習系統。但是,過擬合(over-fitting)是深度網絡的一個嚴峻難題。過擬合是指當驗證誤差開始增長時,訓練誤差卻在下降。Dropout 是一種用于解決這一問題的正則化技術,將在后面介紹。

今天深度學習技術成功增長的兩個最重要因素的其中之一是計算算力的進步。圖形處理單元(GPU)和云計算對深度學習在許多問題上的應用是至關重要的。

云計算可實現計算機的集群和按需處理,這有助于通過并行化神經網絡的訓練來減少訓練時間。另一方面,GPU 是為高性能數學計算設計的專用芯片,可以加速矩陣的計算。

在 2006-2007 年間,有三篇論文對深度學習這一學科產生了革命性的影響。他們的成果的關鍵原理是每一層都可通過無監督學習的方式進行預訓練,一次處理一層。最后,使用誤差的反向傳播的監督訓練可被用于精確調節所有的層,使得這種通過無監督學習進行的初始化比隨機初始化更好。

受限玻爾茲曼機和深度信念網絡

受限玻爾茲曼機(RBM)是一種無監督算法,可被用于預訓練深度信念網絡。RBM 是玻爾茲曼機的簡化版本,受到了統計力學的啟發。這種方法是基于給定數據的潛在分布的概率對能量( energy)建模,這些給定的數據集來自可以派生出的條件分布。

玻爾茲曼機是隨機處理可見單元和隱藏單元的雙向連接網絡。其原始數據( raw data)對應于「可見」神經元和被觀察狀態的樣本,而且特征檢測器對應于「隱藏」神經元。在玻爾茲曼機中,可見神經元為網絡和其所在的操作環境提供輸入。在訓練過程中,可見神經元受到了鉗制(調到固定值,由訓練數據確定)。另一方面,隱藏神經元自由運行。

然而,玻爾茲曼機因為其連通性而非常難以訓練。一個 RBM 限制了連通性從而使得學習變得簡單。在組成二分圖(bipartite graph)的單層中,隱藏單元沒有連接,如圖 2。它的優勢是隱藏單位可以獨立更新,并且與給定的可見狀態平行。

這些網絡受到了一個能量函數的管控,它決定了隱藏/可見狀態的概率。隱藏/可見單位的每個可能的連接結構( joint configurations )都有一個由權重和偏差決定的 Hopfield 能量。連接結構的能量由吉布斯采樣優化,它可通過最小化 RBM 的最低能量函數學習參數。

在圖 5 中,左邊的層表示可見層,而右邊的層表示隱藏層

在深度信念網絡(DBN)中,RBM 是通過帶有重要特征的輸入數據進行訓練的,這些輸入數據是由隱藏層中的隨機神經元獲取的。在第二層,訓練特征的激活(activation)被當作輸入數據處理。第二層 RBM 層中的學習過程可被看作是學習特征的特征,每次當一個新的層被添加到深度信念網絡中時,原始訓練數據的對數概率上的可變的更低的界限就會獲得提升。

圖6 展示了 RBM 將它的數據分布轉變成了隱藏單元上更后面的分布

RBM 的權重是被隨機初始化的,造成了分布中 p(x) 和 q(x) 的不同。在學習過程中,權重被迭代調整,從而最小化 p(x) 和 q(x) 之間的誤差。在圖 2 中,q(x)是源數據的近似,p(x) 是源數據。

調整來自一個神經元和其他神經元的突觸權重的原則不受是否是隱藏還是可見神經元的支配。通過 RBM 層更新的參數可被用于 DBN 的初始值,DBN 可通過反向傳播的監督訓練精調所有的層。

在 KDD Cup 1999 的 IDS 數據上,適合使用多模態(Bernoulli-Gaussian)RBM 作為包含混合數據類型的 KDD Cup 1999,這些數據類型特別連續且明確。在多模態 RBM 中,有兩個不同的信道輸入層,一個用于連續特征的高斯輸入單元,另一個是其中使用到了二元特征的 Bernoulli 輸入單元層。多模態 RBM 的使用不在本文的討論范圍之中。

DROPOUT

近期的一些進展已經引入了強大的正則化矩陣(regularizers)來減少神經網絡的過擬合。在機器學習中,正則化是附加信息,通常作為一種懲罰機制被引入——懲罰導致過擬合的模型的復雜性。

Dropout 是 Hinton 引入的一種深度神經網絡的正則化技術,通過在每一個訓練迭代上隨機關掉一部分神經元,而是在測試時間使用整個網絡(權重按比例縮小),從而防止特征檢測器的共適應。

Dropout 通過等同于訓練一個共享權重的指數模型減少過擬合。對于給定的訓練迭代,存在不同 dropout 配置的不同指數,所以幾乎可以肯定每次訓練出的模型都不一樣。在測試階段,使用了所有模型的平均值,作為強大的總體方法。

圖 7 中,dropout 隨機舍棄神經網絡層級之間的連接

圖 8 中,在訓練時間,連接有一定的概率被舍棄,同時在訓練時間中權重按比例縮小到 ρw

在很多機器學習競賽中,平均眾多模型(Averaging many model)總是獲勝的關鍵。很多不同類型的模型被使用,然后結合起來在測試階段做預測。

隨機森林是一個非常強大的 bagging 算法,它是通過平均很多決策樹,給它們不同的帶有重置的訓練樣本集創造的。眾所周知,決策樹非常容易擬合數據,而且在測試時間進行得非常快,所以通過給它們不同的訓練集來平均不同的決策樹是負擔得起的。

然而,使用同樣的深度神經網絡方法的計算成本是非常昂貴的。訓練單獨的神經網絡和多種神經網絡的成本已經很高了,再平均它們看起來是不現實的。此外,我們需要的是在測試時間有效的單個網絡,而不是有大量的大型神經網絡。

Dropout 是平均很多大型神經網絡的有效方式。每次訓練模型的隱藏單元的時候都能像圖 8 中那樣以一定的概率漏掉一些。這個概率通常是 ρ=0.5 時。因此,帶有減半的開支權重(outgoing weight)的「平均網絡」模型可以在測試時間像圖 4 中那樣使用。平均網絡等同于采用概率分布的幾何平均數,該分布是通過所有帶有單隱層單位和 Softmax 輸出層的網絡進行標記預測的。

依照數學證明 dropout 如何可被視為一個集成方法:


是總效果的預測,使用幾何平均數。

是單個子模型的預測。

d 是區分將哪個輸入包括到 softmax 分類器中的二元向量。

假設有不同的單元,將會有 2^N 的可能分配到 d。

其中 y 是單個的,也是類目錄(class index)的向量。

由單個子模型輸出的概率綜合被用于正則化

依照 softmax 的定義

所以預測概率肯定與這成比例。為了重新正則化上面的表述,它被

相除,這意味概率分布是

另一種看待 dropout 的方式是,它能防止特征檢測器間的共適應(co-adaption)。特征檢測器間的共適應意味著如果一個隱藏單位知道其他隱藏單位所代表的內容,它就能在訓練數據上與它們共適應。然而,在測試數據集上復雜的共適應可能會難以泛化。

Dropout 也能以一種低概率應用于輸入層,典型的是 20% 的概率。這里的概念和降噪自動編碼器發展出的概念相同。在此方法中,一些輸入會被遺漏。這會對準確性造成傷害,但也能改善泛化能力,其方式類似于在訓練時將噪聲添加到數據集中。

在 2013 年 dropout 的一個變體出現,叫做 Drop connect。它不再是以特定的概率權重舍棄隱藏單位,而是以一定的概率隨機舍棄。在 MNIST 數據集上,看起來 Drop connect 網絡的表現要比 dropout 好。

處理類別不均衡問題的技術

當一個類別(少數類)相比于其他類別(多數類)明顯代表性不足的時候就會產生類別不均衡問題。這個難題有著現實意義,會對誤分類少數類造成極高的代價,比如檢測欺詐或入侵這樣的異常活動。這里有多種技術可以處理類別不均衡難題,如下面解釋的這一種:

SMOTE:合成少數類過采樣技術(Synthetic Minority Over-sampling Technique)

解決類別不均衡問題的一個普遍使用的方法是數據集的重新采樣。采樣方法包含預處理和通過調整少數類和多數類的先驗分布均衡訓練數據集。SMOTE 是一種過采樣方法,其中少數類通過創造「合成」樣本過采樣,而非通過替換(replacement)進行過采樣。

已經有人提出說通過替換進行的少數類過采樣不能顯著改進結果,不如說它趨于過擬合少數類的分類。SMOTE 算法反而是在「特征空間」進行操作,而非「數據空間」。它通過過采樣少數類創造合成樣本,這能更好地泛化。

這一思路受到了通過在真實數據上操作創造額外訓練數據的啟發,以便于有更多的數據幫助概括歸納預測。

在此算法中第一個最近鄰(neighbours)是為了少數類計算的。然后,就可以以下列方式計算少數類的合成特征:選擇最鄰近的一個隨機數字,然后使用這一數字與原始少數類數據點的距離。

這一距離乘以 0 和 1 之間的一個隨機數字,然后將結果增加到原始少數類數據的特征向量中作為一個額外的樣本,如此就創造出了合成少數類樣本。

神經網絡中的成本敏感學習

成本敏感性學習似乎是一種解決分類問題中類別不均衡的相當有效的方式。特定于神經網絡的三種成本敏感方法已經做了介紹。

在測試未見過的樣本時,整合神經網絡輸出層中類別的先驗概率

基于成本調整學習率。更好的學習率應該被分配給有著高誤分類(misclassification)成本的樣本,為這些樣本在權重變化上產生更大的影響

修改均方誤差函數。結果是,反向傳播完成的學習將最小化誤分類成本,新的誤差函數是:


其成本因子是 K[i,j]。

新的誤差函數會引出一個用于更新網絡權重的新德爾塔定律

其中第一個等式代表輸出神經元的誤差函數,第二個等式代表隱層神經元的誤差函數。

文章轉自微信公眾號@機器之心

上一篇:

深度學習的三個主要步驟!

下一篇:

深入了解神經網絡:定義、結構及其在深度學習中的應用
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費