TensorFlow中文簡(jiǎn)介_第1頁
TensorFlow中文簡(jiǎn)介_第2頁
TensorFlow中文簡(jiǎn)介_第3頁
TensorFlow中文簡(jiǎn)介_第4頁
TensorFlow中文簡(jiǎn)介_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、這兩天發(fā)現(xiàn)朋友圈被Google開源深度學(xué)習(xí)系統(tǒng)TensorFlow的新聞刷屏了。這當(dāng)然是一個(gè)很好的消息,尤其對(duì)我們這種用機(jī)器學(xué)習(xí)來解決實(shí)際問題的工程師來說更是如此。但同時(shí)很多人并不清楚聽起來神乎其神的“TensorFlow到底是什么,有什么意義。什么是深度學(xué)習(xí)?在機(jī)器學(xué)習(xí)流行之前,都是基于規(guī)則的系統(tǒng),因此做語音的需要了解語音學(xué),做NLP的需要很多語言學(xué)知識(shí),做深藍(lán)需要很多國際象棋大師。而到后來統(tǒng)計(jì)方法成為主流之后,領(lǐng)域知識(shí)就不再那么重要,但是我們還是需要一些領(lǐng)域知識(shí)或者經(jīng)驗(yàn)來提取合適的feature(特征),feature的好壞往往決定了機(jī)器學(xué)習(xí)算法的成敗。對(duì)于NLP來說,feature還相對(duì)

2、比較好提取,因?yàn)檎Z言本身就是高度的抽象;而對(duì)于Speech或者Image來說,我們?nèi)祟愖约阂埠茈y描述我們是怎么提取feature的。比如我們識(shí)別一只貓,我們隱隱約約覺得貓有兩個(gè)眼睛一個(gè)鼻子有個(gè)長尾巴,而且它們之間有一定的空間約束關(guān)系,比如兩只眼睛到鼻子的距離可能差不多。但怎么用像素來定義”眼睛呢?如果仔細(xì)想一下就會(huì)發(fā)現(xiàn)很難。當(dāng)然我們有很多特征提取的方法,比如提取邊緣輪廓等等。但是人類學(xué)習(xí)似乎不需要這么復(fù)雜,我們只要給幾張貓的照片給人看,他就能學(xué)習(xí)到什么是貓。人似乎能自動(dòng)學(xué)習(xí)”出feature來,你給他看了幾張貓的照片,然后問貓有什么特征,他可能會(huì)隱隱預(yù)約地告訴你貓有什么特征,甚至是貓?zhí)赜械奶卣?/p>

3、,這些特征豹子或者老虎沒有。深度學(xué)習(xí)為什么最近這么火,其中一個(gè)重要的原因就是不需要(太多)提取featureofeatureo從機(jī)器學(xué)習(xí)的使用者來說, 我們以前做的大部分事情是featureengineering然后調(diào)一些參數(shù),一般是為了防止過擬合。而有了深度學(xué)習(xí)之后,如果我們不需要實(shí)現(xiàn)一個(gè)CNN或者LSTM,那么我們似乎什么也不用干。(機(jī)器讓工人失業(yè),機(jī)器學(xué)習(xí)讓搞機(jī)器學(xué)習(xí)的人失業(yè)!人工智能最終的目的是讓人類失業(yè)?)但是深度學(xué)習(xí)也不是萬能的,至少現(xiàn)在的一個(gè)問題是它需要更強(qiáng)的計(jì)算能力才能訓(xùn)練出一個(gè)比較好的模型。它還不能像人類那樣通過很少的訓(xùn)練樣本就能學(xué)習(xí)很好的效果。其實(shí)神經(jīng)網(wǎng)絡(luò)提出好幾十年了,為

4、什么最近才火呢?其中一個(gè)原因就是之前它的效果并不比非深度學(xué)習(xí)算法好,比如 SVMSVMo到了2006年之后,隨著計(jì)算能力的增強(qiáng)(尤其是GPU的出現(xiàn)),深度神經(jīng)網(wǎng)絡(luò)在很多傳統(tǒng)的機(jī)器學(xué)習(xí)數(shù)據(jù)集上體現(xiàn)出優(yōu)勢(shì)來之后,后來用到Image和Speech因?yàn)樗詣?dòng)學(xué)出的feature不需要人工提取feature,效果提升更加明顯。這是否也說明,我們之前提取的圖像feature都不夠好,或者是根據(jù)人腦的經(jīng)驗(yàn)提取的feature不適合機(jī)器的模型?很多人對(duì)深度學(xué)習(xí)頗有微詞的一個(gè)理由就是它沒有太多理論依據(jù),更多的像蠻力的搜索一一非常深的層數(shù),幾千萬甚至上億參數(shù),然后調(diào)整參數(shù)擬合輸入與輸出。其實(shí)目前所有的機(jī)器學(xué)習(xí)都是

