學習機器學習
“你應該如何開始機器學習?”
隨着AI和ML在科技行業中成爲如此巨大的話題,如果沒有在網上論壇,與加州大學洛杉磯分校的其他學生討論,甚至與其他醫學預科和人文學科專業人士進行討論,就很難完成整個學習過程。根據我自己熟悉的ML經驗和我通過ACM AI教授給其他人的經驗,這是我對這個問題的最好迴應:
-
在開始使用任何代碼或任何技術術語之前,我認爲最好的第一步是全面瞭解機器學習是什麼,以及它試圖做什麼。當我第一次向其他學生講授ML時,我發現在開始深入研究梯度下降和損失函數等術語之前,讓他們對該領域有一個大致的瞭解是非常重要的。維基百科所說,機器學習是一門計算機科學領域,它使計算機無需明確編程即可學習。我還可以補充一點:機器學習是AI的一個子領域,它是通過利用訓練數據和優化來創建智能系統的獨特方法。我建議使用以下鏈接和視頻,讓您對這個領域有整體的瞭解。
- 機器學習簡介:喜歡這個視頻,因爲它從很好的定義開始,並向您介紹重要的術語。
- 什麼是機器學習?:解釋機器學習的3個不同子區域:監督學習,無監督學習,強化學習
- 機器學習的友好介紹:帶有一些很酷的插圖的精彩視頻,但說實話,我認爲從5:54開始觀看就足夠了。
- 基本機器學習算法概述:不要擔心是否確切知道這些術語的含義。只需瞭解不同的算法及其完成的任務。我們稍後會詳細介紹。
- 從zero到hero的機器學習:積極學習機器學習。有時一個簡單的坐下來觀看正確的視頻可以點燃並激發起你ML的熱情。如果您瞭解軟件,這是一個很好的起點。不要擔心知道每個視頻中的每個細節,而是要考慮ML的高級目標。
-
好的很酷,現在你應該大致瞭解機器學習的目標。我們希望能夠創建一個能夠執行某項任務的系統,並且我們希望使用我們擁有的數據集來訓練該系統。現在讓我們跳到機器學習中使用的一些模型。一種有幫助方法是一次一個地學習這些模型,同時也不斷思考它們之間的相似點和不同點。對於每個模型,我認爲通過以下過程將有所幫助:
- 瞭解該模型正在採用的高級方法。該模型試圖解決什麼類型的任務,以及如何解決它?
- 開始深入瞭解模型的具體內容。想想模型試圖計算的功能。常用的損耗函數是什麼?此模型是否使用梯度下降進行優化過程?
- 想想可以使用這個模型的例子。模型是用於分類任務還是用於迴歸任務?在您想到的特定示例中,模型的輸入和輸出是什麼樣的?您需要什麼類型的數據集來訓練此算法?
- 過渡到更實際的練習。如果您對編碼感到滿意,請嘗試在代碼中重建模型。想想你將如何編寫函數,計算損失,漸變等等。如果現在這有點太令人生畏了(別擔心,它最初對我來說也是如此!),那麼就試着寫下一些僞 - 代碼,然後在線查看其他人是如何做到的!
- 最後,我認爲學習任何機器學習算法的最酷部分是在實踐中看到它。最後一步是進行某種項目或實驗,您可以在其中運行您在上一步中編碼的算法,或者在您選擇的特定問題上運行從SciKitLearn導入的算法。
- 爲了確保您真正瞭解該模型,自行測驗是有幫助的。拿一張紙,並(從記憶中)寫下模型的摘要,就像你向5歲的孩子解釋一樣。然後,寫一份技術摘要,說明正在計算的功能,培訓程序如何發生,損失功能是什麼等等。看看你是否可以向朋友解釋。考慮一下這個模型可以用於的新問題空間。在進入下一個模型學習之前,請真正問自己是否已經牢固地理解了這些概念(並且在這裏誠實地對待自己!)然後繼續進行。如果答案仍然是否定的,那麼YouTube和Google就是您的朋友:)根據我們對此字段的內容規模,找到能夠回答您問題的視頻或教程並不難。
好的,這絕對是很多信息。tl; dr是關於機器學習模型的學習涉及很多步驟。首先,瞭解高級視角,然後確定模型的獨特特徵,然後測試自己是否可以編碼,最後在實際環境中使用模型。如果這需要一週或甚至一個月的線性迴歸,請不要擔心。慢慢地完成這個過程並確保您瞭解每個步驟對於保留信息至關重要。
對於步驟#3-7,重複我上面討論的以下每個ML模型的過程。我列出了每個型號的幾個鏈接。你不必每天都看它們,只想包括我能找到的許多好資源。如果您需要更多資料或仍然不瞭解某個主題,請進行簡單的YouTube或Google搜索!你搜索到的數量會讓你驚訝。
-
線性迴歸:
-
Logistic迴歸:
-
K鄰近算法:
-
K-Means:
-
決策樹:
可選,但值得您的時間:隨機森林,SVM,樸素貝葉斯,梯度提升方法,PCA
所以現在我們對一些ML模型有了不錯的理解,我認爲我們可以過渡到深度學習。
-
神經網絡:如果有人想要開始深度學習,我認爲最好的方法是首先熟悉機器學習(你們都會在這一點上做到),然後從神經網絡開始。遵循相同的高級理解 - >模型細節 - >代碼 - >實際示例方法在這裏也會很棒。
- 3Blue1Brown神經網絡播放列表:不能誇大這些視頻的製作程度。他們深入研究了反向傳播和梯度下降,這是理解神經網絡的兩個關鍵概念。
- 深度神經網絡的工作原理:Brandon Rohrer的另一個很棒的教程。
- 深度學習和神經網絡的友好介紹:神經網絡的另一個視覺上出現的表現。
- 神經網絡遊樂場:由谷歌創建的優秀網絡應用程序,允許您在瀏覽器中修改神經網絡。很高興獲得一些實際的理解。
- Michael Nielsen關於NN的書:非常深入和全面。
-
卷積神經網絡:卷積神經網絡是一種特殊類型的神經網絡,已成功用於圖像處理任務。
- 初學者瞭解CNN的指南:無恥插頭大聲笑
- CS 231N主頁:斯坦福大學CS231N是一門專注於CNN的研究生課程,最初由費菲莉,安德烈·卡爾帕西等人講授。
- CS 231N視頻講座:2016年的所有講座視頻。在YouTube上也可能有2017年的播放列表。
- Brandon Rohrer YouTube教程:本教程視頻的精彩視覺效果。
- Andrew Ng的CNN課程:來自Andrew Ng的深度學習課程的視頻。
-
遞歸神經網絡:遞歸神經網絡是一種特殊類型的神經網絡,已成功用於自然語言處理任務。
- 深度學習研究論文評論:NLP:太多無恥的插頭或不是嗎?大聲笑
- CS 224D視頻講座:斯坦福CS 224D是一門專注於RNN並將深度學習應用於NLP的研究生課程。
- RNN和LSTM:我們都誠實地愛着Brandon。
- 循環神經網絡 - Intel Nervana:非常全面。
- 瞭解LSTM網絡:Chris Olah的帖子是可讀的,但卻很深入。
- RNN簡介:Denny Britz是另一位有着廣泛博客的偉大作家。
-
強化學習:雖然3種先前的ML方法對於理解RL非常重要,但是該領域的許多最新進展結合了深度學習陣營和傳統強化學習領域的元素。
- David Silver的強化學習課程:這裏有高級課程,但David是一位出色的講師,我喜歡這些全面的內容。
- 使用Tensorflow進行簡單的強化學習:Arthur Juliani有一個博客文章系列,涵蓋RL概念和許多實際例子。
真棒,所以現在你應該對ML和DL在今天的年代和時代有一個很好的理解。現在世界就是你的遊樂場。閱讀研究論文,嘗試Kaggle比賽,觀看ML技術講座,建立很酷的項目,與對ML感興趣的人交談,永不停止學習,最重要的是,玩得開心!:)這是進入ML並且急於儘快獲取知識的好時機,通常只需放慢速度並考慮我們可以利用這項技術在這個世界中創造的驚人應用和積極變化的類型。