拿到這份文檔時想必你的腦海中一直縈繞著這么一個問題,“機(jī)器學(xué)習(xí)/深度學(xué)習(xí)要怎么學(xué)呢?(怎么入門,又怎么進(jìn)一步掌握?)”。關(guān)于這個問題其實并沒有一個標(biāo)準(zhǔn)答案,有的人可能適合自底向上的學(xué),也就是先從理論和數(shù)學(xué)開始,然后是算法實現(xiàn),最后再通過一些項目去解決生活中的實際問題;有的人則可能適合自頂向下的學(xué),也就是在弄清楚什么是機(jī)器學(xué)習(xí)及為什么學(xué)機(jī)器學(xué)習(xí)后,先確定一個系統(tǒng)性的用機(jī)器學(xué)習(xí)來解決實際問題的程序,然后找到一個合適的工具,接著再在各種數(shù)據(jù)集上做練習(xí)以不斷加強(qiáng)自己的實踐能力與鞏固對算法的理解。而這份文檔是希望能從紛繁眾多的學(xué)習(xí)資料里為你整理出一個頭緒,但即使是這樣一個出發(fā)點,從最終的結(jié)果來看,也還是繁雜了一些,也許之后還會再整理出一個精簡版,不過其實一些很不錯的入門指南的鏈接在這份文檔里也已列出,仔細(xì)找找就會有好東西喔。最后想借用Quora上一份對“I’m very interested in deep learning. How can I get hired?”問題的回答來作為這份學(xué)習(xí)建議的開場白:“Deep learning (Neural nets)/Machine learning is an ART. ART can never be mastered unless it is practiced. So instead of just learning about them , start exploring them by implementing one. there are outnumbered tutorials on net. choose either lib based implementation such as convnet or torch7 or caffe etc. or try implementing fully from scratch( this way u understand internal structures and linkages of algo better) .Start off with small dataset instead of aiming on high .Start off by minimal architecture.U will learn a lot this way u gain confidence. then you can project yourself to the companies by posting link of ur github repository of machine /deep learning implementations. this will help u in the long run… “—Good Luck
階段一.機(jī)器學(xué)習(xí)入門
這是最基礎(chǔ)也是最重要的一個階段,借用臺大的林軒田教授總結(jié)的幾句話,在這個階段我們要注重思考與理解這么幾個問題:1.什么是機(jī)器學(xué)習(xí)?What is machine learning機(jī)器學(xué)習(xí)是從數(shù)據(jù)(data)中學(xué)習(xí)獲取某一方面表現(xiàn)(performance measure)的增進(jìn)。
2.什么時候機(jī)器可以學(xué)習(xí)(機(jī)器學(xué)習(xí)能為我們做什么)?When can machines learn那么何時考慮使用機(jī)器學(xué)習(xí),通常需要滿足以下三個前提:1)存在有待學(xué)習(xí)的隱含模式(underlying pattern)。2)該模式無法/難以通過程序?qū)崿F(xiàn)(no programmable definition)。(when human cannot program the system manually, when human cannot define the solution easily, when needing rapid decisions that humans cannot do, when needing to be user-oriented in a massive scale)比如辨認(rèn)某個事物,靠人的腦力用程序把辨識規(guī)則詳細(xì)寫出來,可能很難做到。y=f(x)y=f(x),xx是輸入樣本,yy是輸出的預(yù)測值,這個f()f()未可知,正是需要機(jī)器來學(xué)的。3)該模式存在足夠多的數(shù)據(jù)(data)。
3.為什么機(jī)器可以學(xué)習(xí)?Why can machines learn
假設(shè)訓(xùn)練數(shù)據(jù)樣本和未知的測試樣本來自同一的分布(這點尤為重要現(xiàn)有的大部分機(jī)器學(xué)習(xí)算法都從這點出發(fā),好像遷移學(xué)習(xí)不是),并且假設(shè)空間的假設(shè)hh是有限的情況下,在訓(xùn)練樣本N足夠大,假設(shè)空間中的所有的假設(shè)都會遵循PAC準(zhǔn)則(probably approximately correct),確保Ein(h)≈Eout(h)Ein(h)≈Eout(h),每一個假設(shè)函數(shù)都可以滿足近似相等的性質(zhì),因此可以通過算法在這些假設(shè)空間中找一個Ein(g)≈0Ein(g)≈0的假設(shè),同樣PAC也保證了Eout(g)≈0Eout(g)≈0。存在一個未知的目標(biāo)函數(shù)f,機(jī)器學(xué)習(xí)的任務(wù)是找出一個假設(shè)函數(shù)g,使得假設(shè)g和目標(biāo)函數(shù)f很接近。
4.怎樣讓機(jī)器學(xué)習(xí)?How can machines learn這里考慮的就是用于機(jī)器學(xué)習(xí)的算法模型。
5.怎樣讓機(jī)器學(xué)得更好?How can machines learn better選擇合適的模型、調(diào)整模型參數(shù)、防止過擬合、交叉驗證、特征工程…具體問題具體分析
推薦的課程
1.Coursera-Machine Learninghttps://www.coursera.org/learn/machine-learning/吳恩達(dá)教授在Coursera上開的機(jī)器學(xué)習(xí)的公開課,是一門非常好的機(jī)器學(xué)習(xí)入門課程,相信很多同學(xué)都知道,就不多說了。但值得一提的是,編程作業(yè)除了官網(wǎng)提供的matlab版,也有人用python實現(xiàn)了一遍,對于想要了解python的同學(xué),這是個不錯的實踐機(jī)會:https://github.com/icrtiou/coursera-ML
2.CS229-Machine Learninghttp://open.163.com/movie/2008/1/M/C/M6SGF6VB4_M6SGHFBMC.html?recomend=2同樣是吳恩達(dá)教授開的公開課,相比Coursera上的課程難度會大一些,適合做一定程度的拔高。以下鏈接為課程講義的下載:http://cs229.stanford.edu/materials.html
3.Intro to Machine Learninghttps://www.udacity.com/course/intro-to-machine-learning–ud120Udacity有一個免費(fèi)的,十周的機(jī)器學(xué)習(xí)課程,著重于理論與實際的應(yīng)用。對深度學(xué)習(xí)感興趣的人這會是一個全面的預(yù)備課程。
4.Coursera-Machine Learning Foundationshttp://pan.baidu.com/s/1hsjtaWc這就是一開始提到的林軒田教授在Coursera上開的課,不過現(xiàn)在網(wǎng)上已經(jīng)下架了,因此給了個百度云盤的鏈接,可直接下載觀看。個人覺得相比前兩門課,在基礎(chǔ)上講得會更細(xì)致一些,而且全程中文講課,聽起來也相對輕松些,適合想把基礎(chǔ)打扎實些的同學(xué)觀看。
推薦的書籍
1.李航 -《統(tǒng)計學(xué)習(xí)方法》2.周志華 -《機(jī)器學(xué)習(xí)》這兩本書就不用說了,相信大部分對這個領(lǐng)域感興趣的人都已經(jīng)人手一本了吧:)個人覺得關(guān)鍵是如何使用這兩本書了,先貼出一個周志華教授他自己的建議:http://cs.nju.edu.cn/zhouzh/zhouzh.files/publication/MLbook2016.htm?url_type=39&object_type=webpage&pos=1&from=groupmessage&isappinstalled=1然后我個人的看法是不要孤立地去看這兩本書,最好能結(jié)合其他資源如公開課、博客等一起去看,還有最重要的一點,一定要注重邊看邊實踐,比如當(dāng)看到某個模型時,就去網(wǎng)上下載一些相關(guān)的數(shù)據(jù)集和代碼來學(xué)習(xí)一下。這一點做起來可能不是那么容易,因為實踐難度會更高一些,也往往意味著更多時間的投入,很多時候可能只是稍微試了一下,碰到些困難,就放棄了,我這一年來的學(xué)習(xí)也存在著很多這樣的情況。但如果想更深入地理解模型、算法,想做出些自己的東西,實踐上的練習(xí)是絕對必不可少的。
3.其他的入門及深入書籍可參看這個鏈接:http://www.cnblogs.com/xmphoenix/p/3683870.html其中的《Pattern Recognition And Machine Learning》一書據(jù)評“具有強(qiáng)烈的工程氣息,可以配合stanford 大學(xué) Andrew Ng 教授的 Machine Learning 視頻教程一起來學(xué),效果翻倍?!?/p>
推薦的綜述論文
1.《The Discipline of Machine Learning》http://www.cs.cmu.edu/~tom/pubs/MachineLearning.pdfTom Mitchell 當(dāng)年為在CMU建立機(jī)器學(xué)習(xí)系給校長寫的東西。
2.《A Few Useful Things to Know about Machine Learning》http://homes.cs.washington.edu/~pedrod/papers/cacm12.pdfPedro Domingos教授的大道理,也許入門時很多概念還不明白,上完公開課后一定要再讀一遍。
推薦的編程庫
1.scikit-learnhttp://scikit-learn.org/stable/這是基于python來進(jìn)行機(jī)器學(xué)習(xí)實戰(zhàn)的一個很好的庫,主要包含分類、回歸、聚類、降維的常用算法及具體例程,以及模型選擇、預(yù)處理這樣的影響機(jī)器學(xué)習(xí)模型性能的關(guān)鍵處理。
2.DMLChttp://dmlc.ml/這是一個開源的分布式機(jī)器學(xué)習(xí)項目,包含有MxNet、Minerva這樣的靈活而又高效的深度學(xué)習(xí)庫,以及Xgboost這樣的大規(guī)模、分布式的通用Gradient Boosting庫,值得一提的是,由于其性能和效率上的優(yōu)勢,Xgboost自問世起就一直是各類數(shù)據(jù)挖掘競賽(如kaggle)的一大殺器。下圖為Xgboost與另外兩個boosting方法常用包的對比:
xgboost和另外兩個常用包的性能對比
推薦的博客
1.掌握機(jī)器學(xué)習(xí)的5條必由之路http://mp.weixin.qq.com/s?__biz=MzI3MTA0MTk1MA==&mid=2651987978&idx=3&sn=6c5e1ae866dd47105cb84417e59502ac&chksm=f12154fbc656dded6edc649fab530efc25f686f027db57f0dc76e24dfa1c6142f1f3bb5ba3e5&mpshare=1&scene=1&srcid=1018HDoQNrHdRpA5A8zyhF3Q#rd傳統(tǒng)的機(jī)器學(xué)習(xí)方法提倡從下往上學(xué),先從理論和數(shù)學(xué)開始,然后是算法實現(xiàn),最后讓你去解決現(xiàn)實世界的問題。作者提倡的掌握機(jī)器學(xué)習(xí)的方法與傳統(tǒng)方法相反,是從最有價值的成果部分開始。這一思路值得借鑒。
2.機(jī)器學(xué)習(xí)入門資源不完全匯總http://ml.memect.com/article/machine-learning-guide.html#%E5%9F%BA%E6%9C%AC%E6%A6%82%E5%BF%B5如題,你可以從這個鏈接中找到更多的入門資源
3.機(jī)器學(xué)習(xí)的最佳入門學(xué)習(xí)資源http://blog.jobbole.com/56256/這其實是“2”的中文翻譯
4.Best Machine Learning Resources for Getting Startedhttp://machinelearningmastery.com/best-machine-learning-resources-for-getting-started/這也是一份很不錯的入門資源的整合
5.機(jī)器學(xué)習(xí)相關(guān)學(xué)習(xí)網(wǎng)址記錄http://blog.csdn.net/brightming/article/details/50420608有很多東西,從中挑選自己感興趣的吧
6.機(jī)器學(xué)習(xí)與人工智能學(xué)習(xí)資源導(dǎo)引http://mindhacks.cn/2008/09/11/machine-learning-and-ai-resources/除了這篇文章本身,大家也可以多關(guān)注下文章作者(劉未鵬)的其他博客,有很多方法論的東西寫的很棒
7.從入門到精通是怎樣一種體驗http://blog.csdn.net/kkk584520/article/details/51136439如題,更多有趣的見解也可以直接知乎一下
8.zouxy09的專欄http://blog.csdn.net/zouxy09/article/category/1333962zouxy09也是個博客大牛了,寫有很多有價值的文章
9.從機(jī)器學(xué)習(xí)談起http://www.cnblogs.com/subconscious/p/4107357.html這篇文章“以漫談的形式介紹跟機(jī)器學(xué)習(xí)相關(guān)的所有內(nèi)容,包括學(xué)科(如數(shù)據(jù)挖掘、計算機(jī)視覺等),算法(神經(jīng)網(wǎng)絡(luò),svm)等等”,是一篇寫得不錯的機(jī)器學(xué)習(xí)入門介紹
10.機(jī)器學(xué)習(xí)系列https://www.52ml.net/20090.html這是一系列的機(jī)器學(xué)習(xí)基礎(chǔ)文章,最好可以在整個學(xué)習(xí)過程中一點點地跟著看
-
人工智能
+關(guān)注
關(guān)注
1791文章
47278瀏覽量
238485 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8418瀏覽量
132630 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5503瀏覽量
121162
原文標(biāo)題:機(jī)器學(xué)習(xí)、深度學(xué)習(xí)的理論與實戰(zhàn)入門建議整理
文章出處:【微信號:Imgtec,微信公眾號:Imagination Tech】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論