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