查閱了十幾篇學習資源後,我總結了這份AI學習路徑

tags: ai,machine learning,deep learning

一句話概括:想進入AI領域,需要學習的的東西很多,如果能在紛繁複雜的知識中找到一條合理的學習路徑,少走彎路,那該多好,本文將試圖找到這條路。

1 引言

作爲一名想進入AI領域的程序員,上網搜一下人工智能,大量的知識涌出來,有AI發展,有機器學習,有tensorflow,有python等等,但對於需要學什麼,怎麼學還是沒有明確的答案。可以想象自己是一名大學老師,需要開一門AI的課程,那麼課程如何設置才能合理,有效率地讓學生學到知識。我查看了十多篇學習方法和學習資源的文章,瀏覽了幾十篇相關內容後,做了一個資源整合,整理出一條相對完整的學習路徑。希望通過此總結,一方面可以讓大家對進入AI領域有一個清晰的學習目標,明白學習內容,也可以根據此路徑制定自己的學習計劃。另一方面也可以激勵自己按計劃學習AI知識。

通過本文,可以收穫以下AI學習路徑,同時會給出相應的參考學習資料:

  • 學習一門新技能的方法論
  • AI人文科普
  • 基礎知識
  • 編程語言
  • 機器學習
  • 初級項目實戰深化知識
  • 深度學習
  • 高級項目實戰或論文

2 方法論

關於學習一門新技能或新知識,學習方法很重要,好的學習方法可以少走彎路。首先,學習前需要先明確兩個問題:是什麼?怎麼學?這三個問題概括說就是:學習目標與學習計劃。學習目標比較清楚,就是踏入AI領域這個門,可以從事AI相關工作。學習計劃就是對學習內容及過程的設計與執行,也就是本文所寫的內容。還有就是建立學習的信心,學習不容易,以機器學習爲例。在學習過程中,你會面對大量複雜的公式,在實際項目中會面對數據的缺乏,以及艱辛的調參等。只要制定合適的學習方法,學習是可以的。

明確了學習目標和計劃,在學習的執行層面,則需要側重於實踐,以興趣爲先,踐學結合。這裏則特別提一下,使用費曼技巧,以教帶學,是學習的好方法。簡單來說,費曼技巧就是通過向別人清楚地解說某件事,來確認自己的確弄懂了某件事。它分爲四個步驟:

1) 選擇目標:明確目標選擇一個概念

2) 教學:學習這個概念和相關知識,想象如何給一個孩子講清楚。如果是真的講授,更好。

3) 糾錯並深入學習:教學過程中是否有不清楚的地方,如果有,繼續學習,加深理解。

4) 簡化類比:用自己的語言,簡單的,通過和現實世界的實例關聯類比,把一個概念講清楚

根據費曼方法學習新技能,掌握更快,記憶更深刻。學習IT領域技能,此方法非常合適。

3 人工智能科普

3.1 AI人文歷史

首先了解這個領域,建立起全面的視野,培養起充足的興趣。AI是如何發展起來的,爲什麼在最近幾年才成爲熱門的研究領域,AI技術包括哪些技術方向,有哪些應用領域,未來會如何發展,前景如何,對社會的影響如何等等,對這些問題都瞭解後,可以理解AI的前世今生,可以加深自己對AI的印象,加強對AI的興趣,甚至可以發揮自己對AI的想象,對自己後續的AI學習可以有自己的想法。關於AI發展和科普,下面的資料可以參考:

  • 書籍,《智能時代》,吳軍
  • 書籍,《智能革命》,李彥宏
  • 書籍,《人工智能》,騰訊研究院
  • 書籍,《人工智能簡史》,尼克
  • 書籍,《人工智能時代》《人人都應該知道的人工智能》,傑瑞卡·普蘭
  • 書籍,《科學的極致:漫談人工智能》,集智俱樂部
  • 書籍,《科技之巔》《科技之巔2》,麻省理工科技評論
  • 博文,從機器學習談起: https://www.cnblogs.com/subconscious/p/4107357.html

3.2 當前AI發展及佈局狀況

要學習人工智能,先看看當前國內互聯網巨頭各自對AI的佈局情況,就大概知道AI當前的風口在哪裏,會有哪些重要應用,有哪些關鍵技術。各大公司旗下都設有AI平臺的官網,各大AI 開放平臺一覽,地址:

https://blog.csdn.net/qq_15071263/article/details/82908201

