本文作者 2013 年本科畢業(yè),做過(guò)并行計(jì)算開發(fā)、嵌入式底層,目前在游戲創(chuàng)業(yè)公司做服務(wù)器開發(fā)。
自從作者自學(xué)機(jī)器學(xué)習(xí)等 AI 領(lǐng)域技術(shù)以來(lái)已經(jīng)有一段時(shí)間了,本文作者將簡(jiǎn)單總結(jié)這一段時(shí)間的進(jìn)修情況。
后悔大學(xué)不努力
大三的時(shí)候?qū)W過(guò)一門“人工智能導(dǎo)論”的課,只記得課里有一些回溯和圖搜索的算法,具體細(xì)節(jié)全忘了。
雖然算法與數(shù)據(jù)結(jié)構(gòu)、編程語(yǔ)言很有深度,但當(dāng)時(shí)認(rèn)為真正厲害的是能干項(xiàng)目,寫網(wǎng)站的,懂框架寫實(shí)際應(yīng)用程序。
什么語(yǔ)言、算法,現(xiàn)學(xué)會(huì)用就行。那些編譯原理、操作系統(tǒng)課程、數(shù)學(xué)、英語(yǔ),聽課就行,畢竟真正招人不看這些基礎(chǔ)課。
尤其是蘊(yùn)含其中的算法思想。它們決定了你從事程序員這個(gè)行業(yè)以后所能達(dá)到的深度,而英語(yǔ)決定了你以后的廣度。趁年輕,可以多嘗試各個(gè)方向,但一定要明白基礎(chǔ)知識(shí)的重要性。
如果想形成知識(shí)體系,本人是不贊同碎片化學(xué)習(xí)某一領(lǐng)域知識(shí)的。碎片化時(shí)間適合看技術(shù)“花邊文章”,開眼界。碎片化學(xué)到的知識(shí),都是零散的,個(gè)別天才除外。
真正能形成系統(tǒng)性的,有深度知識(shí)到自己腦海里的一定是靠長(zhǎng)時(shí)間系統(tǒng)地持續(xù)性地學(xué)習(xí)才能積累和形成的(至少我自己適合持續(xù)性學(xué)習(xí))。
我剛?cè)雽W(xué)那會(huì)兒被各種各樣的大部頭嚇壞了,這能啃完嗎?甚至有的老師也不建議啃。
但其實(shí)現(xiàn)在看來(lái),大學(xué)期間最適合啃這些書,因?yàn)槟菚r(shí)候有非常多的時(shí)間來(lái)心無(wú)旁騖地學(xué)習(xí)。
如果你熱愛這一行,或者立志想一輩子靠技術(shù)吃飯的話,如果不知道啃哪本,就從《算法導(dǎo)論》啃起吧。
不要怕難,認(rèn)真反復(fù)多看幾遍,如果全弄懂你的人生肯定會(huì)與其他人不一樣。
大學(xué)里最重要的是學(xué)習(xí)思想性的知識(shí),好的學(xué)習(xí)知識(shí)的方法,專注和自學(xué)的能力,這些是能伴隨你一生的習(xí)慣,是修煉內(nèi)功的絕好機(jī)會(huì)。
這個(gè)時(shí)候心無(wú)雜念,找本自己想學(xué)的方向,很容易鉆進(jìn)書本里。如果你還在校園里,那就踏踏實(shí)實(shí)夯實(shí)基礎(chǔ)吧(比如4學(xué)分的課)。
如果你覺得老師講得不好,那么去網(wǎng)上自學(xué)公開課,自學(xué)能力也幾乎是技術(shù)成長(zhǎng)必備的能力。
再一個(gè),不要害怕與眾不同,我們從小到大,太強(qiáng)調(diào)一致性了,要相信自己。
為什么想學(xué) AI ?
隨著近幾年計(jì)算機(jī)領(lǐng)域的不斷發(fā)展,云服務(wù)與并行計(jì)算促進(jìn)了計(jì)算力的提升,互聯(lián)網(wǎng)的發(fā)展提供了海量的數(shù)據(jù),這些方向的發(fā)展都促進(jìn)了人工智能的發(fā)展,也促進(jìn)了 AI 領(lǐng)域機(jī)器學(xué)習(xí)的發(fā)展。
我覺得學(xué)習(xí) AI 是投資自己的技術(shù)未來(lái),就像前幾年火熱的移動(dòng)端開發(fā)一樣,傳統(tǒng)崗位也會(huì)依然存在。但是 AI 行業(yè)的發(fā)展也一定會(huì)產(chǎn)生新的崗位。
而人對(duì)未知的事物都是充滿好奇或者擔(dān)憂的,至少我是好奇。好奇大家口中的機(jī)器學(xué)習(xí)、神經(jīng)網(wǎng)絡(luò)這些名詞到底是怎么回事,有什么高深的算法,會(huì)如何發(fā)展,是否存在自己一直尋找的興趣方向。
之前的一些機(jī)器學(xué)習(xí)入門的文章也看了很多,都看得迷迷糊糊,大家說(shuō)的模棱兩可,比如不用在乎數(shù)學(xué)推導(dǎo),直接調(diào)用接口,就好了。
簡(jiǎn)單的 API 調(diào)用,我想大家都很容易學(xué)會(huì),但如果我僅把函數(shù)當(dāng)成黑盒使用,我心里是沒底的,因?yàn)槲也恢览锩嬖趺醋龅模揖蜁?huì)覺得沒底。
也許是我性格的原因,會(huì)經(jīng)常執(zhí)迷于細(xì)節(jié),而且學(xué)習(xí)速度很慢,并且無(wú)法從宏觀上對(duì)事情進(jìn)行更好的抽象,我現(xiàn)在也在逐漸提高自己的抽象能力,先從宏觀上看事情。
一次偶然的機(jī)會(huì),看到一篇文章:《入行AI,如何選個(gè)腳踏實(shí)地的崗位》。這篇文章是我看過(guò)所有的入門文章中,介紹的最詳細(xì)最明白的文章,相見恨晚。
文章中的觀點(diǎn)我完全贊同,盡管很多技能我還不具備,但我覺得說(shuō)得都很對(duì),同時(shí)也揭開了各個(gè)崗位都是干什么的神秘面紗。
首先,我覺得不懂內(nèi)部原理甚至細(xì)節(jié),只會(huì)調(diào)用庫(kù),是沒辦法更深入和提高的。所以我覺得數(shù)學(xué)基礎(chǔ)很重要,照著教程敲一遍代碼已經(jīng)不足以滿足我現(xiàn)在的追求,做完了沒有什么成就感。
成就感是個(gè)很神奇的東西,就跟你玩游戲打怪練級(jí)一樣,如果認(rèn)識(shí)到這件事充滿成就感,你會(huì)有非常多的力量在上面,找到最大化自己成就感的事情,那個(gè)應(yīng)該就是興趣所在了,做那件事也就能實(shí)現(xiàn)自我的意義和價(jià)值。
其次,同意文章中說(shuō)的在成為機(jī)器學(xué)習(xí)工程師之前要首先要是一名合格的程序員,基本數(shù)據(jù)結(jié)構(gòu)和算法一定要掌握,我距離合格程序員還有很大差距。要認(rèn)清自己,腳踏實(shí)地。
最后,文章末尾有個(gè)講課的鏈接,我以前對(duì)培訓(xùn)和講課是很抵觸的,片面覺得所有的東西都要自己悟才可以,現(xiàn)在想想是自己鉆死胡同里了。
如果有老師講很好的課,可以幫你快速入門,大幅提高你的時(shí)間效率的,而且這門課很便宜。
此外,我個(gè)人認(rèn)為當(dāng)一篇文章讓我有極大認(rèn)同和感想以后,我就會(huì)把作者的所有相關(guān)文章都檢索出來(lái)。
看一遍,如果 80% 甚至更多都和自己的認(rèn)知相同,那么這個(gè)人多半你就是認(rèn)同的,大概率買她課不會(huì)讓你失望,李燁老師給我的感覺就是這樣。
以上只是我的真實(shí)感受,不多說(shuō)了,要不然有打廣告的嫌疑??赐赀@篇文章后,我對(duì)整個(gè) AI 行業(yè)有了一些認(rèn)識(shí),決定要開始行動(dòng)起來(lái),臨淵羨魚,不如退而結(jié)網(wǎng)。
關(guān)于買書
關(guān)于買書,我從不吝惜,希望自己也能一直保持著這個(gè)習(xí)慣。基本 200 以內(nèi)的書,真的需要,或者我知道自己買完了一定會(huì)看,我從不猶豫。
但仍然有很多書沒買,Amazon 上的購(gòu)物車,常年有上千的書存著,因?yàn)楦F,哭。
之前是怕租房搬家麻煩不買,現(xiàn)在覺得自己以前好蠢,這點(diǎn)麻煩算什么。個(gè)人覺得電子書的確方便,但的確適合查閱,不適合閱讀。
想系統(tǒng)學(xué),還是要買好書經(jīng)典書,甚至大部頭才好,這樣知識(shí)才能系統(tǒng)建立起來(lái),比碎片化有意義很多。碎片化當(dāng)開眼界和休息時(shí)的新聞看看就行了。
關(guān)于知識(shí)付費(fèi)
我覺得學(xué)習(xí)上不要吝嗇,衣服可以不買,吃的可以溫飽,但是學(xué)習(xí)上,不用小氣,一件衣服,一雙鞋,都?jí)蛸I一年的課或者書了。
我本人收入并不高,但買了很多課,別亂買,買那些你一定會(huì)去學(xué)的,一定讓你有產(chǎn)出的,可以內(nèi)化成你自己知識(shí)的。
我自己買了一些某乎 live 課,但覺得里面都是一些宏觀上的方法,細(xì)節(jié)很少,干貨也很少,整個(gè) live 過(guò)程都覺得非常趕時(shí)間,學(xué)到的就更少了,可以作為開眼界,理清一下脈絡(luò)的方式,甚至有的 live 買完能學(xué)到脈絡(luò)就不錯(cuò)了。
App 上也訂閱了某人工智能專欄,老師照書本式的念,聽著實(shí)在是煩,生硬。說(shuō)白了,我識(shí)字,但你寫的我看不懂,你念一遍我也還是不懂。
沒有詳細(xì)解釋,只能靠我自己去網(wǎng)上一點(diǎn)點(diǎn)找,也許對(duì)數(shù)學(xué)基礎(chǔ)要求很高,我的基礎(chǔ)距離主講人定義的數(shù)學(xué)基礎(chǔ)差太多。
數(shù)學(xué)基礎(chǔ)
個(gè)人覺得,如果有好的詳細(xì)推導(dǎo)過(guò)程嚴(yán)謹(jǐn)?shù)慕滩?教程,看書或圖文教程,是學(xué)習(xí)上手最快的。因?yàn)?,你可以自己控制學(xué)習(xí)的速度。
【1】微積分
首先由于連微積分最基礎(chǔ)的知識(shí)都忘記了,就先回去補(bǔ)高數(shù)了,雖然大學(xué)上課認(rèn)真聽課了,但不是學(xué)霸那種,畢業(yè)后基本沒怎么用過(guò),就全還給老師了。
看大學(xué)教材,這里我用的是 GitChat 上李燁老師推薦的微積分講義(北師大出版社鄺榮雨等編著的《微積分學(xué)講義》),書很薄,很適合快速過(guò)一遍。
我屬于只看書和例題沒有做題的,因?yàn)閼?。我覺得大學(xué)期間,很多時(shí)候都留在做題上了,我整個(gè)教育歷程重點(diǎn)都是題海戰(zhàn)術(shù)。
但我忽視掉了,真正的數(shù)學(xué)定義中的物理和幾何意義,其實(shí)這些意義非常重要。這里重點(diǎn)補(bǔ)充了一下。
如果后面想往算法科學(xué)家方向發(fā)展的話,這部分還要繼續(xù)強(qiáng)化,做題,多練,提高自己的計(jì)算能力,多看書和例子。MIT 的在163上的微積分公開課也非常棒。
【2】線性代數(shù)
由于第一份工作用到了浮點(diǎn)數(shù)高階矩陣求逆并行優(yōu)化算法相關(guān)的工作,這個(gè)在當(dāng)時(shí)認(rèn)真學(xué)了,而且當(dāng)時(shí)包括現(xiàn)在的理解,線性代數(shù),只是進(jìn)行矩陣變換和運(yùn)算。
【3】概率論
這個(gè)是弱項(xiàng),從高中開始,抽球,就抽不明白,現(xiàn)在也沒太明白。但是我屬于對(duì)學(xué)習(xí)資料比較苛刻的那種人,各種強(qiáng)調(diào)器,而不去做事。其實(shí)如果用心學(xué)隨便一本,都可以內(nèi)化成自己的知識(shí),但我暫時(shí)還達(dá)不到這種境界。
學(xué)知識(shí)不是為了滿足自己的我很上進(jìn)的樣子,也不是為了學(xué)過(guò)這些知識(shí)以后,自我滿足感。
一定要強(qiáng)調(diào)自己的內(nèi)化——就是拍著自己的胸脯問自己,你真的學(xué)會(huì)了嗎?你學(xué)到了什么?都理解了嗎?沒理解,好,說(shuō)明沒學(xué)會(huì),那就重新再看視頻,再查閱各種相關(guān)資料,再學(xué),每天吃飯睡覺都去想,去琢磨。
這里我推薦***大學(xué)的葉丙成老師在 Coursera 上的課程:"頑想學(xué)概率"(一)和(二)。
話說(shuō)葉老師說(shuō)話很像我已經(jīng)離職的 Leader,親切感十足。雖然只學(xué)了前面幾節(jié)課,但明顯是非常棒的概率課程。跟著學(xué)就好。教材,請(qǐng)打印課堂的ppt。
【4】統(tǒng)計(jì)學(xué)
網(wǎng)上有 edx 或者可汗等國(guó)外的公開課,暫時(shí)還沒有補(bǔ)習(xí),大面積用到了再補(bǔ)。
大家多利用好網(wǎng)上公開課視頻。我自己本人是,基本上所有的公開課 App 都裝了(買了幾千塊的手機(jī),不能白買)。
機(jī)器學(xué)習(xí)
首先推薦:吳恩達(dá)老師在 Cousera 上的“機(jī)器學(xué)習(xí)公開課”。
這個(gè)課程基本你看完微積分,學(xué)會(huì)求導(dǎo),求偏導(dǎo)的物理意義,知道矩陣乘法和轉(zhuǎn)置,就可以看機(jī)器學(xué)習(xí)的視頻了。
這門課非常好,老師講的非常淺顯易懂。我甚至覺得高中生,學(xué)完微積分,求導(dǎo),了解一下矩陣,如果會(huì)編程,都可以學(xué)了。
建議邊看邊做筆記,做完筆記,雖然耗時(shí)間,但是我知道自己屬于看十遍不如寫一遍,一般的視頻,看兩遍,某個(gè)看三遍就能理解了。
Coursera 上有幾個(gè)是視頻的中文字幕是不全的,網(wǎng)易上有更好版本的中文字幕視頻。大家可以先去網(wǎng)易公開課上看。
建議先中文,然后達(dá)到英文聽課的程度,因?yàn)檎娴牟浑y。我自己英語(yǔ)很菜,大學(xué)就沒怎么學(xué)習(xí),看第二遍的時(shí)候也能看懂英文字幕了。
順便說(shuō)一下:英語(yǔ)這個(gè)技能是必備的,只要你從事計(jì)算機(jī)這一行并且想往上走,沒什么商量的。平時(shí)查 stackoverflow,看其他的 tutorial 或者 doc 也要看的。
其次推薦:李燁老師在 GitChat 發(fā)布的「極簡(jiǎn)機(jī)器學(xué)習(xí)入門課」
這門課非常值得學(xué)習(xí),而且真的好便宜,物超所值。
大多數(shù)專欄只是開眼界,沒法做到系統(tǒng)。李燁老師的課做得就比較好,課程里非?;A(chǔ),通俗,有細(xì)節(jié)。還能讓你開眼界,了解常識(shí)。
比如會(huì)告訴你一直以來(lái),線性關(guān)系并不全是直線的關(guān)系,這樣非?;A(chǔ)而重要的概念?!苍S我數(shù)學(xué)太弱了,學(xué)東西方法也不夠靈活,理解不夠深刻。
當(dāng)然,如果圖文再詳細(xì)些,圖文肯定效率更高。
至于機(jī)器學(xué)習(xí)相關(guān)的書籍,我覺得周志華老師的西瓜書(《機(jī)器學(xué)習(xí)》)對(duì)我來(lái)說(shuō)太難了,大神覺得簡(jiǎn)單,請(qǐng)無(wú)視我。
因?yàn)槲液芏喾?hào)表示都看不懂,這里一位網(wǎng)友說(shuō)過(guò)一句話,我覺得有一定道理:數(shù)學(xué)符號(hào)不統(tǒng)一,導(dǎo)致了入門門檻較高。
但是,坦白說(shuō),還是自己太菜了,其實(shí)符號(hào)大同小異,但的確入門如果一味鉆進(jìn)去摳符號(hào)什么意思,是很惱人的。
但沒別的辦法,只能多去搜,多去看,去老師的群里問,老師和群友都會(huì)幫你解答??床欢憔筒恢涝谌思以谡f(shuō)什么。
不要急,不要煩,機(jī)器學(xué)習(xí)就這么多符號(hào),它不是無(wú)窮盡的,踏踏實(shí)實(shí)一個(gè)一個(gè)學(xué)??隙軐W(xué)會(huì),這里我主要推崇愚公移山的精神,當(dāng)你一下子突然理解了,能體會(huì)到領(lǐng)悟的喜悅。
有網(wǎng)友推薦臺(tái)大的林軒田的視頻,這個(gè)我剛看了開頭,還沒詳細(xì)看,以后再補(bǔ)。李航的《統(tǒng)計(jì)學(xué)習(xí)方法》看著更頭大,暫時(shí)先不看,以后回來(lái)補(bǔ)。
編程語(yǔ)言
編程語(yǔ)言首選 Python。Amazon 上有一本讓繁瑣工作自動(dòng)化的 Python 書,非常簡(jiǎn)單,適合無(wú)基礎(chǔ)的人,如果你和我一樣弱,那就看它吧,上手非??臁?/p>
Python 編程快速上手:《讓繁瑣工作自動(dòng)化》;基礎(chǔ)好些的,看:《Python 從入門到實(shí)踐》,我兩本都買了。
Python 開源工具庫(kù):
輸入輸出文件處理:pands矩陣處理:numpy機(jī)器學(xué)習(xí)模型:sklearn(比如線性回歸模型,一條函數(shù)調(diào)用就完事,非常高效)可視化:matplotlib
Python 機(jī)器學(xué)習(xí)相關(guān)在線教程:
莫煩 PYTHON:
https://morvanzhou.github.io/
實(shí)踐資源
由于目前工作中沒有相關(guān)機(jī)器學(xué)習(xí)的業(yè)務(wù),這里去 kaggle :
https://www.kaggle.com/
上刷比賽是很好的方式,因?yàn)樯厦嬗写罅康慕咏鼘?shí)際的項(xiàng)目。
心得體會(huì)
不要被高大上的符號(hào)或者專業(yè)術(shù)語(yǔ)嚇倒,比如:張量,梯度下降,貝葉斯公式,機(jī)器學(xué)習(xí),人工智能,神經(jīng)網(wǎng)絡(luò)...
不僅是機(jī)器學(xué)習(xí),其實(shí)很多方向都是,當(dāng)聽到專業(yè)術(shù)語(yǔ)時(shí),不要慌張和盲目的跟風(fēng),一點(diǎn)一點(diǎn)看,一點(diǎn)點(diǎn)去學(xué)習(xí)了解。
踏實(shí)下來(lái),抽絲剝繭,如果你真的想知道這些名詞是什么意思,拿入門機(jī)器學(xué)習(xí)舉例,全身心投入一個(gè)月就差不多了。
小吐槽:大學(xué)教育時(shí),很多算法,模型,都沒有學(xué)習(xí)英文的表達(dá)方式以及認(rèn)真梳理,造成別人說(shuō)一些專業(yè)英文術(shù)語(yǔ)的時(shí)候,自己不能理解。
其實(shí)是自己沒意識(shí)到要進(jìn)行知識(shí)梳理。造成很多知識(shí)學(xué)完了,在腦海里,跟一團(tuán)漿糊一樣。
是模型算法都懂,單拿出來(lái)能理解,但是看別人文章、書的時(shí)候,根本就不知道把這些零散的知識(shí)串聯(lián)在一起,其實(shí)有些知識(shí)是學(xué)過(guò)的,知識(shí)沒有自己梳理。
一定要盡早梳理,做事有條理,學(xué)習(xí)專業(yè)術(shù)語(yǔ)正確的英文表達(dá)方式,本文還會(huì)不斷修繕。
專業(yè)術(shù)語(yǔ)盡可能用英文的專業(yè)詞匯跟別人交流,能節(jié)省很多中文翻譯版本上的障礙,有很多知識(shí)yy,別人講了半天,原來(lái)是說(shuō)的其實(shí)就英語(yǔ)的xx或者中文另一個(gè)版本的zz)
李燁老師還推薦了《人工智能基礎(chǔ)(高中版)》是由陳玉琨和湯曉鷗編著,寫的非常淺顯易懂,適合我這樣的菜鳥。
里面有人工智能核心能力的說(shuō)法我覺得很好:"人工智能最核心的能力就是根據(jù)給定的輸入做出判斷或預(yù)測(cè)"。的的確確就是這么一回事。
學(xué)完對(duì)機(jī)器學(xué)習(xí)的理解,昨天碰巧在網(wǎng)上(圖片出處)遇到這張圖,就偷懶不自己畫了:
看完 Cousera 上 Ng 的課,里面如果有不清楚的,可以橫向看一下書和網(wǎng)上找文章,建議手動(dòng)推導(dǎo)一遍梯度下降算法,再用 Python 實(shí)現(xiàn)一遍梯度下降算法。
盡可能所有的公式都手動(dòng)推導(dǎo)一下,提高自己的運(yùn)算水平,補(bǔ)充之前沒有做題的缺陷。而且自己也能真正明白。
最好也能用代碼來(lái)實(shí)現(xiàn)一遍,如何用計(jì)算機(jī)求導(dǎo)。
學(xué)習(xí)路線
先分享一下我個(gè)人的學(xué)習(xí)步驟:
1. 先看微積分,知道連續(xù),求導(dǎo)的幾何意義,然后了解一點(diǎn)矩陣知識(shí);
2. 開始看 Ng 的視頻,然后看李燁老師對(duì)應(yīng)章節(jié)的課,看西瓜書,然后看網(wǎng)上的教程實(shí)例,手推公式,手寫代碼實(shí)現(xiàn)求導(dǎo)
3. goto 2
4. kaggle 入門級(jí)比賽(這部分我剛開始...)
看完一節(jié) Ng 的視頻,就去看李燁老師的課程;看不懂的,繼續(xù)看視頻,網(wǎng)上找資料。
或者去課程群里提問,肯定有人知道,大家都不知道就可以問老師,老師都會(huì)耐心給與解答。多種學(xué)習(xí)途徑相結(jié)合。
由于個(gè)人性格比較愚鈍,很多事情喜歡刨根問底,沒有數(shù)學(xué)公式上的推導(dǎo),就覺得心里沒底。
抽象出模型的思維較弱,執(zhí)著于細(xì)枝末節(jié),所以喜歡有詳細(xì)推導(dǎo)過(guò)程的教程,但也因?yàn)楸浚械寐€有畏難與拖延的壞毛病。
-
互聯(lián)網(wǎng)
+關(guān)注
關(guān)注
54文章
11163瀏覽量
103425 -
人工智能
+關(guān)注
關(guān)注
1792文章
47373瀏覽量
238865 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8423瀏覽量
132746
原文標(biāo)題:我就是這樣入門「機(jī)器學(xué)習(xí)」的
文章出處:【微信號(hào):AI_Thinker,微信公眾號(hào):人工智能頭條】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論