5、這樣,人類的大腦的學(xué)習(xí)有所不同嗎,不是神經(jīng)元連接的調(diào)整嗎?但不管怎么說,從深度神經(jīng)網(wǎng)絡(luò)的使用者(我們這樣的工程師)的角度來說,如果我們選定了一種網(wǎng)絡(luò)結(jié)構(gòu),比如CNN,那么我們要做的就是根據(jù)經(jīng)驗(yàn),選擇合適的層數(shù),每層的神經(jīng)元數(shù)量,激活函數(shù),損失函數(shù),正則化的參數(shù),然后使用validation數(shù)據(jù)來判定這次訓(xùn)練的效果。從效果來說,一般層次越多效果越好(至少相對(duì)一兩層的網(wǎng)絡(luò)來說),但是層次越多參數(shù)也越多,訓(xùn)練就越慢。單機(jī)訓(xùn)練一個(gè)網(wǎng)絡(luò)花幾天甚至幾周的時(shí)間非常常見。 因此用多個(gè)節(jié)點(diǎn)的計(jì)算機(jī)集群來訓(xùn)練就是深度學(xué)習(xí)的核心競(jìng)爭(zhēng)力一一尤其對(duì)于用戶數(shù)據(jù)瞬息萬變的互聯(lián)網(wǎng)應(yīng)用來說更是如此。differentobjec

6、tclasses.differentobjectclasses.fflWWn&Zw:q二;二t-一二丁一二一rknSik卜三:厘 5-,除,-:【號(hào).J名”】N1,.“飛口心i“T;LmMSauiS-, F, ,zizir rikik=ikik=g g“ = =八*1 1”八一siiauiwsiiauiwQJIQIIMZyY*j,博!、,_J一一FeatureslearnedfromtrainingonFeatureslearnedfromtrainingonElephantsEMdrsElephantsEMdrs1.,HI八Ii常見深度神經(jīng)網(wǎng)絡(luò)的訓(xùn)練和問題對(duì)于機(jī)器學(xué)習(xí)來說,訓(xùn)練是最關(guān)

7、鍵也最困難的部分,一般的機(jī)器學(xué)習(xí)模型都是參數(shù)化的模型,我們可以把它看成一個(gè)函數(shù)y=f(w;x)。比如拿識(shí)別圖像來說,輸入x是這張圖片的每個(gè)像素值,比如MNIST的數(shù)據(jù)是28*28的圖片,每個(gè)點(diǎn)是RGB的顏色值,那么x就是一個(gè)28*28*3的向量。而一個(gè)模型有很多參數(shù),用w表示。輸出y是一個(gè)向量,比如MNIST的數(shù)據(jù)是0-9的10個(gè)數(shù)字,所以我們可以讓y輸出一個(gè)10維的向量,分別代表識(shí)別成0-9的置信度(概率),選擇最大的那個(gè)作為我們的識(shí)別結(jié)果(當(dāng)然更常見的是最后一層是softmax而不是普通的激活函數(shù),這樣這個(gè)10維向量加起來等于1,可以認(rèn)為是分類的概率)。而訓(xùn)練就是給這個(gè)模型很多(x,y),

8、然后訓(xùn)練的過程就是不斷的調(diào)整參數(shù)w,然后使得分類錯(cuò)誤盡可能少(由于分類錯(cuò)誤相對(duì)w不連續(xù)因而不可求導(dǎo),所以一般使用一個(gè)連續(xù)的LossFunction)。對(duì)于神經(jīng)網(wǎng)絡(luò)來說,標(biāo)準(zhǔn)的訓(xùn)練算法就是反向傳播算法(BackPropagation)。從數(shù)學(xué)上來說就是使用(隨機(jī))梯度下降算法,求LossFunction對(duì)每個(gè)參數(shù)的梯度。另外我們也可以從另外一個(gè)角度來看反向傳播算法,比如最后一層的神經(jīng)網(wǎng)絡(luò)參數(shù),直接造成錯(cuò)誤(Loss);而倒數(shù)第二層的神經(jīng)網(wǎng)絡(luò)參數(shù),通過這一次的激活函數(shù)影響最后一層,然后間接影響最終的輸出。反向傳播算法也可以看成錯(cuò)誤不斷往前傳播的過程。由于深度神經(jīng)網(wǎng)絡(luò)的參數(shù)非常多,比如GoogleN

