本科生沒讀研怎麼讓自己機器學習水平更近一步?

背景:題主剛211非CS專業畢業不久,大概大二時候開始慢慢了解機器學習,之後考研剛過線,不太想調劑去二本之類的院校,感覺有些浪費時間,家庭原因也沒辦法出國。畢業之後一直找的是機器學習方面工作,感覺自己對於機器學習基本的理論都知道的比較清楚,可能非CS出身吧,coding能力並不是特彆強,平時也只擼過一些toy model,過機器學習的面試感覺不是很難。現在主要看得比較多的是推薦系統方面,對CV了解很少,基本pass,NLP方面淺淺知道一點。

現狀:現在剛在某公司做ML,主要是跟公司內部其他組業務對接,幫助其他業務做演算法支持,但是感覺氛圍不是特別好,平時大家也沒有很多的討論paper模型什麼的,都是找到現有基本模型然後去做,而且最近大家好像有一種不管什麼任務都用深度學習的風氣,讓我感覺有點不適應。

優勢:

  1. 網上的課基本都看過,台大的,Andrew的還有一些雜七雜八的
  2. 書也基本都看過,詳細讀很多遍的包括西瓜書、李航的統計學習方法,略看過的包括ESL、understanding machine learning from theory to algorithm、convex optimization、最優化理論、DeepLearning、PRML、MLAPP,以及一些雜七雜八的入門書,集體智慧編程機器學習實戰tensorflow那些的
  3. 會有一些平時的積累,讀書筆記,讀論文筆記都記在博客或者專欄,專欄和博客在這裡
  4. 平時保證每周讀2-3篇論文,主要是arxiv上或者一些頂刊會議上的,一般是推薦系統方向,或者是其他方向但一些題目看得懂的
  5. 畢設做的推薦系統演算法item2vec小改進,之前做個幾次醫療診斷的ml小項目(非圖像識別),參加過天池和kaggle,但每次基本都是兩三百,最好的一次也沒進前50,去上過周志華老師課,大學期間有一定學術素養,發表過論文
  6. 數學底子還不錯,之前考研時候數學比較下功夫,有運籌學底子,本科運籌學相關

問題:

  1. 感覺現在在公司是溫水煮青蛙,平時做做業務,但是對自己的能力可能提升少,對學術前沿了解有限,沒辦法跟上潮流,有點慢慢就被淘汰了的感覺;
  2. 感覺沒有自己的研究方向,因為沒辦法讀研,所以自己也很難找個細小的方向深入去挖掘,而且感覺現在的自己很浮躁很功利,沒法靜下心來研究某個東西;
  3. 不知道怎麼去進階,平時網上看到的東西,自己大部分都看過,沒有學到新東西的感覺,進步太慢;

求各位指點一下這種情況該怎麼提高自身水平。


你要的答案全在你的問題里。

第一,換一個公司,去大公司搞ml的核心部門。跟真正的大牛一起工作。

第二,換個方向,轉到NLP或圖像的組或公司去。

其實你心裡都想好了吧。


之前寫過一篇文章,希望有點價值:轉行數據挖掘和機器學習

原文來自微信公眾號「數學人生」,鏈接是:轉行到數據挖掘與機器學習(三)

回頭看一下,目前已經從純數學專業轉行到數據挖掘和機器學習領域有一年半了,又到了該總結轉行經驗的時候。還是那句老話,大牛們請主動忽視以下內容,初學者可以用作參考。

[1]編程語言

目前工業界的機器學習編程語言很多,基於個人的一些淺顯的工作經驗,發現目前比較常用的編程語言是 Python 和 HIVE。

通常來說,HIVE 是為了從資料庫中提取數據,然後進行必要的數據過濾,數據分析,數據提取。對於 HIVE,需要掌握的內容有以下幾點:聚合函數,數學函數,字元串函數,表格的連接函數,條件語句等。HIVE 的經典教材有兩本,分別是:

《HIVE編程指南》,作者 Edward Capriolo

《SQL基礎教程》,作者 Mick

PS:個人特別喜歡《SQL基礎教程》,極易上手,易學易通。之前寫過一篇文章總結 HIVE 的使用細節,提供給大家做參考:《HIVE基礎介紹》

