機器學習已經在各個行業得到了大規模的廣泛應用,并為提升業務流程的效率、提高生產率做出了極大的貢獻。這篇文章主要介紹了機器學習中最先進的算法之一——神經網絡的八種不同架構,并從原理和適用范圍進行了解讀。機器學習和神經網絡如此優秀,我們先來探討兩個問題——為什么需要機器學習?為何要使用神經網絡?之后在來詳細了解八種不同的網絡架構。
一、為何需要機器學習?
通常來講,對于人類十分復雜的任務就是機器學習大顯身手的地方,那些問題都過于復雜,讓人類解決是不現實或者是不可能的。所以人們想出了一個辦法,為機器學習算法提供大量的數據,并讓算法去探索這些數據,搜索出一個可以描述這些數據的模型來實現解決問題的目標。
讓我們來看兩個小例子:
要寫出一個能在不同光照條件下、新的視角下、雜亂的環境中識別一個新的物體的程序是極度困難的。我們不知道如何去寫這個程序,如何建模,因為我們根本就不知道我們的大腦是如何處理這樣的情況的。即使我們能想到一個辦法,那么程序將會復雜到難以置信的程度!
編寫一個檢測信用卡欺詐的程序也十分困難,幾乎不存在又簡單又可靠的規則,我們需要結合一系列弱規則來實現。當欺詐目標變化時,程序也需要隨機應變的改變以適應。
還有大量的例子使我們束手無策,于是機器學習就成為了一種有效的方法。我們不在去編寫程序解決某個特定的任務,而是對于需要解決的問題收集大量的輸入——輸出數據。機器學習算法可以通過這些數據產生可以解決問題的程序。這些程序與傳統的code不同,是由成千上萬個參數構成。如果我們建模有效,那么程序將會在新的數據上獲得和訓練數據一樣好的表現,并且可以輸入新的訓練數據來使得程序適應新的變化。需要注意的是,現在大規模計算的成本已經比請經驗豐富的程序員便宜了,這也是經濟上機器學習得以發展的原因所在。
目前機器學習主要在以下方面應用:
模式識別:實際場景中的目標、包括人臉、表情、語音識別等等;
異常檢測:例如信用卡交易的異常檢測、傳感器異常數據模式檢測和異常行為檢測等;
預測:預測股票或者匯率、或者預測消費者喜歡的電影、音樂等。
二、什么是神經網絡?
神經網絡是一類機器學習算法和模型的統稱,也是目前機器學習發展最快的一個領域。它在生物大腦結構的啟發下誕生,并衍生為現在最為前沿的深度神經網絡,可以處理輸入和輸出間極為復雜的映射過程。神經網絡具有如下三個特征使它成為了機器學習中的重要組成部分:
有助于理解大腦實際工作的流程,
有助于理解神經元和期間的自適應鏈接以及并行計算的概念,與順序處理的序列模型大不相同;
在大腦的啟發下利用新的算法解決實際問題。
要想系統地學習機器學習,吳恩達的課程對于機器學習入門很有幫助,進一步的可以學習被稱為"深度學習教父"Hinton的神經網絡課程來進一步理解神經網絡。
接下來的內容我們會具體闡述八種常見的神經網絡架構,這應該是每個機器學習從業者和研究者都應該熟悉并掌握的工具。
神經網絡的架構主要分為三大類——前饋、循環和對稱鏈接網絡。
前饋網絡是最常見的架構,第一次負責輸入、最后一層負責輸出,中間的稱為隱藏層。如果有一層以上的隱藏層則稱為深度結構。可以將每一層看做是一次變換,并在變換后利用非線性激活函數進行激活。
循環神經網絡(RNNs):在連接圖中表現的是一個循環,它們的動力學特性十分復雜并難以訓練,但更真實地反映了生物真實的情況。有很多工作在尋找更高效的方法來訓練網絡。這種網絡對于處理序列數據十分有效,其中每一個單元與深度網絡中的神經元類似,但其在每一個時隙內采用相同的權重,并在每一個時隙內都接收輸入。他們同時還具有利用隱藏狀態記憶信息的能力。
對稱連接網絡與循環網絡類似,但單元間的鏈接對稱。他們遵循能量函數更容易分析。沒有隱藏層的對稱連接網絡成為Hopfield網絡,有隱藏層的則稱為玻爾茲曼機(具體參見Hinton課程內容)
三、八種核心神經網絡架構
1.感知機(Perceptrons)
感知機可以稱為第一代的神經網絡,主要包括輸入的多個特征單元(人工定義或程序尋找),中間由學習權重連接,最后由決策單元輸出。典型的感知機單元遵循前饋模型,輸入通過權重處理后直接連接到輸出單元上。
如果人們手動選取足夠的有效特征,感知機幾乎可以做任何事。但一旦人工特征固定下來將會極大的限制感知機的學習能力。同時如何選擇一個好的、有效的特征也是困擾人們的難點。這對于感知機來說是毀滅性的,由于感知機將所有的注意力放在了模式識別上而忽視了變換過程。Minsky和Papert的"群體不變性理論"指出無法通過學習來識別出一組變化中的變換過程。為了處理這樣的變換,感知機需要利用多特征單元來識別出變換。而這模式識別中最為復雜的一步則需要手工來完成特征提取,而不是學習。
沒有隱藏層的神經網絡在為輸入輸出映射建模的過程中具有很大的局限性。而更多層的線性單元似乎也沒有幫助,因為線性的疊加依舊是線性的。固定的非線性輸出也不足以建立復雜的映射關系。所以在感知機的基礎上我們需要建立多層具有適應性非線性的隱藏單元網絡。但我們該如何訓練這樣的網絡呢?我們需要有效的方法來調整所有層而不僅僅是最后一層的權重。這十分困難,因為學習隱藏層的權重就等同于學習特征,但沒人會告訴你每個隱藏單元應該做什么。這就需要更先進的結構來處理了!
2.卷積神經網絡(Convolutional Neural Networks)
機器學習領域對于目標識別和檢測進行了多年的探索,問題始終懸而未決的原因在于以下問題始終困擾著物體的視覺識別:
分割、遮擋問題
光照變化問題
扭曲和形變問題
同一類物體在功能性區別下的外形變化
視角不同帶來的困難
維度尺度帶來的問題
這些問題一直困擾著傳統的模式識別。人們闡釋手工創造各種各樣的特征來描述物體的特征,但結果總不盡如人意。熱別是在物體識別領域,輕微的變化就會造成結果的巨大差別。
圖 卷積網絡的可視化圖形
在感知機和多層感知機的基礎上,人們提出了一種新的網絡結構——卷積神經網絡。利用卷積神經網絡可以對一些特征的檢測進行共享,并在尺度和位置和方向上具有一定的不變性。較早的著名例子就是1998年Yann LeCun提出的一個稱為LeNet的網絡進行手寫字符識別獲得了巨大的成功。下圖是LeNet的主要結構:一個包括卷積、池化和全連接的六層網絡結構。
它利用反向傳播算法來對隱藏層的單元權重進行訓練,并在每個卷積層中實現了卷積操作的(卷積核)權值共享,并引入池化層實現了特征的縮聚(后面的網絡層具有較大的感受野),最后通過全連接層來實現輸出。
而后時間來到了ILSVRC2012年的比賽,由ImageNet提供了120萬張的高清訓練數據,目的是訓練一個可以分類出圖像屬于一千類中每一類的概率的模型,并以此來進行圖像的識別。Hinton的學生Alex Krizhevsky最后奪魁。在LeNet的基礎上改進了神經網絡,訓練出了一個具有7個隱藏層深度網絡,更深更強大的AlexNet,并引入了GPU進行并行訓練,極大的提高了深度學習模型的訓練效率。自此GPU開始進入了廣大機器學習研究者的視野中。遠超過第二名的成績展示了深度學習的強大魅力,也使得深度學習開始走入了高速發展的快車道中。
3.循環神經網絡(Recurrent Neural Network)
循環神經網絡主要用于處理序列數據。在機器學習領域,序列模型一般利用序列數據作為輸入,來訓練序列模型用于預測序列數據的下一項。在循環神經網絡之前主要使用無記憶模型處理這類任務。
循環神經網絡是一種十分有力的武器,它包含了兩個重要的特點。首先擁有一系列隱含狀態的分布可以高效的存儲過去的信息;其次它具有非線性動力學可以允許它以復雜的方式更新隱藏狀態。在足夠的時間和神經元數量下,RNN甚至可以計算出計算機能計算的任何東西。它們甚至會表現出振動、牽引和混沌的行為。
然而循環神經網絡的訓練復雜,需要面對梯度消失或者爆炸的問題。由于訓練的RNN是一個很長的序列模型,訓練過程中的梯度十分容易出現問題。即使在很好的初值下,它也很難檢測到目前的目標和先前很多步前輸入間的聯系,所以循環神經網絡處理長程依賴性還十分困難。
目前主要有四種有效的方式實現循環神經網絡,主要包括長短時記憶(Long Short Term Memory),海森自由優化方法(Hessian Free Optimization),回聲狀態網絡(Echo State Networks)以及利用動量的初始化(Good initialization with momentum)
4?.長短時記憶網絡(Long/Short Term Memory Network)
Hochreiter和Schmidhuber(1997)通過構建長短時記憶網絡(LSTM:Long Short Term Memory),解決了RNN長時間記憶(如數百個時間步)的問題。 他們使用相互作用的邏輯單元和線性單元來設計專門的存儲細胞(Memory Cell)。 當“寫入”門打開時,信息就可以進入存儲細胞。 只要“保持”門處于開啟狀態,信息就會一直保留在存儲細胞中。開啟“讀取”門就可以從細胞中讀取信息:RNN特別適合用于手寫草書識別這樣的任務。通常會以筆尖坐標x,y以及表示筆是向上還是向下的參數p作為輸入,輸出則是一段字符序列。Graves和Schmidhuber(2009)將LSTM結合到RNN中,得到了當前草書識別的最佳結果。 不過,他們使用小圖像序列而非筆尖坐標序列作為輸入。
5. Hopfield網絡
帶有非線性單元的循環網絡通常是很難分析的,它們會以許多不同的方式表現出來:穩定狀態,振蕩,或遵循不可預測的混沌軌跡。 Hopfield網絡由二進制閾值單元反復連接組成。1982年,約翰·霍普菲爾德認識到如果這種連接是對稱的,那就存在一個全局的能量函數。整個網絡每個二進制單元的“配置”都對應了能量的多與少,二進制單元的閾值決策規則會讓網絡的配置朝著能量函數最小化的方向進行。 使用這種類型的計算的一種簡潔方法是使用存儲器作為神經網絡的能量最小值,使用能量極小值的記憶提供了一個內存關聯存儲器(CAM) 。項目只用知道其內容的一部分便可實現訪問,可以有效應對硬件損壞的情況。
每當我們記憶一次配置,我們希望得到一個新的能量最小值。 但是,一旦同時存在兩個最小值,怎么辦? 這就限制了Hopfield網絡的能力。 那么我們如何增加Hopfield網絡的能力呢? 物理學家們喜歡用已有的數學知識去解釋大腦的工作原理。 許多關于Hopfield網絡及其存儲能力的論文在物理學期刊上發表。最終,伊麗莎白·加德納(Elizabeth Gardner)發現了一個更好的存儲規則,它使用權重的全部容量。 她并不一次存儲所有向量,而是多次循環訓練集,并利用感知器收斂過程來訓練每個單元,使其具有正確的狀態,給定該向量中所有其他單元的狀態。 統計學家稱這種技術為“擬似然估計”。
Hopfield網絡還有另一種計算角色。 我們并不用網絡來存儲記憶,而是用它來構建感官輸入的演繹,用可見單元表示輸入,用隱層節點的狀態表示演繹,用能量表示演繹的好壞。
6?.玻爾茲曼機(Boltzmann Machine Network)
玻爾茲曼機是一種隨機遞歸神經網絡, 它可以被看作是Hopfield網絡隨機生成的, 它也是第一批能夠學習內部表示、能夠表示和解決困難的組合學問題的神經網絡之一。
玻爾茲曼機學習算法的學習目標是最大化玻爾茲曼機分配給訓練集中的二進制向量的概率乘積。這相當于最大化了玻爾茲曼機分配給訓練向量的對數概率之和。如果我們1)讓網絡在沒有外部輸入的情況下穩定到N不同時間平穩分布; 2)每次采樣一次可見向量,那也可以理解為最大化我們得到N個樣本的概率。
2012年,Salakhutdinov和Hinton提出了玻爾茲曼機的高效小批量學習程序。 對于正向,首先將隱藏概率初始化為0.5,然后將可見單元上的數據向量進行固定,然后并行更新所有隱藏單元,直到使用平均場更新進行收斂。 在網絡收斂之后,為每個連接的單元對記錄PiPj,并在最小批量中對所有數據進行平均。 對于反向:首先保留一組“幻想粒子”,每個粒子的值都是全局配置。 然后依次更新每個幻想粒子中的所有單元幾次。 對于每個連接的單元對,在所有的幻想粒子上平均SiSj。
在普通玻爾茲曼機中,單元的隨機更新是有序的。 有一個特殊的體系結構允許更有效的交替并行更新(層內無連接,無跨層連接)。 這個小批量程序使得玻爾茲曼機的更新更加并行化。 這就是所謂的深玻爾茲曼機器(DBM),一個帶有很多缺失連接的普通玻爾茲曼機。
2014年,Salakhutdinov和Hinton為他們的模型提出了更新,稱之為受限玻爾茲曼機(Restricted Boltzmann Machines)。 他們限制連通性使得推理和學習變得更簡單,隱藏單元只有一層,隱藏單元之間沒有連接。 在受限玻爾茲曼機中,當可見單元被固定時,只需要一步就能達到熱平衡。 另一個有效的小批量RBM學習程序是這樣的: 對于正向,首先將可見單元的數據向量固定。 然后計算所有可見和隱藏單元對的
7. 深度信念網絡(Deep Belief Network)
反向傳播被認為是人工神經網絡的標準方法,在處理數據后,計算每個神經元的誤差貢獻。但是,使用反向傳播也存在一些很明顯的問題。首先,它需要的數據是要標注訓練好的,但實際生活中幾乎所有的數據都是沒有標注過的。其次,其學習的延展性不好,這意味著在具有多個隱藏層的網絡中,它的學習時間是非常慢的。第三,它很可能會被陷在一個局部最優的位置,這對于深度網絡來說,遠不是最優解。
為了克服反向傳播的上述局限性,研究人員已經考慮使用無監督學習方法。這有助于保持使用梯度法調整權重的效率和簡單性,同時也可以用于對感覺輸入的結構進行建模。尤其是可以通過調整權重來使得生成模型的輸入概率最大化。那么問題就來了,我們應該學習什么樣的生成模型?它能像Boltzmann機器那樣以能量為基礎嗎?它是一個非常理想的由神經元組成的因果模型,還是兩者的混合?
信念網絡(belief net)是由隨機變量構成的有向無環圖。用信念網絡,我們要觀察的一些變量和想要解決二個問題是:推理的問題——推斷未觀測的狀態變量,以及學習的問題——調整變量之間的相互作用,使網絡更容易生成訓練數據。
早期的圖形模型使用專家來定義圖形結構和條件概率。當時這些圖形是稀疏連接的;因此,研究人員最初專注于做正確的推斷,而不是學習。神經網絡是以學習為中心的,自己死記硬背的知識并不酷,因為知識來自于學習訓練數據。神經網絡的目的不是為了便于解釋,也不是為了讓推理變得簡單。但即便如此,還是有神經網絡版本的信念網絡。
由隨機二元神經元組成的生成神經網絡有兩種。一個是基于能量的,在此基礎上,我們利用對稱連接將二元隨機神經元連接到一個波耳茲曼機器上。另一個是基于因果關系,我們在一個有向無環圖中連接二元隨機神經元,得到一個s型信念網絡。這兩種類型的具體描述不再贅述。
8.深度自動編碼器(DeepAuto-encoders)
最后,讓我們討論一下deep auto-encoders。由于一些原因,它們看起來總是很好地進行非線性降維,因為它們提供了兩種方式的靈活映射。在訓練目標的數量上,學習時間是線性的(或更好的)。最終的編碼模型是相當緊湊快速的。然而,利用反向傳播來優化深度自動編碼器是非常困難的。初始權值小,后傳播梯度消失。我們現在有了更好的方法來優化它們:要么使用無監督的分層預訓練,要么就像在回聲狀態網絡中一樣小心地初始化權重。
對于預訓練任務,主要有三種不同類型的shallow auto-encoders:
RBM
去噪自動編碼器
壓縮自動編碼器
簡單地說,現在有許多不同的方法來對特性進行逐層預訓練。對于沒有大量標記案例的數據集,預訓練有助于后續的鑒別學習。對于非常大的、已標記的數據集,初始化在監督學習中使用無監督預訓練的權值是不必要的,即使對于深網也是如此。所以預訓練是初始化深網權重的最優先方法,當然現在還有其他方法。但是如果我們讓網絡變得更大,我們還將需要再次訓練!
說了這么多...
神經網絡是有史以來最美麗的編程范例之一。在傳統的編程方法中,我們告訴計算機要做什么,將大問題分解成許多小的、精確定義的任務,計算機就可以輕松地執行這些任務。相比之下,在神經網絡中,我們不會告訴計算機如何解決我們的問題。相反,它從觀察數據中學習,找出自己解決問題的方法。
今天,深度神經網絡和深度學習在計算機視覺、語音識別、自然語言處理等許多重要問題上都取得了令人矚目的成績。它們廣泛應用在了Google、微軟和Facebook等公司的部署中。
希望這篇文章對你學習神經網絡的核心概念能有所幫助!
-
神經網絡
+關注
關注
42文章
4771瀏覽量
100772 -
機器學習
+關注
關注
66文章
8418瀏覽量
132646
原文標題:作為機器學習研究者,你需要了解的八種神經網絡結構
文章出處:【微信號:thejiangmen,微信公眾號:將門創投】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論