機器學習必知的八大神經網路架構

摘要: 機器學習八大神經網路架構的分類和歷史發展。

原文:click.aliyun.com/m/4037

為什麼需要機器學習?

有些任務直接編碼較為複雜,我們不能處理所有的細微之處和簡單編碼,因此,機器學習很有必要。相反,我們向機器學習演算法提供大量數據,讓演算法不斷探索數據並構建模型來解決問題。比如:在新的雜亂照明場景內,從新的角度識別三維物體;編寫一個計算信用卡交易詐騙概率的程序。

機器學習方法如下:它沒有為每個特定的任務編寫相應的程序,而是收集大量事例,為給定輸入指定正確輸出。演算法利用這些事例產生程序。該程序與手寫程序不同,可能包含數百萬的數據量,也適用於新事例以及訓練過的數據。若數據改變,程序在新數據上訓練且被更新。大量的計算比支付手寫程序要便宜的多。

機器學習的應用如下:

1.模式識別:識別實際場景的面部或表情、語言識別。

2.識別異常:信用卡交易順序異常,核電廠感測器讀數模式異常。

3.預測:未來股價或貨幣匯率,個人觀影喜好。

什麼是神經網路?

神經網路是一種通用機器學習模型,是一套特定的演算法集,在機器學習領域掀起了一場變革,本身就是普通函數的逼近,可以應用到任何機器學習輸入到輸出的複雜映射問題。一般來說,神經網路架構可分為3類:

1.前饋神經網路:是最常見的類型,第一層為輸入,最後一層為輸出。如果有多個隱藏層,則稱為「深度」神經網路。它能夠計算出一系列事件間相似轉變的變化,每層神經元的活動是下一層的非線性函數。

2.循環神經網路:各節點之間構成循環圖,可以按照箭頭的方向回到初始點。循環神經網路具有複雜的動態,難以訓練,它模擬連續數據,相當於每個時間片段具有一個隱藏層的深度網路,除了在每個時間片段上使用相同的權重,也有輸入。網路可以記住隱藏狀態的信息,但是很難用這點來訓練網路。

3.對稱連接網路:和循環神經網路一樣,但單元間的連接是對稱的(即在兩個方向的連接權重相同),它比循環神經網路更容易分析,但是功能受限。沒有隱藏單元的對稱連接的網路被稱為「Hopfiels網路」,有隱藏單元的對稱連接的網路則被稱為「波茲曼機器」。

一、感知機(Perceptron)

作為第一代神經網路,感知機是只有一個神經元的計算模型。首先將原始輸入矢量轉化為特徵矢量,再用手寫程序定義特徵,然後學習如何對每個特徵加權得到一個標量,如果標量值高於某一閾值,則認為輸入矢量是目標類的一個積極樣例。標準的感知機結構是前饋模型,即輸入傳送到節點,處理後產生輸出結果:從底部輸入,頂部輸出,如下圖所示。但也有其局限性:一旦確定了手寫編碼特徵,在學習上就受到了較大限制。這對感知器來說是毀滅性的,儘管轉換類似於翻譯,但是模式識別的重點是識別模式。如果這些轉換形成了一個組,學習的感知器部分不能學會識別,所以需要使用多個特徵單元識別子模式的轉換。

沒有隱藏單元的網路在輸入輸出映射建模上也有很大局限性。增加線性單元層也解決不了,因為線性疊加依然是線性的,固定的非線性輸出也不能建立這種映射。因此需要建立多層自適應的非線性隱藏單元。

二、卷積神經網路(Convolutional Neural Network)

一直以來,機器學習研究廣泛集中在對象檢測上,但仍有諸多因素使其難以

識別對象:1.對象分割、遮擋問題;2.照明影響像素強度;3.物體以各種不同的形式展現;4.相同功能的對象具有不同的物理形狀;5.視覺不同帶來的變化;6.維度跳躍問題。