對於編程語言 Python 來說,目前深度學習的框架 Tensorflow 等,都可以使用 Python 進行編程。除此之外,Python 還有各種各樣的數值計算庫和機器學習庫等著大家去使用,例如 Numpy,Scipy,ScikitLearn,matplotlib 等。其中,Scikitlearn 的文檔是非常詳細的,特別適合初學者入門學習。至於 Python 教材的話,其實有很多,例如:《Python基礎教程》,作者是 Magnus Lie Hetland,這本書特別適合初學者看。如果是網路教材的話,推薦參考 廖雪峰 的官方網站,地址是:Home - 廖雪峰的官方網站

至於開發環境的話,一般來說公司都會使用Linux,有一本書可以提供給大家做參考:《Linux命令行與Shell腳本編程大全》,作者 Richard Blum/ Christine Bresnahan

既然是處理大數據,那麼 MapReduce,Hadoop,Spark 等內容需要了解。參考文章:《一文看懂大數據的生態技術圈,Hadoop,Hive,Spark都有了》

[2]機器學習

既然是做數據挖掘和機器學習的工作,那每個人都需要了解這方面的內容。在這裡筆者推薦教材《機器學習實戰》,作者是 Peter Harrington。閱讀這本書需要讀者掌握 Python 語言,加上 Numpy,Scipy,matplotlib 函數庫的一些基礎內容。源代碼的話可以在網上找到,然後根據書本的章節逐步學習即可。

除了《機器學習實戰》之外,周志華老師所寫的《機器學習》西瓜書也是不錯的選擇。建議初學者結合這兩本書一起學習,周志華老師的《機器學習》介紹了多種機器學習演算法,並有簡單的例子和數學原理進行描述。

既然提到了機器學習,那就簡單地總結一下裡面的一些演算法吧。

如果是做推薦業務的團隊,那麼使用地最多的還是邏輯回歸演算法(Logistic Regression),ItemCF 和 UserCF,物質擴散和熱傳導演算法(Heat Spreading) 演算法。由於 LR 是使用線性的方法來處理非線性的問題,並且實際的環境中會有物品的特徵和用戶的特徵,因此會導致特徵工程比較複雜,交叉項多(二維或者三維的交叉)。因此,在實際的工作中,特徵工程的作用就顯得十分重要。工程師和業務人員要根據物品和用戶進行必要的特徵構造,形成物品特徵,用戶特徵,交叉特徵等。之前也寫過一篇文章《特徵工程簡介》,供大家參考。

除此之外,涉及到在線優化的問題,Google 在幾年前提出了一個 FTRL 演算法。論文是 Ad Click Prediction a View from the Trenches,裡面會涉及 SGD 演算法,Truncated Gradient 演算法,RDA 演算法,FOBOS 演算法,以及最終的 FTRL 演算法等。

比邏輯回歸演算法還要簡單的那就是線性回歸演算法了,目的都是針對連續型的數據進行預測,結果都十分容易解釋。除了直接的線性回歸之外,還有局部加權線性回歸,嶺回歸,Lasso 和前向逐步線性回歸等演算法。這些細節可以參考文章《線性回歸》。

如果是針對轉行的同學的話,那麼大家肯定關心的是如何把之前的技能平滑地切入到新的領域中。如果學過數理統計的話,那麼《最大似然估計》就是一個不錯的切入點。

除了上面所說的演算法,支持向量機演算法(Support Vector Machine),GBDT 演算法,隨機森林演算法,XgBoost 演算法都是在工業界比較常見的演算法。目前個人還沒有對這類演算法進行過總結,不過還是強烈建議大家去學習一下。2017年筆者應該會對這些演算法進行一些個人的總結。

無監督學習演算法也是整個機器學習領域的一大方向。提到無監督學習演算法,就不得不提到聚類演算法,其中最經典的還是 Kmeans 演算法。這個可以參見文章《聚類演算法(一)》。聚類演算法的反面就是異常點檢測演算法,之前在異常點檢測演算法上面研究過一陣,也寫過不少的文章。例如:

《異常點檢測演算法(一)》,《異常點檢測演算法(二)》,《異常點檢測演算法(三)》,《異常點檢測演算法綜述》。

除此之外,強化學習也是機器學習的一個研究方向。隨著 DeepMind 公司的 AlphaGo 打敗圍棋頂尖選手,能夠自動玩遊戲的智能 AI,強化學習已經成為了一個比較熱門的研究方向。之前寫過一篇關於強化學習和泛函分析的小文章《當強化學習遇見泛函分析》,供大家參考。

