1. 程式人生 > >深度學習基礎概念(二)(科普入門)

深度學習基礎概念(二)(科普入門)

1、人工智慧(AI)、機器學習(ML)和深度學習(DL): 人工智慧是終極目標,機器學習是實現人工智慧的一種分支,深度學習隸屬於人工神經網路體系,人工神經網路是基於統計的機器學習方法,傳統的神經網路是一種淺層機器學習,深度學習是傳統神經網路發展下的新一代神經網路。深度學習是通過建立、模擬人腦的資訊處理神經結構來實現對外部輸入的資料進行從低階到高階的特徵提取,從而能夠使機器理解學習資料,獲得資訊。 2、深度學習的發展歷程: (1)萌芽期:從BP演算法的發明(1970s~1980s)到2006年期間; (2)迅速發展期(2006~2012):主要以深度無監督學習為主的研究階段。 從2006年Hinton提出“深度學習”概念和深度學習的訓練方法之後揭開了深度學習發展的帷幕; (3)爆發期(2012至今):2012年Hinton團隊的Alexnet模型在imagenet競賽中取得驚人成績。現在各大網際網路公司紛紛開始成立研究部門進行深度學習工程化的研究,以谷歌、微軟、百度為代表,將深度學習廣泛應用在語音識別、影象檢索、翻譯等領域。 3、深度學習的基礎概念:
(1)特徵(:Feature):資料的特徵。(例子:書的內容。) (2)標籤(Label):資料的標籤。(例子:書的類別,“計算機”“圖形學”“英文書”“教材”等。) (3)學習(Learning):將很多資料丟給計算機分析,以此來訓練該計算機,培養計算機給資料分類的能力。換句話說,學習指的就是找到特徵與標籤的對映(mapping)關係。這樣當有特徵而無標籤的未知資料輸入時,我們就可以通過已有的關係得到未知資料標籤。 (4)有監督學習(Supervised Learning):不僅把訓練資料丟給計算機,而且還把分類的結果(資料具有的標籤)也一併丟給計算機分析。 由於計算機在學習的過程中不僅有訓練資料,而且有訓練結果(標籤),因此訓練的效果通常不錯。訓練結束之後進行測試。計算機進行學習之後,再丟給它新的未知的資料,它也能計算出該資料導致各種結果的概率,給你一個最接近正確的結果。 (5)無監督學習(Unsupervised Learning):
只給計算機訓練資料,不給結果(標籤),因此計算機無法準確地知道哪些資料具有哪些標籤,只能憑藉強大的計算能力分析資料的特徵,從而得到一定的成果,通常是得到一些集合,集合內的資料在某些特徵上相同或相似。 (6)半監督學習(Semi-supervised Learning):給計算機大量訓練資料與少量的分類結果(具有同一標籤的集合)。 (7)聚類(Clustering):無監督學習的結果。聚類的結果將產生一組集合,集合中的物件與同集合中的物件彼此相似,與其他集合中的物件相異。 (8)分類(Classification):有監督學習的兩大應用之一,產生離散的結果。 (9)迴歸(Regression):
有監督學習的兩大應用之一,產生連續的結果。 (10)學習率(Leraning Rate):學習率是一個重要的超引數,它控制著我們基於損失梯度調整神經網路權值的速度,大多數優化演算法(如SGD、RMSprop、Adam)對它都有涉及。學習率越小,我們沿著損失梯度下降的速度越慢。從長遠來看,這種謹慎慢行的選擇可能還不錯,因為可以避免錯過任何區域性最優解,但它也意味著我們要花更多時間來收斂,尤其是如果我們處於曲線的至高點。 以下等式顯示了這種關係: 新權值 = 當前權值 - 學習率 × 梯度 過小(上)和過大(下)的學習率如下圖所示:
通常,學習率是使用者自己隨意設的,你可以根據過去的經驗或書本資料選擇一個最佳值,或憑直覺估計一個合適值。這樣做可行,但並非永遠可行。事實上選擇學習率是一件比較困難的事。 下圖顯示了應用不同學習率後出現的各類情況:
可以發現,學習率直接影響我們的模型能夠以多快的速度收斂到區域性最小值(也就是達到最好的精度)。一般來說,學習率越大,神經網路學習速度越快。如果學習率太小,網路很可能會陷入區域性最優;但是如果太大,超過了極值,損失就會停止下降,在某一位置反覆震盪。也就是說,如果我們選擇了一個合適的學習率,我們不僅可以在更短的時間內訓練好模型,還可以節省各種雲的花費。 4、經典深度學習網路: (1)卷積神經網路(Convolutional Neural Network): 通過結合區域性感知區域、共享權重、空間或時間上的池化降取樣三大特點來充分利用資料本身包含的區域性性等特徵,優化網路結構,並且保證一定程度上的位移的不變性。它的權值共享網結構相似於生物神經網路,降低了網路模型的複雜度,減少了權值的數量。因為這樣的結構特點使其尤其適合大影象資料的機器學習,可以使數量龐大的影象識別問題不斷降維。 CNN的主要結構包括卷積部分和全連線部分。卷積部分包括卷積層、啟用層、下采樣層,通過卷積部分的疊加提取特徵;全連線部分連線特徵提取和輸出計算損失和完成識別分類等功能。 CNN是第一個真正成功地採用多層層次結構網路的具有魯棒性的深度學習方法。CNN適應性強,善於挖掘資料區域性特徵,使得CNN已經成為眾多科學領域的研究熱點之一,在模式識別中的各個領域得到應用並取得了很好的結果。海量標記資料和GPU平行計算的發展,使卷積神經網路研究大放異彩。 (2)深度置信網路(Deep Belief Networks): 深度置信網路的基本結構單元是受限玻爾茲曼機(Restricted Boltzmann Machine) 。 受限玻爾玆曼機通過學習資料的概率密度分佈提取抽象特徵。深度置信網路通過RBM的疊加,逐層學習資料概率分佈,即提取多種概率特徵。DBN訓練過程分為無監督訓練階段和微調階段。無監督貪婪逐層訓練方法獲得各層的條件概率分佈,微調階段包括利用帶標籤資料和BP演算法對網路引數進行調整。DBN具有高靈活性,容易拓展,不僅在影象處理、語音識別領域網路預訓練中應用廣泛,也是構建新型深度學習網路的結構基礎。 ( 逐層貪婪演算法:主要思路是每次只訓練網路中的一層,即我們首先訓練一個只含一個隱藏層的網路,僅當這層網路訓練結束之後才開始訓練一個有兩個隱藏層的網路,以此類推。在每一步中,我們把已經訓練好的前k-1層固定,然後增加第k層(也就是將我們已經訓練好的前k-1的輸出作為輸入)。每一層的訓練可以是有監督的(例如,將每一步的分類誤差作為目標函式),但更通常使用無監督方法(例如自動編碼器,我們會在後邊的章節中給出細節)。這些各層單獨訓練所得到的權重被用來初始化最終(或者說全部)的深度網路的權重,然後對整個網路進行“微調”(即把所有層放在一起來優化有標籤訓練集上的訓練誤差)) (3)棧式自編碼網路(Stacked Autoencoder Networks): 棧式自編碼網路的基本單元是 自編碼器(AE)。自編碼器包括編碼層和解碼層,通過編碼-解碼的方式復現輸入訊號。堆疊式自編碼網路是累加自編碼器,通過 無監督貪婪逐層訓練得到每層自編碼器的權重,在每一層得到了關於輸入資料的另一種表達形式,這些不同的表示就是特徵,在原有的特徵基礎上加入自動學習到的特徵可以提高學習能力,是深度神經網路預訓練的重要方法之一。 (4)遞迴神經網路(RNN): RNN,是兩種 人工神經網路 的總稱,一種是 時間遞迴神經網路(recurrent neural network) ,另一種是 結構遞迴神經網路(recursive neural network)。 CNN、DBN、SAN的模型的隱層之間彼此獨立,逐層提取特徵,但這樣的連線方式忽略了資料間的關聯性。遞迴神經網路會對上一層的資訊進行記憶,新增到當前層的計算輸出中,在結構中體現為隱層間有節點相連。遞迴神經網路是非常強大的動態系統,通常用於描述動態時間行為序列,使狀態資料在網路中迴圈傳遞。它更擅長語音文字資訊,一次處理一個輸入序列元素每個節點同時包括過去時刻序列元素的歷史資訊,一 般採用 時間反傳(Back Propagation Through Time)訓練演算法來解決非長時依賴問題。 5、深度學習現階段研究熱點: (1)改進網路訓練技巧,提升網路實用效能: 機器學習通過 準確率損失(函式)值衡量一個學習網路的好壞,深度學習網路訓練的目標就是高準確率和低損失率。經過大量實驗研究,針對深度學習網路訓練也有技巧和方法來提升演算法效能,增強魯棒性。 ( 準確率(Accuracy) : 對於給定的測試資料集,分類器正確分類的樣本數與總樣本數之比。) ( 損失函式(Loss Function) 是用來估量你模型的預測值f(x)與真實值Y的不一致程度,它是一個非負實值函式,通常使用L(Y, f(x))來表示,損失函式越小,模型的魯棒性就越好。(1.1)用以解決過擬合問題的“資料提升”/“Dropout”: 過擬合是指訓練樣本不足時,一個模型從中學習到的不能推廣到新資料的問題。 資料提升Dropout其本質都是隨機打亂資料的相關性。 資料提升是指對有限的樣本資料隨機變化,生成新樣 本,同時保證資料彼此間相似性低,有利於抑制過擬合,使 模 型 泛 化 能 力 更 好。Dropout通過設 置Dropout引數值,來抑制一定比例神經元活性,使其輸出為0,可 以 視 為 一 種 模型平均,把每個批次的訓練過程中,隨機忽略的隱層節點不同,生成的不同模型平均。這樣權值的更新不再依賴於有固定關係隱含節點的共同作用,有效阻止過擬合現象。 (1.2)引數調優(fine-tune): 對於一個已知的深度學習網路結構,如何提升網路的效能,是我們研究的重點。從理論結構到實際應用需要不斷地調整引數,即引數調優。不同的深度學習網路結構適合於不同的實際應用,除了結構固有的優點,還可以通過改變 反向傳播(BP)演算法啟用函式(Activation Functions)來提升網路效能。常用的反向傳播演算法有: 隨機梯度下降法(Stochastic Gradient Descent)、自適應梯度下降方法(Adaptive Gradient Descent)等。 啟用函式常用的有tanh、sigmoid、ReLU等。ReLU函式的應用是對深度學習應用發展的推進,對於人大腦皮層的工作過程研究,處理資訊時有大量神經元處於抑制狀態,只有少數的神經元啟用工作,是非常高效的。這與ReLU的原理不謀而合,稀疏連線也是表達了這一生理結構。 ( 啟用函式(AF): 人工神經網路 的神經元上執行的 函式 ,負責將神經元的輸入對映到輸出端。引入啟用函式是為了增加神經網路模型的非線性。沒有啟用函式的每層都相當於矩陣相乘,疊加若干層後,還是矩陣相乘。(隨機梯度下降演算法(SGD): 訓練模型的目的是使得目標函式達到極小值。對於一個深度神經網路,它的引數數目比較龐大,因此目標函式通常是一個包含很多參量的非線性函式。對於這個非線性函式,我們採用的是隨機梯度下降演算法來對引數進行更新。這裡的隨機是指每次迭代過程中,樣本都要被隨機打亂,這個也很容易理解,打亂是有效減小樣本之間造成的引數更新抵消問題。SGD是最基本的隨機梯度下降,它是指每次引數更新只使用一個樣本,這樣可能導致更新較慢。 具體步驟如下: ①對網路引數進行初始化,一般情況下,權重初始化為均值是0,方差為0.01的高斯分佈隨機值,而偏置統一初始化為0; ②將引數代入網路計算前饋輸出值,從而可以根據已有的目標標籤得出目標函式值; ③根據目標函式值以及各引數與目標函式所構成的樹結構,運用BP演算法計算出每個引數的梯度; ④設定學習率大小(隨著迭代的步驟增多,學習率通常要逐漸減小,這樣可以有效避免訓練中出現誤差震盪情況),進行引數更新,最一般的更新方式是 新引數=舊引數-學習率×梯度; ⑤重複進行第2~4步,直到網路收斂為止。 (2)深度學習網路體系 (2.1)卷積神經網路(CNN)體系: 卷積神經網路(CNN)是發展最為深入的深度學習網路。卷積神經網路的結構特點更適合解決影象領域問題。通過對其結構的不斷研究和改進,形成了一系列網路模型,在廣泛實際應用中取得成功。一方面創造性的提出增加跳躍連線結構,克服深度訓練難題,增加網路深度。深度學習的學習能力通過深度得以提高,但是深度的增加不僅帶來引數激增資料量增大,而且造成訓練過程中反向傳播困難。突破深度限制是未來深度學習發展的必然趨勢。
網路結構加深提升準確率,驗證了深度學習網路的深度價值和潛力。另一方面改變卷積神經網路結構,典型的包括 全卷積網路(Fully Convolutional Networks)。FCN 去掉網路中的全連線層,全部利用卷積結構進行處理資料,使影象級理解上升為畫素級理解。全連線結構引數佔主要部分,且運算耗時,全卷積網路可以滿足實時性要求,目前湧現一大批基於FCN的泛,例如邊緣檢測、視覺跟蹤、影象分割等。 ( 全卷積網路(Fully Convolutional Networks):FCN對影象進行畫素級的分類,從而解決了語義級別的影象分割(semantic segmentation)問題。與經典的CNN在卷積層之後使用全連線層得到固定長度的特徵向量進行分類(全聯接層+softmax輸出)不同,FCN可以接受任意尺寸的輸入影象,採用反捲積層對最後一個卷積層的feature map進行上取樣, 使它恢復到輸入影象相同的尺寸,從而可以對每個畫素都產生了一個預測, 同時保留了原始輸入影象中的空間資訊, 最後在上取樣的特徵圖上進行逐畫素分類。) (2.2)棧式自編碼網路(SAE)體系: 基於自編碼的深度學習體系也在不斷豐富,常用的有 稀疏自編碼網路(Sparse Auto-encoder, SAEs)、降噪自編碼網路(Denoising Auto-encoders,DAEs)和收縮自編碼網路(Contractive Auto-encoders,CAEs)。稀疏自編碼器(SAEs)通過稀疏限制,即控制神經元大多數時間處於抑制狀態,來對無標記資料習,得到的特徵往往優於資料的原始表達,在實際應用中取得更好的結果;降噪自編碼器(DAEs)通過在原始資料加入隨機噪音來使網路學習添加了噪聲的資料以提高學習能力;收縮自編碼網路(CAEs)通過在損失函式加入懲罰項,增強了特徵學習的魯棒性. (2.3)遞迴神經網路(RNN)體系: RNN網路重視反饋作用,並儲存當前狀態和過去狀態的連線,適用於文字、語言等時間序列特徵明顯的資料處理。 針對傳統RNN網路存在問題,提出 長短期記憶神經網路(Long short-term memory,LSTM)適用於處理和預測時間序列中間隔和延遲非常長的問題,在預測文字和語音識別中表現優異; GRU(Gated Recurrent Unit)模型是LSTM 模型的改進,在實際應用中,更具有競爭力,效能更穩定。 (3)構建學習新模式———半監督深度學習 機器學習最常見的就是監督學習和無監督學習,無論淺層學習還是深層學習。無監督學習主要用於網路模型的預訓練,監督學習用於提高網路學習能力。通過對人類的學習過程進行研究,對於一種形體事物的認知學習,是少量帶標籤資料學習,結合大量無標籤的影象進一步學習。而現有的無監督+監督學習是不符合人類的學習習慣。在此基礎上,提出半監督學習的方法,不是簡單的無監督學習和監督學習的疊加,而是將兩者的網路結構相融合。 主要有 階梯網路( Ladder Network 、判別深度置信網、卷積深度網路。 (4)深度強化學習———跨領域融合的人工智慧決策演算法 高階人工智慧領域中,感知能力和決策能力都是衡量智慧水平的重要指標。 強化學習 (Reinforcement Learning)能夠直接輸入高維感知以做出決策控制 智慧體(agent),但需要依賴人工提取特徵;深度學習具有強感知能力,但缺乏一定的決策能力。因此,將兩者結合,優勢互補,達到合作共贏的效果。深度強化學習是一種更接近人類思維方式的人工智慧方法。2013年深智團隊提出 的 深度Q網路 (DQN),是將卷積神經網路和 Q 學習結合,並整合經驗回放技術實現的,實現了端對端的學習控制。深度 Q 網路是深度強化學習領域的具開創性意義的工作。2014年Guo等提出將 蒙特卡羅樹搜尋與深度 Q 網路結合,實現了Atari遊戲的實時處理,遊戲表現也普遍高於原始DNQ網路。深度強化學習具有很強的時間依賴性,遞迴神經網路適合處理與時間序列相關的問題,因此強化學習與遞迴神經網路的結合也是深度強化學習的主要形式。2015年 Hausknecht等 結合 LSTM 提 出了 深度遞迴 Q 網路(DRQN),在 缺失若干幀的資料中也取得很好的實驗結果,魯棒性更好。2016年,深智團隊提出了基於DRL的計算機圍棋程式———初奕號,成為深度強化學習的典型應用。深度強化學習在遊戲、智慧駕駛、機器人、智慧製造等領域還有待深入研究。 ( 強化學習(Reinforcement Learning) :又稱再勵學習、評價學習,是一種重要的 機器 學習方法,在智慧控制機器人及分析預測等領域有許多應用。但在傳統的機器學習分類中沒有提到過強化學習,而在連線主義學習中,把學習演算法分為三種類型,即非 監督學習 (unsupervised learning)、監督學習(supervised leaning)和強化學習。) ( 蒙特卡羅樹搜尋(The monte carlo search tree):當所要求解的問題是某種事件出現的概率,或者是某個隨機變數的期望值時,它們可以通過某種“試驗”的方法,得到這種事件出現的頻率,或者這個隨機變數的平均值,並用它們作為問題的解。這就是蒙特卡羅方法的基本思想。蒙特卡羅方法通過抓住事物運動的幾何數量和幾何特徵,利用數學方法來加以模擬,即進行一種數字模擬實驗。它是以一個概率模型為基礎,按照這個模型所描繪的過程,通過模擬實驗的結果,作為問題的近似解。可以把蒙特卡羅解題歸結為三個主要步驟:構造或描述概率過程;實現從已知概率分佈抽樣;建立各種估計量。) (5) 基於視覺化的理論研究 深度學習的成功背後缺乏深入理論研究的支撐。深度學習的學習過程是端對端的“黑箱”操作過程,對於隱層的學習過程,學習效果都無法監控和評估,網路模型出現問題主要還是通過調節外部引數來試探性的解決,這樣的學習模式,對於理解和提升網路效能是不利的,雖然深度學習是基於人工神經網路模擬大腦皮層推斷分析資料的複雜層狀網路結構,但對於其學習的本質還是未知的。為了研究深度學習的學習本質,2013年提出視覺化理解卷積神經網路。通過視覺化顯示每一隱層學到的特徵,然後調整網路提高精度。視覺化方法對於深入理解網路具有重要意義,主要有以下幾種方法:視覺化啟用層、視覺化權重、影象檢索最大化啟用神經元、用t-SNE嵌入程式碼等。 6、深度學習目前的侷限: (1)理論研究缺乏、無監督學習能力弱、缺少邏輯推理和記憶能力等。深度學習的研究多是基於實驗訓練進行的,但是對其 內部原理,學習本質研究很少。現在的研究多是在網路架構、引數選擇等方面,而且深度學習得到的結果使區域性最優解,並不是全域性最優解,還有進一步提升空間,也需要更加完備深入的理論支撐其發展。. (2)目前主流應用還是以監督學習為主的,但在實際生活中,無標籤未知的資料佔主體,所以更應該應用可以發現事物內在關係的 無監督學習,但無監督學習未取得突破性的成果,未來還有更廣闊的發展空間。 (3)深度學習是人工智慧發展的巨大推力,但是深度學習現階段更側重於處理資料,在智慧方向發展較少,如 記憶能力和邏輯推理能力,在面對複雜現實任務時,預測和儲存包含資訊序列的內容是必要的,這也將成為未來深度學習的一個研究方向。深度學習對未來社會發展仍將具有重要意義,需要不斷深入研究,多方向多角度更全面的開發深度學習的潛在價值。