深度学习-基本思想
深度學習-基本思想
- 背景
- 基本思想
- 淺層學習和深度學習
- 深度學習結構
- TensorFlow入門
背景
機器學習(Machine Learning)是一門專門研究計算機怎樣模擬或實現人類的學習行為,以獲取新的知識或技能,重新組織已有的知識結構使之不斷改善自身的性能的學科。1959年美國的塞繆爾(Samuel)設計了一個下棋程序,這個程序具有學習能力,它可以在不斷的對弈中改善自己的棋藝。4年后,這個程序戰勝了設計者本人。又過了3年,這個程序戰勝了美國一個保持8年之久的常勝不敗的冠軍。
機器學習雖然發展了幾十年,但還是存在很多沒有良好解決的問題:例如圖像識別、語音識別、自然語言理解、天氣預測、基因表達、內容推薦等等。目前我們通過機器學習去解決這些問題的思路都是這樣的(以視覺感知為例子):從開始的通過傳感器(例如CMOS)來獲得數據。然后經過預處理、特征提取、特征選擇,再到推理、預測或者識別。最后一個部分,也就是機器學習的部分,絕大部分的工作是在這方面做的,也存在很多的paper和研究。而中間的三部分,概括起來就是特征表達。良好的特征表達,對最終算法的準確性起了非常關鍵的作用,而且系統主要的計算和測試工作都耗在這一大部分。但,這塊實際中一般都是人工完成的。靠人工提取特征。然而,手工地選取特征是一件非常費力、啟發式(需要專業知識)的方法,能不能選取好很大程度上靠經驗和運氣,而且它的調節需要大量的時間。
深度學習Deep Learning可以自動地學習一些特征,看它的一個別名Unsupervised Feature Learning,Unsupervised的意思就是不要人參與特征的選取過程。
2012年6月,《紐約時報》披露了Google Brain項目,這個項目是由著名的斯坦福大學的機器學習教授Andrew Ng和在大規模計算機系統方面的世界頂尖專家JeffDean共同主導,用16000個CPU Core的并行計算平臺訓練一種稱為“深度神經網絡”(DNN,Deep Neural Networks)的機器學習模型,在語音識別和圖像識別等領域獲得了巨大的成功。
2013年1月,在百度年會上,創始人兼CEO李彥宏高調宣布要成立百度研究院,其中第一個成立的就是“深度學習研究所”(IDL,Institue of Deep Learning)。
短短的幾年之內,深度學習推廣到了機器學習的各個領域,包含圖像識別、語音識別、自然語言處理、機器人、生物信息處理、化學、電腦游戲、搜索引擎、網絡廣告投放、醫學自動診斷和金融等。
基本思想
假設有一個系統S,它有n層(S1,…Sn),它的輸入是I,輸出是O,形象地表示為: I =>S1=>S2=>……=>Sn => O,如果輸出O等于輸入I,即輸入I經過這個系統變化之后沒有任何的信息損失(這是不可能的。信息論中有個“信息逐層丟失”的說法(信息處理不等式),設處理a信息得到b,再對b處理得到c,那么可以證明:a和c的互信息不會超過a和b的互信息。這表明信息處理不會增加信息,大部分處理會丟失信息。)保持了不變,這意味著輸入I經過每一層Si都沒有任何的信息損失,即在任何一層Si,它都是原有信息(即輸入I)的另外一種表示。Deep
Learning需要自動地學習特征,假設有一堆輸入I(如一堆圖像或者文本),設計了一個系統S(有n層),通過調整系統中參數,使得它的輸出仍然是輸入I,那么就可以自動地獲取得到輸入I的一系列層次特征,即S1,…, Sn。對于深度學習來說,其思想就是對堆疊多個層,也就是說這一層的輸出作為下一層的輸入。通過這種方式,就可以實現對輸入信息進行分級表達了。另外,前面是假設輸出嚴格地等于輸入,這個限制太嚴格,可以略微地放松這個限制,例如只要使得輸入與輸出的差別盡可能地小即可,上述就是Deep Learning的基本思想。
淺層學習和深度學習
淺層學習(Shallow Learning)是機器學習的第一次浪潮。
20世紀80年代末期,用于人工神經網絡的反向傳播算法(也叫Back Propagation算法或者BP算法)的發明,給機器學習帶來了希望,掀起了基于統計模型的機器學習熱潮。這個熱潮一直持續到今天。人們發現,利用BP算法可以讓一個人工神經網絡模型從大量訓練樣本中學習統計規律,從而對未知事件做預測。這種基于統計的機器學習方法比起過去基于人工規則的系統,在很多方面顯出優越性。這個時候的人工神經網絡,雖也被稱作多層感知機(Multi-layer
Perceptron),但實際是種只含有一層隱層節點的淺層模型。
20世紀90年代,各種各樣的淺層機器學習模型相繼被提出,例如支撐向量機(SVM,Support Vector Machines)、 Boosting、最大熵方法(如LR,Logistic Regression)等。這些模型的結構基本上可以看成帶有一層隱層節點(如SVM、Boosting),或沒有隱層節點(如LR)。這些模型無論是在理論分析還是應用中都獲得了巨大的成功。相比之下,由于理論分析的難度大,訓練方法又需要很多經驗和技巧,這個時期淺層人工神經網絡反而相對沉寂。
深度學習(Deep Learning)是機器學習的第二次浪潮。
2006年,加拿大多倫多大學教授、機器學習領域的泰斗Geoffrey Hinton和他的學生RuslanSalakhutdinov在《科學》上發表了一篇文章,開啟了深度學習在學術界和工業界的浪潮。這篇文章有兩個主要觀點:1)多隱層的人工神經網絡具有優異的特征學習能力,學習得到的特征對數據有更本質的刻畫,從而有利于可視化或分類;2)深度神經網絡在訓練上的難度,可以通過“逐層初始化”(layer-wise pre-training)來有效克服,在這篇文章中,逐層初始化是通過無監督學習實現的。
當前多數分類、回歸等學習方法為淺層結構算法,其局限性在于有限樣本和計算單元情況下對復雜函數的表示能力有限,針對復雜分類問題其泛化能力受到一定制約。深度學習可通過學習一種深層非線性網絡結構,實現復雜函數逼近,表征輸入數據分布式表示,并展現了強大的從少數樣本集中學習數據集本質特征的能力。(多層的好處是可以用較少的參數表示復雜的函數)。
深度學習結構
深度學習是機器學習的一個分支,它除了可以學習特征和任務之間的關聯,還能自動從簡單特征中提取更加復雜的特征。
神經網絡結構包括輸入層,隱藏層,和輸出,神經網絡的流程分為前向過程和反向過程。反向過程一般用于訓練。每個神經元上面都有對于一個輸入的權值,以及一個偏置,還有一個激活函數。所以一個前向過程的流程就是input輸入,然后經過第一層神經元運算(乘上權值,加上偏執,激活函數運算一次),得到輸出,然后第一層的輸出作為第二層的輸入,運算,得到第二層的輸出……直到到輸出層運算,然后得到結果。神經網絡就是依靠這樣一套機制來進行計算和預測的。 假設權值和偏置已經訓練好了,那么對于一個新的輸入,進行這樣的過程,就能夠得到一個預測。神經網絡的訓練過程就是找到權值和偏置這些參數的值,使得輸出的結果達到最優。
TensorFlow入門
TensorFlow的第一個單詞Tensor表明了它的數據結構,Flow則體現了它的計算模型。TensorFlow通過計算圖的形式來表示計算的編程系統,TensorFlow中所有計算都會被轉化為計算圖上的節點。所以首先得創建一個數據流流圖, 然后再將數據(數據以張量(tensor)的形式存在)放在數據流圖中計算. 節點(Nodes)在圖中表示數學操作,圖中的線(edges)則表示在節點間相互聯系的多維數據數組, 即張量(tensor). 訓練模型時tensor會不斷的從數據流圖中的一個節點flow到另一節點, 這就是TensorFlow的由來。
張量中主要保存了三個屬性:名字、維度和類型。張量的名字是張量的唯一標識,同時也給出了這個張量是如何計算出來的。張量的維度描述了一個張量的維度信息。張量的類型對應了張量中的數據類型。
會話(Session)是 Tensorflow 為了控制,和輸出文件的執行的語句。 運行Session可以獲得要得知的運算結果,并管理TensorFlow程序運行時的資源。
搭建神經網絡基本流程:
1.訓練的數據
2.定義節點準備接收數據
3.定義神經層網絡結構(輸入層、隱含層、輸出層)
4.定義 loss 表達式
5.選擇 optimizer 使 loss 達到最小
總結
- 上一篇: 移动电源/便携式汽车应急启动电源UKCA
- 下一篇: 深度学习前沿算法思想