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