複製特徵方法是當前CNN用於目標檢測的主要方法,大規模的複製不同位置上相同的特徵檢測圖,大大減少了要學習的自由參數數量。它使用不同的特徵類型,每種類型都有自己的複製檢測圖,也允許以各種方式表示每個圖像塊。

CNN可用於手寫數字識別到3D對象識別等,但從彩色圖像中識別對象比手寫數字識別要複雜,它的類別、像素是數字的100倍(1000 vs 100,256*256彩色vs28*28灰度)。

2012年的ILSVRC-2012競賽中的ImageNet提供一個包含120萬張高解析度訓練圖像的數據集。測試圖像沒有標註,參賽者需要識別圖像中對象的類型。獲勝者 Alex Krizhevsky開發了一個深度卷積神經網路,除了一些最大池化層,架構還有7個隱藏層,前面都是卷積層,最後2層是全局連接。激活函數在每個隱藏層都是線性單元,比邏輯單元速度更快,還使用競爭性規範標準抑制隱藏活動,有助於強度變化。硬體上,在兩個Nvidia GTX 580 GPU(超過1000個快速內核)上使用一個高效卷積網路實現,非常適合矩陣乘法,具有很高的內存帶寬。

三、循環神經網路( Recurrent Neural Network

循環神經網路(RNN)有兩個強大的屬性可以計算任何計算機計算出來的東西:(1)允許存儲大量有效信息的分散式隱藏狀態(2)用複雜的方式允許更新隱藏狀態的非線性動態。RNN強大的計算能力和梯度消失(或爆炸)使其很難訓練。通過多層反向傳播時,若權重很小,則梯度呈指數縮小;若權重很大,則梯度呈指數增長。典型的前饋神經網路的一些隱藏層可以應對指數效應,另一方面,在長序列RNN中,梯度容易消失(或爆照),即使有好的初始權重,也很難檢測出當前依賴於多個時間輸入的目標輸出因此很難處理遠程依賴性。

學習RNN的方法如下:

1.長短期記憶:用具有長期記憶值的小模塊製作RNN。

2.Hessian Free Optimization:使用優化器處理梯度消失問題。

3.回聲狀態網路:初始化輸入→隱藏和隱藏→隱藏和輸出→隱藏鏈接,使隱藏狀態有一個巨大的弱耦合振蕩器儲備,可以選擇性的由輸入驅動。

4.用動量初始化:和回聲狀態網路一樣,再用動量學習所有連接。

四、長短期記憶網路(Long/Short Term Memory Network

Hochreiter & Schmidhuber(1997年)構建了長短期記憶網路,解決了獲取RNN長時間記憶問題,使用乘法邏輯線性單元設計存儲單元,只要保持「寫入」門打開,信息就會寫入並保持在單元中,也可以打開「讀取」門從中獲取數據。

RNN可以閱讀行書,筆尖的輸入坐標為(x,y,p),p代表筆是向上還是向下,輸出則為一個字元序列,使用一系列小圖像作為輸入而不是筆坐標。Graves & Schmidhuber(2009年)稱帶有LSTM的RNN是閱讀行書的最佳系統。

五、霍普菲爾德網路(Hopfield Networks

非線性循環網路有很多種表現方式,較難分析:能達到穩定、震蕩或餛飩狀態這三種表現形式。Hopfield網路是由有循環連接的二進位閾值單元組成。1982年,約翰·霍普菲爾德發現,如果連接對稱,則存在一個全局能量函數,整個網路的每個二進位「結構」都有能量,而二進位閾值決策規則使網路為能量函數設置一個最小值。使用這種計算類型最簡單的方法是將記憶作為神經網路的能量最小值。使用能量最小值表示記憶給出了一個內容可尋內存,可通過了解局部內容來訪問整個項目。

每記憶一次配置,都希望能產生一個能量最小值。但若有兩個最小值就會限制Hopfield網路容量。伊麗莎白·加德納發現有一個更好的存儲規則,它使用了所有的權重。而不是試圖一次存儲多個矢量,她通過訓練集進行多次循環,並用感知器收斂程序訓練每個單元,使該矢量的所有其它單元具有正確的狀態。

六、玻爾茲曼機(Boltzmann Machine Network

玻爾茲曼機是一種隨機循環神經網路,可以被看作是Hopfield網路的隨機生成產物,是最先學習內部representations的神經網路之一。該演算法旨在最大限度地提高機器在訓練集中分配給二進位矢量的概率的乘積,相當於最大化其分配給訓練矢量的對數概率之和,方法如下:(1)網路沒有外部輸入時,使網路在不同時間分布穩定;(2)每次對可見矢量採樣。

2012年,Salakhutdinov和Hinton為玻爾茲曼機寫了有效的小批量學習程序。2014年將模型更新,稱之為受限玻爾茲曼機,詳情請查看原文。

七、深度信念網路(Deep Belief Network

反向傳播,是人工神經網路計算處理一批數據後每個神經元的誤差分布的標準方法,但是也存在一些問題。首先要標註訓練數據,但幾乎所有數據都沒有標註;其次,學習時間不足,這意味著隱藏層數較多的網路較慢;第三,可能會使局部陷入最不利局面。因此,對於深度網路來說這遠遠不夠。

無監督學習方法克服了反向傳播的限制,使用梯度方法調整權重有助於保持架構的效率和簡單性,還可以將它用於對感官輸入結構建模。特別的是,它調整權重,將產生感官輸入的生成模型概率最大化。信念網路是由隨機變數組成的有向非循環圖,可推斷未觀測變數的狀態,還可以調整變數間的交互,使網路更可能產生訓練數據。

早期圖形模型是專家定義圖像結構和條件概率,這些圖形是稀疏連接的,他們專註於做正確的推論,而不是學習。但對於神經網路來說,學習是重點,其目的不在於可解釋性或稀疏連接性使推斷變得更容易。

八、深度自動編碼器(Deep Auto-encoders

該架構提供了兩種映射方式,好像是一個做非線性降維非常好的方法,它在訓練事例的數量上是線性的(或更好的),而最終編碼模型相當緊湊和快速。然而,使用反向傳播優化深度自動編碼器很困難,若初始權重較小,反向傳播梯度會消失。我們使用無監督逐層預訓練或像回聲狀態網路一樣認真的初始化權重。

對於預訓練任務有三種不同類型的淺自動編碼器:(1)RBM作為自動編碼器;(2)去噪自動編碼器;(3)壓縮自動編碼器。對於沒有大量標註的數據集,預訓練有助於後續的判別式學習。即便是深度神經網路,對於大量的標註數據集,無監督訓練對權重初始化並不是必要的,預訓練是初始化深度網路權重的第一個好方法,現在也有其它方法。但如果擴大網路,需要再次做預訓練。

總結

傳統的編程方法是我們告訴計算機做什麼,將大問題分解成很多小而精確的且計算機可以輕鬆執行的任務。神經網路則不需要告訴計算機如何解決問題,而是從觀測到的數據中學習,找到解決問題的辦法。

以上為譯文。

本文由阿里云云棲社區組織翻譯。

文章原標題《top-10-ted-talks-data-scientists-machine-learning》,

譯者:Mags,審校:袁虎。

更多技術乾貨敬請關注云棲社區知乎機構號:阿里云云棲社區 - 知乎

推薦閱讀:

BAT機器學習面試1000題系列(131-135題)
谷歌大腦提出新型激活函數Swish惹爭議:可直接替換並優於ReLU?(附機器之心測試)
我搭的神經網路不work該怎麼辦!看看這11條新手最容易犯的錯誤
學習筆記 | 吳恩達之神經網路和深度學習
Python · 神經網路(二*)· 層

TAG:架构 | 函数 | 神经网络 |