9、et,2014年ILSVRC挑戰(zhàn)賽冠軍,將Top5的錯(cuò)誤率降低到6.67%,它是一個(gè)22層的CNN,有5百多萬個(gè)參數(shù)。 所以需要強(qiáng)大的計(jì)算資源來訓(xùn)練這么深的神經(jīng)網(wǎng)絡(luò)。其中,CNNCNN 是 ImageImage 領(lǐng)域常見的一種深度神經(jīng)網(wǎng)絡(luò)。由 YannLeCunYannLeCun 提出,通過卷積來發(fā)現(xiàn)位置無關(guān)的 feature,feature,而且這些 featurefeature 的參數(shù)是相同的,從而與全連接的神經(jīng)網(wǎng)絡(luò)相比大大減少了參數(shù)的數(shù)量。(cnn深度神經(jīng)網(wǎng)絡(luò))最開始的改進(jìn)是使用GPU來加速訓(xùn)練,GPU可以看成一種SIMT的架構(gòu), 和SIMD有些類似,但是執(zhí)行相同指令的warp里的32個(gè)

10、core可以有不同的代碼路徑。對(duì)于反向傳播算法來說,基本計(jì)算就是矩陣向量乘法,對(duì)一個(gè)向量應(yīng)用激活函數(shù)這樣的向量化指令,而不像在傳統(tǒng)的代碼里會(huì)有很多if-else這樣的邏輯判斷,所以使用GPU加速非常有用。但即使這樣,單機(jī)的計(jì)算能力還是相對(duì)有限的。深度學(xué)習(xí)開源工具從數(shù)學(xué)上來講,深度神經(jīng)網(wǎng)絡(luò)其實(shí)不復(fù)雜,我們定義不同的網(wǎng)絡(luò)結(jié)構(gòu),比如層次之間怎么連接,每層有多少神經(jīng)元,每層的激活函數(shù)是什么。前向算法非常簡(jiǎn)單,根據(jù)網(wǎng)絡(luò)的定義計(jì)算就好了。而反向傳播算法就比較復(fù)雜了, 所以現(xiàn)在有很多深度學(xué)習(xí)的開源框架來幫助我們把深度學(xué)習(xí)用到實(shí)際的系統(tǒng)中。我們可以從以下幾個(gè)不同的角度來分類這些開源的深度學(xué)習(xí)框架。*通用 vs

11、vs 專用深度學(xué)習(xí)抽象到最后都是一個(gè)數(shù)學(xué)模型, 相對(duì)于傳統(tǒng)的機(jī)器學(xué)習(xí)方法來說少了很多特征抽取的工作,但是要把它用到實(shí)際的系統(tǒng)中還有很多事情要做。而且對(duì)于很多系統(tǒng)來說,深度學(xué)習(xí)只是其中的一個(gè)模塊。拿語音識(shí)別來說,語音識(shí)別包含很多模塊,比如聲學(xué)模型和語言模型,現(xiàn)在的聲學(xué)模型可以用LSTMs(一種RNN,也是一種深度學(xué)習(xí)網(wǎng)絡(luò))來做,但是我們需要把它融入整個(gè)系統(tǒng),這就有很多工作需要做。而且目前大部分的機(jī)器學(xué)習(xí)方法包1.outputoutputtciturcrtw/tciturcrtw/, MMuiemMMuiem箝蛇熊wciri|n!cjturermptwciri|n!cjturermpt28U28U