對各大AI平臺的鏈接,可以看看。除了瞭解當前AI在各互聯網公司的佈局外,還可以關注一下這些公司對AI崗位的招聘要求及當前的各大招聘網站對此崗位的要求情況,這樣有兩個好處,一是明確自己的學習方向,學習有側重點,二是做到對自己學習的一定的心理預期,知道自己學到哪個程度纔能有機會獲得此崗位。如下,是Boss直聘中的一則自然語言處理相關的招聘:

可見,數學基礎、數據處理、自然語言處理、機器學習、數據挖掘等技術是比較關鍵的,也是學習的重點。

關於AI當前各大公司佈局情況,參考資料如下:

  • 文章,各大AI 開放平臺一覽: https://blog.csdn.net/qq_15071263/article/details/82908201
  • 網站,百度大腦:  https://ai.baidu.com/
  • 網站,騰訊AI開放平臺:  https://ai.qq.com/
  • 網站,阿里達摩院:  https://damo.alibaba.com/
  • 文章,自動駕駛、金融、零售......BAT的AI之戰打到哪兒了: https://www.huxiu.com/article/230094.html
  • 書籍,《人工智能標準化白皮書2018》: http://www.cesi.ac.cn/201801/3545.html
  • 書籍,《人工智能發展白皮書-技術架構篇(2018年)》: http://www.caict.ac.cn/kxyj/qwfb/bps/201809/t20180906_184679.htm
  • 書籍,《人工智能發展白皮書產業應用篇(2018年)》: http://www.caict.ac.cn/kxyj/qwfb/bps/201812/t20181227_191672.htm
  • 書籍,《中國信通院相關白皮書》: http://www.caict.ac.cn/kxyj/qwfb/bps/

3.3 AI架構及職位選擇

3.3.1 AI架構視角

人工智能從業務視角可以分爲感知能力、認知能力和服務能力三個層次,兩大應用方向,如下:

人工智能技術視角,可以分爲基礎設施層、技術層和應用層。如下:

3.3.2 AI職位選擇

通過上面兩個圖,基本瞭解AI涉及的領域及技術的總體架構,結合前面的當前互聯網巨頭的佈局,可以看出,在未來,對於基礎設施層和技術層,基本上由大公司來掌控和佈局了,可發展和深入開發的空間相對較小,個人若想參與這些的研發,則需要從底層的技術和算法學起,要求很高。而在應用層,則會有更多的發展空間,利用 AI+行業 或 行業+AI 的模式,結合已有的AI基礎設施和AI技術,可以做出更多的應用。這既是個人發展的機會,也是創業公司的機會。

文章《騰訊雲總監手把手教你,如何成爲 AI 工程師》:

https://cloud.tencent.com/developer/article/1004751

對AI工程師做了分類,按垂直領域分:有語音識別,圖像視覺,個性化推薦等業務領域的AI工程師。按從事研發內容分則有

  • 1)AI 算法研究

這類人大都有博士學歷,在學校中積累了較好的理論和數學基礎積累,對最新的學術成果能較快理解和吸收。這裏的理論是指比如語音處理,計算機視覺等專業知識。AI算法研究的人主要研究內容有 樣本特徵,模型設計和優化,模型訓練。樣本特徵是指如何從給定的數據中構建樣本,定義樣本的特徵,這在個性化推薦領域中就非常重要。模型設計和優化是設計新的網絡模型,或基於已有的模型機型迭代優化,比如CNN網絡模型中 AlexNet , GoogleNet v1/v2/v3, ResNet等新模型的不斷出現,另外就是比如模型剪枝,在損失5%計算精度情況下,減少80%計算量,以實現移動終端的邊緣計算等等。模型訓練是指訓練網絡,如何防止過擬合以及快速收斂。

  • 2)AI 工程實現

這類人主要提供將計算邏輯,硬件封裝打包起來,方便模型的訓練和預測。比如:- 精通Caffee/TensorFlow等訓練框架源碼,能熟練使用並做針對性優化;- 構建機器學習平臺,降低使用門檻,通過頁面操作提供樣本和模型就能啓動訓練;- 通過FPGA實行硬件加速,實現更低延時和成本的模型預測;- 在新模型驗證完成後,實現在線平滑的模型切換。

  • 3)AI 應用

側重驗證好的模型在業務上的應用,常見語音識別,圖像視覺,個性化推薦。當然這也包括更多結合業務場景的應用,比如終端網絡傳輸帶寬的預測,圖片轉碼中參數的預測等等。

