竺寶寶+張娜
摘 要:深度學(xué)習(xí)是機器學(xué)習(xí)中接近AI的領(lǐng)域之一,通過模擬人腦學(xué)習(xí)神經(jīng)進行分析。深度學(xué)習(xí)源于人工神經(jīng)網(wǎng)絡(luò)的研究,其對比簡單學(xué)習(xí)來講,多數(shù)分類、回歸等學(xué)習(xí)算法歸于簡單機器學(xué)習(xí),復(fù)雜函數(shù)運算的表示能力和局限性與有限樣本和計算單元對有關(guān),泛化能力也受到復(fù)雜分類的一定限制。
關(guān)鍵詞:深度學(xué)習(xí);自然語言;非線性網(wǎng)絡(luò)結(jié)構(gòu)
1 深度學(xué)習(xí)
1.1 深度學(xué)習(xí)的基本概念
深度學(xué)習(xí)是學(xué)習(xí)深層非線性網(wǎng)絡(luò)的一種結(jié)構(gòu),通過展現(xiàn)復(fù)雜函數(shù)逼近,用輸入數(shù)據(jù)分布式來表示,最終將數(shù)據(jù)樣本集中學(xué)習(xí)數(shù)據(jù)集本質(zhì)特點的能力展現(xiàn)出來。通過含多隱層的多層感知器來進行深度學(xué)習(xí)。深度學(xué)習(xí)可以更多地模擬神經(jīng)層神經(jīng)活動,使用組合低層特征來合成更加抽象的高層屬性特征類別,來更好地展現(xiàn)數(shù)據(jù)分布式特性。深度學(xué)習(xí)的理論由Hinton等于2006年提出,通過非監(jiān)督貪心逐層訓(xùn)練深信度網(wǎng)(Deep Belief Network, DBN)的算法,為解決深層結(jié)構(gòu)相關(guān)的優(yōu)化難題帶來更好的指導(dǎo)方向。Lecun等提出的是最早的真正多層結(jié)構(gòu)學(xué)習(xí)算法之一—卷積神經(jīng)網(wǎng)絡(luò),通過空間關(guān)系的參數(shù)相對數(shù)量減少以減少訓(xùn)練誤差。
1.2 深度學(xué)習(xí)結(jié)構(gòu)模型
深度學(xué)習(xí)按照模型和技術(shù)的應(yīng)用把模型歸為3類。
1.2.1 生成性深度模式
該模式通過講述觀測數(shù)據(jù)和相應(yīng)類別的聯(lián)合概率分布,來展現(xiàn)數(shù)據(jù)的高階相關(guān)特點,同時,區(qū)別于傳統(tǒng)型神經(jīng)分區(qū)網(wǎng)絡(luò),通過聯(lián)合概率分布獲取觀測數(shù)據(jù)標(biāo)簽的,來更好地進行先驗概率和后驗概率的預(yù)測,而區(qū)分型模型卻不能對其進行推測。DBN恰恰解決了傳統(tǒng)多層網(wǎng)絡(luò)神經(jīng)算法訓(xùn)練BP的難點:大量含標(biāo)簽訓(xùn)練樣本集,收斂速度比較慢,由不適宜的訓(xùn)練數(shù)據(jù)選擇陷入局部最佳。
DBN是由一組系列的受限波爾茲曼機(Restricted Boltzmann Machine,RBM)單元組合成的,RBM通過非常典型的網(wǎng)絡(luò)神經(jīng),來使網(wǎng)絡(luò)可視層和隱層單元相互連接,通過獲取輸入為可視單元高階隱單元。RBM權(quán)值相對會比較比較輕松,與傳統(tǒng)網(wǎng)絡(luò)sigmoid的信度不同。通過預(yù)訓(xùn)練獲取的生成性權(quán)值,采用無監(jiān)督貪心的模式逐層不停完成。在訓(xùn)練過程中,簡單來說,將可視向量的值映射給隱單元,隱層單元的重建由可視單元來完成;最后次映射給隱單元就由新可視單元來實現(xiàn),最終來完成隱單元的更新。一個DBN由自下向上的多個不同的RBM構(gòu)建組合。將可用的隱單元通過高斯—伯努利RBM,伯努利—伯努利RBM結(jié)構(gòu),輸出作為訓(xùn)練上層伯努利—伯努利RBM的導(dǎo)入和下層伯努利和伯努利的導(dǎo)出,以此類推等等。
1.2.2 區(qū)分性深度模式
為提供對模式分類區(qū)分訓(xùn)練的能力,描述數(shù)據(jù)后驗實現(xiàn)的分布。卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN)屬于區(qū)分性訓(xùn)練,一個真正實踐訓(xùn)練多層成真的網(wǎng)絡(luò)結(jié)構(gòu)算法,DBNs算法和它相反。通過具有相同參數(shù)神經(jīng)元作用于視覺系統(tǒng)結(jié)構(gòu)啟發(fā),在上一層的不同位置生成一種不變性的特征。于是LeCun等沿著這種指導(dǎo),為了CNN深度學(xué)習(xí)框架是為了滿足最小化預(yù)處理數(shù)據(jù)的實踐,要求BP算法設(shè)計來生成CNN。由早期時間延遲神經(jīng)網(wǎng)絡(luò)的指導(dǎo)影響,CNN由早期時間延遲神經(jīng)網(wǎng)絡(luò)的方法通過共享時域權(quán)值的大小來實現(xiàn)。CNN是一種一般前向的BP訓(xùn)練常用拓?fù)淠P停每臻g相對的關(guān)系減少參數(shù)的數(shù)量來提高的,而且在多個實驗中取得不錯的效果。通常用作局部感受區(qū)域圖像小部分最底層的基本輸入,不同信息網(wǎng)絡(luò)的逐層層次傳遞,從而能夠?qū)崿F(xiàn)在每一層數(shù)據(jù)顯著特征,來獲得對平移、縮放、旋轉(zhuǎn)不變的觀測。
1.2.3 混合型模型
混合型模型是區(qū)分更佳性的目標(biāo),通常利用生成型結(jié)構(gòu)輸出?;旌闲徒Y(jié)構(gòu)模型學(xué)習(xí)—生成性部分與區(qū)分性部分。區(qū)分性任務(wù)經(jīng)常用來現(xiàn)有典型生成性的單元,應(yīng)用于分類任務(wù),預(yù)訓(xùn)練通過當(dāng)有生成性模型結(jié)合其他典型的區(qū)分性學(xué)習(xí)算法來對優(yōu)化進行所有權(quán)值。一個頂層變量通過附加來為訓(xùn)練集提供的期望輸出區(qū)分性尋優(yōu)。優(yōu)化DBN的權(quán)值用BP算法來實現(xiàn),通過RBM和DBN初始權(quán)值預(yù)訓(xùn)練,這樣一來網(wǎng)絡(luò)性能就會更加優(yōu)越,相對于那些只通過BP算法單獨訓(xùn)練的網(wǎng)絡(luò),BP對DBNs訓(xùn)練不但擁有完成局部參數(shù)空間搜索的優(yōu)勢,而且和前饋型神經(jīng)網(wǎng)絡(luò)相比,加快了訓(xùn)練效果和收斂回饋時間的速度。
2 訓(xùn)練過程
神經(jīng)網(wǎng)絡(luò)模式有指導(dǎo)學(xué)習(xí)和無指導(dǎo)學(xué)習(xí),有指導(dǎo)學(xué)習(xí)是主流的,無指導(dǎo)學(xué)習(xí)用來聚集分析。有指導(dǎo)的模式識別,同類樣本通過一種適當(dāng)?shù)目臻g劃分方法或邊界在空間的分布以及和不同類樣本之間的分離程度找,使不同的樣本分別對應(yīng)各自的區(qū)域,一個很長時間和復(fù)雜的學(xué)習(xí)過程是必須的??臻g分類邊界不斷調(diào)整樣本,使其更符合樣本原本的屬性。總的來說,卷積網(wǎng)絡(luò)通過大量的輸入和輸出之間的關(guān)系映射,本質(zhì)上是一種輸入到輸出的映射關(guān)系,用已知的模式對卷積網(wǎng)絡(luò)加以訓(xùn)練,使其具備映射能力,通過對有指導(dǎo)的訓(xùn)練,樣本集由空間向量對構(gòu)成,來模擬系統(tǒng)實際的運行結(jié)果。訓(xùn)練前為了保證系統(tǒng)網(wǎng)絡(luò)不會因權(quán)值過大而進入飽和狀態(tài)所有的權(quán)通過不同的小隨機數(shù)進行初始化,確保不出現(xiàn)異常,不同的數(shù)據(jù)使網(wǎng)絡(luò)系統(tǒng)更好地正常學(xué)習(xí)模擬真實的環(huán)境,使其更加具備兼容性和完整性。
3 結(jié)語
CNN這種層間關(guān)系和空域信息的緊密關(guān)系,更加適用于圖片處理和理解。尤其是在提取圖像顯著特征方面展現(xiàn)出優(yōu)勢。GABOR濾波器經(jīng)常被用來模擬人類視覺系統(tǒng)對視覺刺激的響應(yīng)初始化欲處理的步驟中。人們在未來的工作中,將用到更多的深度學(xué)習(xí)內(nèi)容,包括人臉識別、文檔分析和語言檢測等方面。目前CNN通過一個時間相干性去訓(xùn)練,但不是它特有的。
用最近比較火的Python做一個人臉識別的小程序,幫助大家更好地學(xué)習(xí)了解深度學(xué)習(xí),做人臉識別要用到SIFT特征,經(jīng)常會遇到配置好opencv之后,卻找不到人臉識別的頭文件的問題,找不到SIFT在哪。這是因為使用OpenCV3.0之后,把一些還在更新的、不是很穩(wěn)定的,在測試階段的東西放在了contrib模塊里面。而且官方默認(rèn)不帶contrib模塊。然而人們最想用的人臉識別和SIFT特征都在contrib里面。如果需要用的話,就需要自己編譯,Python用起來比較方便。
官網(wǎng)下載并安裝OpenCV之后,在目錄\opencv\build\python\2.7\x64之下有一個cv2.pyd文件,把它拷貝到python安裝目錄下的\Lib\site-packages文件夾下面即可。需要注意的是版本要對應(yīng)。如圖1所示,以貓臉檢測為例,說明基于OpenCV的貓臉檢測十分簡單。用Python的話只有區(qū)區(qū)20行代碼。其中20行代碼中發(fā)揮主要作用的只有一個函數(shù):detectMultiScale()。
此函數(shù)的作用是,在輸入圖像中檢測不同尺寸的對象,返回包含對象的矩形框。它接收的參數(shù):(1)image—輸入圖像;(2)scaleFactor—每輪檢測圖像齒輪減少的比例;(3)minNeighbors—對象要至少被檢測到幾次才能判定對象確實存在;(4)minSize—檢測對象的最小尺寸;(5)maxSize—檢測對象的最大尺寸。
本文以貓臉檢測為例,說明在OpenCV下,人臉檢測、行人檢測、人眼檢測等都是同樣的道理,同樣的流程。只需要把最開始相應(yīng)的檢測器換掉,然后按照實際情況調(diào)節(jié)detectMultiScale()的參數(shù)。
[參考文獻]
[1]翟劍鋒.深度學(xué)習(xí)在自然語言處理中的應(yīng)用[J].電腦編程技巧與維護,2013(18):74-76.
[2]王臻,常寶寶,穗志方.基于分層輸出神經(jīng)網(wǎng)絡(luò)的漢語語義角色標(biāo)注[J].中文信息學(xué)報,2014(6):56-61.
[3]聶振海,賈丹.深度學(xué)習(xí)研究概述[J].科技創(chuàng)新導(dǎo)報,2015(30):224.