12、 corrvoluticifeatureextractiofeatureextractiogulgul32dBIB-BIB-1x13U3U些(pplippli7subsvnphnfsubsvnphnf:corwoMioncorwoMionJiJmiJmi。5*55*5G.7tanncciEdtanncciEd、classificaticlassificati括深度學(xué)習(xí),都必須假設(shè)訓(xùn)練數(shù)據(jù)和測(cè)試數(shù)據(jù)是相同(或者類似)的分布的。所以在實(shí)際的應(yīng)用中,我們需要做很多數(shù)據(jù)相關(guān)的預(yù)處理工作。比如Kaldi,它是一個(gè)語音識(shí)別的工具,實(shí)現(xiàn)了語音識(shí)別的所有模塊,也包括一些語音識(shí)別常用的深度神經(jīng)網(wǎng)絡(luò)模型,比如DN

13、N和LSTMo而Caffe更多的是用在圖像識(shí)別, 它實(shí)現(xiàn)了CNN,因?yàn)檫@個(gè)模型在圖像識(shí)別上效果非常好。框架 vsvs 庫大部分開源的深度學(xué)習(xí)工具把整個(gè)模型都封裝好了,我們只需要指定一些參數(shù)就行了。比如我們使用 CaffeCaffe 的 CNNCNN。但是還有一些工具只是提供一些基礎(chǔ)庫,比如 Theano,Theano,它提供了自動(dòng)求梯度的工具。我們可以自己定義網(wǎng)絡(luò)的結(jié)構(gòu),我們不需要自己求梯度。使用Theano的好處是如果我們創(chuàng)造”一個(gè)新的網(wǎng)絡(luò)結(jié)構(gòu)或者是很新的深度神經(jīng)網(wǎng)絡(luò), 那么其它框架很可能還沒有實(shí)現(xiàn), 所以Theano在學(xué)術(shù)界很流行。 當(dāng)然壞處就是因?yàn)樗豢赡茚槍?duì)特定的模型做優(yōu)化,所以可能性

14、能不如特定的實(shí)現(xiàn)那么好。*單機(jī)vsvs集群目前大部分的開源工具都是單機(jī)版的,有些支持在一個(gè)節(jié)點(diǎn)的多個(gè)GPU訓(xùn)練,但是支持GPUcluster比較少,目前支持多機(jī)訓(xùn)練的有GraphLab和Deeplearning4j。TensorFlowTensorFlow到底是什么?Tensor(張量) 意味著N維數(shù)組,F(xiàn)low(流) 意味著基于數(shù)據(jù)流圖的計(jì)算,TensorFlow即為張量從圖的一端流動(dòng)到另一端。TensorFlow表達(dá)了高層次的機(jī)器學(xué)習(xí)計(jì)算,大幅簡(jiǎn)化了第一代系統(tǒng),并且具備更好的靈活性和可延展性。TensorFlowTensorFlow 一大亮點(diǎn)是支持異構(gòu)設(shè)備分布式計(jì)算,它能夠在各個(gè)平臺(tái)上自動(dòng)

15、運(yùn)行模型, 從電話、 單個(gè) CPUCPU/ /GPUGPU 到成百上千 GPUGPU 卡組成的分布式系統(tǒng)。從目前的文檔看,TensorFlow支持CNN、RNN和LSTM算法,這都是目前在Image,Speech和NLP最流行的深度神經(jīng)網(wǎng)絡(luò)模型。而且從 JeffDeanJeffDean 的論文來看,它肯定是支持集群上的訓(xùn)練的。在論文里的例子來看, 這個(gè)架構(gòu)有點(diǎn)像Spark或者Dryad等圖計(jì)算模型。 就像寫Map-reduce代碼一樣,我們從高層的角度來定義我們的業(yè)務(wù)邏輯,然后這個(gè)架構(gòu)幫我們調(diào)度和分配計(jì)算資源(甚至容錯(cuò),比如某個(gè)計(jì)算節(jié)點(diǎn)掛了或者太慢)。目前開源的實(shí)現(xiàn)分布式Deeplearnin

16、g的GraphLab就是GAS的架構(gòu),我們必須按照它的抽象來編寫DeepLearing代碼(或者其它分布式代碼,如果PageRank,而Deeplearning4j直接使用了Spark。Map-Reduce的思想非常簡(jiǎn)單,但是要寫出一個(gè)穩(wěn)定可用的工業(yè)級(jí)產(chǎn)品來就不容易了。而支持分布式機(jī)器學(xué)習(xí)尤其是深度學(xué)習(xí)的產(chǎn)品就更難了,Google的TensorFlow應(yīng)該是一種抽象方式,可惜現(xiàn)在開源的部分并沒有這些內(nèi)容。有點(diǎn)像Google開源了一個(gè)單機(jī)版的Hadoop,可以用這種抽象(Map-reduce)來簡(jiǎn)化大數(shù)據(jù)編程,但是實(shí)際應(yīng)用肯定就大大受限制了。深度學(xué)習(xí)能解決所有問題嗎?至少目前來看, 深度學(xué)習(xí)只是在Speech和Image這種比較淺層”的智能問題上效果是比較明顯的,而對(duì)于語言理解和推理這些問題效果就不那么好了,也許未來的深度神經(jīng)網(wǎng)絡(luò)能解決更智能”的問題,但只是目前還不行。GoogleGoogle開源TensorFlowTensorFlow的意義這一次的Google開源深度學(xué)習(xí)系統(tǒng)TensorFlo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論