tags: ai,machine learning,deep learninghtml
一句話歸納:想進入AI領域,須要學習的的東西不少,若是能在紛繁複雜的知識中找到一條合理的學習路徑,少走彎路,那該多好,本文將試圖找到這條路。java
做爲一名想進入AI領域的程序員,上網搜一下人工智能,大量的知識涌出來,有AI發展,有機器學習,有tensorflow,有python等等,但對於須要學什麼,怎麼學仍是沒有明確的答案。能夠想象本身是一名大學老師,須要開一門AI的課程,那麼課程如何設置才能合理,有效率地讓學生學到知識。我查看了十多篇學習方法和學習資源的文章,瀏覽了幾十篇相關內容後,作了一個資源整合,整理出一條相對完整的學習路徑。但願經過此總結,一方面可讓你們對進入AI領域有一個清晰的學習目標,明白學習內容,也能夠根據此路徑制定本身的學習計劃。另外一方面也能夠激勵本身按計劃學習AI知識。python
經過本文,能夠收穫如下AI學習路徑,同時會給出相應的參考學習資料:c++
關於學習一門新技能或新知識,學習方法很重要,好的學習方法能夠少走彎路。首先,學習前須要先明確兩個問題:是什麼?怎麼學?這兩個問題歸納說就是:學習目標與學習計劃。學習目標比較清楚,就是踏入AI領域這個門,能夠從事AI相關工做。學習計劃就是對學習內容及過程的設計與執行,也就是本文所寫的內容。還有就是創建學習的信心,學習不容易,以機器學習爲例。在學習過程當中,你會面對大量複雜的公式,在實際項目中會面對數據的缺少,以及艱辛的調參等。只要制定合適的學習方法,學習是能夠的。git
明確了學習目標和計劃,在學習的執行層面,則須要側重於實踐,以興趣爲先,踐學結合。這裏則特別提一下,使用費曼技巧,以教帶學,是學習的好方法。簡單來講,費曼技巧就是經過向別人清楚地解說某件事,來確認本身的確弄懂了某件事。它分爲四個步驟:程序員
根據費曼方法學習新技能,掌握更快,記憶更深入。學習IT領域技能,此方法很是合適。github
首先了解這個領域,創建起全面的視野,培養起充足的興趣。AI是如何發展起來的,爲何在最近幾年才成爲熱門的研究領域,AI技術包括哪些技術方向,有哪些應用領域,將來會如何發展,前景如何,對社會的影響如何等等,對這些問題都瞭解後,能夠理解AI的前世此生,能夠加深本身對AI的印象,增強對AI的興趣,甚至能夠發揮本身對AI的想象,對本身後續的AI學習能夠有本身的想法。關於AI發展和科普,下面的資料能夠參考:算法
https://www.cnblogs.com/subconscious/p/4107357.html
要學習人工智能,先看看當前國內互聯網巨頭各自對AI的佈局狀況,就大概知道AI當前的風口在哪裏,會有哪些重要應用,有哪些關鍵技術。各大公司旗下都設有AI平臺的官網,各大AI 開放平臺一覽,地址:https://blog.csdn.net/qq_15071263/article/details/82908201
,對各大AI平臺的連接,能夠看看。除了瞭解當前AI在各互聯網公司的佈局外,還能夠關注一下這些公司對AI崗位的招聘要求及當前的各大招聘網站對此崗位的要求狀況,這樣有兩個好處,一是明確本身的學習方向,學習有側重點,二是作到對本身學習的必定的心理預期,知道本身學到哪一個程度纔能有機會得到此崗位。以下,是Boss直聘中的一則天然語言處理相關的招聘:編程
可見,數學基礎、數據處理、天然語言處理、機器學習、數據挖掘等技術是比較關鍵的,也是學習的重點。數組
關於AI當前各大公司佈局狀況,參考資料以下:
https://blog.csdn.net/qq_15071263/article/details/82908201
https://ai.baidu.com/
https://ai.qq.com/
https://damo.alibaba.com/
https://www.huxiu.com/article/230094.html
http://www.cesi.ac.cn/201801/3545.html
http://www.caict.ac.cn/kxyj/qwfb/bps/201809/t20180906_184679.htm
http://www.caict.ac.cn/kxyj/qwfb/bps/201812/t20181227_191672.htm
http://www.caict.ac.cn/kxyj/qwfb/bps/
人工智能從業務視角能夠分爲感知能力、認知能力和服務能力三個層次,兩大應用方向,以下:
人工智能技術視角,能夠分爲基礎設施層、技術層和應用層。以下:
經過上面兩個圖,基本瞭解AI涉及的領域及技術的整體架構,結合前面的當前互聯網巨頭的佈局,能夠看出,在將來,對於基礎設施層和技術層,基本上由大公司來掌控和佈局了,可發展和深刻開發的空間相對較小,我的若想參與這些的研發,則須要從底層的技術和算法學起,要求很高。而在應用層,則會有更多的發展空間,利用AI+行業
或行業+AI
的模式,結合已有的AI基礎設施和AI技術,能夠作出更多的應用。這既是我的發展的機會,也是創業公司的機會。
文章《騰訊雲總監手把手教你,如何成爲 AI 工程師》:https://cloud.tencent.com/developer/article/1004751
,對AI工程師作了分類,按垂直領域分:有語音識別,圖像視覺,個性化推薦等業務領域的AI工程師。按從事研發內容分則有
這類人大都有博士學歷,在學校中積累了較好的理論和數學基礎積累,對最新的學術成果能較快理解和吸取。這裏的理論是指好比語音處理,計算機視覺等專業知識。AI算法研究的人主要研究內容有 樣本特徵,模型設計和優化,模型訓練。樣本特徵是指如何從給定的數據中構建樣本,定義樣本的特徵,這在個性化推薦領域中就很是重要。模型設計和優化是設計新的網絡模型,或基於已有的模型機型迭代優化,好比CNN網絡模型中 AlexNet , GoogleNet v1/v2/v3, ResNet等新模型的不斷出現,另外就是好比模型剪枝,在損失5%計算精度狀況下,減小80%計算量,以實現移動終端的邊緣計算等等。模型訓練是指訓練網絡,如何防止過擬合以及快速收斂。
這類人主要提供將計算邏輯,硬件封裝打包起來,方便模型的訓練和預測。好比: - 精通Caffee/TensorFlow等訓練框架源碼,能熟練使用並作針對性優化; - 構建機器學習平臺,下降使用門檻,經過頁面操做提供樣本和模型就能啓動訓練; - 經過FPGA實行硬件加速,實現更低延時和成本的模型預測; - 在新模型驗證完成後,實如今線平滑的模型切換。
側重驗證好的模型在業務上的應用,常見語音識別,圖像視覺,個性化推薦。固然這也包括更多結合業務場景的應用,好比終端網絡傳輸帶寬的預測,圖片轉碼中參數的預測等等。
綜上所述,在選擇職位和方向時,除非有比較好的數學和算法基礎,建議從AI應用層面來選擇,會更容易入手,發展機會更大。
本章的參考資料:
https://blog.csdn.net/hadoopdevelop/article/details/79455758
https://cloud.tencent.com/developer/article/1004751
要學習人工智能,免不了要學習算法,學習算法,則須要數學基礎。而在具體計算過程當中不少時候須要矩陣計算,所以線性代數知識也是須要。對於數據的分類,分析等,還須要有機率和統計。不少時候人工智能追求的就是最優化問題,舉個粟子,BP神經網絡使用的權重迭代變化,計算當前權重值離最優值的函數爲損失函數,迭代過程當中經過求導來肯定調大仍是調小,這個求導獲得的函數就是梯度,而這個迭代的過程就是梯度降低,在這個過程當中,微積分知識也少不了。在學習過程當中,常常會遇到須要查看的論文了解原理,或者查閱一些英文資料,所以英文知識也是須要的。以上,總結來講,須要如下幾大基礎知識:
如下是一些參考資料:
https://zhuanlan.zhihu.com/p/25197792
當前人工智能開發使用的最多的當屬python
了,固然,java
,c++
,matlab
和R
也有很多。剛開始學習,直接選擇python
便可。對於編程語言的學習,一個字,練。直接上機操做,主要分幾個模塊的學習,python基礎(語法,函數,數組,類等等),python經常使用的庫,python的機器學習庫。如下是一些pyhton
的學習資料以供參考:
https://www.liaoxuefeng.com/wiki/1016959663602400
https://www.runoob.com/python/python-100-examples.html
https://zhuanlan.zhihu.com/p/26673214
https://www.bilibili.com/video/av4050443
須要明確,當前人工智能技術中,機器學習佔據了主導地位,但不只僅包括機器學習,而深度學習是機器學習中的一個子項。目前能夠說,學習AI主要的是學習機器學習,可是,人工智能並不等同於機器學習。具體到機器學習的流程,包括數據收集、清洗、預處理,創建模型,調整參數和模型評估。基礎則是機器學習的基本算法,包括迴歸算法,決策樹、隨機森林和提高算法,SVM,聚類算法,EM算法,貝葉斯算法,隱馬爾科夫模型,LDA主題模型等等。這些網上已經有很多機器學習的教程,學習很是方便,在搜索引擎一搜索,機器學習的文章也很是多,只要堅持下去,結合後面的實踐,學習應該不成問題。如下是一些參考資料:
https://www.coursera.org/learn/machine-learning
http://t.cn/RpO3VJC
https://github.com/JustFollowUs/Machine-Learning
瞭解機器學習的算法,還須要有必定的工具來實現,好在如今已經有不少工具可使用,如tensorflow,Keras,Theano,matlab等等,如今tensoflow是機器學習的熱門框架,入門能夠深刻學習它。如下是一些參考資料
http://t.cn/RTuDxFT
"巧婦難爲無米之炊",使用機器學習來進行項目實踐時,若是沒有數據,就更不用說模型訓練了。所以,獲取數據集來作測試數據也是一個比較重要的工具,好在如今網上有很多的數據集能夠獲取,參考資料以下:
http://yann.lecun.com/exdb/mnist
http://mscoco.org
https://www.jianshu.com/p/83ebd261862a
https://www.jianshu.com/p/abce3d177e45
在實踐中學習,用一些小的示例來實現功能,用機器學習來解決一個實際的問題(如圖像領域,識別狗,識別花等等),把機器學習方法看成一個黑盒子來處理,選擇一個應用方向,是圖像(計算機視覺),音頻(語音識別),仍是文本(天然語言處理),推薦選擇圖像領域,這裏面的開源項目較多。也能夠上github找一下相關的開源項目來參考。
深度學習是機器學習中的一個子項,它源於人工神經網絡的研究,含多個隱藏層的多層感知器就是一種深度學習結構。學習過程當中,須要對深度學習的概念進行了解,熟悉BP神經網絡,CNN卷積神經網絡,RNN循環神經網絡等原理及應用。如下是一些參考資料:
https://www.bilibili.com/video/av49445369
http://t.cn/RTueAct
http://t.cn/RTukvY6
http://t.cn/RpO3VJK
http://t.cn/RTuDcjC
具有了較強的知識儲備,能夠進入較難的實戰。兩個選擇,工業界的能夠選擇看開源項目,以改代碼爲目的來讀代碼;學術界的能夠看特定領域的論文,爲解決問題而發論文。或者能夠參加kaggle
競賽,來驗證一下,解決問題。到了這個階段,就看我的的修行了。不過到了此階段,回頭看一開始的學習計劃,基本已經達到目的了。最後,對於論文查詢,就不得不提arXiv了,arXiv是個收集物理學、數學、計算機科學與生物學的論文預印本的網站。將預稿上傳到arxiv做爲預收錄,能夠防止本身的idea在論文被收錄前被別人剽竊。所以arXiv是個能夠證實論文原創性(上傳時間戳)的文檔收錄網站。現今的不少科學家習慣先將其論文上傳至arXiv.org,再提交予專業的學術期刊。如下提供兩個工具可使用:
https://arxiv.org
http://www.arxiv-sanity.com
https://paperswithcode.com
經過查詢並閱讀了十多篇對人工智能的學習方法和學習資源的文章後,本文試圖對這些資源進行整合,整理出一條相對完整的學習路徑,每個階段都給出了相應的參考資料,有了資料,更重要的是須要去學習和實踐,但願對本身的學習有一個明確的計劃,也但願對想進行AI領域的同窗有幫助。
http://t.cn/AiRnyMyj
http://t.cn/AiTfbOds
http://t.cn/AiRnUwsx
http://t.cn/AiRnyUUS
http://t.cn/RYjAQNc
http://t.cn/AiRnUJGm
http://t.cn/R8Ttwug
http://t.cn/AiRnUlEL
http://t.cn/Rfc2ih1
http://t.cn/AiRnU1L3
http://t.cn/AiRnUeRB
https://zhuanlan.zhihu.com/p/64052743