來(lái)源:玉剛說(shuō) 作者:Anymake 2018-06-14 11:34:12
通常,我們拿到的數(shù)據(jù)和最終想要的結(jié)果相差甚遠(yuǎn)。例如,想知道照片中的人是不是開(kāi)心,我們希望有一個(gè)模型,能將成千上萬(wàn)的低級(jí)特征(像素值),轉(zhuǎn)化為高度抽象的輸出(開(kāi)心程度)。選擇正確模型并不簡(jiǎn)單,不同的模型適合不同的數(shù)據(jù)集。在這本書(shū)中,我們會(huì)主要聚焦于深度神經(jīng)網(wǎng)絡(luò)模型。這些模型包含了自上而下聯(lián)結(jié)的數(shù)據(jù)多層連續(xù)變換,因此稱(chēng)之為深度學(xué)習(xí)。在討論深度神經(jīng)網(wǎng)絡(luò)之前,我們也會(huì)討論一些簡(jiǎn)單、淺顯的模型。
損失函數(shù)(Loss Functions)
我們需要對(duì)比模型的輸出和真實(shí)值之間的誤差。損失函數(shù)可以衡量輸出結(jié)果對(duì)比真實(shí)數(shù)據(jù)的好壞。例如,我們訓(xùn)練了一個(gè)基于圖片預(yù)測(cè)病人心率的模型。如果模型預(yù)測(cè)某個(gè)病人的心率是100bpm,而實(shí)際上僅有60bpm,這時(shí)候,我們就需要某個(gè)方法來(lái)提點(diǎn)一下這個(gè)的模型了。
類(lèi)似的,一個(gè)模型通過(guò)給電子郵件打分來(lái)預(yù)測(cè)是不是垃圾郵件,我們同樣需要某個(gè)方法判斷模型的結(jié)果是否準(zhǔn)確。典型的機(jī)器學(xué)習(xí)過(guò)程包括將損失函數(shù)最小化。通常,模型包含很多參數(shù)。我們通過(guò)最小化損失函數(shù)來(lái)“學(xué)習(xí)”這些參數(shù)?上,將損失降到最小,并不能保證我們的模型在遇到(未見(jiàn)過(guò)的)測(cè)試數(shù)據(jù)時(shí)表現(xiàn)良好。由此,我們需要跟蹤兩項(xiàng)數(shù)據(jù):
訓(xùn)練誤差(training error):這是模型在用于訓(xùn)練的數(shù)據(jù)集上的誤差。類(lèi)似于考試前我們?cè)谀M試卷上拿到的分?jǐn)?shù)。有一定的指向性,但不一定保證真實(shí)考試分?jǐn)?shù)。
測(cè)試誤差(test error):這是模型在沒(méi)見(jiàn)過(guò)的新數(shù)據(jù)上的誤差,可能會(huì)跟訓(xùn)練誤差很不一樣(統(tǒng)計(jì)上稱(chēng)之為過(guò)擬合)。類(lèi)似于考前?即未文酶叻,但實(shí)際考起來(lái)卻失誤了。
優(yōu)化算法(Optimization Algorithms)
最后,我們需要算法來(lái)通盤(pán)考慮模型本身和損失函數(shù),對(duì)參數(shù)進(jìn)行搜索,從而逐漸最小化損失。最常見(jiàn)的神經(jīng)網(wǎng)絡(luò)優(yōu)化使用梯度下降法作為優(yōu)化算法。簡(jiǎn)單地說(shuō),輕微地改動(dòng)參數(shù),觀察訓(xùn)練集的損失將如何移動(dòng)。然后將參數(shù)向減小損失的方向調(diào)整。
什么是深度學(xué)習(xí)
這是機(jī)器學(xué)習(xí)的一個(gè)子領(lǐng)域,近年來(lái)表現(xiàn)出了很大的潛力。它涉及到大腦中神經(jīng)元結(jié)構(gòu)和功能的算法。Andrew Ng曾用下圖對(duì)比說(shuō)明傳統(tǒng)機(jī)器學(xué)習(xí)算法和深度學(xué)習(xí)算法的特點(diǎn)。從圖中可以看出,隨著數(shù)據(jù)的增多,到達(dá)一定量后,深度學(xué)習(xí)算法的表現(xiàn)會(huì)明顯優(yōu)于傳統(tǒng)的機(jī)器學(xué)習(xí)算法。
深度學(xué)習(xí)中最令人激動(dòng)的特性之一是它在特征學(xué)習(xí)上的表現(xiàn)。該算法在從原始數(shù)據(jù)中檢測(cè)特征方面表現(xiàn)地特別好。有一個(gè)很好的例子,就是通過(guò)深度學(xué)習(xí)技術(shù)來(lái)識(shí)別汽車(chē)圖片中的車(chē)輪。下圖說(shuō)明了典型機(jī)器學(xué)習(xí)與深度學(xué)習(xí)之間的區(qū)別:
在機(jī)器學(xué)習(xí)中特征選擇部分一般需要人的先驗(yàn)知識(shí)的介入來(lái)設(shè)計(jì)好的特征提取方法,比如人知道輪子一般是圓的,一般出現(xiàn)在交通工具上,有輪胎、輪轂等部件,基于先驗(yàn)知識(shí),人可以選取適合提取輪子特征的方法,再設(shè)計(jì)分類(lèi)器以識(shí)別輪子。而深度學(xué)習(xí)通常由多個(gè)層組成。它們通常將更簡(jiǎn)單的模型組合在一起,通過(guò)將數(shù)據(jù)從一層傳遞到另一層來(lái)構(gòu)建更復(fù)雜的模型。通過(guò)大量數(shù)據(jù)的訓(xùn)練自動(dòng)得到一個(gè)能識(shí)別輪子的模型,不需要人工設(shè)計(jì)特征提取環(huán)節(jié)。這是深度學(xué)習(xí)隨著數(shù)據(jù)量的增加而優(yōu)于其他學(xué)習(xí)算法的主要原因之一。
隨著深度學(xué)習(xí)的發(fā)展,為了方便算法人員訓(xùn)練模型,調(diào)整參數(shù)等,很多公司開(kāi)源了優(yōu)秀的深度學(xué)習(xí)框架,到目前為止,主要的深度學(xué)習(xí)框架如下圖所示。目前工業(yè)界用的比較多的是Caffe和TensorFlow,Caffe主要在計(jì)算機(jī)視覺(jué)上用的較多,TensorFlow由谷歌開(kāi)源,相關(guān)文檔較好,適用范圍廣,基于Python語(yǔ)音,入門(mén)簡(jiǎn)單,建議新手入門(mén)可以選擇TensorFlow。但是這些只是深度學(xué)習(xí)的平臺(tái)框架而已,真正重要的還是學(xué)習(xí)好深度學(xué)習(xí)的理論,有了理論各種平臺(tái)都不是問(wèn)題。
TensorFlow簡(jiǎn)介
TensorFlow是專(zhuān)門(mén)為機(jī)器學(xué)習(xí)而設(shè)計(jì)的快速數(shù)值計(jì)算Python庫(kù),它由谷歌開(kāi)源,旨在讓世界各地更多的研究人員和開(kāi)發(fā)人員掌握深度學(xué)習(xí)。為了加速深度學(xué)習(xí)領(lǐng)域的發(fā)展,2015年11月9日,Google發(fā)布深度學(xué)習(xí)框架TensorFlow并宣布開(kāi)源。在短短的一年時(shí)間內(nèi),在GitHub上,TensorFlow就成為了最流行的深度學(xué)習(xí)項(xiàng)目。
TensorFlow在計(jì)算機(jī)視覺(jué)、語(yǔ)音識(shí)別、推薦系統(tǒng)和自然語(yǔ)言處理等場(chǎng)景下都有豐富的應(yīng)用。雖然Tenforflow開(kāi)源時(shí)間剛滿(mǎn)一年,但是它正在以迅猛的速度滲入到我們的尋常生活中。它支持Linux平臺(tái),Windows平臺(tái),Mac平臺(tái),甚至還宣稱(chēng)要發(fā)布相應(yīng)的移動(dòng)端平臺(tái)。其次,TensorFlow提供了非常豐富的深度學(xué)習(xí)相關(guān)的API,可以說(shuō)目前所有深度學(xué)習(xí)框架里,提供的API最全的,包括基本的向量矩陣計(jì)算、各種優(yōu)化算法、各種卷積神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò)基本單元的實(shí)現(xiàn)、以及可視化的輔助工具、等等。
你可以按照官方的教程安裝TensorFlow,安裝好之后,你就可以用它提供的多個(gè)API來(lái)訓(xùn)練機(jī)器學(xué)習(xí)模型了。具體的教程可以參考TensorFlow官網(wǎng),不想看英文的也可以參考TensorFlow中文社區(qū)。
雖然TensorFlow是最受歡迎的機(jī)器學(xué)習(xí)庫(kù),不過(guò)也有其他幾個(gè)很棒的選擇,如Torch(Facebook使用)、Caffe(出自Berkeley AI研究所的深度學(xué)習(xí)框架)等等。其中Caffe是第一個(gè)在工業(yè)上得到廣泛應(yīng)用的開(kāi)源深度學(xué)習(xí)框架,也是第一代深度學(xué)習(xí)框架里最受歡迎的框架,目前也有很多企業(yè)和科研人員在使用。
學(xué)習(xí)資料
一旦對(duì)基礎(chǔ)知識(shí)有了一定的了解,你應(yīng)該知道自己對(duì)機(jī)器學(xué)習(xí)的哪些方面比較感興趣,你想在應(yīng)用程序中使用機(jī)器學(xué)習(xí),還是想研究機(jī)器學(xué)習(xí)。下面是一些優(yōu)秀的參考資料,可以幫助你系統(tǒng)的學(xué)習(xí)。
書(shū)籍:
深度學(xué)習(xí)技術(shù)發(fā)展迅速,各種平臺(tái)框架也迭代很快,推薦相關(guān)的書(shū)籍其實(shí)不太好推薦。在這里我只推薦兩本書(shū):
第一本是《白話深度學(xué)習(xí)與TensorFlow》,這本書(shū)寫(xiě)的非常通俗易懂,沒(méi)有太多理論知識(shí)介紹,基本是深度學(xué)習(xí)的基礎(chǔ)知識(shí)和TensorFlow的相關(guān)例程,適合沒(méi)有深度學(xué)習(xí)基礎(chǔ),想入門(mén)深度學(xué)習(xí)的人看。
第二本是美國(guó)Ian,Goodfellow 寫(xiě)的《Deep Learning》,這本書(shū)有中文翻譯版《深度學(xué)習(xí)》,但是這本書(shū)基本是講深度學(xué)習(xí)理論的,沒(méi)有基礎(chǔ)的話很難看懂,但是翻譯者提供了PDF在GitHub上,想看的可以去下載:https://github.com/exacity/deeplearningbook-chinese
網(wǎng)絡(luò)資源:
對(duì)于新手入門(mén)個(gè)人覺(jué)得很多網(wǎng)上的手冊(cè)、教程和博客都很不錯(cuò)。這篇文章主要面向零基礎(chǔ)的想了解DeepLearning的人員,太復(fù)雜專(zhuān)業(yè)的暫時(shí)就不推薦了,以下是一些基礎(chǔ)的入門(mén)資源。
1.吳恩達(dá)的深度學(xué)習(xí)在線課程:這是吳恩達(dá)成立DeepLearning.ai在線教育網(wǎng)站后的第一個(gè)課程,網(wǎng)易云課堂引進(jìn)了,偏工程可以學(xué)習(xí)一下,還有相關(guān)證書(shū),吳恩達(dá)給你的人工智能第一課.
2.莫煩Python:這是一個(gè)在澳大利亞讀博的中國(guó)人,他會(huì)講Python和深度學(xué)習(xí)的教程,有視頻。Python基本是現(xiàn)在做深度學(xué)習(xí)的必會(huì)語(yǔ)言了,喜歡的可以去這里學(xué)習(xí)https://morvanzhou.github.io/about/。
3.臺(tái)灣李宏毅教授的在線課程:http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML17_2.html,還有一個(gè)300多頁(yè)的ppt,比較系統(tǒng),也最通俗易懂的:http://www.slideshare.net/tw_dsconf/ss-62245351?qid=108adce3-2c3d-4758-a830-95d0a57e46bc&v=&b=&from_search=3
4.TensorFlow中文社區(qū):http://www.tensorfly.cn
5.想學(xué)習(xí)caffe框架的,也可以參考徐其華的博客:http://www.cnblogs.com/denny402/tag/caffe/
結(jié)語(yǔ)
“整個(gè)世界就是一個(gè)大數(shù)據(jù)問(wèn)題” - Andrew McAfee
掌握機(jī)器學(xué)習(xí)就像是馴服一頭野獸。但是,如果你已經(jīng)吃透它,那么它就是你身邊一個(gè)非常有價(jià)值的資源。暫時(shí)想到的就這么多,愿大家一同進(jìn)步……
相關(guān)推薦:
小升初試題、期中期末題、小學(xué)奧數(shù)題
盡在奧數(shù)網(wǎng)公眾號(hào)
歡迎使用手機(jī)、平板等移動(dòng)設(shè)備訪問(wèn)幼教網(wǎng),幼兒教育我們一路陪伴同行!>>點(diǎn)擊查看