1. 程式人生 > >ARCore之路-計算機視覺之機器學習(三)

ARCore之路-計算機視覺之機器學習(三)

一、人腦機制

  人腦是一個複雜且功能強大的生物結構,其最主要的神經細胞是構成神經系統的基本單元,稱之為生物神經元,簡稱神經元。神經元主要由三部分構成:
  (1)細胞體;
  (2)軸突;
  (3)樹突。
如下圖所示:

DavidWang原創
  突觸是神經元之間相互連線的介面部分,即一個神經元的神經末梢與另一個神經元的樹突相接觸的交介面,位於神經元的神經末梢尾端。突觸是軸突的終端。大腦可視作為1000多億神經元組成的神經網路。神經元的資訊傳遞和處理是一種電化學活動,樹突由於電化學作用接受外界的刺激,通過胞體內的活動體現為軸突電位,當軸突電位達到一定的值則形成神經脈衝或動作電位,再通過軸突末梢傳遞給其它的神經元。從控制論的觀點來看,這一過程可以看作一個多輸入單輸出非線性系統的動態過程。神經元具有以下生物功能:
  • (1)時空整合功能
  • (2)興奮與抑制狀態
  • (3)結構的可塑性
  • (4)脈衝與電位訊號的轉換
  • (5)突觸延期和不應期
  • (6)學習、遺忘和疲勞
      
      人類進行思考,就是一個群體思考,每個神經細胞進行獨立執行,和其他N個細胞相連線,進行訊號接收和傳遞,且每次接收,都會影響細胞自身狀態,這也是記憶的一部分由來,整體的思考,就是一千多億神經細胞互相交叉影響形成的複雜電化學訊號。

二、深度學習

(一)、深度學習概述

  深度學習(Deep Learning, DL)由Hinton等人於2006年提出,是機器學習(MachineLearning, ML)的一個新領域。深度學習被引入機器學習使其更接近於最初的目標----人工智慧(AI,Artificial Intelligence)。深度學習是學習樣本資料的內在規律和表示層次,這些學習過程中獲得的資訊對諸如文字、影象和聲音等資料的解釋有很大的幫助。它的最終目標是讓機器能夠像人一樣具有分析學習能力,能夠識別文字、影象和聲音等資料。

  深度學習是一個複雜的機器學習演算法,在語言和影象識別方面取得的效果,遠遠超過先前相關技術。它在搜尋技術、資料探勘、機器學習、機器翻譯、自然語言處理、多媒體學習、語音、推薦和個性化技術,以及其它相關領域都取得了很多成果。深度學習使機器模仿視聽和思考等人類的活動,解決了很多複雜的模式識別難題,使得人工智慧相關技術取得了很大進步。

  2006年,機器學習大師、多倫多大學教授Geoffrey Hinton及其學生Ruslan發表在世界頂級學術期刊《科學》上的一篇論文引發了深度學習在研究領域和應用領域的發展熱潮。這篇文獻提出了兩個主要觀點:(1)、多層人工神經網路模型有很強的特徵學習能力,深度學習模型學習得到的特徵資料對原資料有更本質的代表性,這將大大便於分類和視覺化問題;(2)、對於深度神經網路很難訓練達到最優的問題,可以採用逐層訓練方法解決。將上層訓練好的結果作為下層訓練過程中的初始化引數。在這一文獻中深度模型的訓練過程中逐層初始化採用無監督學習方式。

  2010年,深度學習專案首次獲得來自美國國防部門DARPA計劃的資助,參與方有美國NEC研究院、紐約大學和斯坦福大學。自2011年起,谷歌和微軟研究院的語音識別方向研究專家先後採用深度神經網路技術將語音識別的錯誤率降低20%-30%,這是長期以來語音識別研究領域取得的重大突破。2012年,深度神經網路在影象識別應用方面也獲得重大進展,在ImageNet評測問題中將原來的錯誤率降低了9%。同年,製藥公司將深度神經網路應用於藥物活性預測問題取得世界範圍內最好結果。2012年6月,Andrew NG帶領的科學家們在谷歌神祕的X實驗室建立了一個有16000個處理器的大規模神經網路,包含數十億個網路節點,讓這個神經網路處理大量隨機選擇的視訊片段。經過充分的訓練以後,機器系統開始學會自動識別貓的影象。這是深度學習領域最著名的案例之一,引起各界極大的關注。

  深度學習本質上是構建含有多隱層的機器學習架構模型,通過大規模資料進行訓練,得到大量更具代表性的特徵資訊。從而對樣本進行分類和預測,提高分類和預測的精度。這個過程是通過深度學習模型的手段達到特徵學習的目的。深度學習模型和傳統淺層學習模型的區別在於:(1)、深度學習模型結構含有更多的層次,包含隱層節點的層數通常在5層以上,有時甚至包含多達100層以上的隱藏節點;(2)、明確強調了特徵學習對於深度模型的重要性,即通過逐層特徵提取,將資料樣本在原空間的特徵變換到一個新的特徵空間來表示初始資料,這使得分類或預測問題更加容易實現。和人工設計的特徵提取方法相比,利用深度模型學習得到的資料特徵對大資料的豐富內在資訊更有代表性。

  在統計機器學習領域,值得關注的問題是如何對輸入樣本進行特徵空間的選擇。例如對行人檢測問題,需要尋找表現人體不同特點的特徵向量。一般來說,當輸入空間中的原始資料不能被直接分開時,則將其對映到一個線性可分的間接特徵空間。而此間接空間通常可由3種方式獲得:定義核函式對映到高維線性可分空間,如支援向量機(support vector machine,SVM)、手工編碼或自動學習。前2種方式對專業知識要求很高,且耗費大量的計算資源,不適合高維輸入空間。而第3種方式利用帶多層非線性處理能力的深度學習結構進行自動學習,經實際驗證被普遍認為具有重要意義與價值。深度學習結構相對於淺層學習結構[如SVM、人工神經網路(artificial neural networks,ANN),能夠用更少的引數逼近高度非線性函式。

  深度學習是機器學習領域一個新的研究方向,近年來在語音識別、計算機視覺等多類應用中取得突破性的進展。其動機在於建立模型模擬人類大腦的神經連線結構,在處理影象、聲音和文字這些訊號時,通過多個變換階段分層對資料特徵進行描述,進而給出資料的解釋。以影象資料為例,靈長類的視覺系統中對這類訊號的處理依次為:首先檢測邊緣、初始形狀、然後再逐步形成更復雜的視覺形狀,同樣地,深度學習通過組合低層特徵形成更加抽象的高層表示、屬性類別或特徵,給出資料的分層特徵表示。

  深度學習之所以被稱為"深度",是相對支援向量機(supportvector machine, SVM)、提升方法(boosting)、最大熵方法等"淺層學習"方法而言的,深度學習所學得的模型中,非線性操作的層級數更多。淺層學習依靠人工經驗抽取樣本特徵,網路模型學習後獲得的是沒有層次結構的單層特徵;而深度學習通過對原始訊號進行逐層特徵變換,將樣本在原空間的特徵表示變換到新的特徵空間,自動地學習得到層次化的特徵表示,從而更有利於分類或特徵的視覺化。深度學習理論的另外一個理論動機是:如果一個函式可用k層結構以簡潔的形式表達,那麼用k-1層的結構表達則可能需要指數級數量的引數(相對於輸入訊號),且泛化能力不足。

  深度學習演算法打破了傳統神經網路對層數的限制,可根據設計者需要選擇網路層數。它的訓練方法與傳統的神經網路相比有很大區別,傳統神經網路隨機設定引數初始值,採用BP演算法利用梯度下降演算法訓練網路,直至收斂。但深度結構訓練很困難,傳統對淺層有效的方法對於深度結構並無太大作用,隨機初始化權值極易使目標函式收斂到區域性極小值,且由於層數較多,殘差向前傳播會丟失嚴重,導致梯度擴散,因此深度學習過程中採用貪婪無監督逐層訓練方法。即在一個深度學習設計中,每層被分開對待並以一種貪婪方式進行訓練,當前一層訓練完後,新的一層將前一層的輸出作為輸入並編碼以用於訓練;最後每層引數訓練完後,在整個網路中利用有監督學習進行引數微調。

  深度學習的概念最早由多倫多大學的G. E.Hinton等於2006年提出,基於樣本資料通過一定的訓練方法得到包含多個層級的深度網路結構的機器學習過程。傳統的神經網路隨機初始化網路中的權值,導致網路很容易收斂到區域性最小值,為解決這一問題,Hinton提出使用無監督預訓練方法優化網路權值的初值,再進行權值微調的方法,拉開了深度學習的序幕。

  深度學習所得到的深度網路結構包含大量的單一元素(神經元),每個神經元與大量其他神經元相連線,神經元間的連線強度(權值)在學習過程中修改並決定網路的功能。通過深度學習得到的深度網路結構符合神經網路的特徵,因此深度網路就是深層次的神經網路,即深度神經網路(deep neural networks, DNN)。

  深度學習的概念起源於人工神經網路的研究,有多個隱層的多層感知器是深度學習模型的一個很好的範例。對神經網路而言,深度指的是網路學習得到的函式中非線性運算組合水平的數量。當前神經網路的學習演算法多是針對較低水平的網路結構,將這種網路稱為淺結構神經網路,如一個輸入層、一個隱層和一個輸出層的神經網路;與此相反,將非線性運算組合水平較高的網路稱為深度結構神經網路,如一個輸入層、三個隱層和一個輸出層的神經網路。

  深度學習的基本思想:假設有系統S,它有n層(S1,…,Sn),輸入為I,輸出為O,可形象的表示為:I=>S1=>S2=>… =>Sn=>O。為了使輸出O儘可能的接近輸入I,可以通過調整系統中的引數,這樣就可以得到輸入I的一系列層次特徵S1,S2,…,Sn。對於堆疊的多個層,其中一層的輸出作為其下一層的輸入,以實現對輸入資料的分級表達,這就是深度學習的基本思想。

(二)、深度學習在影象處理領域的發展

  對於影象的處理是深度學習演算法最早嘗試應用的領域。早在1989年,加拿大多倫多大學教授Yann LeCun就和他的同事們一起提出了卷積神經網路(Convolutional Neural Networks)。卷積神經網路也稱為CNN,它是一種包含卷積層的深度神經網路模型。通常一個卷積神經網路架構包含兩個可以通過訓練產生的非線性卷積層,兩個固定的子取樣層和一個全連線層,隱藏層的數量一般至少在5個以上。CNN的架構設計是受到生物學家Hubel和Wiesel的動物視覺模型啟發而發明的,尤其是模擬動物視覺皮層V1層和V2層中簡單細胞(Simple Cell)和複雜細胞(Complex Cell)在視覺系統的功能。起初卷積神經網路在小規模的應用問題上取得了當時世界最好成果。但在很長一段時間裡一直沒有取得重大突破。主要原因是由於卷積神經網路應用在大尺寸影象上一直不能取得理想結果,比如對於畫素數很大的自然影象內容的理解,這使得它沒有引起計算機視覺研究領域足夠的重視。直到2012年10月,Hinton教授以及他的兩個學生採用更深的卷積神經網路模型在著名的ImageNet問題上取得了世界最好成果,使得對於影象識別的研究工作前進了一大步。Hinton構建的深度神經網路模型是使用原始的自然影象訓練的,沒有使用任何人工特徵提取方法。

  自卷積神經網路提出以來,在影象識別問題上並沒有取得質的提升和突破,直到2012年Hinton構建的深度神經網路才取得驚人成果。這主要是因為對演算法的改進,在網路的訓練中引入了權重衰減的概念,有效的減小權重幅度,防止網路過擬合。更關鍵的是計算機計算能力的提升,GPU加速技術的發展,這使得在訓練過程中可以產生更多的訓練資料,使網路能夠更好的擬合訓練樣本。2012年國內網際網路巨頭百度公司將相關最新技術成功應用到人臉識別和自然影象識別問題,並推出了相應的產品。現在深度學習網路模型已能夠理解和識別一般的自然影象。深度學習模型不僅大幅提高了影象識別的精度,同時也避免了需要消耗大量的時間進行人工特徵提取的工作,使得線上運算效率大大提升。深度學習將有可能取代以往人工和機器學習相結合的方式成為主流影象識別技術。

(三)、深度學習的一些新進展

  由於深度學習能夠很好地解決一些複雜問題,近年來許多研究人員對其進行了深人研究,出現了許多有關深度學習研究的新進展。下面分別從初始化方法、網路層數和啟用函式的選擇、模型結構兩個個方面對近幾年深度學習研究的新進展進行介紹。
  1、 初始化方法、網路層數和啟用函式的選擇
  研究人員試圖搞清網路初始值的設定與學習結果之間的關係。Erhan等人在軌跡視覺化研究中指出即使從相近的值開始訓練深度結構神經網路,不同的初始值也會學習到不同的區域性極值,同時發現用無監督預訓練初始化模型的引數學習得到的極值與隨機初始化學習得到的極值差異比較大,用無監督預訓練初始化模型的引數學習得到的模型具有更好的泛化誤差。Bengio與Krueger等人指出用特定的方法設定訓練樣例的初始分佈和排列順序可以產生更好的訓練結果,用特定的方法初始化引數,使其與均勻取樣得到的引數不同,會對梯度下降演算法訓練的結果產生很大的影響。Glorot等人指出通過設定一組初始權值使得每一層深度結構神經網路的Jacobian矩陣的奇異值接近1,在很大程度上減小了監督深度結構神經網路和有預訓練過程設定初值的深度結構神經網路之間的學習結果差異。另外,用於深度學習的學習演算法通常包含許多超引數,一些常用的超引數,尤其適用於基於反向傳播的學習演算法和基於梯度的優化演算法。

  選擇不同的網路隱層數和不同的非線性啟用函式會對學習結果產生不同的影響。Glorot等人研究了隱層非線性對映關係的選擇和網路的深度相互影響的問題,討論了隨機初始化的標準梯度下降演算法用於深度結構神經網路學習得到不好的學習效能的原因。Glorot等人觀察不同非線性啟用函式對學習結果的影響,得到邏輯斯蒂S型啟用單元的均值會驅使頂層和隱層進入飽和,因而邏輯斯蒂S型啟用單元不適合用隨機初始化梯度演算法學習深度結構神經網路;並據此提出了標準梯度下降演算法的一種新的初始化方案來得到更快的收斂速度。Bengio等人從理論上說明深度學習結構的表示能力隨著神經網路深度的增加以指數的形式增加,但是這種增加的額外表示能力會引起相應區域性極值數量的增加,使得在其中尋找最優值變得困難。

  2、 模型結構

  (1)、DBN的結構及其變種:採用二值可見單元和隱單元RBM作為結構單元的DBN,在MNIST等資料集上表現出很好的效能。近幾年,具有連續值單元的RBM,如mcRBM、mPoT模型和spike—and-slab RBM等已經成功應用。Spike—and—slab RBM中spike表示以0為中心的離散概率分佈,slab表示在連續域上的稠密均勻分佈,可以用吉布斯取樣對spike—and—slab RBM進行有效推斷,得到優越的學習效能。

  (2)、和–積網路;深度學習最主要的困難是配分函式的學習,如何選擇深度結構神經網路的結構使得配分函式更容易計算? Poon等人提出一種新的深度模型結構----和–積網路(sum—product network,SPN),引入多層隱單元表示配分函式,使得配分函式更容易計算。SPN是有根節點的有向無環圖,圖中的葉節點為變數,中間節點執行和運算與積運算,連線節點的邊帶有權值,它們在Caltech-101和Olivetti兩個資料集上進行實驗證明了SPN的效能優於DBN和最近鄰方法。

  (3)、基於rectified單元的學習:Glorot與Mesnil等人用降噪自編碼模型來處理高維輸入資料。與通常的S型和正切非線性隱單元相比,該自編碼模型使用rectified單元,使隱單元產生更加稀疏的表示。對於高維稀疏資料,Dauphin等人採用抽樣重構演算法,訓練過程只需要計算隨機選擇的很小的樣本子集的重構和重構誤差,在很大程度上提高了學習速度,實驗結果顯示提速了20倍。Glorot等人提出在深度結構神經網路中,在影象分類和情感分類問題中用rectified非線性神經元代替雙曲正切或S型神經元,指出rectified神經元網路在零點產生與雙曲正切神經元網路相當或者有更好的效能,能夠產生有真正零點的稀疏表示,非常適合本質稀疏資料的建模,在理解訓練純粹深度監督神經網路的困難,搞清使用或不使用無監督預訓練學習的神經網路造成的效能差異方面,可以看做新的里程碑;Glorot等人還提出用增加L1正則化項來促進模型稀疏性,使用無窮大的啟用函式防止演算法執行過程中可能引起的數值問題。在此之前,Nair等人提出在RBM環境中rectifed神經元產生的效果比邏輯斯蒂S型啟用單元好,他們用無限數量的權值相同但是負偏差變大的一組單元替換二值單元,生成用於RBM的更好的一類隱單元,將RBM泛化,可以用噪聲rectified線性單元(rectified linear units)有效近似這些S型單元。用這些單元組成的RBM在NORB資料集上進行目標識別以及在資料集上進行已標記人臉實際驗證,得到比二值單元更好的效能,並且可以更好地解決大規模畫素強度值變化很大的問題。

  (4)、卷積神經網路:研究了用生成式子抽樣單元組成的卷積神經網路,在MNIST數字識別任務和Cahech一101目標分類基準任務上進行實驗,顯示出非常好的學習效能。Huang等人提出一種新的卷積學習模型----區域性卷積RBM,利用物件類中的總體結構學習特徵,不假定影象具有平穩特徵,在實際人臉資料集上進行實驗,得到效能很好的實驗結果。

(四)、深度學習模型結構

  深度神經網路是由多個單層非線性網路疊加而成的,常見的單層網路按照編碼解碼情況分為3類:只包含編碼器部分、只包含解碼器部分、既有編碼器部分也有解碼器部分。編碼器提供從輸入到隱含特徵空間的自底向上的對映,解碼器以重建結果儘可能接近原始輸入為目標將隱含特徵對映到輸入空間。

  人的視覺系統對資訊的處理是分級的。從低階的提取邊緣特徵到形狀(或者目標等),再到更高層的目標、目標的行為等,即底層特徵組合成了高層特徵,由低到高的特徵表示越來越抽象。深度學習借鑑的這個過程就是建模的過程。

  深度神經網路可以分為3類,前饋深度網路(feed-forwarddeep networks, FFDN),由多個編碼器層疊加而成,如多層感知機(multi-layer perceptrons, MLP)、卷積神經網路(convolutionalneural networks, CNN)等。反饋深度網路(feed-back deep networks, FBDN),由多個解碼器層疊加而成,如反捲積網路(deconvolutionalnetworks, DN)、層次稀疏編碼網路(hierarchical sparse coding, HSC)等。雙向深度網路(bi-directionaldeep networks, BDDN),通過疊加多個編碼器層和解碼器層構成(每層可能是單獨的編碼過程或解碼過程,也可能既包含編碼過程也包含解碼過程),如深度玻爾茲曼機(deep Boltzmann machines, DBM)、深度信念網路(deep beliefnetworks, DBN)、棧式自編碼器(stacked auto-encoders, SAE)等。

  1、 前潰深度網路

  前饋神經網路是最初的人工神經網路模型之一。在這種網路中,資訊只沿一個方向流動,從輸入單元通過一個或多個隱層到達輸出單元,在網路中沒有封閉環路。典型的前饋神經網路有多層感知機和卷積神經網路等。F. Rosenblatt提出的感知機是最簡單的單層前向人工神經網路,但隨後M. Minsky等證明單層感知機無法解決線性不可分問題(如異或操作),這一結論將人工神經網路研究領域引入到一個低潮期,直到研究人員認識到多層感知機可解決線性不可分問題,以及反向傳播演算法與神經網路結合的研究,使得神經網路的研究重新開始成為熱點。但是由於傳統的反向傳播演算法,具有收斂速度慢、需要大量帶標籤的訓練資料、容易陷入區域性最優等缺點,多層感知機的效果並不是十分理想。1984年日本學者K. Fukushima等基於感受野概念,提出的神經認知機可看作卷積神經網路的一種特例。Y. Lecun等提出的卷積神經網路是神經認知機的推廣形式。卷積神經網路是由多個單層卷積神經網路組成的可訓練的多層網路結構。每個單層卷積神經網路包括卷積、非線性變換和下采樣3個階段,其中下采樣階段不是每層都必需的。每層的輸入和輸出為一組向量構成的特徵圖(feature map)(第一層的原始輸入訊號可以看作一個具有高稀疏度的高維特徵圖)。例如,輸入部分是一張彩色影象,每個特徵圖對應的則是一個包含輸入影象彩色通道的二維陣列(對於音訊輸入,特徵圖對應的是一維向量;對於視訊或立體影像,對應的是三維陣列);對應的輸出部分,每個特徵圖對應的是表示從輸入圖片所有位置上提取的特定特徵。

  (1)、單層卷積神經網路:卷積階段,通過提取訊號的不同特徵實現輸入訊號進行特定模式的觀測。其觀測模式也稱為卷積核,其定義源於由D. H. Hubel等基於對貓視覺皮層細胞研究提出的區域性感受野概念。每個卷積核檢測輸入特徵圖上所有位置上的特定特徵,實現同一個輸入特徵圖上的權值共享。為了提取輸入特徵圖上不同的特徵,使用不同的卷積核進行卷積操作。卷積階段的輸入是由n1個n2n3大小的二維特徵圖構成的三維陣列。每個特徵圖記為xi,該階段的輸出y,也是個三維陣列,由m1個m2m3大小的特徵圖構成。在卷積階段,連線輸入特徵圖xi和輸出特徵圖yj的權值記為wij,即可訓練的卷積核(區域性感受野),卷積核的大小為k2*k3,輸出特徵圖為yj。

  非線性階段,對卷積階段得到的特徵按照一定的原則進行篩選,篩選原則通常採用非線性變換的方式,以避免線性模型表達能力不夠的問題。非線性階段將卷積階段提取的特徵作為輸入,進行非線性對映R=h(y)。傳統卷積神經網路中非線性操作採用sigmoid、tanh 或softsign等飽和非線性(saturating nonlinearities)函式,近幾年的卷積神經網路中多采用不飽和非線性(non-saturating nonlinearity)函式ReLU(rectifiedlinear units)。在訓練梯度下降時,ReLU比傳統的飽和非線性函式有更快的收斂速度,因此在訓練整個網路時,訓練速度也比傳統的方法快很多。

  下采樣階段,對每個特徵圖進行獨立操作,通常採用平均池化(average pooling)或者最大池化(max pooling)的操作。平均池化依據定義的鄰域視窗計算特定範圍內畫素的均值PA,鄰域視窗平移步長大於1(小於等於池化視窗的大小);最大池化則將均值PA替換為最值PM輸出到下個階段。池化操作後,輸出特徵圖的解析度降低,但能較好地保持高解析度特徵圖描述的特徵。一些卷積神經網路完全去掉下采樣階段,通過在卷積階段設定卷積核視窗滑動步長大於1達到降低解析度的目的。

  (2)、卷積神經網路:將單層的卷積神經網路進行多次堆疊,前一層的輸出作為後一層的輸入,便構成卷積神經網路。其中每2個節點間的連線,代表輸入節點經過卷積、非線性變換、下采樣3個階段變為輸出節點,一般最後一層的輸出特徵圖後接一個全連線層和分類器。為了減少資料的過擬合,最近的一些卷積神經網路,在全連線層引入"Dropout"或"DropConnect"的方法,即在訓練過程中以一定概率P將隱含層節點的輸出值(對於"DropConnect"為輸入權值)清0,而用反向傳播演算法更新權值時,不再更新與該節點相連的權值。但是這2種方法都會降低訓練速度。在訓練卷積神經網路時,最常用的方法是採用反向傳播法則以及有監督的訓練方式。網路中訊號是前向傳播的,即從輸入特徵向輸出特徵的方向傳播,第1層的輸入X,經過多個卷積神經網路層,變成最後一層輸出的特徵圖O。將輸出特徵圖O與期望的標籤T進行比較,生成誤差項E。通過遍歷網路的反向路徑,將誤差逐層傳遞到每個節點,根據權值更新公式,更新相應的卷積核權值wij。在訓練過程中,網路中權值的初值通常隨機初始化(也可通過無監督的方式進行預訓練),網路誤差隨迭代次數的增加而減少,並且這一過程收斂於一個穩定的權值集合,額外的訓練次數呈現出較小的影響。

  (3)、卷積神經網路的特點:卷積神經網路的特點在於,採用原始訊號(一般為影象)直接作為網路的輸入,避免了傳統識別演算法中複雜的特徵提取和影象重建過程。區域性感受野方法獲取的觀測特徵與平移、縮放和旋轉無關。卷積階段利用權值共享結構減少了權值的數量進而降低了網路模型的複雜度,這一點在輸入特徵圖是高解析度影象時表現得更為明顯。同時,下采樣階段利用影象區域性相關性的原理對特徵圖進行子抽樣,在保留有用結構資訊的同時有效地減少資料處理量。

  CNN(convolutional neuralnetworks)是一種有監督深度的模型架構,尤其適合二維資料結構。目前研究與應用都較廣泛,在行人檢測、人臉識別、訊號處理等領域均有新的成果與進展。它是帶有卷積結構的深度神經網路,也是首個真正意義上成功訓練多層網路的識別演算法。CNN與傳統ANN 演算法的主要區別在於權值共享以及非全連線。權值共享能夠避免演算法過擬合,通過拓撲結構建立層與層間非全連線空間關係來降低訓練引數的數目,同時也是CNN的基本思想。CNN的實質是學習多個能夠提取輸入資料特徵的濾波器,通過這些濾波器與輸入資料進行逐層卷積及池化,逐級提取隱藏在資料中拓撲結構特徵。隨網路結構層層深入,提取的特徵也逐漸變得抽象,最終獲得輸入資料的平移、旋轉及縮放不變性的特徵表示。較傳統神經網路來說,CNN將特徵提取與分類過程同時進行,避免了兩者在演算法匹配上的難點。

  CNN主要由卷積層與下采樣層交替重複出現構建網路結構,卷積層用來提取輸入神經元資料的區域性特徵,下采樣層用來對其上一層提取的資料進行縮放對映以減少訓練資料量,也使提取的特徵具有縮放不變性。一般來說,可以選擇不同尺度的卷積核來提取多尺度特徵,使提取的特徵具有旋轉、平移不變性。輸入影象與可學習的核進行卷積,卷積後的資料經過啟用函式得到一個特徵圖。卷積層的特徵圖可以由多個輸入圖組合獲得,但對於同一幅輸入圖其卷積核引數是一致的,這也是權值共享的意義所在。卷積核的初始值並非隨機設定,而是通過訓練或者按照一定標準預先給定,如仿照生物視覺特徵用Gabor 濾波器進行預處理。下采樣層通過降低網路空間解析度來增強縮放不變性。

  CNN的輸出層一般採用線性全連線,目前最常用的就是Softmax 分類方法。CNN的引數訓練過程與傳統的人工神經網路類似,採用反向傳播演算法,包括前向傳播與反向傳播2個重要階段。

  CNN實際應用中會遇到諸多問題,如網路權值的預學習問題,收斂條件以及非全連線規則等,這些均需要實際應用中進一步解決與優化。

  卷積神經網路模型:在無監督預訓練出現之前,訓練深度神經網路通常非常困難,而其中一個特例是卷積神經網路。卷積神經網路受視覺系統的結構啟發而產生。第一個卷積神經網路計算模型是在Fukushima的神經認知機中提出的,基於神經元之間的區域性連線和分層組織影象轉換,將有相同引數的神經元應用於前一層神經網路的不同位置,得到一種平移不變神經網路結構形式。後來,LeCun等人在該思想的基礎上,用誤差梯度設計並訓練卷積神經網路,在一些模式識別任務上得到優越的效能。至今,基於卷積神經網路的模式識別系統是最好的實現系統之一,尤其在手寫體字元識別任務上表現出非凡的效能。LeCun的卷積神經網路由卷積層和子抽樣層兩種型別的神經網路層組成。每一層有一個拓撲圖結構,即在接收域內,每個神經元與輸入影象中某個位置對應的固定二維位置編碼資訊關聯。在每層的各個位置分佈著許多不同的神經元,每個神經元有一組輸入權值,這些權值與前一層神經網路矩形塊中的神經元關聯;同一組權值和不同輸入矩形塊與不同位置的神經元關聯。卷積神經網路是多層的感知器神經網路,每層由多個二維平面塊組成,每個平面塊由多個獨立神經元組成。為了使網路對平移、旋轉、比例縮放以及其他形式的變換具有不變性,對網路的結構進行一些約束限制:(1)、特徵提取:每一個神經元從上一層的區域性接收域得到輸入,迫使其提取區域性特徵。(2)、特徵對映:網路的每一個計算層由多個特徵對映組成,每個特徵對映都以二維平面的形式存在,平面中的神經元在約束下共享相同的權值集。(3)、子抽樣:該計算層跟隨在卷積層後,實現區域性平均和子抽樣,使特徵對映的輸出對平移等變換的敏感度下降。卷積神經網路通過使用接收域的區域性連線,限制了網路結構。卷積神經網路的另一個特點是權值共享,但是由於同一隱層的神經元共享同一權值集,大大減少了自由引數的數量。卷積神經網路本質上實現一種輸入到輸出的對映關係,能夠學習大量輸入與輸出之間的對映關係,不需要任何輸入和輸出之間的精確數學表示式,只要用已知的模式對卷積神經網路加以訓練,就可以使網路具有輸入輸出之間的對映能力。卷積神經網路執行的是有監督訓練,在開始訓練前,用一些不同的小隨機數對網路的所有權值進行初始化。

  卷積神經網路的訓練分為兩個階段:(1)、向前傳播階段:從樣本集中抽取一個樣本(X,Yp),將x輸入給網路,資訊從輸入層經過逐級變換傳送到輸出層,計算相應的實際輸出Op;(2)、向後傳播階段:也稱為誤差傳播階段。計算實際輸出Op與理想輸出Yp的差異。並按最小化誤差的方法調整權值矩陣。

  卷積神經網路的特徵檢測層通過訓練資料來進行學習,避免了顯式的特徵提取,而是隱式地從訓練資料中學習特徵,而且同一特徵對映面上的神經元權值相同,網路可以並行學習,這也是卷積神經網路相對於其他神經網路的一個優勢。權值共享降低了網路的複雜性,特別是多維向量的影象可以直接輸入網路這一特點避免了特徵提取和分類過程中資料重建的複雜度。

  卷積神經網路的成功依賴於兩個假設:(1)、每個神經元有非常少的輸入,這有助於將梯度在儘可能多的層中進行傳播;(2)、分層區域性連線結構是非常強的先驗結構,特別適合計算機視覺任務,如果整個網路的引數處於合適的區域,基於梯度的優化演算法能得到很好的學習效果。卷積神經網路的網路結構更接近實際的生物神經網路,在語音識別和影象處理方面具有獨特的優越性,尤其是在視覺影象處理領域進行的實驗,得到了很好的結果。

  2、 反饋深度網路

與前饋網路不同,反饋網路並不是對輸入訊號進行編碼,而是通過解反捲積或學習資料集的基,對輸入訊號進行反解。前饋網路是對輸入訊號進行編碼的過程,而反饋網路則是對輸入訊號解碼的過程。典型的反饋深度網路有反捲積網路、層次稀疏編碼網路等。以反捲積網路為例,M. D. Zeiler等提出的反捲積網路模型和Y. LeCun等提出的卷積神經網路思想類似,但在實際的結構構件和實現方法上有所不同。卷積神經網路是一種自底向上的方法,該方法的每層輸入訊號經過卷積、非線性變換和下采樣3個階段處理,進而得到多層資訊。相比之下,反捲積網路模型的每層資訊是自頂向下的,組合通過濾波器組學習得到的卷積特徵來重構輸入訊號。層次稀疏編碼網路和反捲積網路非常相似,只是在反捲積網路中對影象的分解採用矩陣卷積的形式,而在稀疏編碼中採用矩陣乘積的方式。

  (1)、單層反捲積網路:反捲積網路是通過先驗學習,對訊號進行稀疏分解和重構的正則化方法。

  (2)、反捲積網路:單層反捲積網路進行多層疊加,可得到反捲積網路。多層模型中,在學習濾波器組的同時進行特徵圖的推導,第L層的特徵圖和濾波器是由第L-1層的特徵圖通過反捲積計算分解獲得。反捲積網路訓練時,使用一組不同的訊號y,求解C(y),進行濾波器組f和特徵圖z的迭代交替優化。訓練從第1層開始,採用貪心演算法,逐層向上進行優化,各層間的優化是獨立的。

  (3)、反捲積網路的特點:反捲積網路的特點在於,通過求解最優化輸入訊號分解問題計算特徵,而不是利用編碼器進行近似,這樣能使隱層的特徵更加精準,更有利於訊號的分類或重建。

自動編碼器:對於一個給定的神經網路,假設其輸出等於輸入(理想狀態下),然後通過訓練調整其引數得到每一層的權重,這樣就可以得到輸入的幾種不同的表示,這些表示就是特徵。當在原有特徵的基礎上加入這些通過自動學習得到的特徵時,可以大大提高精確度,這就是自動編碼(AutoEncoder)。如果再繼續加上一些約束條件的話,就可以得到新的深度學習方法。比如在自動編碼的基礎上加上稀疏性限制,就可得到稀疏自動編碼器(Sparse AutoEncoder)。

  稀疏自動編碼器:與CNN不同,深度自動編碼器是一種無監督的神經網路學習架構。此類架構的基本結構單元為自動編碼器,它通過對輸入特徵X按照一定規則及訓練演算法進行編碼,將其原始特徵利用低維向量重新表示。自動編碼器通過構建類似傳統神經網路的層次結構,並假設輸出Y與輸入X相等,反覆訓練調整引數得到網路引數值。上述自編碼器若僅要求X≈Y,且對隱藏神經元進行稀疏約束,從而使大部分節點值為0或接近0的無效值,便得到稀疏自動編碼演算法。一般情況下,隱含層的神經元數應少於輸入X的個數,因為此時才能保證這個網路結構的價值。正如主成分分析(principal component analysis,PCA)演算法,通過降低空間維數去除冗餘,利用更少的特徵來儘可能完整的描述資料資訊。實際應用中將學習得到的多種隱層特徵(隱層數通常多個)與原始特徵共同使用,可以明顯提高演算法的識別精度。

  自動編碼器引數訓練方法有很多,幾乎可以採用任何連續化訓練方法來訓練引數。但由於其模型結構不偏向生成型,無法通過聯合概率等定量形式確定模型合理性。稀疏性約束在深度學習演算法優化中的地位越來越重要,主要與深度學習特點有關。大量的訓練引數使訓練過程複雜,且訓練輸出的維數遠比輸入的維數高,會產生許多冗餘資料資訊。加入稀疏性限制,會使學習到的特徵更加有價值,同時這也符合人腦神經元響應稀疏性特點。

  3、 雙向深度網路

  雙向網路由多個編碼器層和解碼器層疊加形成,每層可能是單獨的編碼過程或解碼過程,也可能同時包含編碼過程和解碼過程。雙向網路的結構結合了編碼器和解碼器2類單層網路結構,雙向網路的學習則結合了前饋網路和反饋網路的訓練方法,通常包括單層網路的預訓練和逐層反向迭代誤差2個部分,單層網路的預訓練多采用貪心演算法:每層使用輸入訊號IL與權值w計算生成訊號IL+1傳遞到下一層,訊號IL+1再與相同的權值w計算生成重構訊號I’L 映射回輸入層,通過不斷縮小IL與I’L間的誤差,訓練每層網路。網路結構中各層網路結構都經過預訓練之後,再通過反向迭代誤差對整個網路結構進行權值微調。其中單層網路的預訓練是對輸入訊號編碼和解碼的重建過程,這與反饋網路訓練方法類似;而基於反向迭代誤差的權值微調與前饋網路訓練方法類似。典型的雙向深度網路有深度玻爾茲曼機、深度信念網路、棧式自編碼器等。以深度玻爾茲曼機為例,深度玻爾茲曼機由R. Salakhutdinov等提出,它由多層受限玻爾茲曼機(restricted Boltzmann machine, RBM )疊加構成。

  (1)、受限玻爾茲曼機:玻爾茲曼機(Boltzmann machine, BM)是一種隨機的遞迴神經網路,由G. E.Hinton等提出,是能通過學習資料固有內在表示、解決複雜學習問題的最早的人工神經網路之一。玻爾茲曼機由二值神經元構成,每個神經元只取0或1兩種狀態,狀態1代表該神經元處於啟用狀態,0表示該神經元處於抑制狀態。然而,即使使用模擬退火演算法,這個網路的學習過程也十分慢。Hinton等提出的受限玻爾茲曼機去掉了玻爾茲曼機同層之間的連線,從而大大提高了學習效率。受限玻爾茲曼機分為可見層v以及隱層h,可見層和隱層的節點通過權值w相連線,2層節點之間是全連線,同層節點間互不相連。

  受限玻爾茲曼機一種典型的訓練方法:首先隨機初始化可見層,然後在可見層與隱層之間交替進行吉布斯取樣:用條件分佈概率P(h|v)計算隱層;再根據隱層節點,同樣用條件分佈概率P(v|h)來計算可見層;重複這一取樣過程直到可見層和隱層達到平穩分佈。而Hinton提出了一種快速演算法,稱作對比離差(contrastive divergence, CD)學習演算法。這種演算法使用訓練資料初始化可見層,只需迭代k次上述取樣過程(即每次迭代包括從可見層更新隱層,以及從隱層更新可見層),就可獲得對模型的估計。

  (2)、深度玻爾茲曼機:將多個受限玻爾茲曼機堆疊,前一層的輸出作為後一層的輸入,便構成了深度玻爾茲曼機。網路中所有節點間的連線都是雙向的。深度玻爾茲曼機訓練分為2個階段:預訓練階段和微調階段。在預訓練階段,採用無監督的逐層貪心訓練方法來訓練網路每層的引數,即先訓練網路的第1個隱含層,然後接著訓練第2,3,…個隱含層,最後用這些訓練好的網路引數值作為整體網路引數的初始值。預訓練之後,將訓練好的每層受限玻爾茲曼機疊加形成深度玻爾茲曼機,利用有監督的學習對網路進行訓練(一般採用反向傳播演算法)。由於深度玻爾茲曼機隨機初始化權值以及微調階段採用有監督的學習方法,這些都容易使網路陷入區域性最小值。而採用無監督預訓練的方法,有利於避免陷入區域性最小值問題。

  受限玻爾茲曼機(RBM,RestrictBoltzmann Machine):假設有一個二部圖(二分圖),一層是可視層v(即輸入層),一層是隱層h,每層內的節點之間設有連線。在已知v時,全部的隱藏節點之間都是條件獨立的(因為這個模型是二部圖),即p(h|v) = p(h1|v1) … p(hn|v)。同樣的,在已知隱層h的情況下,可視節點又都是條件獨立的,又因為全部的h和v滿足玻爾茲曼分佈,所以當輸入v的時候,通過p(h|v)可得到隱層h,得到h之後,通過p(v|h)又可以重構可視層v。通過調整引數,使得從隱層計算得到的可視層與原來的可視層有相同的分佈。這樣的話,得到的隱層就是可視層的另外一種表達,即可視層的特徵表示。若增加隱層的層數,可得到深度玻爾茲曼機(DBM,Deep Boltzmann Machine)。若在靠近可視層v的部分使用貝葉斯信念網,遠離可視層的部分使用RBM,那麼就可以得到一個深度信念網路(DBNs,Deep Belief Nets)。

  受限玻爾茲曼機模型是玻爾茲曼機(BM,BoltzmannMachine)模型的一種特殊形式,其特殊性就在於同層內的節點沒有連線,是以二部圖的形式存在。

  由於受限玻爾茲曼機是一種隨機網路,而隨機神經網路又是根植於統計力學的,所以受統計力學能量泛函的啟發引入了能量函式。在隨機神經網路中,能量函式是用來描述整個系統狀態的測度。網路越有序或概率分佈越集中,網路的能量就越小;反之,網路越無序或概率分佈不集中,那麼網路的能量就越大。所以當網路最穩定時,能量函式的值最小。

  深度信念神經網路:深度結構的訓練大致有無監督的訓練和有監督的訓練兩種,而且兩者擁有不一樣的模型架構。比如卷積神經網路就是一種有監督下的深度結構學習模型(即需要大量有標籤的訓練樣本),但深度信念網路是一種無監督和有監督混合下的深度結構學習模型(即需要一部分無標籤的訓練樣本和一部分有標籤的樣本)。

  一個典型的深度信念網路可看成多個受限玻爾茲曼機的累加,而DBNs則是一個複雜度較高的有向無環圖。

  深度信念網路在訓練的過程中,所需要學習的即是聯合概率分佈。在機器學習領域中,其所表示的就是物件的生成模型。如果想要全域性優化具有多隱層的深度信念網路是比較困難的。這個時候,可以運用貪婪演算法,即逐層進行優化,每次只訓練相鄰兩層的模型引數,通過逐層學習來獲得全域性的網路引數。這種訓練方法(非監督逐層貪婪訓練)已經被Hinton證明是有效的,並稱其為相對收斂(contrastive divergence)。

  深度信任網路模型:DBN可以解釋為貝葉斯概率生成模型,由多層隨機隱變數組成,上面的兩層具有無向對稱連線,下面的層得到來自上一層的自頂向下的有向連線,最底層單元的狀態為可見輸入資料向量。DBN由若干結構單元堆疊組成,結構單元通常為RBM。堆疊中每個RBM單元的可視層神經元數量等於前一RBM單元的隱層神經元數量。根據深度學習機制,採用輸入樣例訓練第一層RBM單元,並利用其輸出訓練第二層RBM模型,將RBM模型進行堆疊通過增加層來改善模型效能。在無監督預訓練過程中,DBN編碼輸入到頂層RBM後解碼頂層的狀態到最底層的單元實現輸入的重構。作為DBN的結構單元,RBM與每一層DBN共享引數。

  RBM是一種特殊形式的玻爾茲曼機(Boltzmannmachine,BM),變數之間的圖模型連線形式有限制,只有可見層節點與隱層節點之間有連線權值,而可見層節點與可見層節點及隱層節點與隱層節點之間無連線。BM是基於能量的無向圖概率模型。

  BM的典型訓練演算法有變分近似法、隨機近似法(stochastic approximation procedure,SAP)、對比散度演算法(contrastivedivergence,CD)、持續對比散度演算法(persistent contrastive divergence,PCD)、快速持續對比散度演算法(fastpersistent contrastive divergence,FPCD)和回火MCMC演算法等。

  堆疊自編碼網路模型:堆疊自編碼網路的結構與DBN類似,由若干結構單元堆疊組成,不同之處在於其結構單元為自編碼模型(auto—en—coder)而不是RBM。自編碼模型是一個兩層的神經網路,第一層稱為編碼層,第二層稱為解碼層。

  堆疊自編碼網路的結構單元除了自編碼模型之外,還可以使用自編碼模型的一些變形,如降噪自編碼模型和收縮自編碼模型等。降噪自編碼模型避免了一般的自編碼模型可能會學習得到無編碼功能的恆等函式和需要樣本的個數大於樣本的維數的限制,嘗試通過最小化降噪重構誤差,從含隨機噪聲的資料中重構真實的原始輸入。降噪自編碼模型使用由少量樣本組成的微批次樣本執行隨機梯度下降演算法,這樣可以充分利用圖處理單元(graphical processing unit,GPU)的矩陣到矩陣快速運算使得演算法能夠更快地收斂。

  收縮自編碼模型的訓練目標函式是重構誤差和收縮罰項(contraction penalty)的總和,通過最小化該目標函式使已學習到的表示C(x)儘量對輸入x保持不變。為了避免出現平凡解,編碼器權值趨於零而解碼器權值趨於無窮,並且收縮自編碼模型採用固定的權值,令解碼器權值為編碼器權值的置換陣。與其他自編碼模型相比,收縮自編碼模型趨於找到儘量少的幾個特徵值,特徵值的數量對應區域性秩和區域性維數。收縮自編碼模型可以利用隱單元建立複雜非線性流形模型。

  MKMs:受SVM演算法中核函式的啟發,在深度模型結構中加入核函式,構建一種基於核函式的深度學習模型。MKMs深度模型,如同深度信念網路(deep belief network,DBNs),反覆迭代核PCA 來逼近高階非線性函式,每一層核PCA 的輸出作為下一層核PCA 的輸入。作者模擬大型神經網路計算方法建立核函式族,並將其應用在訓練多層深度學習模型中。L層MKMs深度模型的訓練過程如下:

  (1)、去除輸入特徵中無資訊含量的特徵;

  (2)、重複L次:A、計算有非線性核產生特徵的主成分;B、去除無資訊含量的主成分特徵;

  (3)、採用Mahalanobis距離進行最近鄰分類。

  在引數訓練階段,採用核主成分分析法(kernelprincipal component analysis,KPCA)進行逐層貪婪無監督學習,並提取第k層資料特徵中的前nk 主成分,此時第k+1層便獲得第k層的低維空間特徵。為進一步降低每層特徵的維數,採用有監督的訓練機制進行二次篩選:首先,根據離散化特徵點邊緣直方圖,估計它與類標籤之間的互資訊,將nk 主成分進行排序;其次,對於不同的k 和w 採用KNN 聚類方法,每次選取排序最靠前的w驗證集上的特徵並計算其錯誤率,最終選擇錯誤率最低的w個特徵。該模型由於特徵選取階段無法平行計算,導致交叉驗證階段需耗費大量時間。據此,提出了一種改進方法,通過在隱藏層採用有監督的核偏最小二乘法(kernel partial least squares,KPLS)來優化此問題。

  DeSTIN:目前較成熟的深度學習模型大多建立在空間層次結構上,很少對時效性(temporal)有所體現。相關研究表明,人類大腦的執行模式是將感受到的模式與記憶儲存的模式進行匹配,並對下一時刻的模式進行預測,反覆進行上述步驟,這個過程包含了時空資訊。因此在深度結構中將時效性考慮在內,會更接近人腦的工作模式。DeSTIN便是基於這種理念被提出的。DeSTIN 是一種基於貝葉斯推理理論、動態進行模式分類的深度學習架構,它是一種區分性的層次網路結構。在該深度模型中,資料間的時空相關性通過無監督方式來學習。網路的每一層的每個節點結構一致,且包含多個聚類中心,通過聚類和動態建模來模擬輸入。每個節點通過貝葉斯信念推理輸出該節點信念值,根據信念值提取整個DeSTIN網路的模式特徵,最後一層網路輸出特徵可以輸入分類器如SVM中進行模式分類。

  DeSTIN 模型的每一個節點都用來學習一個模式時序,底層節點通過對輸入資料的時間與空間特徵進行提取,改變其信念值,輸入到下一層。由於每一個節點結構相同,訓練時可採樣平行計算,節約運算資源。該模型最重要的步驟就是信念值更新演算法。信念值更新演算法同時考慮了資料的時間與空間特徵。目前將時效性考慮在內的深度學習架構雖然不是很成熟,但也逐漸應用在不同領域,也是深度學習模型未來發展的一個新方向。

(五)、深度學習訓練演算法

  對深度結構神經網路採用隨機初始化的方法,基於梯度的優化使訓練結果陷入區域性極值,而找不到全域性最優值,並且隨著網路結構層次的加深,更難以得到好的泛化效能,使得深度結構神經網路在隨機初始化後得到的學習結果甚至不如只有一個或兩個隱層的淺結構神經網路得到的學習結果好。由於隨機初始化深度結構神經網路的引數得到的訓練結果和泛化效能都很不理想,在2006年以前,深度結構神經網路在機器學習領域文獻中並沒有進行過多討論。通過實驗研究發現,用無監督學習演算法對深度結構神經網路進行逐層預訓練,能夠得到較好的學習結果。最初的實驗對每層採用RBM生成模型,後來的實驗採用自編碼模型來訓練每一層,兩種模型得到相似的實驗結果。一些實驗和研究結果證明了無監督預訓練相比隨機初始化具有很大的優勢,無監督預訓練不僅初始化網路得到好的初始引數值,而且可以提取關於輸入分佈的有用資訊,有助於網路找到更好的全域性最優解。對深度學習來說,無監督學習和半監督學習是成功的學習演算法的關鍵組成部分,主要原因包括以下幾個方面:

  (1)、與半監督學習類似,深度學習中缺少有類標籤的樣本,並且樣例大多無類標籤;

  (2)、逐層的無監督學習利用結構層上的可用資訊進行學習,避免了監督學習梯度傳播的問題,可減少對監督準則函式梯度給出的不可靠更新方向的依賴;

  (3)、無監督學習使得監督學習的引數進入一個合適的預置區域內,在此區域內進行梯度下降能夠得到很好的解;

  (4)、在利用深度結構神經網路構造一個監督分類器時,無監督學習可看做學習先驗資訊,使得深度結構神經網路訓練結果的引數在大多情況下都具有意義;

  (5)、在深度結構神經網路的每一層採用無監督學習將一個問題分解成若干與多重表示水平提取有關的子問題,是一種常用的可行方法,可提取輸入分佈較高水平表示的重要特徵資訊。

  基於上述思想,Hinton等人在2006年引入了DBN並給出了一種訓練該網路的貪婪逐層預訓練演算法。貪婪逐層無監督預訓練學習的基本思想為:首先採用無監督學習演算法對深度結構神經網路的較低層進行訓練,生成第一層深度結構神經網路的初始引數值;然後將第一層的輸出作為另外一層的輸入,同樣採用無監督學習演算法對該層引數進行初始化。在對多層進行初始化後,用監督學習演算法對整個深度結構神經網路進行微調,得到的學習效能具有很大程度的提高。

  以堆疊自編碼網路為例,深度結構神經網路的訓練過程如下:
  (1)、將第一層作為一個自編碼模型,採用無監督訓練,使原始輸入的重建誤差最小;
  (2)、將自編碼模型的隱單元輸出作為另一層的輸入;
  (3)、按步驟(2)迭代初始化每一層的引數;
  (4)、採用最後一個隱層的輸出作為輸入施加於一個有監督的層(通常為輸出層),並初始化該層的引數;
  (5)、根據監督準則調整深度結構神經網路的所有引數,堆疊所有自編碼模型組成堆疊自編碼網路。

  基本的無監督學習方法在2006年被Hinton等人提出用於訓練深度結構神經網路,該方法的學習步驟如下:
  (1)、令h0(x)=x為可觀察的原始輸入x的最低階表示;
  (2)、對l=1,…,L,訓練無監督學習模型,將可觀察資料看做l-1階上表示的訓練樣例hl-1(x),訓練後產生下一階的表示hl(x)=Rl(hl-1(x)).

  隨後出現了一些該演算法的變形拓展,最常見的是有監督的微調方法,該方法的學習步驟如下所示:
  (1)、初始化監督預測器:a、用引數表示函式hL(x);b、將hL(x)作為輸入得到線性或非線性預測器;
  (2)、基於已標記訓練樣本對(x,y)採用監督訓練準則微調監督預測器,在表示階段和預測器階段優化引數。

  深度學習的訓練過程:

  1、自下向上的非監督學習:採用無標籤資料分層訓練各層引數,這是一個無監督訓練的過程(也是一個特徵學習的過程),是和傳統神經網路區別最大的部分。具體是:用無標籤資料去訓練第一層,這樣就可以學習到第一層的引數,在學習得到第n-1層後,再將第n-1層的輸出作為第n層的輸入,訓練第n層,進而分別得到各層的引數。這稱為網路的預訓練。

  2、自頂向下的監督學習:在預訓練後,採用有標籤的資料來對網路進行區分性訓練,此時誤差自頂向下傳輸。預訓練類似傳統神經網路的隨機初始化,但由於深度學習的第一步不是隨機初始化而是通過學習無標籤資料得到的,因此這個初值比較接近全域性最優,所以深度學習效果好很多程式上歸功於第一步的特徵學習過程。

  使用到的學習演算法包括:

  (1)、深度費希爾對映方法:Wong等人提出一種新的特徵提取方法----正則化深度費希爾對映(regularized deep Fisher mapping,RDFM)方法,學習從樣本空間到特徵空間的顯式對映,根據Fisher準則用深度結構神經網路提高特徵的區分度。深度結構神經網路具有深度非區域性學習結構,從更少的樣本中學習變化很大的資料集中的特徵,顯示出比核方法更強的特徵識別能力,同時RDFM方法的學習過程由於引入正則化因子,解決了學習能力過強帶來的過擬合問題。在各種型別的資料集上進行實驗,得到的結果說明了在深度學習微調階段運用無監督正則化的必要性。

  (2)、非線性變換方法:Raiko等人提出了一種非線性變換方法,該變換方法使得多層感知器(multi—layer perceptron,MLP)網路的每個隱神經元的輸出具有零輸出和平均值上的零斜率,使學習MLP變得更容易。將學習整個輸入輸出對映函式的線性部分和非線性部分儘可能分開,用shortcut權值(shortcut weight)建立線性對映模型,令Fisher資訊陣接近對角陣,使得標準梯度接近自然梯度。通過實驗證明非線性變換方法的有效性,該變換使得基本隨機梯度學習與當前的學習演算法在速度上不相上下,並有助於找到泛化效能更好的分類器。用這種非線性變換方法實現的深度無監督自編碼模型進行影象分類和學習影象的低維表示的實驗,說明這些變換有助於學習深度至少達到五個隱層的深度結構神經網路,證明了變換的有效性,提高了基本隨機梯度學習演算法的速度,有助於找到泛化性更好的分類器。

  (3)、稀疏編碼對稱機演算法:Ranzato等人提出一種新的有效的無監督學習演算法----稀疏編碼對稱機(sparse encoding symmetric machine,SESM),能夠在無須歸一化的情況下有效產生稀疏表示。SESM的損失函式是重構誤差和稀疏罰函式的加權總和,基於該損失函式比較和選擇不同的無監督學習機,提出一種相關的迭代線上學習演算法,並在理論和實驗上將SESM與RBM和PCA進行比較,在手寫體數字識別MNIST資料集和實際影象資料集上進行實驗,表明該方法的優越性。

  (4)、遷移學習演算法:在許多常見學習場景中訓練和測試資料集中的類標籤不同,必須保證訓練和測試資料集中的相似性進行遷移學習。Mesnil等人研究了用於無監督遷移學習場景中學習表示的不同種類模型結構,將多個不同結構的層堆疊使用無監督學習演算法用於五個學習任務,並研究了用於少量已標記訓練樣本的簡單線性分類器堆疊深度結構學習演算法。Bengio等人研究了無監督遷移學習問題,討論了無監督預訓練有用的原因,如何在遷移學習場景中利用無監督預訓練,以及在什麼情況下需要注意從不同資料分佈得到的樣例上的預測問題。

  (5)、自然語言解析演算法:Collobert基於深度遞迴卷積圖變換網路(graphtransformer network,GTN)提出一種快速可擴充套件的判別演算法用於自然語言解析,將文法解析樹分解到堆疊層中,只用極少的基本文字特徵,得到的效能與現有的判別解析器和標準解析器的效能相似,而在速度上有了很大提升。

  (6)、學習率自適應方法:學習率自適應方法可用於提高深度結構神經網路訓練的收斂性並且去除超引數中的學習率引數,其中包括全域性學習率、層次學習率、神經元學習率和引數學習率等。最近研究人員提出了一些新的學習率自適應方法,如Duchi等人提出的自適應梯度方法和Schaul等人提出的學習率自適應方法;Hinton提出了收縮學習率方法使得平均權值更新在權值大小的1/1000數量級上;LeRoux等人提出自然梯度的對角低秩線上近似方法,並說明該演算法在一些學習場景中能加速訓練過程。

(六)、深度學習的優勢

  深度學習與淺學習相比具有許多優點:

  1、 在網路表達複雜目標函式的能力方面,淺結構神經網路有時無法很好地實現高變函式等複雜高維函式的表示,而用深度結構神經網路能夠較好地表徵。

  2、 在網路結構的計算複雜度方面,當用深度為k的網路結構能夠緊湊地表達某一函式時,在採用深度小於k的網路結構表達該函式時,可能需要增加指數級規模數量的計算因子,大大增加了計算的複雜度。另外,需要利用訓練樣本對計算因子中的引數值進行調整,當一個網路結構的訓練樣本數量有限而計算因子數量增加時,其泛化能力會變得很差。

  3、 在仿生學角度方面,深度學習網路結構是對人類大腦皮層的最好模擬。與大腦皮層一樣,深度學習對輸入資料的處理是分層進行的,用每一層神經網路提取原始資料不同水平的特徵。

  4、 在資訊共享方面,深度學習獲得的多重水平的提取特徵可以在類似的不同任務中重複使用,相當於對任務求解提供了一些無監督的資料,可以獲得更多的有用資訊。

  5、 深度學習比淺學習具有更強的表示能力,而由於深度的增加使得非凸目標函式產生的區域性最優解是造成學習困難的主要因素。反向傳播基於區域性梯度下降,從一些隨機初始點開始執行,通常陷入區域性極值,並隨著網路深度的增加而惡化,不能很好地求解深度結構神經網路問題。2006年,Hinton等人提出的用於深度信任網路(deep belief network,DBN)的無監督學習演算法,解決了深度學習模型優化困難的問題。求解DBN方法的核心是貪婪逐層預訓練演算法,在與網路大小和深度呈線性的時間複雜度上優化DBN的權值,將求解的問題分解成為若干更簡單的子問題進行求解。

  6、 深度學習方法試圖找到資料的內部結構,發現變數之間的真正關係形式。大量研究表明,資料表示的方式對訓練學習的成功產生很大的影響,好的表示能夠消除輸入資料中與學習任務無關因素的改變對學習效能的影響,同時保留對學習任務有用的資訊。深度學習中資料的表示有區域性表示(local representation)、分佈表示(distributed representation),和稀疏分佈表示(sparsedistributed representation) 三種表示形式。學習輸入層、隱層和輸出層的單元均取值0或1。舉個簡單的例子,整數i∈{1,2,…,N}的區域性表示為向量R(i),該向量有N位,由1個1和N-1個0組成,即Rj(i)=1i=j。分佈表示中的輸入模式由一組特徵表示,這些特徵可能存在相互包含關係,並且在統計意義上相互獨立。對於例子中相同整數的分佈表示有log2N位的向量,這種表示更為緊湊,在解決降維和區域性泛化限制方面起到幫助作用。稀疏分佈表示介於完全域性部表示和非稀疏分佈表示之間,稀疏性的意思為表示向量中的許多單元取值為0。對於特定的任務需要選擇合適的表示形式才能對學習效能起到改進的作用。當表示一個特定的輸入分佈時,一些結構是不可能的,因為它們不相容。例如在語言建槨中,運用區域性表示可以直接用詞彙表中的索引編碼詞的特性,而在句法特徵、形態學特徵和語義特徵提取中,運用分佈表示可以通過連線一個向量指示器來表示一個詞