文章目錄
寫在前面:
重點推薦內容加粗顯示
有些課程和書籍區分了難度係數,比如簡單、中檔等,但是難度係數並不代表閱讀對應書籍或者學習相應課程需要的時間長短,所謂“難度係數”,只是根據推薦資料需要的數學基礎來界定的。
1. 數學基礎
數學基礎主要依賴上課就行了,如果忘了,就花一兩週稍微複習一下。
- 高等數學 (關注微分,拉格朗日乘子法,積分換元法等;本科教材即可)
- 線性代數(關注矩陣運算;本科教材即可)
- 概率論與數理統計(關注全概率公式,極大似然法、參數估計以及常用分佈;本科教材即可)
- 數值分析(關注梯度下降法、牛頓法以及常用的插值算法;本科或研究生教材即可)
- 矩陣論(關注空間映射和範數;研究生教材即可)
- 隨機過程(關注泊松過程和馬爾科夫過程;研究生教材即可)
- 凸優化(難度較大,簡單瞭解一下就好了)
- 條件隨機場(難度較大,遇到了再看網上教程吧)
2. 編程基礎
2.1 Python & C++
- Python教程
- Python第三方庫
- 矩陣計算庫Numpy https://docs.scipy.org/doc/numpy/user/quickstart.html
- 可視化庫Matplotlib https://matplotlib.org/contents.html
- 符號計算庫Scipy https://docs.scipy.org/doc/scipy/reference/tutorial/index.html
- 高級數據處理庫(可不學)Pandas http://pandas.pydata.org/pandas-docs/stable/tutorials.html
- 統計學習庫Sklearn https://scikit-learn.org/stable/tutorial/index.html
- 圖像處理庫OpenCV https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_tutorials.html
- 簡易圖像處理庫PIL https://pillow.readthedocs.io/en/5.3.x/handbook/index.html
另外,最好掌握基礎的C++ 或者 Java的一種,熟練掌握常用的數據結構與算法【線性結構(數組,鏈表,隊列等)、樹(二叉樹,2-3樹,B樹等)、圖與哈希表等】,這部分主要複習本科教材即可。
2.2 Linux & Shell
需要熟悉常用的Linux命令行操作,推薦《Linux命令行與shell腳本編程大全》(看基礎部分就可以了)。Linux推薦Ubuntu或者Mint。不推薦初學者使用centos或者red hat。
2.3 深度學習框架
框架不重要,選擇自己順手的就好了。**主推TensorFlow和PyTorch。**當然你也可以嘗試chainer, MXNet, DL4J等。
- Tensorflow
- PyTorch https://pytorch.org/tutorials/
3. 統計學習
如果精力或者時間允許,可以考慮瞭解一下人工智能的概況,因爲人工智能不僅僅侷限於統計學習與深度學習,只是這二者現下過於火熱,給人造成了這樣的錯覺。俗話說“疾風知勁草,歲寒見後凋”,人工智能從上個世紀50年代開始,發展起起落落,資本進進出出,這次的火爆又何嘗不是資本的推動呢(當然,技術上也確實有進步)?所以我認爲,既然要學的話,就不要僅僅侷限在目前資本吹捧的內容,畢竟我們是在學校不是在企業,資本逐利,但是人不能只逐利,所以我們有必要看看以前的人到底做了什麼。“一門學科的歷史就是她的全部”,這裏推薦書籍《人工智能:一種現代化方法》,該書不侷限於當下火熱的統計學習和深度學習,主要講述了人工智能的發展史,以及搜索問題,邏輯、知識推理與規劃以及統計學習與深度學習,最後敘述了人工智能的哲學基礎。該書雖然是導論性書籍,但絕不是簡簡單單介紹概念,而是高屋建瓴,深入淺出地講述了人工智能的方方面面,並且書中對很多方法都有詳細敘述,大部分算法都有僞代碼給出,堪稱經典中的經典。該書部頭較大(1200頁左右),有些概念很抽象(尤其是邏輯那一部分),閱讀需要的時間比較多,且短期不一定能從此書得到顯著提高,但是無論如何,這本手對於理解人工智能這個領域大有裨益。一般這種書的中譯本可能閱讀體驗比較差,建議閱讀原版。
豆瓣鏈接:https://book.douban.com/subject/3307202/(該書第四版即將出版,如果屆時第四版已出,建議直接閱讀第四版)
3.1 課程(選一)
- Machine Learning 專項 (中低難度) https://www.coursera.org/specializations/machine-learning
- 吳恩達機器學習 (簡單)https://www.coursera.org/learn/machine-learning
- 機器學習 林軒田(難度較大) https://www.csie.ntu.edu.tw/~htlin/course/
- 自動化學院模式識別課程 (中檔難度)(研一春季學期)
3.2 書籍
- 選一即可(建議選第一本)【有些書籍我標明“碩士慎入”,並不是因爲碩士數學儲備不足或者真的完全無法看懂,而是碩士三年時間有限,有些書實在不適合在短短的碩士三年時間裏深挖——研一有課,研三畢設,時間不多,不必強得】
- 《統計學習方法》李航 (非數學專業人士的救星)
- 豆瓣鏈接 https://book.douban.com/subject/10590856/
- 難度係數(6星): ⭐⭐⭐⭐⭐⭐
- 《機器學習》周志華(個人認爲此書並沒有網上吹捧的那麼優秀,不是非常適合拿來自學,不過每章後面的參考文獻不錯)
- 豆瓣鏈接 https://book.douban.com/subject/26708119/
- 難度係數(5星): ⭐⭐⭐⭐⭐
- Pattern Recognition and Machine Learning(聖經級別,非數學背景或者博士的話慎入,我看了一部分,已放棄;另,此書無中譯本)
- 豆瓣鏈接 https://book.douban.com/subject/2061116/
- 難度係數(10星): ⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
- Machine Learning: A Probabilistic Perspective(難度較大,碩士慎入,我沒入)
- 豆瓣鏈接 https://book.douban.com/subject/10758624/
- 難度係數(9星): ⭐⭐⭐⭐⭐⭐⭐⭐⭐
- 機器學習實戰(很好的入門書,可以花3-4天瀏覽一下,此書捨棄細節,提綱挈領,高中數學水平即可;本書旨在實現基礎的機器學習庫,但是書中代碼風格實在不敢恭維,自己甄別吧,別被帶偏了)
- 豆瓣鏈接:https://book.douban.com/subject/24703171/
- 難度係數(3星): ⭐⭐⭐
- 《統計學習方法》李航 (非數學專業人士的救星)
- 凸優化(瞭解一下前6章就好了,難度比較大,碩士也可以只看4,5章就好了)
- 豆瓣鏈接: https://book.douban.com/subject/21249088/
- 難度係數(8星): ⭐⭐⭐⭐⭐⭐⭐⭐
4. 深度學習
總體而言,深度學習的相關理論都比較淺顯,基本具備求導、矩陣運算以及基本的概率論就可以了,深度學習難度主要體現在訓練模型方面。深度學習重在實踐嘍,理論方面截止本文成文前還沒有很好、很系統的成果,所以深度學習相關理論算是比較簡單了,有個1個多月就差不多了,剩下的慢慢煉丹吧!
4.1 課程(選一)
- 吳恩達Deep Learning專項 (中檔難度) https://www.coursera.org/specializations/deep-learning
- 李飛飛CS231n (中檔難度) http://cs231n.stanford.edu/
- 機器學習與人工神經網絡設計 (中檔難度)(自動化學院課程,研一春季學期)
4.2 書籍(選一)
-
Deep Learning
- 豆瓣鏈接:https://book.douban.com/subject/26883982/
- 難度係數(5星): ⭐⭐⭐⭐⭐
-
Python深度學習
- 豆瓣鏈接: https://book.douban.com/subject/30293801/
- 難度係數(3星): ⭐⭐⭐
5. 專業領域
研究生期間需要選擇一個方向。我在圖像方面做得比較多,所以下文5.1節參考意義比較大;其它的三個方面不是很瞭解,只是推薦一點道聽途說的資料吧。
5.1 圖像
課程(選一)
- 斯坦福大學 CS231a(中低檔) http://web.stanford.edu/class/cs231a/
- 計算機學院春季學期 圖像分析與理解(博士課程,中檔)
- 自動化學院春季學期 圖像處理 (中檔)
書籍
- 數字圖像處理 岡薩雷斯 (可以當工具書)(必看)
- 豆瓣鏈接:https://book.douban.com/subject/27132967/
- 難度係數(5星):⭐⭐⭐⭐⭐
- 計算機視覺:模型、學習和推理(4選一)
- 豆瓣鏈接:https://book.douban.com/subject/27088947/
- 難度係數(7星):⭐⭐⭐⭐⭐⭐⭐
- 計算機視覺:一種現代化方法(4選一)
- 豆瓣鏈接:https://book.douban.com/subject/10798475/
- 難度係數(7星):⭐⭐⭐⭐⭐⭐⭐
- Multiple View Geometry in Computer Vision(4選一)
- 豆瓣鏈接:https://book.douban.com/subject/1841346/
- 難度係數(8星):⭐⭐⭐⭐⭐⭐⭐⭐
- 計算機視覺中的數學方法(4選一)
- 豆瓣鏈接: https://book.douban.com/subject/3107523/
- 難度係數(7星):⭐⭐⭐⭐⭐⭐⭐
5.2 自然語言處理
我們實驗室沒人做自然語言處理,個人也不是很瞭解,這裏只是根據網上的推薦列出一個課程:
斯坦福大學CS224n:http://web.stanford.edu/class/cs224n/
5.3 視覺SLAM
個人對SLAM不是很瞭解,所以推薦一些其他人認爲的好書(課程暫時沒有,因爲SLAM比較綜合,圖像處理、數字信號處理、部分統計學習算法、矩陣論、李羣與李代數、非線性優化、各種特徵提取與匹配算法啊什麼的都學了,再開始入手吧):
- 本文前面所有的章節介紹的都可以算是視覺SLAM的理論基礎,並且還遠遠不夠不夠,所以前面的都要看完再學SLAM
- 機器人學導論 https://book.douban.com/subject/1831719/
- 李代數和表示論導論 https://book.douban.com/subject/1943992/
- 機器人學中的狀態估計 https://book.douban.com/subject/30383554/
- 視覺SLAM十四講 https://book.douban.com/subject/27028215/
- 概率機器人 https://book.douban.com/subject/27046473/
- 另外ROS機器人軟件框架不可不提:http://www.ros.org/
5.4 強化學習
個人不是很瞭解,推薦一些網傳好書和優秀課程。
課程
- CMU Deep Reinforcement Learning & Control https://www.cmucoursefind.xyz/courses/10-703/s17
- 伯克利 Deep Reinforcement Learning http://rail.eecs.berkeley.edu/deeprlcourse/
- 斯坦福 CS234 Reinforcement Learning http://web.stanford.edu/class/cs234/index.html
書籍
- Reinforcement Learning: An Introduction https://book.douban.com/subject/2866455/
- Algorithms for Reinforcement Learning https://book.douban.com/subject/10220019/
- Dynamic Programming and Optimal Control https://book.douban.com/subject/2299336/
6. 論文
每個人需要根據自己選擇的方向找論文,這裏推薦一些圖像分類、目標檢測和語義分割方面的論文:
- 圖像分類
- Handwritten Digit Recognition with a Back-Propagation Network(LeNet) [paper]
- ImageNet Classification with Deep Convolutional Neural Networks(AlexNet) [paper]
- Deep Sparse Rectifier Neural Networks(ReLU) paper
- Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift(Batch-Norm) [paper]
- Dropout: A Simple Way to Prevent Neural Networks from Overfitting(Dropout) [paper]
- Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition(SPP) [paper]
- Very Deep Convolutional Networks For Large-Scale Image Recognition(VGG) [paper]
- Network In Network
- Highway Networks
- Going Deeper with Convolutions(GoogleNet)
- Rethinking the Inception Architecture for Computer Vision(Inception v3) [paper]
- PolyNet: A Pursuit of Structural Diversity in Very Deep Networks(PolyNet) [paper]
- PVANET: Deep but Lightweight Neural Networks for Real-time Object Detection(PVANet) [paper]
- Deep Residual Learning for Image Recognition(ResNet)
- Identity Mappings in Deep Residual Networks
- Wide Residual Networks(Wide-ResNet)
- Aggregated Residual Transformations for Deep Neural Networks
- Xception: Deep Learning with Depthwise Separable Convolutions(Xception) [paper]
- Densely Connected Convolutional Networks(DenseNet)
- Squeeze-and-Excitation Networks(SENet) [paper]
- MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications(MobileNet) [paper]
- ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices(ShuffleNet) [paper]
- 目標檢測
- Rich feature hierarchies for accurate object detection and semantic segmentation(RCNN)
- Fast R-CNN
- Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
- DenseBox: Unifying Landmark Localization with End to End Object Detection(DenseBox) [paper]
- You Only Look Once: Unified, Real-Time Object Detection(YOLO) [paper]
- SSD: Single Shot MultiBox Detector(SSD) [paper]
- DSSD : Deconvolutional Single Shot Detector(DSSD) [paper]
- R-FCN: Object Detection via Region-based Fully Convolutional Networks(RFCN) [paper]
- Feature Pyramid Networks for Object Detection(FPN) [paper]
- Mask R-CNN [paper]
- Focal Loss for Dense Object Detection(RetinaNet) [paper]
- RON: Reverse Connection with Objectness Prior Networks for Object Detection(RON) [paper]
- Deformable Convolutional Networks [paper]
- Single-Shot Refinement Neural Network for Object Detection [paper]
- Light-Head R-CNN: In Defense of Two-Stage Object Detector [paper]
- 語義分割
- Fully Convolutional Networks for Semantic Segmentation(FCN)
- Learning Deconvolution Network for Semantic Segmentation(Deconv)
- Efficient Inference in Fully Connected CRFs with Gaussian Edge Potentials
- Conditional Random Fields as Recurrent Neural Networks(CRFasRNN)
- Semantic Image Segmentation via Deep Parsing Network(DPN)
- Efficient Piecewise Training of Deep Structured Models for Semantic Segmentation
- Exploring Context with Deep Structured models for Semantic Segmentation
- Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs(Deeplab v1)
- DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution,and Fully Connected CRFs(Deeplab v2)
- RefineNet: Multi-Path Refinement Networks for High-Resolution Semantic Segmentation(RefineNet)
- Understanding Convolution for Semantic Segmentation(DUC)
- Wider or Deeper: Revisiting the ResNet Model for Visual Recognition
- Not All Pixels Are Equal: Difficulty-aware Semantic Segmentation via Deep Layer Cascade
- Loss Max-Pooling for Semantic Image Segmentation
- Pyramid Scene Parsing Network(PSPNet)
- Large Kernel Matters – Improve Semantic Segmentation by Global Convolutional Network(GCN)
- Rethinking Atrous Convolution for Semantic Image Segmentation(Deeplab v3)
- Global-residual and Local-boundary Refinement Networks for Rectifying Scene Parsing Predictions
- Stacked Deconvolutional Network for Semantic Segmentation(SDN)
- Learning a Discriminative Feature Network for Semantic Segmentation(DFN)[paper]
- DenseASPP for Semantic Segmentation in Street Scenes
- Context Encoding for Semantic Segmentation
- Dynamic-structured Semantic Propagation Network
- The Lovasz-Softmax loss: A tractable surrogate for the optimization of the intersection-over-union measure in neural networks
- Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation
7. 總結
總體而言,如果不是需要做很深入的基礎研究的話,無論是統計學習還是深度學習,難度都不是很大,只要具備理工科碩、博士研究生水平的數學基礎就可以無障礙學習。博士的話可以在數學基礎方面深入學習,碩士時間有限,視自身能力決定是否去深入那些晦澀、基礎的大部頭書籍。(本文推薦的課程難度都不會很大,碩博士都可以學的)
最後,祝大家學習快樂!