如何系统学习机器学习?
機器學習是人工智能下一個比較廣泛的分支,涉及了很多交叉的領域如NLP自然語言處理、計算機視覺Computer Vision等等。簡單來說,機器學習ML就是通過訓練計算機來模擬人類的學習行為,從而進行預測并解決更多的問題。機器學習往往需要大量的時間和耐心,其過程就像一場馬拉松,不會直接沖刺到終點,而是在學習中體會到一個不斷變化的、多樣的領域。
那么機器學習又包含了哪些概念呢?根據難易程度和專注的分支不同,我將它分為以下幾類:
· 基礎概念
Logistic回歸、決策樹算法、納伊夫貝葉斯、支持向量機(SVMs)、分類項目、回歸項目、無監督學習
· 進階概念
提升算法(XGBoost, LightGBM, Catboost)、時間序列、隨即森林
· 機器學習技術
驗證策略、超參數調整、特征工程、集合學習、疊加和混合
· 推薦系統
矩陣代數、SVD和PCA、處理不同類型的數據、推薦系統、Github
從這些分類中不難看出,機器學習所涵蓋的內容五花八門,它的概念從來就不是與其他領域獨立開來的。所以要想成為ML的專家,往往需要盡可能多的去探索、研究其他領域的內容,建立一個完整的知識體系;因為很多內容都是相通的,有了一定知識儲備后,對于日后的學習也能更好的理解。
當你學習理論時,要問自己,這里發生了什么?我怎樣才能真正應用這個?ML領域內的數學容易看起來令人生畏。對于很多的文字內容的理解,我的技巧是借助Rademacher模型。事實證明,人們對于圖像的理解往往比對文字的理解更好。我學習時,面對很多標記數據,會先嘗試建立一個模型并訓練模型,測試其準確性是更差還是相同。不過這個方法不太建議大家在深度學習時嘗試,因為神經網絡可以過度擬合任何數據集,甚至是隨機標記的數據。
關于這部分的訓練,你可以通過任何bootcamp或MOOC’S接受相關培訓。這些資源在很多平臺也有所提供,在這之中,我比較推薦其中一個叫Learnbay的平臺。Learnbay是由IBM認證的數據科學培訓。在機器學習模塊下,你將學習很多我前面提到的基礎概念,如,監督學習,線性回歸,邏輯回歸,決策樹。除此之外,你還有機會參與各種實時項目。
在了解了機器學習的基礎概念之后,就到了學習方法。在過去的一年半里,我一直專注于機器學習領域computer vision的學習,所以對于機器學習的學習方法,也是有自己的一些見解的。接下來我會將機器學習步驟分成基礎、理論學習和實踐三步來講解。
一、學前基礎
如果不對其前提條件進行介紹的話,機器學習可能會顯得很可怕。對于大部分人來說,雖然這個領域不需要你成為一個專業的數學家或資深的程序員來學習,不過對于這些領域的核心技能還是需要掌握的。好消息是,一旦你擁有了這些基礎,剩下的學習就會相當容易。事實上,幾乎所有的ML都是關于將統計學和計算機科學的概念應用于數據。關于學前的基礎,大致可以分為三類:
線性代數和微積分→原始算法研究需要有線性代數和多變量微積分,尤其是導數,鏈式和乘積規則的基礎。而針對于這部分,很多大學內的高數課程都有涉及到。作為英語中這些數字運算的定義和名稱的一種補充,大家也可以去YouTube找很多國外大學的公開課,如Essence of linear algebra - YouTube。
統計學→了解統計學,特別是貝葉斯概率,對許多機器學習算法來說是必不可少的。不管是自然語言處理還是機器學習
,最重要的事情就是把基礎知識搞清楚。在這里,我所說的基礎知識是指對于概率和線性代數等概念淺層的理解。不一定需要掌握這些科目,但如果一些算法,比如子空間、基礎、i.i.d、獨立、相關這些術語,要能明白它們的意思,而不是略知皮毛。我遇到過一些人,他們在網上學習了2-3門關于機器學習的課程,并在一些數據集上應用了2、3種算法,從github上復制了一些代碼,就認為自己已經學會了機器學習,并準備好解決數據科學問題。盡管現在有一些數據庫能為機器學習ML任務提供非常好的API,并用它們來執行ML任務,但是,僅僅使用它們而不了解內在的東西,從長遠來看不會對你有幫助。此外統計學、EDA、線性代數等純數學的知識要需要掌握。這里的概率論和統計學入門Introduction
to Probability - The Science of Uncertainty是我使用時覺得不錯的一個資源。它是由美國MIT的幾位教授聯合撰寫的,內容包括運算講解的都很清楚。
Python→編程可以說是機器學習一大基礎,沒有編程就無法學習機器學習。如果說前面的數學知識是基礎的話,Python和R就像接下來戰斗需要使用到的武器。我個人在學習的時候主要使用R語言,搭配Datacamp學起來真的很方便。針對剛入門的人,我會更推薦Python,操作簡單也好上手。關于編程部分,我建議大家花幾個月時間同時學習Python代碼和不同的機器學習概念。因為在后面你會發現很多情況下你會同時需要它們。而在學習Python代碼的同時,大家可以練習使用一些數據科學工具,如Jupyter和Anaconda,主要了解它們的用途以及為什么要使用它們。關于程序語言的學習,網上的資源有很多,coursera和網易公開課都有很多可以選擇。除此之外,大家可以嘗試ujjwalkarn/DataSciencePython。而對于大部分項目,還需要知道算法設計和分析(課程:Algorithm Design and
Analysis)。一開始我只是直接使用教材的算法,就立刻去操作了,但隨著逐漸學習的深入,我也發現如果花點時間去理解所有的東西,結果是很令人滿意的。這套課程還提供了很好的講義,指導學習多層前饋人工神經網絡。
二、理論
在有了一定數學基礎后后,就可以開始閱讀一些教材了,以了解機器學習的理論知識。個人建議從一些關于機器學習的基本介紹性書籍開始,不要直接跳到花哨的書籍。很多人都推薦的西瓜書,在我看來其實不太適合入門學習,難度較大;而且像機器學習這樣實踐大于理論的領域來說,單單從書本獲得的理論知識,往往不能滿足于實際生活的應用。而這一部分的理解往往需要具體例子的搭配,一些書本內容涵蓋的實例早已過時,所以針對這一部分,給大家推薦幾套我在機器學習時使用的課程。
貪心學院這套課程,是面向泛AI、AI群體提供專業的系列課程,整套課程將以上提及的內容根據難易程度分為基礎和進階兩個階段,需要付費使用。根據具體所學項目不同,課程的價格在7000到20000之間不等。這套課程吸引我的其中一點就是它涵蓋的知識面廣。不僅涉及了AI領域內的深度學習、NLP,機器學習,還有很多更細的分支。其中機器學習中的基本算法如分類算法、集成算法、聚類算法、降維算法等,在這套課程內也有大篇幅重點講解。
課程設置
這套課程是線上課程,這種模式靈活性較高,隨時打開就可以上課,比較適合上班族或者學生黨利用碎片化時間進行學習。課件和PPT模式類似,左邊顯示的小標題方便進度查找。由于是近幾年新出的課程,和之前提及的書籍教材相比,實例都比較新,也都具有代表性。每節課程中還會配有一定的題目,幫助大家鞏固知識點概念。我自己在做這些題目的時候,感受很好的是,這些題目的設定與每小節的課程內容結合的很好,能做到即時的鞏固,也能為后面的學習做鋪墊。
課程內容
貪心科技這套課程可以說是很全面地涵蓋了我上面提到的關于機器學習的各種概念,如隨機森林、邏輯回歸、線性回歸等。通過將機器學習放進人工智能的大框架里學習,能幫助學生更好的理解一些概念,將所學知識串聯起來,掌握綜合性的技能。
很多有數學背景的人喜歡在學習機器學習ML時跳過線性代數、多元微積分和統計學等內容。但有一件事你絕對不能跳過,那就是Python。雖然還有其他語言可以用于機器學習,如R、Scala等,但Python是目前最流行的ML語言。貪心科技AI課程還為無編程經驗者提供了Python基礎的內容。除了理論性的內容之外,這套課程還提供了多個機器學習領域代表性案例,如廣告點擊率預測、情感分析項目、信用卡欺詐預測、零售場景用戶分層、意圖識別等,供學生參考練習。
這套教材總體來說還是比較簡單易懂的。在同樣瀏覽了中、高級課程之后,個人感覺不足的是,進階課程難度較大。有相關機器學習及數據分析背景的人可能會覺得剛開始的內容過于基礎,而進階部分,尤其是高級,則會有些吃力。
教研團隊
課程的核心團隊由海內外AI專家組建而成,多位合伙人及主講老師都是業內資深工程師。其教研人員包括前金融獨角獸首席科學家、美國google科學家、ALBERT第一作者、美國微軟AI總監等專家;多位合伙人及主講老師都是業內資深工程師,并多次在ICML、AAAI、IJCAI、ICDM等會議發表數十篇論文,被數百次引用。我在上這節課的時候的導師就是亞馬遜的工程師,李文哲老師。他對于每一個問題的講解都十分細致,尤其是遇到運算問題,都會一步步手寫出具體公式。除此之外,他還經常會舉一反三,舉出同樣類型的例子,加深我們的記憶。課后的助教對教學也都十分認真負責,每次我提出的問題都會及時解答,就算現在已經結課了,我們也會經常溝通一下最近遇到的問題。
課后
課后的練習根據難易程度和知識點的不同有所區分,如身高體重預測、A股股價預測、客戶是否開設定期銀行賬戶預測、成績是否及格預測、判斷新聞真實性等項目,每一個練習的都是不同的知識點,學生可以在jupyter上自己進行代碼的編寫,還能得到助教一對一的反饋,及時糾正錯誤。
除了課程中提供的練習和案例,這套課程課后還配有github使用權限和專門的系統進行學習、練習。我在進行ML學習時,就經常會從github上找各種大神的代碼和他們新開發的新奇的程序,如隨機文章生成器等,這些內容完全可以拿來當成是實踐項目進行練習。有時候遇到棘手的問題,我也會上去發帖求助。總之github對于人工智能領域的學生和職場人都是一個不可多得的好資源。
這套課程也是網上教學,一個大課程下分成很多的小部分,在coursera、edx等學習網站上可以找到。課程主要介紹分析數據和建立模型的各種方法,在上課過程中還可以鍛煉與人溝通和工作的能力。在整個課程中,我們使用R語言,并同時學習R、統計概念和數據分析的技術。舉例來說,我暑假上的這節CS501的課涵蓋了很多數據調查的關鍵技巧,如數據處理、清理、采樣、管理、探索性分析、回歸和分類、預測和數據通信并通過應用先進的統計學、建模和編程技能,得出預測性的見解。
總的來說,這三個月的學習很有趣,但在這過程中,我也發現了自己基礎的不足。作為一個統計專業并且有一些編程基礎的學生,我本以為自己對于數據的處理和建模應該是能信手拈來的??蛇@套課程的難度遠超出我的想象。因為之前的學習比較基于理論,接觸實例不多,所以在接觸像這類對實例進行深入分析并利用一系列連續和離散數學工具的練習的項目就會有些應付不過來。這套課程為理解、預測和決策提供了一個定量框架,幾乎涉及生活的方方面面,從交通信號燈的計時,到疾病傳播的控制,從資源管理,到體育領域等等。可以肯定的是,上完這套課,你也會跟我一樣,有一種柳暗花明后充實的感覺,并且技能也會得到很大程度的提升。
除了這些課程,哈佛還提供了相應線上的證書項目,一共四節課,總時長約為2年。這個項目旨在教授學生如何通過應用先進的統計學、建模和編程技能,得出預測性的見解,獲得機器學習和計算技術的深入知識,并為從產品設計到金融等一系列行業發掘出重要的問題和情報。
雖然與Andrew Ng的課程相比,這個項目對機器學習強調內容較少,但你會得到更多關于從數據收集到分析的整個數據科學工作流程的練習。像我之前提及的,對于機器學習極其相關領域要盡可能多的掌握、了解。所以相對于系統性地學習,這套課程能幫助你擁有一個整體的框架概念,并拓展很多數據科學領域的知識。不足的是,這套教材目前只有英文資源,且難度較高。
這套教材也是很多人推薦的,它是2017年推出的,內容較新,可以免費使用,Coursera上線之后我也慕名有去體驗過。我個人在學習時使用的是斯坦福大學的版本,不是Coursera的。這兩個版本相比較之下,Coursera的課程內容比斯坦福的CS229更簡單,對于數學基礎的要求也更低。Coursera版本的課程幾乎沒有涉及很多概率分布、線性優化、平滑處理等機器學習相關的數學知識;反之,吳恩達通過各種舉例代入的講解,讓機器學習這門課程變得更加通俗易懂,雖然梯度、矩陣等的內容顯得十分復雜,但是后期用python都可以代入得出結果,這樣簡單實用的設置,也受到了很多入門者的喜愛。不過這也是這套課程受爭議的地方,很多人認為對于數學知識講解過于淺顯,不足以打好機器學習的基礎。
吳恩達本人是斯坦福大學計算機科學系和電氣工程系的客座教授,他也是在線教育平臺Coursera的創始人之一。這套教材在網易有中文版資源,課程的形式也是像PPT一樣并且附上吳恩達本人的筆記。整體來說內容淺顯易懂,處于初級-中級難度。比較適合入門學習。這套還配有課后作業和測試,保證了一定的練習量,但只限于Cousera課程,且編程作業需要在Jupyter上完成。其次,由于是較新的教材,了解并真正使用過的人不一定很多,所以在學習過程中遇到問題時,需要自己查閱資料解決。
這套教材還有一個特點就是其內容設置的是自下而上的偏理論式講解。這些課程的一個很強的優點是每一個編程練習都有Jupyter中的Python代碼模板。在幾乎所有的課程中,吳恩達都帶來了一些在該領域取得巨大聲譽的人,如Geoff Hinton, Yoshua Bengio, Ian Goodfellow, Andrej Karpathy等。他們的講座對于機器學習非常具有啟發性,大家感興趣的可以去聽一聽。
這套課程利用Octave從基礎開始教學,從某種程度上很利于打好基礎。不過這套教材的理論與應用有些脫節,相對于機器學習來說,它更像是一套線性代數或統計學課程。
三、實踐經驗
一旦完成了以上的兩步,就可以開始在現實世界數據上應用這些概念啦。一個沒有經驗的數據科學家可能會訓練一個模型,一旦準確率達到某個高百分比,就把它運送到生產中去,而無視在這樣做的時候所做的不正確的假設。所以,知道什么時候模型是過擬合的,什么時候有虛假的相關性,需要有扎實的理論理解和經驗。針對這一部分,我個人的建議是盡早開始練習,但要從小項目做起。實施簡單的算法,如線性回歸、梯度下降、k-means聚類、k-nearest neighbors和na?ve Bayes,然后再進行更高級的操作。在使用庫之前,試著對每個算法都做一次。只有這樣,才能完全理解它們真正的工作方式。
在這里我推薦一個叫Kaggle的平臺,這里面的數據集都是真實的,會讓你感覺到數據科學是如何在現實世界中使用的。這也是應用和測試你對ML理解的最好方法。Kaggle上還會有各種競賽,根據其獎勵分為不同類型。知識、工作、這些比賽很適合初學者,你也可以在其中找到很多如何獲得好成績的文章和樣本解決方案。
總結
以上是生活随笔為你收集整理的如何系统学习机器学习?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 装饰装修行业流动比率多少合适?
- 下一篇: 赖茅贵不贵?听说还是茅台旗下的酒?