綜上所述,在選擇職位和方向時,除非有比較好的數學和算法基礎,建議從AI應用層面來選擇,會更容易入手,發展機會更大。

本章的參考資料:

  • 文章,如何系統學習知識圖譜: https://blog.csdn.net/hadoopdevelop/article/details/79455758
  • 文章,騰訊雲總監手把手教你,如何成爲 AI 工程師: https://cloud.tencent.com/developer/article/1004751

4 基礎知識

要學習人工智能,免不了要學習算法,學習算法,則需要數學基礎。而在具體計算過程中很多時候需要矩陣計算,因此線性代數知識也是需要。對於數據的分類,分析等,還需要有概率和統計。很多時候人工智能追求的就是最優化問題,舉個粟子,BP神經網絡使用的權重迭代變化,計算當前權重值離最優值的函數爲損失函數,迭代過程中通過求導來確定調大還是調小,這個求導得到的函數就是梯度,而這個迭代的過程就是梯度下降,在這個過程中,微積分知識也少不了。在學習過程中,經常會遇到需要查看的論文了解原理,或者查閱一些英文資料,因此英文知識也是需要的。以上,總結來說,需要以下幾大基礎知識:

  • 線性代數:標量、向量、矩陣/張量乘法、求逆,奇異值分解/特徵值分解,行列式,範數等
  • 概率與統計:貝葉斯、期望與方差、協方差、概率分佈(0-1分佈、二項分佈、高斯分佈)、獨立性與貝葉斯、最大似然和最大後驗估計等
  • 高等數學:微積分、鏈式法則、矩陣求導、線性優化、非線性優化(凸優化/非凸優化)以及其衍生的如梯度下降、牛頓法等
  • 英文:常備一個在線英文詞典,能夠不吃力的看一些英文的資料網頁

以下是一些參考資料:

  • 書籍,《線性代數應該這樣學》,Sheldon Axler
  • 書籍,《概率論與數理統計》,陳希孺
  • 書籍,《數學分析新講》三冊,張築生
  • 書籍,《深入淺出統計學》, Dawn Griffiths
  • 書籍,《統計學習方法》,李航
  • 書籍,《矩陣分析與應用》,張賢達
  • 文章,《機器學習理論篇1:機器學習的數學基礎》: https://zhuanlan.zhihu.com/p/25197792

5 編程語言

當前人工智能開發使用的最多的當屬 python 了,當然, java , c++ , matlab 和 R 也有不少。剛開始學習,直接選擇 python 即可。對於編程語言的學習,一個字,練。直接上機操作,主要分幾個模塊的學習,python基礎(語法,函數,數組,類等等),python常用的庫,python的機器學習庫。以下是一些 pyhton 的學習資料以供參考:

  • 教程,《廖雪峯Python教程》: https://www.liaoxuefeng.com/wiki/1016959663602400
  • 教程,《Python100例》: https://www.runoob.com/python/python-100-examples.html
  • 文章,《從零開始寫Python爬蟲》: https://zhuanlan.zhihu.com/p/26673214
  • 視頻,《零基礎入門學習Python》: https://www.bilibili.com/video/av4050443

6 機器學習知識

6.1 機器學習算法

需要明確,當前人工智能技術中,機器學習佔據了主導地位,但不僅僅包括機器學習,而深度學習是機器學習中的一個子項。目前可以說,學習AI主要的是學習機器學習,但是,人工智能並不等同於機器學習。具體到機器學習的流程,包括數據收集、清洗、預處理,建立模型,調整參數和模型評估。基礎則是機器學習的基本算法,包括迴歸算法,決策樹、隨機森林和提升算法,SVM,聚類算法,EM算法,貝葉斯算法,隱馬爾科夫模型,LDA主題模型等等。這些網上已經有不少機器學習的教程,學習非常方便,在搜索引擎一搜索,機器學習的文章也非常多,只要堅持下去,結合後面的實踐,學習應該不成問題。以下是一些參考資料:

  • 書籍,《機器學習實戰》,Peter Harrington
  • 書籍,《機器學習》,周志華
  • 書籍,《機器學習導論》,Ethen Alpaydin
  • 書籍,《機器學習基礎:從入門到求職》胡歡武
  • 書籍,《數據之美》,吳軍
  • 視頻,《machine learning》吳恩達: https://www.coursera.org/learn/machine-learning
  • 視頻,《李宏毅機器學習2017》李宏毅:  http://t.cn/RpO3VJC
  • 文章,《機器學習Machine-Learning》: https://github.com/JustFollowUs/Machine-Learning

