學習深度學習的經歷

說說我學習深度學習的經歷吧,從開始學習到現在大概有4個月,只能算新手,剛好可以回答新手問題。

先說編程:自認會用C++, 熟悉Python

英語水平:中等,能很快讀懂英文科學文獻

最開始對人工智能/深度學習感興趣是因為想用它試一試自然語言生成,後來想到一個物理方面的題目,預計可以用深度學習技術解決,開始接觸深度神經網絡。

記錄一下學習歷程,

1. 安裝 Tensorflow(google 開源的深度學習程序), 嘗試裡面最簡單的例子MNIST 獲得激勵。

2. 之後嘗試通過讀書(看視頻)理解最簡單的全連接神經網絡

先搜索找到答案:為什麼要Go Deep?

(1)神經網絡中輸入層,隱藏層,輸出層之間矩陣乘積的維度變化。

(2)Weight, Bias 這些是什麼,改變它們有什麼結果。

(3)激勵函數是什麼,有什麼作用,有哪些常用的激勵函數

(4)誤差如何向後傳遞,網絡如何通過最小化誤差函數更新,有哪些常用的優化方法

以上這些在一本交互式電子書中可以找到答案:

Neural networks and deep learning

(5) 如何對權重正規化,L1, L2, BatchNormalization, (這些在以後真正應用的時候再看)

Deep Learning chapter 7 for L1, L2 regulation.

Batch Normalization:

Accelerating Deep Network Training by Reducing Internal Covariate Shift (2015) original paper for BN

why does batch normalization help? Quora

Note for BN in Chinese

Implementing Batch Normalization in Tensorflow from R2RT

Layer normalization (2016) Replace Batch Normalization in RNN

Why Does Unsupervised Pre-training Help Deep Learning?

Summary and discussion on pre training

3. 選擇一種比較比較底層的神經網絡開源庫,tensorflow 或 theano,

(1) 讀官方文檔 https://www.tensorflow.org/versions/r0.11/tutorials/index.html

(2) 看周莫凡的網絡教程 https://www.youtube.com/user/MorvanZhou

(3) 重複敲代碼,重複實現例子程序

4. 開始理解各種不同神經網絡架構所能處理的問題

(1) CNN 圖像識別,圖像處理,語音處理

(2)RNN,LSTM 自然語言理解與生成

(3)增強學習,玩遊戲

5. 嘗試各種開源的有意思的神經網絡項目,新手可以從下面這個列表開始

(1)Andrej Karpathy blog char-rnn, Deep Reinforcement Learning: Pong from Pixels

(2)Neural Style In tensorflow.

6. 如果能翻牆,註冊 twitter, facebook 賬號,follow 那些文章中經常出現的大牛的名字。

他們每天提供很多新動向及最新技術,很多時候有很 Fancy的應用。

試試從這個大牛follow的人開始follow

https://twitter.com/karpathy

當你對這些都很熟悉的時候,開始閱讀艱深的文獻:

1). CNN 的原始文獻

2). RNN 和 LSTM 的原始文獻

3). Reinforcement Learning 的原始文獻

4). Google DeepMind 發表在 Nature 上的幾篇經典

最後推薦一個高級點的庫: Keras Documentation

雖然這個庫還在發展階段,裡面仍有不少bug,但前途不可限量,可以很容易實現你之前讀文章時候見到的那些複雜的構架。

作為例子,這裡有個教程:

Deep learning book in ipython-notebook and Keras Many example code in Keras.

最後強調一個最最重要的事情:

要有自己的想法,有將這種新技術用到自己項目中的強烈願望,從開始就要Coding,不斷嘗試才能不斷進步。

(看了很多其他的回答,在這裡想補充一段)

說實話,作為一個其他行業(物理,工程,化學,醫學,農業,衛星地圖識別,網絡安全領域,社會科學)的普通程序員,在本行業有比較深的理論和實驗背景,能接觸到海量數據(無論是傳感器數據,互聯網數據還是蒙特卡洛模擬數據),想做處一些創新性,交叉性的工作,這一輪人工智能的風絕對是要跟的。

作為一個計算機專業的人,可能覺得機器學習,人工智能,深度學習已經炒的過熱了。但是對於其他領域,可能大部分人還沒有想到把最基本的機器學習算法如:

PCA,SVM,k-means...運用到本行業積累的大數據上, 更不要說最近的深度學習。

作為其他行業的普通程序員(除了數學與理論物理),我們不要指望從理論上徹底解決深度學習現存的問題。

我們的優勢不在這裡,我們的優勢是計算機專業的人所沒有的專業知識,行業大數據。

我們需要做的是把機器學習,深度神經網絡當作工具,知道它們能做什麼,如何去做。

參考Andrew Ng 的機器學習筆記,

Machine Learning - complete course notes

舉幾個簡單的例子:

1). 使用深度學習中生成風格化圖片的技術,製備具有特定功能的抗癌藥物

The cornucopia of meaningful leads: Applying deep adversarial autoencoders for new molecule development in oncology

2). 使用反常探測,尋找網絡攻擊 Cyber-attacks prediction

3). 對於國家來說,更加聰明的互聯網關鍵詞過濾

4). 自動探測衛星地圖上道路,建築,車輛,河流......

5). 環境科學中尋找霧霾與眾多可能因素的非線性關聯

我們用卷積神經網絡來區分量子色動力學相變是crossover還是一階相變。

(1年之後回來修改)回答這個問題的時候,文章剛剛寫好,最近文章已經在《自然-通訊》Nature Communications 雜誌發表,

網上公開鏈接是 An equation-of-state-meter of quantum chromodynamics transition from deep learning , 希望能給堅持在這個方向,做 AI + X 交叉學科應用的同學帶來精神上的激勵。


分享到:


相關文章: