?姓名:樊松松
?學號:17021211234
?轉(zhuǎn)載自https://www.leiphone.com/news/201804/wmYdmBLjATQZoH7c.html,有刪節(jié)
【嵌牛導讀】:我必須要去學機器學習哈打,這玩意兒簡直太酷了塔逃!
【嵌牛鼻子】: 機器學習
【嵌牛提問】:給那些開始學習機器學習的人的最好的建議是什么?
【嵌牛正文】:
我是如何開始接觸機器學習的
讓時間回到2017年料仗,我看到了SethBling實現(xiàn)機器學習來玩游戲的一個小演示湾盗。
Sethbling-Marl/O-Machine Learing for Video Games
這個小機器人有了自主學習的能力,甚至可以一次又一次地玩馬里奧游戲立轧,當時我就震驚了格粪。在那之后,我看到了別的使用神經(jīng)網(wǎng)絡(luò)的機器人氛改,被用于各種不同的游戲——
Ding Nicolas-A genetic algorithm learns how to fight!
從 Caryhk 傳統(tǒng)的機器學習項目
carykh-Neural Networks and Unwanted Pregnancies in Evolv.io!
到星際機器學習項目——
Youtube Uploaded-AI SC2 FirstSteps
有些人還做了關(guān)于侃爺 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上下載了些代碼疆导,但是完全不知道代碼里是怎么一回事,神經(jīng)網(wǎng)絡(luò)的確成功地使用大量的數(shù)據(jù)集葛躏,訓練了模型澈段,但我對代碼所做的每一次修改都會報錯,部分是因為 Python的語法我之前完全沒接觸過舰攒,更為重要的是均蜜,我完全不知道該怎么寫神經(jīng)網(wǎng)絡(luò)。
我先是快速Google了一下“怎樣寫一個神經(jīng)網(wǎng)絡(luò)芒率?”,我發(fā)現(xiàn)了一個由完全聽不同的數(shù)學和符號組成的龐然大物篙顺,對我而言看上去就像是外星語偶芍,那時我感覺到了強烈的挫敗感充择,但我不達目的誓不罷休。就在那時我接觸到了Coursera上吳恩達的機器學習課程匪蟀,我的天椎麦,那個課程同樣也是外星語,我能夠完成前幾章課程完全沒有問題材彪,但那之后观挎,吳恩達又開始講外星語了。
我是如何堅持下去的
同志們段化,如果像我這樣開始機器學習旅程嘁捷,毫無疑問你會碰到一次巨大的詞匯沖擊。相信我显熏,你大多數(shù)的困惑是因為無法理解提及的單詞所引起的雄嚣。當我意識到這個之后,我改變了我學習方法喘蟆,轉(zhuǎn)而去學習這個龐大的外星語缓升。在我學習的過程中,有很多術(shù)語和符號會反復出現(xiàn):向量蕴轨,矩陣港谊,激活函數(shù)傳播,機器學習等等橙弱。我在“向量”這個概念上花了一段時間歧寺,感謝 unity3D,每當我覺得理解了機器學習中的一些概念膘螟,比如矩陣乘法成福,我都會回到我最喜歡的機器學習資源,去看看它們對于我來說荆残,是不是變得容易理解了奴艾。我很驚訝突然之間,我能夠稍微更好地理解這門外星語了内斯。
每當有概念毫無頭緒讓我止步不前蕴潦,我都會把他們單獨拿出來,舉個例子俘闯,當我遇到sigmoid或者其他的激活函數(shù)潭苞,我就會列出一堆困擾我的問題,然后一個個單獨查找真朗。
說到這此疹,我非常推薦可汗學院.com。這里有所有在你寫自己的機器學習算法所要用到的。我在這里列出了一些你需要去學習的很重要的數(shù)學課供你參考蝗碎,對我個人而言湖笨,幫助很大。
我個人很喜歡的學習資源:
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
一些很重要的數(shù)學課
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
一些可能會幫助到你的數(shù)學課
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)更好地理解偽代碼
我覺得學習如何寫機器學習算法最好的方法蹦骑,就是去更好地理解偽代碼慈省。我們要理解如何去計算它們,還有各種不同的能夠相互轉(zhuǎn)換的指數(shù)眠菇。在我的經(jīng)驗里边败,大多數(shù)情況下,偽代碼是十分清晰的捎废。但如果不是的話笑窜,可能是因為在外星語中出現(xiàn)的太頻繁了。
學習怎樣將偽代碼轉(zhuǎn)換成你最喜歡的編程語言缕坎,其實是最重要的事怖侦。其實沒有一個一碼通吃的神經(jīng)網(wǎng)絡(luò),實際上當你從不同的老師那里學習怎樣寫神經(jīng)網(wǎng)絡(luò)的時候谜叹,請一定要注意匾寝,他們不會總是使用同樣數(shù)量的輸入,隱藏層節(jié)點荷腊,激活函數(shù)艳悔,可能連術(shù)語都不一樣,有些老師可能會把偏置說成另一個詞女仰,這就是偽代碼如此重要的原因猜年。
(2)前饋神經(jīng)網(wǎng)絡(luò)例子
除了之前所說的我能給你最好的建議,就是用一個簡單的前饋神經(jīng)網(wǎng)絡(luò)例子來開始你的學習疾忍,這有一個很好的例子——做一個文字顏色預測器乔外,當你提供給它,紅一罩,綠杨幼,藍值作為輸入的時候,嘗試去訓練它作出聂渊,在此之上應該使用深色字還是淺色字差购,讓它能夠可以被認出來的預測。我覺得這是個很好的有很簡單的項目汉嗽,值得認真研究以此來學習機器學習的基礎(chǔ)欲逃。
(3)立刻開始著手
建議你從最開始就著手寫你的神經(jīng)網(wǎng)絡(luò),我指的是你學習的第一天饼暑,就在這個視頻結(jié)束的時候稳析,立刻打開你的IDE洗做。紙上得來終覺淺,絕知此事要躬行迈着。盡管理論上知道竭望,如何寫神經(jīng)網(wǎng)絡(luò)很酷,但實際去寫一個神經(jīng)網(wǎng)絡(luò)是完全不同的裕菠。
當你開始去寫一個神經(jīng)網(wǎng)絡(luò)的時候,你會卡住闭专,然后你就有了第一個需要去找的問題奴潘,嘗試去解決它,如此往復影钉,直到你成功画髓。我特別希望,從最一開始我就知道這個建議平委,這可能會減少我大部分學習的時間奈虾。
(4)站在巨人的肩膀上
如果你真的想要能夠很好地寫出機器學習算法,你需要依靠他人的研究和代碼廉赔,因為事實上這其實還是一個剛起步的領(lǐng)域肉微,每周都會有新的東西誕生。
最后一個我想給你們的重要建議是蜡塌,其實你也可以不像我之前說的那樣做碉纳,形象點來說,機器學習就好像電腦一樣馏艾。如果你真的想要一臺電腦劳曹,你可以從頭組裝一臺,或者你也可以直接買一臺整機琅摩,這兩件事最后的結(jié)果是一樣的铁孵。我個人想要去學習如何從頭構(gòu)建神經(jīng)網(wǎng)絡(luò)因為,我是個控制欲很強的瘋子房资。
有很多諸如蜕劝,TensorFlow,PyTorch志膀,Theano熙宇,Keras,和其他的機器學習框架溉浙,他們就好像是一臺裝好的電腦烫止,你可以直接開始看教程,開始學習怎樣去使用它們戳稽,你不需要關(guān)心很多馆蠕,諸如導數(shù)期升,矩陣乘法,激活函數(shù)這些概念互躬,這些機器學習框架已經(jīng)把大多數(shù)復雜的事情做好了播赁,不過顯而易見的,以此為代價的就是吼渡,當網(wǎng)絡(luò)內(nèi)部出現(xiàn)問題容为,或者運行不正確時,找出哪里出現(xiàn)問題寺酪,會是件很困難的事坎背,這都取決于你想要什么
不管怎么樣,請一定要記得滿足你的好奇心寄雀,在機器學習的道路上走得越來越遠得滤。