目前深度學習已經成為了機器學習的熱門研究方向,無論是卷積神經網路 CNN 還是循環神經網路 RNN,都是研究的主流。之前在學習反向傳播演算法的時候,寫過一篇如何基於 BP 演算法訓練 RNN 網路的文章《循環神經網路-Reccurent Neural Networks》。

[3]數理統計

數理統計方面還是有一些東西是蠻常用的。例如時間序列模型 ARMA 模型等。一些數據的指標,例如均值,方差,標準差,變異係數,相關係數,ROC曲線和AUC,召回率和正確率,交叉驗證等。

[4]業務場景

在實際的工作中,最重要的一個因素就是理解業務,只有理解了業務的需求,才能夠更好的完成領導所布置的任務。在做事情的時候,一定要形成閉環。那就是:了解業務需求-》調研業界方案-》查看是否適用-》上線效果。通過最終的效果和我們要做成的目標,來反推當前需要做的事情。一些學生時代的思維方式需要逐漸拋棄,參考文章:《開公眾號之後的一些感想》


看到背景描述的開頭還以為是自己提的問(笑)

我的背景和題主很像,211本科非CS專業,今年已經是畢業第三年啦,所以想和你分享下自己的經歷。唯一不同大概是放棄了保內機會直接工作,因為我覺得考研黨經過認真準備,研究生學校普遍會比本科高1-3個level,這意味著本科211不去C9啥的就是不進則退了(看校招簡歷的統計經驗也可以稍稍佐證,小樣本,有偏,事實上我也認識保內後做出了很優秀的工作的同學),如果有不錯的機會直接工作,三年工業界的經驗比研究生學歷其實不差。不管在哪裡成長最核心的都是學習能力,看起來題主保持著不錯的學習和記錄的習慣,值得表揚。另外推薦場景中用item2vec我也試過,還蠻靠譜的,雖然你的做法細節我不太清楚,如果是你自己的想法的話可以再次表揚。

對於你的問題,我的經驗是普通公司對學術界的成果本來就追得不太緊,因為再exciting的成果轉化都有成本,所以我們也不需要在所有領域緊跟潮流,open mind就好,要搞科研還是應該去念個phd,或者去paper drive的公司,念完研究生多數還是要進這個工業界的。我認為從學校到職場最重要的認知轉變是,意識到工作是這樣一份契約,公司購買僱員的時間來為公司創造價值,所以驅動職場生涯的最好方式是考慮下自己能為公司做些什麼,並以此為表達的框架填上自己期待的成長內容。比如深入業務去挖掘亟待優化的痛點,結合業務推動新技術落地,具有一定技術影響力後就可以給老闆畫餅,去做自己認為有意思的東西了。綜上,廣度的功夫都在詩外,從中找到結合業務落地的點,學以致用併產出價值才會有技術深度。保持適度的焦慮是快速成長不錯的狀態。

年資尚淺的一點愚見,歡迎探討和指教。


個人認為,如果不讀phd,那就做應用為主比較好,單單研究演算法肯定做不過國外大牛的,因此實現軟硬體結合是一個切合點,例如對模型做出修改,能夠在嵌入式下發揮最大作用等等


如果你真的把你列出來的書都認真讀過的話,你就不會在這提問了


題主,個人是經歷和你有點類似。

我是建議你找機會進入大廠的,或者尋找能夠進入大廠的跳板。我相信在國內,bat能夠學習到和看到的東西,和你在其他公司看到的有很大不一樣的。

另外,修正你的一個觀點,在大廠的大多數團隊里也不怎麼care論文的,還是以業務和工程為主,除了極少數以科研為目標的實驗室。如果你想做學術,還是建議回學校讀博,研究生出來基本還是做應用研究和工程。


謝邀。

你已經很屌了。。。


根據樓主的情況,樓主是否可以找一些大學的教授表明自己的情況,套磁教授跟著做項目呢,這個難度相對會比較大;樓主考慮過直接申請國外的PHD嗎,如果你發表過很多高級別的論文,參加過許多項目,那套磁教授申請也是可以的。還有就是樓主可以參加線上科研,不僅可以找自己方向的課題,還可以學習專業知識,提高科研能力。


推薦閱讀:

數字圖像處理/計算機視覺的進階問題?
L1範數的最優化過程是怎麼樣的?梯度下降遇到不可導點怎麼辦?
如何才能看得懂變分貝葉斯方法(Variational Bayesian)?
線性可分的數據集下,感知機模型是否是凸優化問題?
「過擬合」的嚴格定義是什麼?

TAG:機器學習 | 深度學習DeepLearning |