理論化學phd如何轉行到機器學習?

本人top2理論化學phd在讀,偏應用,發了幾篇小文章,深感做科研前途有些渺茫。加之最近機器學習越來越熱,連我所在的領域都發了好幾篇機器學習的文章,比如用神經網路來計算目標結構的能量等等。所以我就想既然都開始使用機器學習了,為什麼不直接跳出化學的圈子做點更接地氣的事情,比如語義識別、圖像識別等等,將來也更好找工作(原諒題主功利了)。目前自學完Ng的machine learning,有python基礎,數學基礎不錯,本科參加過數模大賽並獲獎。但是題主目前進入了迷茫期,不知道下一步要做什麼?感覺有好多東西需要學,又不知道從哪裡開始?是去繼續啃書還是在實戰中學習?另外,從化學轉行到機器學習可能性大嗎?知乎首問,希望大家不吝賜教。


想轉機器學習的話,這有四個問題,如果答案都是yes,那就比較好轉。當然默認的前提是,你真的對機器學習感興趣。

  1. 硬體:現在的機器學習還是需要不少計算資源,比如GPU,你們課題組有嗎?或者有天河2號的資源也可以。或者,你自己投資硬體也是沒啥問題的(Titan也可以玩遊戲,不虧)
  2. 編程:光有python基礎其實是不夠的,基於TensorFlow等框架搭建複雜模型對編程能力的要求不低的,需要花大量時間學習。
  3. 精力:機器學習,特別是各類神經網路,現在的發展實在是太快了,你要跟上發展潮流需要花費大量時間,你能全力做這個嗎?
  4. 氛圍:你們組只有你一個人做機器學習還是還有其他人?能找到一起討論的嗎?老闆能給你(一定)的指導嗎?

總之,要轉的話,需要投入大量時間,這個心理預期一定要有。

至於入門,我這有三套方案:

  1. 如果經濟條件很好、或者想要短平快的效果,那就去Udacity,上面的Machine Learning Nano-degree + Deep Learning Foundations + Artificial Intelligence Nano-degree三連都搞定那就差不多了。
  2. 如果經濟條件還行,建議先Machine Learning Nano-degree,輔以CS231n和論文tutorial(網上一搜一大把)
  3. 如果基礎好或者經濟負擔較大,只打算自學,那就斯坦福的CS231n慢慢啃吧。這個課的視頻是可以搜到的,看視頻 + 獨立完成作業。

有機會的話,我建議你去國外一些專門做化學機器學習的組訪學一年,千萬不能閉門造車,比如:

  • O. Anatole von Lilienfeld(瑞士,巴塞爾大學)
  • Andrew Peterson(美國,布朗大學)
  • Klaus-Robert Müller(德國,最近發了好多好文章!)
  • Bj?rk Hammer(丹麥,計算催化的開創者之一,現在全力做機器學習)

目前機器學習在化學領域屬於起步階段,很多組還是在做一些基礎性的工作,比如怎麼能更好的擬合結構的總能量。給你推薦幾篇最新文章,你可以看看:

  1. Generalized Neural-Network Representation of High-Dimensional Potential-Energy Surfaces
  2. Ensemble-Average Representation of Pt Clusters in Conditions of Catalysis Accessed through GPU Accelerated Deep Neural Network Fitting Global Optimization
  3. Machine learning of accurate energy-conserving molecular force fields
  4. Quantum-chemical insights from deep tensor neural networks
  5. Machine learning prediction errors better than DFT accuracy
  6. Bypassing the Kohn-Sham equations with machine learning

其中1發表於2007年,這篇文章中提出的模型目前很多組都在用,這篇文章值得仔細研究。2的模型比較簡單,如果你能獨立把2的模型和訓練都做出來,那可以認為你已經入了機器學習的大門。


數學系的學生來回答一下,雖然對化學系的同學的知識背景不是特別了解,但是對於工業界的一些基本需求還是略有所知。以下內容都是進入公司之後才開始學習的,其實後來覺得可以在讀書期間就學一下相關的內容,也方便自己找工作。

知乎專欄寫過一篇文章:《轉行到數據挖掘與機器學習(三)》。

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

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

[1]編程語言

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

