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