眼下,人工智能已經成爲愈來愈火的一個方向。普通程序員,如何轉向人工智能方向,是知乎上的一個問題。本文是我對此問題的一個回答的歸檔版。相比原回答有所內容增長。php
一. 目的html
本文的目的是給出一個簡單的,平滑的,易於實現的學習方法,幫助 「普通」 程序員踏入AI領域這個門。這裏,我對普通程序員的定義是:擁有大學本科知識;平時工做較忙;本身能獲取的數據有限。所以,本文更像是一篇 「from the scratch」 的AI入門教程。git
二. AI領域簡介程序員
AI,也就是人工智能,並不只僅包括機器學習。曾經,符號與邏輯被認爲是人工智能實現的關鍵,而現在則是基於統計的機器學習佔據了主導地位。最近火熱的深度學習正是機器學習中的一個子項。目前能夠說,學習AI主要的是學習機器學習。可是,人工智能並不等同於機器學習,這點在進入這個領域時必定要認識清楚。關於AI領域的發展歷史介紹推薦看周老師寫的《機器學習簡介》。下面一個問題是:AI的門好跨麼?其實很很差跨。咱們以機器學習爲例。在學習過程當中,你會面對大量複雜的公式,在實際項目中會面對數據的缺少,以及艱辛的調參等。若是僅僅是由於以爲這個方向將來會「火」的話,那麼這些困難會容易讓人放棄。考慮到普通程序員的特色,而要學習如此困難的學科,是否就是沒有門路的?答案是否認的。只要制定合適的學習方法便可。github
三. 學習方法算法
學習方法的設定簡單說就是回答如下幾個問題:我要學的是什麼?我怎樣學習?我如何去學習?這三個問題歸納說就是:學習目標,學習方針與學習計劃。學習目標比較清楚,就是踏入AI領域這個門。這個目標不大,所以實現起來也較爲容易。「過大的目標時就是爲了你往後放棄它時找到了足夠的理由」。學習方針能夠總結爲 「興趣爲先,踐學結合」。簡單說就是先培養興趣,而後學習中把實踐穿插進來,螺旋式提升。這種方式學習效果好,並且不容易讓人放棄。有了學習方針之後,就能夠制定學習計劃,也稱爲學習路線。下面就是學習路線的介紹。網絡
四. 學習路線機器學習
我推薦的學習路線是這樣的,以下圖:jsp
圖1 AI領域學習路線圖工具
這個學習路線是這樣設計的:首先了解這個領域,創建起全面的視野,培養起充足的興趣,而後開始學習機器學習的基礎,這裏選擇一門由淺入深的課程來學習,課程最好有足夠的實驗可以進行實戰。基礎打下後,對機器學習已經有了充足的瞭解,能夠用機器學習來解決一個實際的問題。這時仍是能夠把機器學習方法看成一個黑盒子來處理的。實戰經驗積累之後,能夠考慮繼續進行學習。這時候有兩個選擇,深度學習或者繼續機器學習。深度學習是目前最火熱的機器學習方向,其中一些方法已經跟傳統的機器學習不太同樣,所以能夠單獨學習。除了深度學習之外,機器學習還包括統計學習,集成學習等實用方法。若是條件足夠,能夠同時學習二者,一些規律對二者是共通的。學習完後,你已經具有了較強的知識儲備,能夠進入較難的實戰。這時候有兩個選擇,工業界的能夠選擇看開源項目,以改代碼爲目的來讀代碼;學術界的能夠看特定領域的論文,爲解決問題而想發論文。不管哪者,都須要知識過硬,以及較強的編碼能力,所以很能考察和鍛鍊水平。通過這個階段之後,能夠說是踏入AI領域的門了。「師傅領進門,修行在我的」。以後的路就要本身走了。
下面是關於每一個階段的具體介紹:
0.領域瞭解
在學習任何一門知識以前,首先第一步就是了解這個知識是什麼?它能作什麼事?它的價值在什麼地方?若是不理解這些的話,那麼學習自己就是一個沒有方向的舟,不知道駛向何處,也極易有沉船的風險。瞭解這些問題後,你才能培養出興趣,興趣是最好的引路人,學習的動力與持久力才能讓你應付接下來的若干個階段。關於機器學習是什麼,能作什麼,它與深度學習以及人工智能的關係,能夠看我寫的博客 從機器學習談起:
1.知識準備
若是你離校太久,或者以爲基礎不牢,最好事先作一下準備複習工做。「工欲善其事,必先利其器」。如下的準備工做很少,但足以應付後面階段的學習。
2.機器學習
機器學習的第一門課程首推Andrew Ng的機器學習。這門課程有如下特色:難度適中,同時有足夠的實戰例子,很是適合第一次學習的人。cs229 這門課程我這裏不推薦,爲何,緣由有如下:
3.實踐作項目
學習完了基礎課程,你對機器學習就有了初步瞭解。如今使用它們是沒有問題的,你能夠把機器學習算法看成黑盒子,放進去數據,就會有結果。在實戰中你更須要去關心如何獲取數據,以及怎麼調參等。若是有時間,本身動手作一個簡單的實踐項目是最好的。這裏須要選擇一個應用方向,是圖像(計算機視覺),音頻(語音識別),仍是文本(天然語言處理)。這裏推薦選擇圖像領域,這裏面的開源項目較多,入門也較簡單,可使用OpenCV作開發,裏面已經實現好了神經網絡,SVM等機器學習算法。項目作好後,能夠開源到到 Github 上面,而後不斷完善它。實戰項目作完後,你能夠繼續進一步深刻學習,這時候有兩個選擇,深度學習和繼續機器學習;
4.深度學習
深度學習:深度學習是目前最火熱的研究方向。有如下特色:知識更新快,較爲零碎,沒有系統講解的書。所以學習的資源也相對零散,下面是一些資源介紹。其中不推薦的部分並不表明很差,而是在這個初學階段不合適:
5.繼續機器學習
深度學習未必就是將來的必定主流,至少一些大牛是這麼認爲的。傳統的機器學習有以下特色,知識系統化,有相對經典的書。其中統計學習(表明SVM)與集成學習(表明adaboost)是在實踐中使用很是多的技術。下面是相關資源:
6.開源項目
當知識儲備較爲充足時,學習能夠再次轉入實踐階段。這時候的實踐仍然能夠分兩步走,學習經典的開源項目或者發表高質量的論文。開源項目的學習應該以儘可能以優化爲目的,單純爲讀代碼而學習效果每每不太好。好的開源項目均可以在Github 裏搜索。這裏以深度學習爲例。深度學習的開源優秀庫有不少,例如torch,theano等等,這裏列舉其中的兩個:
7.會議論文
較好的課程都會推薦你一些論文。一些著名的技術與方法每每誕生於一些重要的會議。所以,看往年的會議論文是深刻學習的方法。在這時,一些論文中的內容會驅使你學習數學中你不擅長的部分。有時候你會以爲數學知識儲備不夠,所以每每須要學習一些輔助課程。當你看完足夠的論文之後,在這個階段,若是是在校學生,能夠選擇某個課題,以發論文爲目的來學習研究。通常來講,論文是工做的產物。有時候一篇基於實驗的論文每每須要你寫代碼或者基於開源項目。所以開源項目的學習與會議論文的工做二者之間是有相關的。二者能夠同時進行學習。關於在哪裏看論文,能夠看一下CCF推薦排名,瞭解一下這個領域裏有哪些優秀的會議。下面介紹兩個圖像與機器學習領域的著名頂級會議:
原文地址:http://www.cnblogs.com/subconscious/p/6240151.html
8.自由學習
自由學習:到這裏了,能夠說是進入這個門了。下面能夠依據興趣來自由學習。前階段不推薦的學習資源也可隨意學習,下面是點評:
五. 總結
本文的目的是幫助對AI領域瞭解不深,但又想進入的同窗踏入這個門。這裏只說踏入,是由於這個領域的專精實在很是困難,須要數年的積累與努力。在進行領域學習前,充分認識本身的特色,制定合適的學習方法是十分重要的。首先得對這個領域進行充分了解,培養興趣。在學習時,保持着按部就班的學習方針,不要猛進的學習過難資源;結合着學習與實踐相輔的策略,不要只讀只看,實際動手纔有成就感。學習某個資源時要有充分的目的,不是爲了學開源項目而看代碼,而是爲了寫開源項目而看;不是爲了發論文而寫論文,而是爲了作事情而寫論文。若是一個學習資源對你過難,並不表明必定是你的問題,多是學習資源的演講或撰寫人的問題。能把難的問題講簡單的人才是真正有水平的人。因此,必定要學習優質資源,而不是不分青紅皁白的學習。最後,牢記以興趣來學習。學習的時間很長,過程也很艱難,而只有興趣纔是讓你鍥而不捨,攻克難關的最佳助力。