通常來說,SQL 是為了從資料庫中提取數據,然後進行必要的數據過濾,數據分析,數據提取。對於 SQL,需要掌握的內容有以下幾點:聚合函數,數學函數,字元串函數,表格的連接函數,條件語句等。SQL 與 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]業務場景

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


機器學習在量子化學中的應用是一個從2011年開始越來越火的領域,我個人覺得在機器學習上的難度並不是非常大,重要的是如何跳出原有的量子化學的框架重新定義新的問題。我的博士研究是在DFT中發展和應用機器學習。

Understanding Machine-learned Density Functionals

Pure density functional for strong correlations and the thermodynamic limit from machine learning

之前JCTC也推出了一個ML的special issue

International Journal of Quantum Chemistry

-----

更新

現在加入了Google Accelerated Science

https://research.google.com/teams/gas/

用機器學習加速自然科學的發現


我本身是化學bs,現在剛轉去cs,machine learning方向

如果說的是cousera的Ng的機器學習,那個比較基礎,建議先複習一下基本的線性代數,統計,概率論,再看其他的課,推薦mit 18.06,網易公開課也有。

理論machine learning: cs 229

Computer vision: cs 231n

NLP and deep learning: cs 224d

Cousera鎮館之寶之一: stanford的probabilistic graphic model

教材:

Pattern recognition and machine learning

Deep learning by Ian goodfellow

我推薦的都是自己看過的,所以比較少,但是其實這些全部刷完肯定差不多掌握基礎了

然後去看看arxiv比較有名的paper,找open source的code,掌握caffe,tensorflow等,畢竟這一行還是很需要實踐經驗的


我是今年剛從計算化學改行到機器學習的,希望我的經驗能做些參考吧。

我是在博後的中間決定轉行的,我博士和博後期間基本沒有發表文章,因此轉行決策基本不受沉沒成本干擾,在看了技術大停滯--範式春夢中的地球工業文明(序) | 資水東流 這篇文章之後,決定轉行。

轉機器視覺的話,相比科班,其實理論化學的學生劣勢也不是特別大。 機器學習領域知識更新極快,一旦不學習,立刻掉隊。 因此轉行的人重新學最新的知識反倒稍許有些優勢。理論化學的學生數學和編程基礎好,學起來很快。

我自己在二線城市的 新成立的機器視覺公司。面試看中的是 對新的paper理解,imagenet 競賽的那幾篇文章如VGG, Resnet 還有 目標檢測那幾篇文章, 然後一些傳統演算法比如canny邊沿檢測,目標跟蹤等也了解一些. 把 斯坦福的 CS231N 課後習題全做了基本就能面過啦。 個人認為,實戰中查缺補漏比自己一個人啃書要好,書上有很多實際工作中不用的舊的圖像處理方法,學起來邊際效益比較低。

聖誕節更新: 在二線城市幹了半年,跳到JD了...


利益相關,催化模擬方向。之前看過弗吉尼亞理工的Hongliang Xin 發過用NN來篩選催化劑,於是準備入坑搞machine learning,自己找了一個課題瞎搞搞。最近Norskov也發了幾篇machine learning的paper,他們組有個博士後專門做machine learning。悲劇之前的結論基本被他發掉了哈哈。重在參與,學習技術就好。

正在轉行中,參加過一些machine learning研討會。主要老闆太push,精力有限,還一年多畢業, 慢慢來。

去參加過上海紐約大學的機器學習分子模擬培訓,見過一些化學領域的機器學習大神。O. Anatole von Lilienfeld 等等。

希望找個公司實習實習,轉行不易,代價好大。


果然是三百六十行,行行通CS……


已經有很好的基礎了。


感覺一堆人在搞機器學習。。


花錢花時間


樓主加油...我是化學本科,並且轉行了...期待樓主能在化學和AI的交叉領域有所建樹


推薦閱讀:

什麼是遊戲策劃?主要的工作職責是什麼?
有夢想,有素質的新人願意從客服開始做起嗎?
廣告行業有深耕價值嗎?
想成為自由職業者,什麼技能比較好上手?

TAG:機器學習 | 職業規劃 | 轉行 | 理論化學 |