最值得收藏的機器學習入門方法,今天統統分享給你

 2018-05-09 11:21:00.0

原標題  HOW TO GET STARTED WITH MACHINE LEARNING!

翻譯 | 楊惠淳   字幕 | 凡江

一說到機器學習,我被問得最多的問題是:給那些開始學習機器學習的人的最好的建議是什麼?

其實說句實話,我並不知道怎麼回答這個問題。每一個學習者都是獨一無二的個體,有自己的學習需求和目的。我所能做的,就是分享一下當初我開始學習機器學習的時候,對我很有用的方法。

我是如何開始接觸機器學習的

讓時間回到2017年,我看到了SethBling實現機器學習來玩遊戲的一個小演示。

最值得收藏的機器學習入門方法,今天統統分享給你

Sethbling-Marl/O-Machine Learing for Video Games

這個小機器人有了自主學習的能力,甚至可以一次又一次地玩馬里奧遊戲,當時我就震驚了。在那之後,我看到了別的使用神經網絡的機器人,被用於各種不同的遊戲——

最值得收藏的機器學習入門方法,今天統統分享給你

Ding Nicolas-A genetic algorithm learns how to fight!

從 Caryhk 傳統的機器學習項目

最值得收藏的機器學習入門方法,今天統統分享給你

carykh-Neural Networks and Unwanted Pregnancies in Evolv.io!

到星際機器學習項目——

最值得收藏的機器學習入門方法,今天統統分享給你

Youtube Uploaded-AI SC2 FirstSteps

有些人還做了關於侃爺 Rap 的 LSTM 項目

最值得收藏的機器學習入門方法,今天統統分享給你

Rabboie Barrat-Neural Network Generated Rap, V2

還有Dota2的Open AI

最值得收藏的機器學習入門方法,今天統統分享給你

Dota 2 Dendi vs OpenAI(Bot)-1v1-T17

sentdex 製作的 GTA

最值得收藏的機器學習入門方法,今天統統分享給你

sentdex-Stream, FPV, and more dada-Python plays GTA P.15

我知道我必須要去學機器學習,這玩意兒簡直太酷了。

我安裝了TensorFlow,從syntax上下載了些代碼,但是完全不知道代碼裏是怎麼一回事,神經網絡的確成功地使用大量的數據集,訓練了模型,但我對代碼所做的每一次修改都會報錯,部分是因爲 Python的語法我之前完全沒接觸過,更爲重要的是,我完全不知道該怎麼寫神經網絡。

我先是快速Google了一下「怎樣寫一個神經網絡?」,我發現了一個由完全聽不同的數學和符號組成的龐然大物,對我而言看上去就像是外星語,那時我感覺到了強烈的挫敗感,但我不達目的誓不罷休。就在那時我接觸到了Coursera上吳恩達的機器學習課程,我的天,那個課程同樣也是外星語,我能夠完成前幾章課程完全沒有問題,但那之後,吳恩達又開始講外星語了。

我是如何堅持下去的

同志們,如果像我這樣開始機器學習旅程,毫無疑問你會碰到一次巨大的詞彙衝擊。相信我,你大多數的困惑是因爲無法理解提及的單詞所引起的。當我意識到這個之後,我改變了我學習方法,轉而去學習這個龐大的外星語。在我學習的過程中,有很多術語和符號會反覆出現:向量,矩陣,激活函數傳播,機器學習等等。我在「向量」這個概念上花了一段時間,感謝 unity3D,每當我覺得理解了機器學習中的一些概念,比如矩陣乘法,我都會回到我最喜歡的機器學習資源,去看看它們對於我來說,是不是變得容易理解了。我很驚訝突然之間,我能夠稍微更好地理解這門外星語了。

每當有概念毫無頭緒讓我止步不前,我都會把他們單獨拿出來,舉個例子,當我遇到sigmoid或者其他的激活函數,我就會列出一堆困擾我的問題,然後一個個單獨查找。

說到這,我非常推薦可汗學院.com。這裏有所有在你寫自己的機器學習算法所要用到的。我在這裏列出了一些你需要去學習的很重要的數學課供你參考,對我個人而言,幫助很大。

最值得收藏的機器學習入門方法,今天統統分享給你

我個人很喜歡的學習資源:

Activation Functions -  https://en.wikipedia.org/wiki/Activation_function

Luis Serrano's Neural Network Series (REALLY GOOD) - https://www.youtube.com/watch?v=UNmqTiOnRfg

Giant_Neural_Network's Neural Network Series (REALLY GOOD) -  https://www.youtube.com/watch?v=ZzWaow1Rvho

Macheads101's Neural Network series - https://www.youtube.com/watch?v=OypPjvm4kiA

