學習機器學習過程中都走過哪些彎路,怎樣避免走彎路?
謝邀:) 機器學習中有很多彎路,從宏觀角度分享一些我的觀察。回答分為三個部分:a) 職業規劃。 b) 學習方法。c) 實際應用。
職業規劃篇
1. 一個好的老闆/老師遠勝於自學。機器學習還沒有達到批量化流水生產的階段,因此一個好的「老師傅」比自學效果好很多。不僅如此,老師傅們一般都有自己多年經驗總結出來的經驗,往往可以避免很多不必要彎路。但選擇老師傅應該注意是不是「掛羊頭賣狗肉」,尤其要提防跨專業但號稱多年的經驗的人,有很高的概率是在蹭熱點。這在選擇導師以及選擇工作分組時要尤其注意,畢竟已經是全民ML,all in AI的時代了...
2. 如果是轉行來機器學習,不要和科班的人比拼編程能力和數學,要取巧利用自己已經了解的領域知識做結合。換句話說,轉行做機器學習的最大的優勢是你曾經所熟悉的領域,如果能與機器學習有所結合,你比科班出身的機器學習工程師更有市場。參看:未來 3~5 年內,哪個方向的機器學習人才最緊缺? 和 阿薩姆:轉行人士如何在人工智慧領域保持一定的競爭力?
3. 如果有機會讀一個相關學位(統計、計算機、應用數學等),去讀。現階段的就業市場還面臨有價無市的局面,一方面企業開出高薪吸引機器學習人才,一方面符合條件的人太少。一般來說,名校相關學位碩士以上學歷是大企業的基本要求,更高端的崗位還需要頂會和PhD。磨刀不誤砍柴工,如果有可能,讀一個碩士項目能很大程度的掃清路障,防止簡歷卡在人事手裡。阿薩姆:外行應屆畢業生找數據分析工作多難?
4. 調整心理預期,放寬搜索域。國內的機器學習領域除了BAT這種大公司,厲害的中小型(創業)公司比如商湯科技以外,還有很多其他不錯的公司。很多同學都抱著非牛逼公司不去,但沒有考慮到僧多肉少的問題,這不成熟。計算機科學作為常年霸佔畢業生人數排行榜的專業,有再多科技公司都很難容納所有人,更何況現在是人人都想機器學習的時代。人生不是線性的,不是高考高分-&>名校-&>好工作-&>升職加薪-&>走上人生巔峰一定會發生。所以,你即使沒有進入谷歌實習也不代表你這輩子就完蛋了。想開一些,眼界再放的遠一些,人生沒那麼急。
5. 機器學習面試是有規律的,摸清楚面試內容有助於盲目準備。機器學習的面試和傳統的軟體工程師不同,不僅有基本的編程能力考查,還有對數學、模型、以及業務理解的考查。更多機器學習面試經驗分享可以參考:面試官如何判斷面試者的機器學習水平?
更多的討論可以參考:現在的大數據、AI 這麼火,會不會像曾經的 Android 和 iOS 一樣,五年後也回歸平淡?和 阿薩姆:工科生一年時間轉行 cs 是否有可能?和 阿薩姆:機器學習門下,有哪些在工業界應用較多,前景較好的小方向?
學習篇
1. 不要把深度學習作為入門第一課,建議從經典機器學習開始入手。雖然很多人都是沖著深度學習來的,但把深度學習作為機器學習第一課不是個好主意。原因如下:
- 深度學習的黑箱性更加明顯,很容易學得囫圇吞棗
- 深度學習的理論/模型架構/技巧還在一直變化當中,並未塵埃落定
- 深度學習實驗對硬體要求高,不太適合自學或者使用個人電腦進行學習
2. 不要過度收集材料,機器學習的資料有很大的時效性。機器學習的資料很多,動輒就有幾個G的材料可以下載或者觀看。而很多朋友都有「收集癖」,一下子購買十幾本書的人我也常常能夠看到。而機器學習的發展和變化速度很快。在入門期間,建議「小而精」的選擇資料,選擇近期出版的且口碑良好的書籍。這不僅可以節約重複學習的時間,也可以讀有品位的材料。
3. 選擇符合自己風格的材料,進行T字形閱讀。舉個簡單的例子,很多人認為PRML比ESL好讀,但如果個人對貝葉斯的理解有限,ESL更符合你的認知,翻閱起來也更得心應手。至於閱讀方式,建議以一本書為主深入理解,同時備著多本參考書,遇到問題時橫向搜索閱讀。
4. 如果在讀,優先進實驗室,再去找實習,最後一條路是好好刷GPA。一般來說,大三的時候你應該已經有了基本的機器學習知識,儘管還比較淺。這個時候可以向老師/學長/學姐毛遂自薦進實驗室,即使是無償勞動和做基本的苦力活。進實驗室有兩個明顯的好處:a. 對某個小方向會有比較深入的了解。一般實驗室做純理論的不大需要本科生,做機器視覺或者自然語言處理(NLP)等小方向的比較需要本科生,所以這是很好的深入了解一個方向的機會。 b. 補充了研究經歷也可以明白自己是否適合這個領域。如果運氣好的話,你也有可能成為論文的作者之一,甚至可以去開會(公款旅遊順道見一下業內大佬)。這對於繼續深造和去國外繼續學習都很有幫助,有科研經歷和論文是很大的籌碼,對於找工作來說也絕對有利無害。
5. 學好英語,至少打下閱讀和聽力的基礎。雖然人工智慧領域中國現在已經做得很不錯,但主流的書籍、期刊和會議,資料都是英文的。我們可以接受翻譯版,但最好的方法還是自己有能力直接閱讀。即使你將來不做機器學習,英文閱讀能力還是會有很大的幫助。
6. 不要試圖掌握所有的相關數學知識再開始學習一般人如果想要把這些知識都補全再開始機器學習往往需要很長時間,容易半途而廢。而且這些知識是工具不是目的,我們的目標又不是成為運籌學大師。建議在機器學習的過程中哪裡不會補哪裡,這樣更有目的性且耗時更低。阿薩姆:如何看待「機器學習不需要數學,很多演算法封裝好了,調個包就行」這種說法?
. 網路或者線下培訓班是否值得上?我覺得需要一分為二的看待。機器學習培訓班有一定的幫助,但最大的幫助應該是看是否有可能推薦靠譜的工作。一個尷尬的局面是,大師級的從業者有更好的選項,一般不會做那種三個月包分配的商業培訓班。因此大量的機器學習講師資質往往良莠不齊,而且存在經歷造假的情況。如果選擇上培訓班,要有心理預期而且避免昂貴的天價培訓班。當然,培訓班有一定的價值,往往比自學的效果還是要好,但千萬不要孤注一擲傾其所有的押寶,往往會輸。
更多的討論可以參考:如何用3個月零基礎入門機器學習 和 阿薩姆:深度學習的教學和課程,與傳統 CS 的教學和課程有什麼區別
應用篇
1. 即使選擇做學術,也試著去工業界了解一下。在其他很多答案中我都提到過,其實工業界用的大部分技術並不酷炫,廣義線性模型(generalized linear models)如邏輯回歸還是佔據了大壁江山。做一些實習和工業界活動有助於:a). 打破幻想,了解工業界的主流模型。工業界用的大部分技術並不酷炫,你很少能看到深度強化學習那種AlphaGo一樣酷炫的模型。b). 補上學術界忽視的內容,比如可視化和數據清洗。工業界的最終目的是輸出商業價值,而獲得商業洞見的過程其實是非常痛苦的,比如第一步就是令人深惡痛絕的數據清洗。c). 了解技術商業化中的取捨,培養大局觀。做技術的人往往一頭扎進技術裡面,而忽視了從全局思考。更多的討論可以參考:阿薩姆:現在機器學習工業界和學術界的差別越來越大了嗎?儘早實習和踏實科研各有什麼利弊?
2. 機器學習雖然是一門技術,但良好的大局觀可以幫助你走的更遠。很多人以為機器學習是一門專精崗位,但在中小型企業,公司希望機器學習工程師可以獨挑大樑,完成從數據收集、清理、建模、調整、到部署上線,甚至維護和更新的一系列工作。因此在大部分中小型公司的機器學習工程師也做了全棧的工作,捎帶著把網站做了的也不是沒有...因此,不要抓著機器學習不放,適當了解不同的知識有時候也很有用。可參考:阿薩姆:怎樣才算是一個合格的機器學習工程師 和 阿薩姆:機器學習與移動端會碰出怎樣的火花?
3. 在實際應用機器學習時,總結論文中或者書本裡面不會提到的技巧,比如:a) 數據質量不高,數據質量不連續時,可以選擇拋棄一部分數據。 b) 如果有必要,需要把回歸問題轉化為分類問題。 c. 特徵工程不是每個模型都必須的,表示學習的方法一般要避免過度的特徵工程等。d. 選擇交叉驗證的k值不是越大越好(「交叉驗證」到底如何選擇K值?)。更多實用小技巧可以參考我前一陣子的免費分享課。
4. 在機器學習的實際應用中,有很多「玄學」或者難以解釋的部分,對機器學習理念的抽象理解有助於避免困惑。可參考:帶你了解機器學習(一): 機器學習中的「哲學」 和 帶你了解機器學習(二): 機器學習中的amp;amp;amp;amp;amp;amp;amp;quot;穩定性amp;amp;amp;amp;amp;amp;amp;quot;
5. 調參不是最終目的,而是迫不得已的手段。避免過度調參主要還是依賴經驗選對方向,在小的區間正確的模型上調。如果選錯了模型方向,那是無論如何都調不出好效果的。可以參考:阿薩姆:機器學習如何才能避免「只是調參數」?
寫在最後
機器學習的路不好走,而且往往都有鮮明的個人主義色彩,正是條條大路通羅馬。人大的周孝正教授說過:「一個問題不能證實,也不能證偽,那就要存疑。」 而機器學習就是這樣一門學科,我們必須抱著「批判」和「懷疑」的精神來學習,不管是看書、讀論文、還是聽老師傅的教誨都要有這樣的精神。
機器學習的路上沒有捷徑,想要避免走彎路就要摒棄急於求成的想法,因為捷徑往往才是最長的彎路。
最大的彎路: 迷信論文,不去實驗。
DLML其實是一門實踐性的學科,只有通過實驗才能把握到其中的細節與真諦。雖說也是在寫程序,但是DL的程序基本上無法直觀地debug,所以非得自己去復現一下,實踐一下,用performance來說話,才知道有沒有出錯。
尤其是DL,研究發展到現在,論文和實際做的東西脫節已經是心照不宣的事了。正因為NN+GD的魯棒性,你xjb搞好像也能搞上去,所以寫論文很多純粹在編故事(好論文除外)
所以,我們最好不要一味相信論文所說,尤其是各種解釋(經典演算法,優秀論文除外)。NN就是個黑盒,誰也別說誰。而我們能做的,更重要的是,去實踐去復現,去去偽存真,去發現其中真正的本質所在。
民科說說民科的彎路歷程。最大的彎路就是自己xjb學xjb試,和加入一個真正能做出東西的團隊或跟隨真正的牛人一起學習相比,速度要慢十倍都不止。學是要學,但不要以為自己xjb學就夠了,差得遠呢。第二大的彎路就是成天xjb看論文,以為這樣就能打通任督二脈,從來不復現論文或者嘗試自己做出一些東西,這都是〇。第三大彎路淺嘗輒止,有些東西不往死里懟屁都做不出來。第四大彎路迷信複雜的東西和新技術,以為新東西懟上去肯定就效果爆棚。其實都是不存在的。
以下彎路僅適用於科班,非科班出身:學好數學。
1. 看論文喜歡看最新的,忽視比較老比較基礎的論文,嫌棄以前的方法performance不好——這樣很多情況下對一個領域的理解會只停留在表面。
2. 永遠不要迷信某個特定的模型,不要因為random forest在某個任務上效果好,就以後遇到什麼任務都上random forest;也不要覺得深度學習就是萬能的,什麼都可以套神經網路解決;不要看到比賽裡面大家整天用xgboost就整人云亦云地複製。學各種演算法的時候,書上一般會告訴你這個演算法有balabala優點一堆,而實際上這個演算法可能應用到實際問題上會出現balabala一大堆缺點。最好的解決方案就是動手寫代碼。
3. 不要迷信一些理論性很強的論文,我一開始的時候,經常看到一大堆公式就下意識會覺得這個模型可能效果不錯。事實上很多論文的理論推導和它的代碼毫無關聯,還有很多論文的推導需要很強的assumption支持,等等。1.為了擺脫xjb學的狀態,只有去github偷工程代碼讀,復現。
2.數學基礎不好,用個一年多入門都正常,計算機系學的數學根本不夠用。3.不動手做,等於沒學。4.不僅要會基礎機器學習演算法原理,能閉眼手推公式,還要懂各個演算法的優缺點應用場景變形,還要懂如何處理數據進行特徵工程,還要懂常用演算法包的源碼實現,還要會演算法的分散式並行實現,最好還能懂在線學習的實現,還要能熟練用spark/mapreduce處理數據,storm處理實時數據,懂數據挖掘落地應用,深度學習/增強學習/nlp/cv/推薦演算法和搜索應用也要會,tf/caffe/pytorch/mxnet都要會用,至少能寫最簡單的應用,還要必須熟練會c++進行模型生產化部署,因為不能指望普通後台開發幫你寫工程,他們根本不懂演算法,最後還要時刻跟上最新的業界學術界發展。
簡直日了狗。這一套下來怎麼也得兩三年,至少幾十個演算法,三四門語言,五六門數學,無數個開源包吧。
5.廣度有了,最忌諱淺嘗輒止,幾個項目一定要夠深入先進,不上深度學習模型組合一般壓不住人,用的演算法源碼要透徹理解看懂,不然扛不住別人問。多在開放數據集上實現模型,才能知道自己模型的水平。
6.既然選了這條競爭最激烈的路,就做好最壞的打算,進不了牛逼團隊,也沒人帶,自己就是大腿,ai代表了先進生產力,絕大多數人跟上ai的路都不會平坦,不過歷史告訴我們,落後就要挨打。
7.無論如何,只進不退。
好處:回頭再看前後端,覺得真jb簡單。
作為一個轉行寫後台的碼農,又做了兩三年數據挖掘,最近一年多在學習 深度學習、強化學習的人來說,要強答一下。
首先,這個圈子裡有價值的工作無非就三塊
1. 發明牛逼的模型、演算法、理論
2. 底層系統搭建,如各種框架
3. 學懂1中大神的部分發明,再會使用2中大神搭建的框架,來解決實際業務中的問題,產生商業價值。大部分人屬於這裡吧!!!
對於1與2,我讀過理論物理博士,雖由於某種原因中途退學,也還是能說兩句。那就是走正統的教育路線,能出國的出國,畢業後能去好公司的去好公司。但這裡只強調一點:你跟的人是真正做事情的人,做的業務是真正有價值的業務,否則也是浪費青春。
我想大部分都是轉行過來的吧,你看機器學習/深度學習的關注人數快100萬了,科班出身能佔10%,我覺得都高估了。下面只針對這群人來簡單說下,莫怕,你們才是主流人群,就像三四線的用戶是快手/頭條的主流用戶一樣。
1. 不要求快,沒有捷徑。自己首先有個心理預期,數學好的入門也得一年半載的,數學需要補基礎的估計要1-2年。可以去上培訓班,交點錢,但也就跟機器學習混個臉熟。想入門還得花時間慢慢磨,真的沒捷徑,真的沒捷徑,真的沒捷徑!
2. 模型不求多,精通幾個常見的,把機器學習的套路摸透就可以了。比如LR,樸素貝葉斯,決策樹,基於SVD相關的簡單模型,如推薦系統等。
把機器學習的套路摸透什麼意思呢?比如LR為什麼用logloss,而不是平方損失?為什麼logloss 是凸函數,而平方的不是?優化演算法啥時候用一階mini-batch sgd,啥時候用二階方法,為什麼?這還只是說了損失函數與優化演算法,還有模型結構,模型的效果評估指標,如何利用欠擬合/過擬合來分析指導優化模型等等。
因為簡單的模型容易理解,有時數學上的證明也是可行的。這樣,以它們為例子更容易理解機器學習這套東西,建立自己的直覺,自己的直覺,自己的直覺,幾何的或物理的。
3. 選擇規模中等的公開數據集,實戰。一般有兩個目的,首先是驗證或糾正你前面學習的理解,其次是嘗試解決實際問題。實際應用中的流程大概是:
a) 根據業務選擇合適的線下與線上評估指標。線下的指標可以輔助快速迭代,因為線上測試流程較長。線下指標缺點是過於片面。所以,一般利用線下指標來迭代,找到覺得不錯的特徵與模型,再搬到線上去測。
b) 快速構建基線模型與線上測試系統。c) 調試系統,迭代想法對工程師來講,理解業務與線上系統真的很重要!因為你既沒能力發明牛逼的演算法模型,也沒本事寫框架,你若只會亂調包,那你的價值在哪裡呢?所以,不深刻理解業務而是去瞎換模型演算法,真得不合適,效果分分鐘打臉。
4. 結伴而行,盡量不要放棄。
只是覺得沒有個討論具體技術問題的社區,知乎說的東西太泛了,不系統。大家也不愛答具體的技術問題。5. 這條專門送給碼農轉行過來的。機器學習這套系統與傳統技術系統有個非常大的差別。搭建個web/app系統難度不大,且做的好與壞,短期內不好區分與評價。垃圾系統在用戶量不大的時候也能表現得不錯。只有在用戶量變得較大時,才會掉鏈子而遭打臉。 機器學習的系統不是這樣,它是分分鐘打臉。也就是我們常說的,這個系統不確定性較大,駕馭它的門檻略高。
感謝題主邀請:
要說彎路,其實自己遇到了不少:1:不要迷信最新的演算法和論文:一定要從最基礎的知識學起(當時去聽馬毅的報告,馬老師說如果你沒讀過前幾十年的論文和演算法,你是做不出來成果的,當時觸動很大)
2:演算法一定要親自動手推導:
之前在討論的過程中發現很多人都說現在的框架這麼方便,演算法的推導已經不重要了,自己只需要學會調包會用就行,這樣的人我不能說他錯,但是也絕對不是覺得對,但是我覺得如果你想做一點成就,就把經典演算法都過一遍,會有很大收穫.3:自學的效率往往很低:
這個是我自己走過最大的彎路,當時以為自己很努力,每天花很多時間在裡邊,結果方法不對,導致現在還是機器學習學不會,自然語言處理不及格,深度學習搞不懂。17年上半年遇到了幾位很不錯的老師和師兄師姐,他們給我很多的指導,讓我意識到我的方法是有問題的,並且跟人討論同樣的一個問題,和自己理解的問題差很多,這是真的!
4:多動手實驗
經常實驗。這個是必須的,儘管可能很失敗,別愁寫代碼,別愁讀代碼,不讀不寫,怎麼都不會,結果做的跟理論差很多,也別沮喪,一遍不成兩遍,兩遍不成再試一遍,再試一遍還不成那就換換思路試試看!
5:清楚人與人之間的差距
這個最重要了。。。。智力差距是影響心情的重要因素。。。
祝題主學習之路一帆風順!
在朝鮮做機器學習,走彎路的成本太大了,一個不小心就去煤窯學習機器了。因此對於這個問題,我還是闊以回答一下的,因為我看到過太多身邊的人被拉去挖煤了。
看網課的彎路(非科班的人基本都是看網課來入門的)
- 80% 的人都不做筆記,刷著手機播放個視頻就覺得「學了「。
- 10%的人簡單做了個筆記嘩啦兩下就覺得OK了
- 5%的人做了筆記,做的很認真,但是沒有把自己不會的點搞會
- 3%的人做了筆記搞會了很多之前不會的東西,但是忘記了複習和實踐
- 因此只有2%的人順利找到了工作並且成了未來的大牛
讀書的彎路(除了網課,就是讀書了)
- 讀書這個,千萬別嘩啦買一堆沒卵用的
- 什麼概率、什麼微積分、什麼商務統計,統統別買……
- 第一本,李航」統計學習方法「,你多看幾遍,基本每一句話都是重點,看會了會做題了,真正懂了你去面試找工作,如果是演算法層面的原因不要你,你來我公司,我養你……
- 第二本,」深度學習「,這個是現在的趨勢了,不學不可能的……
- 就這兩本,你搞明白就行了,最大的彎路就是買了超多書,翻來翻去毛都沒看……
工具的彎路
- 別糾結Python還是Scala還是Java還是R這種無聊的問題了,前期就Python,後期入行需要什麼你就學什麼,前期時間為重,別糾結,別糾結……
- sklearn一定要會,這個東西不是簡單的調包哈!有太多細節和特徵工程相關的東西了……常規機器學習這個一定要會,別糾結其他了……
- TensorFlow就行了,也別糾結PYTorch,keras了,尼瑪,你會一個慢慢都會了,喜歡那個用哪個唄……哪個能理解用哪個唄……
論文的彎路
- 論文個毛啊……新手看毛的論文,你看的懂不?浪費這時間幹嘛啊?學習過程是0到1的過程,論文都啥階段了就論文……等以後是做這工作了在論文吧。
入門階段就這些東西了。實話,這個東西和以前程序員不一樣,不能一兩個月入門到精通,別聽那些賣課的瞎比吹……
等你掌握了這些東西,自己就知道怎麼學了,到時候找幾個案例,kaggle,天池什麼的,跑一跑,把你打擊打擊,踏實下來好好學學,穩固穩固就去找個工作吧。
到時候你在說什麼找牛人,團隊交流共同進步的事兒。
加油,千萬別想著速成,不存在的……
別人有回答的很多的,我補充兩個。1. 在線課程如coursera什麼的一定要看討論區,有時候TA會察覺到更接近凡人的問題(捂臉),而講課的大牛們往往不關心。另外TA很多對應用比較熟悉,能舉出一些應用上的例子和工作中遇到的經驗教訓。最好能參與討論。不然很多東西可能就囫圇吞棗的過去了,甚至自以為知道了很多,其實是不知己不知。2. 永遠記住,No free lunch theorem. 不要嫌棄任何一個演算法。
多做實驗!
多寫代碼!被打臉打得多了就會躲了!接觸了快一個學期,覺得最大的坑就是有些東西如果不手動實現一遍,跑一些實際的數據,只是看看西瓜書的話,吹比也能吹得飛起。
但是
你可能不會感受到LR加個regularization有多強。你可能不會感受到DT的過擬合問題真的可以非常嚴重。你可能不相信在某些數據集中訓練網路,你加了dropout加了convolution甚至可能沒有簡簡單單的regularization好用。最後強調一下其他答案都有提到的不要迷信最新的模型或者高大上的模型。
永遠記住『天下沒有免費的午餐』!!也就是說你的模型應該始終以數據為核心,有些時候你試了各種高大上各種複雜的模型,到頭來還沒有KNN、樸素貝葉斯什麼的效果好。這大概就是所謂的玄學吧 : )ps: 小透明強答……找一個靠譜的導師。
嗯,很多人先補數學&>編程&>演算法,
我負責任的說,這特么都是彎路。機器學習正道:
了解基本演算法(公開課),調包解決場景問題(Sklearn),調參查看文檔,補充理論,總結不同演算法優缺!進而擴展解決實際問題或競賽。你要說深度學習?
不好意思,先學傳統的演算法吧。學習路徑參考:
Python數據分析及可視化實例目錄https://zhuanlan.zhihu.com/p/29576732?utm_source=com.android.mmsutm_medium=social
根據個人的經驗,我覺得有一句話很正確——勤奮是最笨的方法,也是最聰明的辦法。當初入坑的時候,想怎麼少走彎路,後來才發現,走彎路是通向成功的必經之路!什麼事情不自己實踐,不自己深入思考,只靠學習別人的經驗,根本無法觸及底層和本質的知識,水平也很難提高。好了,瞎扯了這麼多,我相信大家都會說道理都懂,放到實際中都是扯淡,那麼我覺得下面幾條tips可能有幫助:
1.要有課題或實際的項目,要有課題或項目,要有課題或項目。重要的事情說三遍!當真正去解決一個實際問題和學學代碼,跑跑別人的程序,根本就是兩個概念。如果沒有項目,只是自己學習,效率怎麼都不會很高的。在解決問題中學習也會很有針對性,跟完一個項目,剩下的無非就是經驗的積累了。
2.要有一個水平比自己高的人請教。不一定非得是大牛或教授,只要是水平比自己高即可,等你水平高了可以再換個水平更高的人嘛,哈哈。總之,有問題可以快速解決。
3.理論學習和實踐相結合。一邊實踐,閑的時候看看paper,先從最經典的看起,慢慢理解其精髓,有一天突然會發現,哎,怎麼回事,我好像快練出來丹了。
4.不斷思考自己當前最迫切要解決的問題是什麼。是換模型還是調參數,需要看paper還是問問導師。將自己的注意力一直放在最緊要的問題上,效率自然就高了。
2015年有個機器學習專題的書系
國內你們最愛的周志華也在裡面挑一本書學學如果這本書的引用文獻是第一手資料,比如我看的那本那就好好看看,哪裡不懂點哪裡做到這步後面就不用教了
這裡面的知識跟計算機本科學的一點關係也沒有,你考慮清楚啊。這可能是你最大的彎路走過的彎路,額(°_°)…就是上來就一口氣看ng的視頻,我有個毛病,就是哪個字沒聽清,或者哪個公式沒看懂就反覆倒退看(●?●)?由於剛接觸機器學習,一堂課都要一兩周才能搞定,這還是不敲代碼實現的情況下!後來反正沒看完,因為我的研究方向是cg而不是cv,所以後來索性去找文獻看自己方向所用的機器學習知識,有針對性學習,而且必須代碼實現,還記得當時推玻爾茲曼機的時候,為了理論和實現,差不多學了一堆東西,比如馬爾科夫鏈,吉布斯採樣,無向概率圖,交叉熵,相對熵,然後從交叉熵損失推了softmax,又知道softmax經常是神經網路的最後一層,然後又推了均方差的損失梯度,對比了一下為什麼後者比前者梯度彌散嚴重,然後又發現求梯度的各種花樣,坐標下降啥的,然後發現學遠了(本來想證明rbm的),然後又回來推rbm,知道了配分函數的劣勢,然後在找解決方法的時候又看了em,又因為em去推了馬爾科夫鏈的三大問題,又因為馬爾科夫鏈,知道了幾個進化版本:梅特羅博力絲哈斯廷絲,馬爾科夫鏈蒙特卡洛方法,吉布斯採樣,對比散度。額,說了好多,其實就是剛學的時候不要太摳細節,要結合自己的研究方向死摳細節,這樣會學到很多
論文只用眼睛看而不動手復現復現的時候才能發現哪個公式沒理解透而且還能練一練調參(煉丹)的能力
初學者別把大部分精力放在數學上,要把精力放在直觀的理解上和代碼上。花一兩年去啃PRML,Deep Learning 甚至微積分,線性代數,結果代碼還沒怎麼練,這就呵呵了。不如先一年時間把代碼搞熟,指什麼可以碼什麼,對各種模型在第一年就懂個大概意思就行,然後再去補數學。
補充,真心不需要花太多精力去補數學,你若是PhD當我沒說,一般master能把代碼都跑熟了,對各個模型的有直觀感受和理解即可。更別說很多人不是計算機專業。你都去搞數學了,還想找工作和面試嗎?中國人學習通病就是一定什麼都要理論很深論動手實踐呵呵噠。
基本的理論是要會,但不是每個人都要去啃ESL(這本書對PhD都有深度),對你一般人要去找個機器學習應用崗位沒有絲毫意義。就算你把ESL啃下,你能發出來Paper嗎?沒Paper你無法找Research崗位,此時你去找應用崗位,編程也能分分秒秒把你滅了。
對一般人或大多數人,學機器學習只是為了找更好的工作,滿足基本機器學習面試的要求即可,其實這個要求就已經不低了。你光碼代碼不訓練個至少半年你說你能碼好?再理論達到面試的水準又得花去幾個月。
我不認為ESL適合找工作去學,一本好的教材應該是Hands-on Machine Learning with Scikit-Learn and Tensorflow,它上面的課後題都是面試題好嗎?
但吳恩達MOOC課程深度的理論還是要掌握的,這是基本。
靠譜的老師?靠譜的實習?其實主要還是靠自己吧。
華山派中
劍宗,強化招式,弱化內功。如風清揚
氣宗,強化內功,弱化招式。如岳不群最終殊途同歸,內功加招式。
結論: 實踐(招式)加理論(內功)。最初期理論和實踐的基本底子都要搭起來。之後,看你入哪門哪派了。推薦閱讀:
※有沒有可能做出在歐陸風雲里和頂尖人類玩家同等水準的AI?
※做出「狼人殺」的 AI 有哪些難點?
※b大的深度學習框架有什麼獨到之處?
※能否使用區塊鏈的算力來解決深度學習訓練?
TAG:人工智慧 | 數據挖掘 | 統計學 | 機器學習 | 深度學習DeepLearning |