6.2 機器學習框架

瞭解機器學習的算法,還需要有一定的工具來實現,好在現在已經有很多工具可以使用,如tensorflow,Keras,Theano,matlab等等,現在tensoflow是機器學習的熱門框架,入門可以深入學習它。以下是一些參考資料

  • 書籍,《TensorFlow實戰》,黃文堅
  • 書籍,《Tensorflow:實戰Google深度學習框架》,鄭澤宇
  • 視頻,《Tensorflow教程》莫煩:  http://t.cn/RTuDxFT

6.3 數據集選擇

"巧婦難爲無米之炊",使用機器學習來進行項目實踐時,如果沒有數據,就更不用說模型訓練了。因此,獲取數據集來做測試數據也是一個比較重要的工具,好在現在網上有不少的數據集可以獲取,參考資料如下:

  • 手寫數字庫MNIST:  http://yann.lecun.com/exdb/mnist
  • 圖像處理數據COCO:  http://mscoco.org
  • 機器學習經典開源數據集:  https://www.jianshu.com/p/83ebd261862a
  • 機器學習數據集哪裏找:  https://www.jianshu.com/p/abce3d177e45

7 初級項目實踐

在實踐中學習,用一些小的示例來實現功能,用機器學習來解決一個實際的問題(如圖像領域,識別狗,識別花等等),把機器學習方法當作一個黑盒子來處理,選擇一個應用方向,是圖像(計算機視覺),音頻(語音識別),還是文本(自然語言處理),推薦選擇圖像領域,這裏面的開源項目較多。也可以上github找一下相關的開源項目來參考。

8 深度學習知識

深度學習是機器學習中的一個子項,它源於人工神經網絡的研究,含多個隱藏層的多層感知器就是一種深度學習結構。學習過程中,需要對深度學習的概念進行了解,熟悉BP神經網絡,CNN卷積神經網絡,RNN循環神經網絡等原理及應用。以下是一些參考資料:

  • 書籍,《Deep Learning for Computer Vision with Python》,Adrian Rosebrock
  • 書籍,《Tensorflow:實戰Google深度學習框架》,鄭澤宇
  • 書籍,《深度學習》,伊恩·古德費洛
  • 書籍,《Python深度學習》,弗朗索瓦·肖萊
  • 書籍,《深度學習與計算機視覺》,叶韻
  • 視頻,《Deep Learning》吳恩達: https://www.bilibili.com/video/av49445369
  • 視頻,《Stanford CS231N 2017》李飛飛:  http://t.cn/RTueAct
  • 視頻,《一天搞懂深度學習心得》李宏毅:  http://t.cn/RTukvY6
  • 視頻,《李宏毅深度學習2017》:  http://t.cn/RpO3VJK
  • 視頻,《 Deep Learning With Tensorflow》:  http://t.cn/RTuDcjC

9 高級項目實踐或論文

具備了較強的知識儲備,可以進入較難的實戰。兩個選擇,工業界的可以選擇看開源項目,以改代碼爲目的來讀代碼;學術界的可以看特定領域的論文,爲解決問題而發論文。或者可以參加 kaggle 競賽,來驗證一下,解決問題。到了這個階段,就看個人的修行了。不過到了此階段,回頭看一開始的學習計劃,基本已經達到目的了。最後,對於論文查詢,就不得不提arXiv了,arXiv是個收集物理學、數學、計算機科學與生物學的論文預印本的網站。將預稿上傳到arxiv作爲預收錄,可以防止自己的idea在論文被收錄前被別人剽竊。因此arXiv是個可以證明論文原創性(上傳時間戳)的文檔收錄網站。現今的很多科學家習慣先將其論文上傳至arXiv.org,再提交予專業的學術期刊。以下提供兩個工具可以使用:

  • arXiv官網:  https://arxiv.org
  • arxiv論文查詢:  http://www.arxiv-sanity.com
  • 帶代碼的論文查詢:  https://paperswithcode.com

總結

通過查詢並閱讀了十多篇對人工智能的學習方法和學習資源的文章後,本文試圖對這些資源進行整合,整理出一條相對完整的學習路徑,每一個階段都給出了相應的參考資料,有了資料,更重要的是需要去學習和實踐,希望對自己的學習有一個明確的計劃,也希望對想進行AI領域的同學有幫助。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章