3Blue1Brown's Neural Network Series - https://www.youtube.com/watch?v=aircAruvnKk

Hugo's Neural Network Series - http://www.mooc.ai/course/300

James Mccaffrey Talk (A BIT OUTDATED INFORMATION BUT STILL A FUN ONE)- https://www.youtube.com/watch?v=-zT1Zi_ukSk

一些很重要的數學課

Vectors (explained with Linear Algebra): https://www.khanacademy.org/math/linear-algebra/vectors-and-spaces

Vectors (explained with PreCal): https://www.khanacademy.org/math/precalculus/vectors-precalc

Matrices: https://www.khanacademy.org/math/precalculus/precalc-matrices

Sequences: https://www.khanacademy.org/math/precalculus/seq-induction

Derivative Rules: hhttps://www.khanacademy.org/math/ap-calculus-bc/bc-derivative-rules

一些可能會幫助到你的數學課

Algebra Functions: https://www.khanacademy.org/math/algebra/algebra-functions

Quadratics: https://www.khanacademy.org/math/algebra/quadratics

Irrational: https://www.khanacademy.org/math/algebra/rational-and-irrational-numbers

Analyzing Categorical Data: https://www.khanacademy.org/math/statistics-probability/analyzing-categorical-data

我的建議

(1)更好地理解僞代碼

我覺得學習如何寫機器學習算法最好的方法,就是去更好地理解僞代碼。我們要理解如何去計算它們,還有各種不同的能夠相互轉換的指數。在我的經驗裏,大多數情況下,僞代碼是十分清晰的。但如果不是的話,可能是因爲在外星語中出現的太頻繁了。

學習怎樣將僞代碼轉換成你最喜歡的編程語言,其實是最重要的事。其實沒有一個一碼通吃的神經網絡,實際上當你從不同的老師那裏學習怎樣寫神經網絡的時候,請一定要注意,他們不會總是使用同樣數量的輸入,隱藏層節點,激活函數,可能連術語都不一樣,有些老師可能會把偏置說成另一個詞,這就是僞代碼如此重要的原因。

(2)前饋神經網絡例子

最值得收藏的機器學習入門方法,今天統統分享給你

除了之前所說的我能給你最好的建議,就是用一個簡單的前饋神經網絡例子來開始你的學習,這有一個很好的例子——做一個文字顏色預測器,當你提供給它,紅,綠,藍值作爲輸入的時候,嘗試去訓練它作出,在此之上應該使用深色字還是淺色字,讓它能夠可以被認出來的預測。我覺得這是個很好的有很簡單的項目,值得認真研究以此來學習機器學習的基礎。

(3)立刻開始着手

建議你從最開始就着手寫你的神經網絡,我指的是你學習的第一天,就在這個視頻結束的時候,立刻打開你的IDE。紙上得來終覺淺,絕知此事要躬行。儘管理論上知道,如何寫神經網絡很酷,但實際去寫一個神經網絡是完全不同的。

當你開始去寫一個神經網絡的時候,你會卡住,然後你就有了第一個需要去找的問題,嘗試去解決它,如此往復,直到你成功。我特別希望,從最一開始我就知道這個建議,這可能會減少我大部分學習的時間。

(4)站在巨人的肩膀上

如果你真的想要能夠很好地寫出機器學習算法,你需要依靠他人的研究和代碼,因爲事實上這其實還是一個剛起步的領域,每週都會有新的東西誕生。

最後一個我想給你們的重要建議是,其實你也可以不像我之前說的那樣做,形象點來說,機器學習就好像電腦一樣。如果你真的想要一臺電腦,你可以從頭組裝一臺,或者你也可以直接買一臺整機,這兩件事最後的結果是一樣的。我個人想要去學習如何從頭構建神經網絡因爲,我是個控制慾很強的瘋子。

最值得收藏的機器學習入門方法,今天統統分享給你

有很多諸如,TensorFlow,PyTorch,Theano,Keras,和其他的機器學習框架,他們就好像是一臺裝好的電腦,你可以直接開始看教程,開始學習怎樣去使用它們,你不需要關心很多,諸如導數,矩陣乘法,激活函數這些概念,這些機器學習框架已經把大多數複雜的事情做好了,不過顯而易見的,以此爲代價的就是,當網絡內部出現問題,或者運行不正確時,找出哪裏出現問題,會是件很困難的事,這都取決於你想要什麼

不管怎麼樣,請一定要記得滿足你的好奇心,在機器學習的道路上走得越來越遠。

視頻原址 https://www.youtube.com/watch?v=I74ymkoNTnw

文章來源:雷鋒網