工作後想換機器學習方向,需要學到什麼程度去找工作?
更新一下,這個問題是一年多前提的,我記得是我看了各位巨巨們給的建議後正要照著操作,就接到了微軟HR的電話,問我要不要去面試一下。我猜是我校招時投的簡歷被翻出來了(可是都過了兩年了呀)。
也是運氣好,我不是刷了100多道LeetCode嘛,微軟的面試其實主要考察的是分析問題的能力和編碼的能力,我正好這兩方面還不錯,就很幸運地拿到了Offer(微軟互聯網工程院,bing下面的一個組,不是MSRA)。(說實話,我現在也不敢去面BAT,因為我感覺這些公司面試會問很多項目的問題,或者計算機基礎概念等的一些東西,我特別不會總結這些東西,而且我感覺每天都在做一些很平常的東西。)所以我最後也沒有開始學機器學習,而是開始了天天加班的生活……
謝謝各位巨巨給我的回答,確實都說得很好,希望能幫到別的人吧。以下是原問題:=========================================================================背景介紹:軟體工程專業碩士畢業一年半,現在在公司做著MFC的工作,維護一個老系統。說實話,公司沒有牛人,沒有創新,完全學不到東西。其實我一直想進BAT這樣的大型互聯網公司,但是由於上學的時候太貪玩,基礎不好,實習面試被打擊,就只能把它們作為夢想。沒有進過那樣的公司,完全不知道人家用的是什麼高新技術,自己去了能幹嘛?需要什麼技術?而且感覺社招比校招要求更高,不知道怎麼接近夢想。現在每天下班都學習。去年開始自學iOS,學到現在感覺iOS太流於表面,學到一堆不通用的東西,想放棄,然後開始刷LeetCode。刷了一百多道題了,然後又迷茫,感覺光會做這些題也沒什麼用啊,面試也不光是這些東西,而且人家工作到底是什麼樣的,需要什麼工具知識,還是完全不知道。看到機器學習挺熱的,對工作經驗要求也不是特別高,然後又想學機器學習。感覺自己就是東一榔頭西一棒槌的學習,時間花了,真正學到了什麼呢?我知道欲速則不達,也知道不能太浮躁。但是就是感覺自己現在特別浮躁,總想著快點跳到心儀的單位,不要在這裡浪費時間了。
那麼如果我現在開始學機器學習,需要學習到什麼程度就可以去換工作了呢?需要花多長時間?我好定一個目標!我其實一直以來就渴望成為一個編程高手。但總感覺自己是太笨了還是什麼原因,找不到方向,總是一個人瞎折騰也沒什麼結果。我想大家會噴我上學的時候都幹嘛了?都研究生連這些問題都搞不明白?沒關係,大家噴得對,但我真的不明白,我也希望大家噴完也幫我解一下惑,謝謝了!
不需要學得太深 多學一些工程常用的模型,按下面的順序
- NN 神經網路 掌握梯度下降優化方法,掌握BP(利用動態規劃來優化求導的計算量)
- crf 序列模型 知道還有其他的優化演算法(牛頓法和擬牛頓法),不過不必深究LBFGS,掌握前向後向演算法(一種針對線性鏈模型的概率推斷演算法,同樣是利用動態規劃來減少計算量)
- lda 掌握多項分布(一種最常用的分布),了解貝葉斯,了解生成模型的建模方法和常用的估計推斷演算法(變分推斷和採樣),趁機搞懂gibbs 採樣。理解EM演算法(又是一種優化演算法)。對於推斷演算法,可主要專註於gibbs採樣的實現。
把這三個的推導搞懂 關注原始的模型 不需花太多時間研究什麼變種 做做筆記 然後實現一遍 把你的代碼放在github上 進行一定的消化理解。
機器學習的代碼都很短,尤其是核心代碼,這三個模型的核心演算法,根據你用的語言和庫的不同,實現大概在50-1000行。當然,如果要考慮復用性和性能,代碼要稍微長點。根據你的毅力,大概需要3個月到...
你能在leetcode上刷100題,說明毅力還是很不錯的。我覺得一年的努力足矣。然後就可以找到不錯的了 基本BAT是沒問題的
不得不承認,若不是機器學習科班出身,確實更容易被面試官輕視。不過只要你把東西學紮實,我相信,在現在普遍門檻很低瘋狂招人的環境下,脫穎而出是相對容易的。另外 awk sed bash深入學學 ,在工作中更為有用,你可以在這學。
Welcome to The UNIX Grymoire!注意我說的」了解「 「掌握」 「深入」這些詞, 如 @趙程亮同學說的,變分和採樣是很大的一塊,而且對入門者很不容易,工作中毫無用處,不必過多的深入。先說說我的經歷吧,我就算是轉型過來的。之前在百度工作,做的主要是搜索方面的工作,但是對機器學習還是挺感興趣的。後來跳到了豌豆莢,開始是做些個性化推薦的工作,做的效果不錯,因為對這方面感興趣,所以在後面的一個項目裡面就用了一些機器學習的方法去做個性化推薦,正好廣告部門需要做相關的業務,又沒有相關的人會做,就調我過來了。現在在廣告部這邊的CTR預估系統就是我做的,目前還在升級模型,提升效果中。再說說學到什麼程度,都是業餘時間學習相關的演算法,相關的書籍,各種模型和最優化演算法肯定要熟悉,我自己之前沒有實現過,但是看過一些實現的代碼,各種方法基本的思想(注意是思想不是原理)要領悟,這樣就很容易跟業務結合,做出一些創新的東西來,而不是拘泥於演算法本身。再說說具體如何轉到相關崗位,如果跳槽找相關工作,這條路不好走,原因你自己應該也已經發現了,jd都要求有相關工作經驗。那麼既然走不通,就從身邊干起,身邊的工作有能應用這些方法的地方,就盡量把這些方法用上去看看,有了相關經驗和技能的提升,看看公司內部有沒有適合的機會轉崗。
所謂有條件要上,沒有條件創造條件也要上。人嘛,要發揮主觀能動性,沒有機會就創造機會,祝樓主轉型成功,一帆風順。
————————————————2017.5.25日更新—————————————————
5月24日正式確定offer了,嗯,經過將近一年的時間的自學,算是對自己的學習有個交代。
從4月29日回答了這個問題到5月17號期間主要做了以下幾件事情:
1.複習所有學過的機器學習演算法相關的書籍、視頻課程和各種資料,整理成cheat sheet,複習程度的話,大約達到可以無提示白紙手推LR(對比perceptron和Linear Regression)、AdaBoost、前向後向傳播演算法、SVM(Hard Margin、Hard Margin Dual、Soft Margin、Soft Margin Dual)的程度就可以算達標了,學過《機器學習基石》和《機器學習技法》課程,再複習一下的話,這些都不難。
2.刷了第二遍《劍指offer》、LeetCode刷了不到100題就找到工作了,這部分沒什麼好解釋的,逃不掉,不是說演算法工程師就不用寫代碼了。
3.學習cs231n——斯坦福CS231n-深度學習與計算機視覺 - 網易雲課堂,感覺自己在面試過程中肯定會遇到深度學習相關的知識,所以一邊複習,同時每天抽出時間開始學習cs231n課程,主要是對CNN、RNN、LSTM也很感興趣,自己本來也想從事圖像識別方面的工作,學習方法同以前一樣不再贅述。在找到工作的時候只看到循環神經網路那節,還是要抽時間把這門課程學完。
5月17號開始在拉勾上投簡歷,每天只能投10份,所以就一邊投一邊繼續複習,沒想到在5月19號收到了電話面試,電話面試了兩輪,主要問了各種基礎知識、深度學習里比較熱門的模型、Kaggle競賽和自己用Python實現的一些演算法,兩輪電話面後邀請我22號到公司進行現場面試,22號面試後當場給發了offer。
定的職位是自然語言處理方面的機器學習演算法工程師,我當時也提出自己在這方面沒有什麼經驗,面試官表示只要基礎夠好、有足夠強的興趣和自我推動意識,在工作中邊學習邊工作,即使是新的方向也可以很快入門,但是給我提出的要求是在入職之前學習一下宗成慶老師的《統計自然語言處理》這本書,打消了我的顧慮後。自己經過考慮:團隊中牛人很多,各種MIT、CMU、哥大、UCLA、國內C9的碩士,做的方向也是很熱門、自己也很感興趣的方向、開出的薪水也很有誠意。決定接受offer~
總結,一共發出不到30封簡歷,歷時5天(其中還有個周六周日),只收到這一個面試邀請,一個offer,其他的簡歷都石沉大海杳無音信了。自己本來已經做好遇到各種困難,受到各種打擊的心理準備了,沒想到找工作以出乎意料的迅速且順利的方式結束了...心裡總有種「我還沒發力,你就倒下了」的感覺,懷疑自己是不是有受虐傾向。。。
對於面試,一家之言就是機器學習、深度學習以及現在大熱的自然語言處理、圖像識別等方向興起較晚,那麼大家相對來說起步差距沒那麼大,這時候面試官更看重的就是你的自我推動意識、機器學習演算法方面的基本功和計算機科學的基本功和工程能力,那麼相對來說討厭的也就是只會表決心喊口號而沒有實際行動的人、只會跑跑模型、學學框架、胡謅幾個新名詞等浮於表面的人和「葉公好龍」等基本功不紮實的人,只要避免了這些情況,腳踏實地的堅持學習,你一定能有一個光明的未來!
好了,本回答到此終結,有什麼想問的在下面評論,我儘力解答,不多說了,還有一大摞書等著我去看呢~
———————————————————分隔線——————————————————
關注了這個問題有大半年了,那時總想著等到自己入門也來回答一下,現在給大家分享一下我的經歷,希望後來人看到這個問題時能有一個切實可行的路徑作為參考~
背景:16年夏天某二流985的碩士畢業,本科和碩士的專業都是EE,在學校校招時,因為忙於教研室老師的項目 ,沒有時間看書準備校招,最終找到一個不是很滿意的工作,工作內容負責C/C++後端,所以,這就是教訓啊,找工作可能是人生中最重大的轉折點之一,在這個時間段一定要認真全面的準備校招,等到社招時再想重新找工作,可就要多花費幾倍的力氣了。
在工作中,除了每天的工作,還每天把以前想看但是沒時間看完的書全面的重新學習一遍:
—————————————————CS相關知識學習———————————————————
- 7月中到8月中:《C和指針》、《C++ Primer (第五版)》,不論你是計算機相關專業或是其他行業的轉行人員,如果想未來在信息行業有更高的成就,一門打底的C/C++或Java是逃不開的,這些語言也能幫助你在數據結構、演算法和操作系統方面更加深入系統的學習。對於這兩本書學習方法我的建議是《C和指針》仔細全面的學習一遍,不只是看書,還要同時記筆記,對重要的代碼段要在電腦上實現;《C++ Primer (第五版)》學習方法同樣如此,個人建議第一遍學習時可以不做習題,對各個部分一定要首先混個臉熟,否則很多人都不能堅持看完。
- 8月中到9月中:《大話數據結構》、《數據結構與演算法分析——C語言描述》,通過這兩本書學習傳統的數據結構與演算法,實現了線性表、鏈表、棧、隊列、二叉樹(AVL樹)、圖(BFS,DFS,Prim,Kruskal,Dijkstra,Floyd,拓撲排序,關鍵路徑)、查找、排序(冒泡排序,選擇排序,插入排序,堆排序,歸併排序,快速排序),「紙上得來終覺淺,絕知此事要躬行」,光看是肯定學不會的,一定要把每個知識點親身編程實現,同時鍛煉自己的代碼能力、抽象問題的能力和前面學到的語言語法。
- 在以上兩部分的學習同時,通過《鳥哥的Linux私房菜》學習Linux Shell的操作指令,Vim文本編輯器,使用Ubuntu自帶的clang對源代碼進行編譯。
- 9月中到10月初:看完《深入理解計算機系統》,這部分由於看過這本書,只是沒有系統的看完,沒有做書後習題,如果是第一次看這本書可能要多花一些時間。
——————————————————分隔線——————————————————————
以上學習經歷更多的可以說是在補坑,很多東西本來是準備校招就應該去學習的,不過,亡羊補牢,猶未晚矣嘛!在學習完以上知識後在知乎發現了 @蕭井陌 的編程入門指南,開始按照蕭大的指南繼續學習:
- 麻省理工:計算機科學和 Python 編程導論,由於自己是EE出身,感覺在CS方面的眼界以及基礎不是那麼紮實,通過把這門課學下來感覺學習了不少CS方面的重要概念,同時也是對Python這門語言的做簡單了解。
- 通過對Python的了解後,開始對Python進行系統的學習,主要是通過廖雪峰廖大的網站系統學習Python3,在教程的最後按照教程的指導搭建了一個自己的博客,此時,Python的核心部分也只是學習完了60%-70%,以後還會遇到不懂的語法,我的做法是手邊一本《Python學習手冊》,遇到不懂的語法問題時,翻閱該書,將相關的部分重新學習。這種學習方法也是很實用的,也就是先學習一門知識的80%,然後在實踐中學習剩餘的20%。
- 在搭建網站的過程中學習使用git保管自己的代碼,通過《SQL必知必會》學習資料庫的一些基本操作,通過codecademy學習HTML和CSS,通過《圖解HTTP》學習HTTP。
- 看《TCP/IP詳解 卷1:協議》,但是沒有看完,轉而看《圖解TCP/IP》。通過《Linux/Unix系統編程手冊 (上、下冊)》學習網路編程,由於我是在工作中能用到一些網路編程的知識,如果是有志於從事Web後端這方面工作的最好還是要自己找一找練手的小項目,推薦翻看陳碩,陳大的回答中你一定能找到自己想做的練手項目。
這個階段大約用了兩個月,本來接下來是準備繼續學習flask,走Python Web方向,但是學著學著,發現自己只是喜歡解決一個又一個問題、學到各種新知識的感覺,雖然很喜歡CS,但並不是很喜歡Web的方向,此時的我也是有一點迷茫,不知道是否應該堅持繼續學習Web方向。
——————————————————-以下是正文————————————————————
在這時,從大知乎知道了機器學習——進可「攻」深度學習、人工智慧,退可「守」數據挖掘的一門學科,而自己在數學方面的基礎還可以,對數學、演算法方面也很感興趣,但也有很多人說機器學習的路不是那麼好走,同時那個時候大火的美劇《西部世界》對我的三觀衝擊也很大(雖然後面入門機器學習後發現並沒有什麼太大的關係,哈哈~),秉承著小馬過河的精神——只有親自試一試才知道到底合不合適自己:
- Coursera——《Machine Learning》by Andrew Ng,根據很多人的推薦開始學習這門公開課,同時希望通過這門課程的學習知道自己是否真的喜歡這門學科,在業餘時間還看了《數學之美》這本書,對機器學習在自然語言處理、網路搜索和廣告點擊等方面的應用有一個感性的認識。學習這門網路課程,同樣要認真的記筆記,還要獨立完成作業,最後我拿到了99.2%的成績,大約花費三周時間。
- 在完成吳恩達老師的這門課程後決定要朝機器學習方向發展。由於Coursera的《Machine Learning》缺少Ensemble相關的演算法,其他演算法講解的深度也淺,所以根據知友的推薦開始學習林軒田老師的《機器學習基石》和《機器學習技法》視頻課程。在這裡,我依舊推薦初學者通過這兩門視頻課程入門機器學習,視頻往往比書本更加直觀,而且林軒田老師對各種演算法的來龍去脈,演算法之間的聯繫都講解的很好,有利於初學者形成知識網,打好機器學習的基礎。這兩門課在某些地方需要高等數學、線性代數或概率論與數理統計的知識。如果數學的基礎不好,需要複習相關的數學知識點。兩個視頻32課我大約花了6-7周的樣子,學習的同時也要做筆記,而不是簡單的看視頻,32課每一課都很精彩,給大家個參考,兩門課16開30頁一本的筆記本,我一共做了四本的筆記,等到以後有哪些地方記不清了,翻看自己的筆記就能很快的回想起來。
- 在《機器學習基石》和《機器學習技法》課程學完後可以說基礎就算比較牢固了,此時需要手動的實踐才能出真知。我選擇《機器學習實戰》和《統計學習方法》兩本書相結合的看,看一章《統計學習方法》就在對應的《機器學習實戰》上找到相應的章節手動實現,手動的實現代碼可以加深對具體演算法的實現流程,而《統計學習方法》在打好基礎後可以幫助你理解標準的演算法定義和標準的演算法推導。《機器學習實戰》也包含Numpy和Matplotlib的常見使用,這在以後的比賽過程都是必不可少的。
- 周志華《機器學習》,這本書算是機器學習方面中文兼具全面性和難易度的一本好書,我沒有完全看完,只是挑著閱讀一些在學習過程中弄得不是很懂的章節,在所有課程的學習過程中如果遇到不理解的問題,可以在知乎或博客中尋找相關問題的答案,比如博文《理解SVM的三層境界》、《機器學習中的範數規則化之L0、L1與L2範數》等等。
- Kaggle比賽、《利用Python進行數據分析》,進行到這一步時,就可以到Kaggle實戰一下,將各種學習演算法在具體的比賽中應用,其中Scikit-Learn庫中封裝了各種機器學習演算法,並且有各種便於數據處理的API,此時關注點變為如何通過具體的數據處理和模型選擇來提高成績,而不用關心具體的演算法細節,Scikit-Learn庫可以通過官方文檔學習使用,《利用Python進行數據分析》這本書主要講的是pandas在數據處理上使用,總之你各種能想得到想不到操作都可以通過pandas的操作實現。
我就是學到這種程度準備去找工作了,感覺首先應該對CS專業有全面系統的學習,包括語言語法、操作系統、計算機網路、數據結構與演算法,雖然最後沒有走Web的方向,但在這個萬物皆Web的時代,通過前兩部分的學習還是為今後知識體系的打造打下良好基礎;其次是代碼能力,畢竟等到工作了還是要通過寫代碼來解決問題;再次是圍繞著機器學習理論知識:What?(什麼是機器學習?)Why?(為什麼機器能學習?)How?(機器怎樣學習?)及產生的各種演算法有完整的知識體系,能夠做到推導常用演算法(例如:LR、SVM、Ensemble、Neutral Network等),對各種演算法的參數,演算法之間的比較和聯繫,評判標準都有深入的理解;最後還能做到在機器學習方面的演算法有足夠的實踐,例如各種庫(例如Numpy、Scipy、Matplotlib、pandas、Scikit-Learn等)的使用方法,具體演算法的Python或C++實現,Kaggle或是其他數據挖掘的比賽。能達到這種程度應該就可以出去找工作了。
現在準備把以前學過的東西複習一下,同時在刷《劍指offer》和LeetCode。找到工作後我的計劃是通過閱讀《PRML》等經典著作進一步把機器學習基礎夯實,學習cs231n向深度學習和計算機視覺方向發展,再把《SICP》這本書完整的學完。以後的工作中還可能會涉及特徵工程、優化理論、深度學習及其框架的學習,在具體工作中根據問題不同構造不同的機器學習演算法模型等等。
感覺我應該就是「先就業,再擇業」的典型了,不過這條學習的路終究是不好走,從畢業到現在10個月,每天上班沒事的時間就是自己學習,下班了在辦公室學習到10點左右回宿舍,洗洗睡覺,雖然在身體上還是感覺有點累,不過精神上每天都在充實自己還是很愉快的,感覺像是又考了一年研。等過段時間找到工作了,還是不要像現在這樣使出10分力氣,但不長久;應該使出6分力氣,但堅持常年的終身學習,其餘的時間用來豐富自己,鍛煉身體等等。
最後,各位看了我這麼長的啰嗦了,辛苦了!我再多說幾句雞湯:有時自己也會問自己為什麼要這麼累?每天隨遇而安的不好么?但是——「一個人沒有夢想,和鹹魚有什麼區別」,如果能每天把自己喜歡的事情當成職業,還能為改變這個世界做出自己一點點貢獻應該就是很多人夢寐以求的吧!雖然現在我的起步比較晚,但是如果都學習個幾十年,也就不在乎這頭幾年的差距了吧!每晚睡覺前能感覺到自己向著目標前進,哪怕只是一小步,都會很踏實的睡去。
最最後,我的這篇分享可能也有很多錯誤的地方,如果有什麼問題,誠懇希望大家給我提出,有什麼專業上的建議,也希望不吝賜教!
最最最後,
感謝 @蕭井陌 ,蕭大的編程指南和知乎上很多CS學習方向的回答使我受益匪淺。
感謝 @董偉明 董大,在學習Python Web的過程中看了很多你的分享和回答,從你的博客中也學習到很多東西。
感謝 @SimonS ,參考了很多你的機器學習學習經歷分享,還有BI學習大綱。
感謝 @行者 @淩清風 @Charles Xiao 的機器學習學習經歷分享,正是你們的分享推薦,我才確定了自己的學習路徑及要學習的課程和書籍。
感謝 @Naiyan Wang @煉丹師 @莫煩 @pro-am @張馨宇 你們在知乎上的很多回答,雖然有時是很簡短的一句話,但可能讓我對這個行業的現狀有更多地了解,或是讓我思考很久的問題茅塞頓開,或是讓我對某一問題有更加深入、理性的認識。
感謝如何通過自學找到一份開發的工作?回答下的所有答主,你們的經歷給了我很大信心,讓我知道天道酬勤,只要努力,就有希望。
感謝您能閱讀完這篇回答,希望對你有所幫助,謝謝!
12.14更新:之前跟題主私信過,他確實是去微軟了,但是不是通過機器學習去的。卧槽,看到這個問題,然後又看了下發帖的人,發帖的人現在在微軟工作?學了機器學習然後跳微軟了?發帖的人不過來feedback一下你這一年是咋通過機器學習搞到微軟去的嗎??????
@tang walle
題主給我一種完全沒有主見隨大流的感覺,機器學習火就去學機器學習嗎?你真的喜歡嗎?你了解機器學習都在哪方面應用,需要哪些背景嗎?機器學習是一門要求有很好的數學基礎而且很系統的學科,應用性也很強,光看理論沒實踐都沒用,很多人興趣來了,跑去看Ng的公開課後,就覺得自己會機器學習了,實際上只是門外漢,相當於一本教材,你只讀了Introduction。言辭偏激,勿怪,三思呀!
udacity網路機器學習教程學習三個月,google給100%推薦工作。條件是有美國簽證即可。
我其實一直以來就渴望成為一個編程高手。但總感覺自己是太笨了還是什麼原因,找不到方向,總是一個人瞎折騰也沒什麼結果。
老實說,如果題主以此為目標的話,老老實實把體系結構、操作系統、編譯原理、資料庫、計算機網路、演算法導論、線性代數和微積分裡面隨便幾樣(幾 &>= 3)基礎打好了,去BAT工作不是夢想。
如果只是粗淺地跟風學機器學習,那最後水平多半是不上不下:退一步不會在真正的系統里實現自己學到的演算法(不如掌握了上述技能的科班畢業生),進一步不知道演算法出問題的時候應該怎麼辦(不如真正做機器學習的科班畢業生)。一個好的面試官不用幾分鐘就能淘汰這樣的求職者……
最後正經回答一下題主的原問題,以免跑題:看工作性質,如果涉及到機器學習核心演算法的可以看看Bishop的Pattern Recognition and Machine Learning,如果概率圖模型用的比較多可以看Koller Friedman的Probabilistic Graphical Models,如果側重數據挖掘的可以看Leskovec, Rajaraman Ullman的Mining of Massive Datasets。如果這些能啃完任意一本並且自信能把裡面的東西讀懂個七七八八,那核心機器學習/數據挖掘的工作多半沒問題。
如果覺得上述著作太理論,可以找一些應用性比較強的、介紹流行框架的書或者材料。這方面數據挖掘的材料比較豐富,比如Hadoop, Spark等。機器學習框架一般各公司就用自己的了,這些東西大多不公開,而且開源的文檔也通常差強人意,就不一一列舉了。
如果覺得上述材料太不通用(有點像iOS),那還是回到一開始說的那些基礎,因為有了這些基礎知識,換了工作之後再在工作崗位上學一些必需的知識,也能很容易做機器學習。如果選定了搞這個,就要堅持,每一天你要捫心自問,是否真的喜歡機器學習。機器學習是交叉學科,要學很多東西,統計和優化兩門是基礎,你先看看能否看進去這兩個東西。沒有什麼學到程度一說,你要做的是先加入一個機器學習團隊,不懂沒關係,哪怕是打雜,先獲得感性認識和履歷。這個比你學什麼都重要。
給你點務實的建議:如果想學就不要腦子一直想我為啥學,學了有沒有用。我正在上coursera上的machine learning大牛的andrew ng的課,快結束了這一期,下一期似乎四月底開始,一共10周,9份編程作業,我感覺堅持下來你就大概能入門然後想自己適合這個方向不。中間沒上完別老jjyy的。我每天10點才下班的人都堅持下來了。
有個極端的說法,解釋為什麼做機器學習的人喜歡python ——因為他們大多數不會編程。
這當然是笑談。但是也有一定道理: 解決機器學習的問題未必需要很多編程技巧。 真正需要的是對問題的深刻理解,以及對各種模型的特點的掌握。這樣對於特定問題,在有限時間內,找到合適的模型,然後就用別人寫的高質量的代碼和軟體來解決問題就行了。
有一種分類。做機器學習的人有兩類:寫演算法以及軟體包,給別人用的。 另一類是手裡有某個領域裡亟待解決的問題,使用別人的軟體來解決問題的。
各大軟體公司的軟體工程師大都不做機器學習的實際問題。 很多即使做機器學習,也是第一類。 Amazon有大量機器學習的職位。我認識的人,在Amazon用R來實現個模型,無需編程技巧,但是需要統計,概率,信號處理,時間序列,隨機過程等相關知識。
所以,看你想找什麼職位, 是software engineer (50% coding + 50 engineering), 還是 software developer (80% coding + 20% engineering), 還是 data engineer (Extract, transform, load), 還是algorithm engineer, 還是data scientist (90% modeling, 10% coding)
學ios、前端、php現實一些,純工程,不需要啃演算法,工資也很高ML對於業務是個錦上添花的東西,假如都學不精的話,也就是大家都寫業務邏輯,在項目地位其實不如php而如果要做到ML就是核心業務(如某xx識別平台、某底層ML框架,等等),要補的就太多了
你還是把編程練好吧,可以學前端、學php什麼的。學機器學習的話你的腦子會更亂,別看有人把這個說的很簡單,其實這玩意入門還需要點悟性和運氣,否則可能弄了半天連門都沒入
其實我覺得你還是自己喜歡什麼吧
樓主厲害啊。。。
幸福來得好突然
首先,LeetCode我是絲毫刷不動的,既然你搞到了微軟offer,那好歹也奔著Google試一下,去什麼BAT呢.....
演算法本身,理論本身,編程本身都不是目的。目的是你通過各種知識實現新的東西,只要保持好奇心,有毅力,多讀最新關於ML的高IF論文緊跟風向,相信你能成為任何地方都需要的人才。
我現在的感覺特別能和你產生共鳴,不過我研一!現在要確定自己的研究方向,複雜網路 推薦系統和自然需要處理,不知道要選那個?
推薦閱讀:
※多倫多大學機器學習水平如何?
※caffe,theano,torch,mxnet,tensorflow,哪款工具更適合閱讀源代碼學習?
※如何評價李開復新書《人工智慧》?
※回歸(regression)問題是否比分類(classification)問題更難用神經網路模型學好?
※組合數學入門,求書籍推薦?