本文可謂是千呼萬喚使出來,很多同學問我,AI方向的知識多而雜,哪些該重點學習?學習路徑又是怎麼樣的呢?
今天,我將自己的學習路徑及我所參考的資料全部免費分享出來,願大家的AI學習進階之路上多一些“溫度”。
學習途徑
在我學習人工智慧的過程中,主要有以下兩個途徑:
- 首先是B站。因為公眾號不允許放外域連結,所以我將所有知識點所推薦的影片連結放在了文末,可直接複製獲取。
- 第二是書籍。影片的講解難免會不全面,很多時候我們需要翻閱書籍對知識進行查漏補缺、透徹理解。本文提及所有書籍在文末可免費獲取電子版。
AI知識大綱
AI知識大體可以分為5個模組,接下來我會依次介紹每個模組的學習路徑,最後給大家推薦幾個我入門時做過的專案,幫助大家快速入門人工智慧。
一、Python程式設計基礎
在AI領域,目前大部分程式設計師都使用Python
作為第一語言。
學會上述操作後就入門了,但一定要將基礎部分的內容掌握紮實。進階操作在前期不著急學習,可以在日後使用過程中逐漸精通,比如函數語言程式設計、多執行緒使用、異常處理與日誌管理等等。
網路資源推薦
- 黑馬Python教程[1] :將
Python
基礎講的非常詳細,可以輕鬆入門,建議新手從P116
開始學習。
書籍推薦
這裡給大家推薦兩本學習Python
必備書籍。《Python程式設計》中每個知識點下都有對應示例,非常直觀。入門後,《流暢的Python》可以幫你精通Python
,完成從小白到大神的進階。
二、數學基礎
很多同學看到數學就頭疼,其實模型通用的基本數學原理並不難,難的公式在之後的模型中遇見時再逐個擊破即可。
切記前期不要深陷到數學知識中去深挖!!
高數
首先大家不要懼怕數學。在遇到我們不會的數學公式時,我們要更多的思考這個公式能解決什麼問題,而不是一直糾結公式的推導與計算。
比如梯度下降和反向傳播的根本原理就是求導,全域性最優解就是極值點,所以最優解一定在導數的某一個拐點處,類似的很多知識都是高中就學過的。
線代
在深度學習中,線代最重要的應用就是高維資料相乘運算,可以大大提升運算速度。
- 首先要明白矩陣各維度所代表的意義
- 其次清楚矩陣的運算規則
機率論
機率論的知識在AI體系中看似不那麼重要,但卻無處不在。從資料預處理、建模、模型引數初始化及歸一化,到最後的結果分析都與機率論息息相關。
常用指標很多是大家耳熟能詳的,比如均值、方差。如果你之前沒有很強的機率論功底,建議你掌握常用知識後,在實際中遇到不懂的問題時要養成查閱的習慣。這部分知識不會太難,但是對理解模型與過程十分的重要:
- 比如為什麼樹模型一般不需要進行資料歸一化?
- 而邏輯迴歸、神經網路、PCA中就必須進行資料歸一化?
網路資源推薦
- 人工智慧必備數學基礎全套課程[2]:此課程將高數、機率論、線代知識進行濃縮,針對人工智慧領域開發的數學綜合課程,都是入門必備和模型中常見的數學知識。
- 網易可汗學院統計學公開課[3]:統計學入門課程,涵蓋統計學所有的主要知識。
書籍推薦
這裡推薦的是3本經典教材與1本我個人非常喜歡的《數學之美》。3本教材書無需多述,《數學之美》把抽象、深奧的數學方法解釋得通俗易懂,非常精彩,很多模型原理都可以在其中找到你想要的回答。
三、資料分析
在具備一定的程式設計能力與數學功底後,我們就可以對實際問題進行分析與挖掘。
爬蟲
很多同學問演算法工程師需要學爬蟲嗎?我的回答是:演算法的重點在於建模,演算法工程師掌握基本爬蟲知識就好,因為單位一般都有專門的採集工程師。
但是資料分析師一定需要學。因為資料分析師需要具備自主獲取資料的能力,從而進行資料分析。
必備三劍客
不論你做數分還是演算法,Numpy
、Pandas
和Matplotlib
都是必須掌握的。但這部分內容很雜,沒必要進行系統學習,就好像Excel
中的函式一樣。
網路資源推薦
- 【莫煩】Numpy&Pandas[4]:此影片一共只有3小時,但是可以以最快的速度瞭解三劍客的基本使用。
- Numpy中文官方網站[5]
- Pandas中文官方網站[6]
- Matplotlib中文官方網站[7]
大家可以網上找一些常用方法多瀏覽瀏覽,腦子裡留個印象就行,在實際使用的時候再去查具體怎麼用。就算沒印象,我也建議大家在實際使用時先去官網上查有沒有對應的內建方法,如果沒有再自己寫函式實現。
後續我也會總結三劍客的高頻使用方法。
四、機器學習
從機器學習開始就正式進入到了人工智慧的領域。ML
涉及的演算法都是白盒演算法,使用可解釋的數學公式去擬合資料、學習引數然後進行預測,最後對模型進行評估。
這部分的知識需要大家從資料處理過程開始就多進行總結與反思:
- 資料清洗過程與特徵工程是怎麼做的?為什麼會最終選用這些方法?
- 文字資料集常用的處理方法有哪些?適用的場景的是什麼?
機器學習演算法因為都有可解釋性,所以大家需要搞懂數學原理,並知道模型之間的差異、以及適用於什麼資料集。
對於迴歸任務與分類任務,我們也需要知道各種評估指標間的差異與使用場景。
網路資源推薦
- 吳恩達機器學習[8]:此教程以理論為主,對小白極為友善,就算沒有基礎,也能以最快的速度入門機器學習。
- 菜菜的sklearn[9]:此教程以實踐為主,從資料處理、特徵工程、到模型演算法都會給予程式碼進行實操講解,並將每個引數都講的非常細緻。
書籍推薦
這裡推薦兩本學習ML
必備書籍。周志華老師的《機器學習(西瓜書)》與李航老師的《統計學習方法》。
這兩本書非常經典,講述了機器學習核心數學理論與模型推導全過程,是夯實理論的不二選擇。強烈推薦將書籍與上述推薦影片相結合進行學習。
五、深度學習
深度學習是黑盒演算法,不具可解釋性,初學者通常會覺得它比較神秘。但它的基礎神經網路,可以說是由眾多個邏輯迴歸函式組成,所以在學機器學習時一定要將邏輯迴歸徹徹底底學明白。
這部分給大家推薦書籍《圖解深度學習》與《深度學習》。前者用圖解的方式剖析了深度學習的原理,適合初學者;後者是深度學習領域奠基性的經典教程。
神經網路入門
- 浙大研究生課程[10]:浙大老師上課錄影,板書推導神經網路的原理,看完後你會入門深度學習,並感受到它的神奇與魅力。(P19-P24為神經網路)
CNN
與RNN
入門
- 吳恩達深度學習[11]:首推薦還是吳恩達老師的課程:
- 不論往哪個方向發展,都先看神經網路部分
- 如果你之後想學影像方向,就接著看計算機視覺部分,然後對序列模型進行了解
- 如果準備往自然語言或推薦方向發展,則推薦先看計算機視覺部分,掌握
CNN
的基本常識後,再去學習序列模型全部內容
- 白板推導系列[12]:機器學習與深度學習數學原理板書推導,極為硬核。
在學完理論知識後,我們就可以找一些專案進行實戰了。
六、專案推薦
我本人是NLP
演算法工程師,在此對自然語言處理方向推薦幾個入門練手小專案:
- Bert文字分類[13]:在官網下載原始碼後進行
Debug
,不僅可以鍛鍊除錯閱讀程式碼的能力,而且可以掌握Bert
的細節。 - 實體識別[14]:此專案使用了多種不同的模型(
HMM
、CRF
、Bi-LSTM
、Bi-LSTM+CRF
)來解決中文命名實體識別問題。 - 對話機器人[15]:此專案為醫療對話問答機器人,主要基於知識圖譜實現。
在對NLP
進行初步瞭解後,大家可以根據自身情況在Github
上多找一些感興趣的相關專案進行研究,不僅僅要知道程式碼實現細節,更要思考它能實際解決的業務問題。
未完待續
上述提到的重點內容日後會繼續和大家分享,文字難以表達的也會以影片的方式和大家見面。
我目前的工作主要集中於實體識別、關係識別、知識圖譜、圖網路等方向,歡迎大家與我交流。同時,本文提到的10本書籍,在原文連結後臺回覆【學習書籍】均可無償獲取。
AI有溫度立志將每一個知識點講精講細,幫助您利用碎片時間快速學習、查漏補缺,成為您的AI學習口袋書。如果覺得對您有幫助,歡迎關注轉發擴散,這是對我最大的鼓勵。
祝大家學習快樂,每日早上8:18與您不見不散
參考資料
[1]
黑馬Python教程: https://www.bilibili.com/video/BV1ex411x7Em?from=search&seid=10024423573271543247&spm_id_from=333.337.0.0
[2]
人工智慧必備數學基礎全套課程: https://www.bilibili.com/video/BV1LV411p7BQ?from=search&seid=14714901837450211972&spm_id_from=333.337.0.0
[3]
網易可汗學院統計學公開課: https://open.163.com/newview/movie/courseintro?newurl=%2Fspecial%2FKhan%2Fkhstatistics.html
[4]
【莫煩】Numpy&Pandas: https://www.bilibili.com/video/BV1Ex411L7oT?from=search&seid=7143615343762571458&spm_id_from=333.337.0.0
[5]
Numpy中文官方網站: https://www.numpy.org.cn/
[6]
Pandas中文官方網站: https://www.pypandas.cn/
[7]
Matplotlib中文官方網站: https://www.matplotlib.org.cn/
[8]
吳恩達機器學習: https://www.bilibili.com/video/BV164411b7dx?p=1
[9]
菜菜的sklearn: https://www.bilibili.com/video/BV1h34y1m7TU?from=search&seid=14153070479407371022&spm_id_from=333.337.0.0
[10]
浙大研究生課程: https://www.bilibili.com/video/BV1gf4y167h7?p=19
[11]
吳恩達深度學習: https://www.bilibili.com/video/BV1FT4y1E74V?from=search&seid=12295064917063317312&spm_id_from=333.337.0.0
[12]
白板推導系列: https://www.bilibili.com/video/BV1aE411o7qd?from=search&seid=15053350706173988178&spm_id_from=333.337.0.0
[13]
Bert文字分類: https://github.com/google-research/bert
[14]
實體識別: https://github.com/luopeixiang/named_entity_recognition
[15]
對話機器人: https://github.com/liuhuanyong/
感悟
基礎語法必須掌握,其次得掌握一些重點的庫,像pandas,numpy,接著找找一些機器學習的課程,瞭解常用演算法,再去天池或者kaggle找一下實戰專案。
關於你說的人工智慧,我想應該更貼近機器學習裡的深度學習部分,深度學習主要是神經網路演算法,可以看看吳恩達的課程,漸漸地就會找到自己的方向。