普通程序員如何正確學(xué)習(xí)人工智能方向的知識?


  普通程序員如何正確學(xué)習(xí)人工智能方向的知識?

 普通程序員如何正確學(xué)習(xí)人工智能方向的知識?

  “互聯(lián)網(wǎng)+”已經(jīng)發(fā)展的差不多了,應(yīng)有盡有,空間不大,下個(gè)浪潮會(huì)不會(huì)是“AI+”?那么作為一個(gè)普通程序員,如何提前向人工智能(AI)靠攏?

 普通程序員如何正確學(xué)習(xí)人工智能方向的知識?

  知乎用戶回答知乎用戶

 普通程序員如何正確學(xué)習(xí)人工智能方向的知識?

  1556人贊同了該回答

  說說我學(xué)習(xí)深度學(xué)習(xí)的經(jīng)歷吧,從開始學(xué)習(xí)到現(xiàn)在大概有4個(gè)月,只能算新手,剛好可以回答新手問題。

  先說編程:自認(rèn)會(huì)用C++, 熟悉Python

  英語水平:中等,能很快讀懂英文科學(xué)文獻(xiàn)

  最開始對人工智能/深度學(xué)習(xí)感興趣是因?yàn)橄胗盟囈辉囎匀徽Z言生成,后來想到一個(gè)物理方面的題目,預(yù)計(jì)可以用深度學(xué)習(xí)技術(shù)解決,開始接觸深度神經(jīng)網(wǎng)絡(luò)。記錄一下學(xué)習(xí)歷程,

  1. 安裝 Tensorflow(google 開源的深度學(xué)習(xí)程序), 嘗試?yán)锩孀詈唵蔚睦覯NIST 獲得激勵(lì)。

  2. 之后嘗試通過讀書(看視頻)理解最簡單的全連接神經(jīng)網(wǎng)絡(luò)

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

  (1)神經(jīng)網(wǎng)絡(luò)中輸入層,隱藏層,輸出層之間矩陣乘積的維度變化。

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

  (3)激勵(lì)函數(shù)是什么,有什么作用,有哪些常用的激勵(lì)函數(shù)

  (4)誤差如何向后傳遞,網(wǎng)絡(luò)如何通過最小化誤差函數(shù)更新,有哪些常用的優(yōu)化方法

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

  Neural networks and deep learning

  (5) 如何對權(quán)重正規(guī)化,L1, L2, BatchNormalization, (這些在以后真正應(yīng)用的時(shí)候再看)

  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. 選擇一種比較比較底層的神經(jīng)網(wǎng)絡(luò)開源庫,tensorflow 或 theano,

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

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

  (3) 重復(fù)敲代碼,重復(fù)實(shí)現(xiàn)例子程序

  4. 開始理解各種不同神經(jīng)網(wǎng)絡(luò)架構(gòu)所能處理的問題

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

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

  (3) 增強(qiáng)學(xué)習(xí),玩游戲 :)

  5. 嘗試各種開源的有意思的神經(jīng)網(wǎng)絡(luò)項(xiàng)目,新手可以從下面這個(gè)列表開始

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

  (2) Neural Style In tensorflow.

  6. 如果能**,注冊 *******, ******** 賬號,follow 那些文章中經(jīng)常出現(xiàn)的大牛的名字。他們每天提供很多新動(dòng)向及最新技術(shù),很多時(shí)候有很 Fancy的應(yīng)用。試試從這個(gè)大牛follow的人開始follow

  https://*******.com/karpathy

  當(dāng)你對這些都很熟悉的時(shí)候,開始閱讀艱深的文獻(xiàn):

  1. CNN 的原始文獻(xiàn)

  2. RNN 和 LSTM 的原始文獻(xiàn)

  3. Reinforcement Learning 的原始文獻(xiàn)

  4. Google DeepMind 發(fā)表在 Nature 上的幾篇經(jīng)典

  最后推薦一個(gè)高級點(diǎn)的庫: Keras Documentation

  雖然這個(gè)庫還在發(fā)展階段,里面仍有不少bug,但前途不可限量,可以很容易實(shí)現(xiàn)你之前讀文章時(shí)候見到的那些復(fù)雜的構(gòu)架。作為例子,這里有個(gè)教程:

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

  這些學(xué)習(xí)歷程中遇到的資料都記錄在了我的個(gè)人note里,希望大家共勉:

  http://web-docs.gsi.de/~lpang/

  最后強(qiáng)調(diào)一個(gè)最最重要的事情:要有自己的想法,有將這種新技術(shù)用到自己項(xiàng)目中的強(qiáng)烈愿望,從開始就要Coding,不斷嘗試才能不斷進(jìn)步。

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

  說實(shí)話,作為一個(gè)其他行業(yè)(物理,工程,化學(xué),醫(yī)學(xué),農(nóng)業(yè),衛(wèi)星地圖識別,網(wǎng)絡(luò)安全領(lǐng)域,社會(huì)科學(xué))的普通程序員,在本行業(yè)有比較深的理論和實(shí)驗(yàn)背景,能接觸到海量數(shù)據(jù)(無論是傳感器數(shù)據(jù),互聯(lián)網(wǎng)數(shù)據(jù)還是蒙特卡洛模擬數(shù)據(jù)),想做處一些創(chuàng)新***叉性的工作,這一輪人工智能的風(fēng)絕對是要跟的。

  作為一個(gè)計(jì)算機(jī)專業(yè)的人,可能覺得機(jī)器學(xué)習(xí),人工智能,深度學(xué)習(xí)已經(jīng)炒的過熱了。但是對于其他領(lǐng)域,可能大部分人還沒有想到把最基本的機(jī)器學(xué)習(xí)算法如:PCA,SVM,k-means...運(yùn)用到本行業(yè)積累的大數(shù)據(jù)上, 更不要說最近的深度學(xué)習(xí)。

  作為其他行業(yè)的普通程序員(除了數(shù)學(xué)與理論物理),我們不要指望從理論上徹底解決深度學(xué)習(xí)現(xiàn)存的問題。我們的優(yōu)勢不在這里,我們的優(yōu)勢是計(jì)算機(jī)專業(yè)的人所沒有的專業(yè)知識,行業(yè)大數(shù)據(jù)。我們需要做的是把機(jī)器學(xué)習(xí),深度神經(jīng)網(wǎng)絡(luò)當(dāng)作工具,知道它們能做什么,如何去做。參考Andrew Ng 的機(jī)器學(xué)習(xí)筆記,

  Machine Learning - complete course notes

  舉幾個(gè)簡單的例子:

  1. 使用深度學(xué)習(xí)中生成風(fēng)格化圖片的技術(shù),制備具有特定功能的抗癌藥物

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

  2. 使用反常探測,尋找網(wǎng)絡(luò)攻擊 Cyber-attacks prediction

  3. 對于國家來說,更加聰明的互聯(lián)網(wǎng)關(guān)鍵詞過濾

  4. 自動(dòng)探測衛(wèi)星地圖上道路,建筑,車輛,河流。。。

  5. 環(huán)境科學(xué)中尋找霧霾與眾多可能因素的非線性關(guān)聯(lián)

  我們用卷積神經(jīng)網(wǎng)絡(luò)來區(qū)分量子色動(dòng)力學(xué)相變是crossover還是一階相變。(1年之后回來修改)回答這個(gè)問題的時(shí)候,文章剛剛寫好,最近文章已經(jīng)在《自然-通訊》Nature Communications 雜志發(fā)表,網(wǎng)上公開鏈接是 An equation-of-state-meter of quantum chromodynamics transition from deep learning , 希望能給堅(jiān)持在這個(gè)方向,做 AI + X 交叉學(xué)科應(yīng)用的同學(xué)帶來精神上的激勵(lì)。

  talk: http://starmeetings.physics.ucla.edu/sites/default/files/pang.pdf

  編輯于 2021-01-23 13:55:10

  子實(shí)

  有趣的靈魂滿街都是,完美的肉體萬中無一

  6449人贊同了該回答

  本人碼農(nóng),從六月開始正式接觸機(jī)器學(xué)習(xí)(其實(shí)五年前的本科畢設(shè)就是在生物信息領(lǐng)域應(yīng)用神經(jīng)網(wǎng)絡(luò)的項(xiàng)目,但是非常淺薄),深吸一口氣,先要聲明“人之患在好為人師”,我用的步驟只是適合我,下面的內(nèi)容僅供參考。

  第一步:復(fù)習(xí)線性代數(shù)。(學(xué)渣的線代忘了好多-_-||)

  懶得看書就直接用了著名的——麻省理工公開課:線性代數(shù),深入淺出效果拔群,以后會(huì)用到的SVD、希爾伯特空間等都有介紹;

  廣告:邊看邊總結(jié)了一套筆記 GitHub - zlotus/notes-linear-algebra: 線性代數(shù)筆記。

  第二步:入門機(jī)器學(xué)習(xí)算法。

  還是因?yàn)楸容^懶,也就直接用了著名的——斯坦福大學(xué)公開課 :機(jī)器學(xué)習(xí)課程,吳恩達(dá)教授的老版cs229的視頻,講的非常細(xì)(算法的目標(biāo)->數(shù)學(xué)推演->偽代碼)。這套教程唯一的缺點(diǎn)在于沒有介紹最近大火的神經(jīng)網(wǎng)絡(luò),但其實(shí)這也算是優(yōu)點(diǎn),讓我明白了算法都有各自的應(yīng)用領(lǐng)域,并不是所有問題都需要用神經(jīng)網(wǎng)絡(luò)來解決;

  多說一點(diǎn),這個(gè)課程里詳細(xì)介紹的內(nèi)容有:一般線性模型、高斯系列模型、SVM理論及實(shí)現(xiàn)、聚類算法以及EM算法的各種相關(guān)應(yīng)用、PCA/ICA、學(xué)習(xí)理論、馬爾可夫系列模型。課堂筆記在:CS 229: Machine Learning (Course handouts),同樣非常詳細(xì)。

  廣告:邊看邊總結(jié)了一套筆記 GitHub - zlotus/notes-LSJU-machine-learning: 機(jī)器學(xué)習(xí)筆記

  第三步:嘗試用代碼實(shí)現(xiàn)算法。

  依然因?yàn)楸容^懶,繼續(xù)直接使用了著名的——機(jī)器學(xué)習(xí) | Coursera ,還是吳恩達(dá)教授的課程,只不過這個(gè)是極簡版的cs229,幾乎就是教怎么在matlab里快速實(shí)現(xiàn)一個(gè)模型(這套教程里有神經(jīng)網(wǎng)絡(luò)基本概念及實(shí)現(xiàn))。這套課程的缺點(diǎn)是難度比較低,推導(dǎo)過程非常簡略,但是這也是它的優(yōu)點(diǎn)——讓我專注于把理論轉(zhuǎn)化成代碼。

  廣告:作業(yè)參考 GitHub - zlotus/Coursera_Machine_Learning_Exercises: Machine Learning by Andrew Ng from Coursera

  第四步:自己實(shí)現(xiàn)功能完整的模型——進(jìn)行中。

  還是因?yàn)楸容^懶,搜到了cs231n的課程視頻 CS231n Winter 2016 - YouTube ,李飛飛教授的課,主講還有Andrej Karpathy和Justin Johnson,主要介紹卷積神經(jīng)網(wǎng)絡(luò)在圖像識別/機(jī)器視覺領(lǐng)域的應(yīng)用(前面神經(jīng)網(wǎng)絡(luò)的代碼沒寫夠?這門課包你嗨到爆~到處都是從零手寫~)。這門課程的作業(yè)就更貼心了,直接用Jupyter Notebook布置的,可以本地運(yùn)行并自己檢查錯(cuò)誤。主要使用Python以及Python系列的科學(xué)計(jì)算庫(Scipy/Numpy/Matplotlib)。課堂筆記的翻譯可以參考 智能單元 - 知乎專欄,主要由知友杜客翻譯,寫的非常好~

  在多說一點(diǎn),這門課對程序員來說比較走心,因?yàn)檫@個(gè)不像上一步中用matlab實(shí)現(xiàn)的作業(yè)那樣偏向算法和模型,這門課用Python實(shí)現(xiàn)的模型同時(shí)注重軟件工程,包括常見的封裝layer的forward/backward、自定義組合layer、如何將layer組成網(wǎng)絡(luò)、如何在網(wǎng)絡(luò)中集成batch-normalization及dropout等功能、如何在復(fù)雜模型下做梯度檢查等等;最后一個(gè)作業(yè)中還有手動(dòng)實(shí)現(xiàn)RNN及其**LSTM、編寫有助于調(diào)試的CNN可視化功能、Google的DeepDream等等。(做完作業(yè)基本就可以看懂現(xiàn)在流行的各種圖片風(fēng)格變換程序了,如 cysmith/neural-style-tf)另外,這門課的作業(yè)實(shí)現(xiàn)非常推崇computational graph,不知道是不是我的幻覺……要注意的是講師A.K的語速奇快無比,好在YouTube有自動(dòng)生成解說詞的功能,準(zhǔn)確率還不錯(cuò),可以當(dāng)字幕看。

  廣告:作業(yè)參考 GitHub - zlotus/cs231n: CS231n Convolutional Neural Networks for Visual Recognition (winter 2016) (我的在作業(yè)的notebook上加了一些推導(dǎo)演算哦~可以用來參考:D)

  因?yàn)樽罱诸^有論文要撕,時(shí)間比較緊,第四步做完就先告一段落。后面打算做繼續(xù)業(yè)界傳奇Geoffrey Hinton教授的Neural Networks for Machine Learning | Coursera,再看看NLP的課程 Stanford University CS224d: Deep Learning for Natural Language Processing,先把基礎(chǔ)補(bǔ)完,然后在東瞅瞅西逛逛看看有什么好玩的……

  PS:一直沒提諸如TensorFlow之類的神器,早就裝了一個(gè)(可以直接在conda中為Tensorflow新建一個(gè)env,然后再裝上Jupyter、sklearn等常用的庫,把這些在學(xué)習(xí)和實(shí)踐ML時(shí)所用到的庫都放在一個(gè)環(huán)境下管理,會(huì)方便很多),然而一直沒時(shí)間學(xué)習(xí)使用,還是打算先忍著把基礎(chǔ)部分看完,抖M總是喜歡把最好的留在最后一個(gè)人偷偷享受2333333(手動(dòng)奸笑

  PS**2:關(guān)于用到的系統(tǒng)性知識,主要有:

  線性代數(shù),非常重要,模型計(jì)算全靠它~一定要復(fù)習(xí)扎實(shí),如果平常不用可能忘的比較多;

  高數(shù)+概率,這倆只要掌握基礎(chǔ)就行了,比如積分和求導(dǎo)、各種分布、參數(shù)估計(jì)等等。(評論中有知友提到概率與數(shù)理統(tǒng)計(jì)的重要性,我舉四肢贊成,因?yàn)閏s229中幾乎所有算法的推演都是從參數(shù)估計(jì)及其在概率模型中的意義起手的,參數(shù)的更新規(guī)則具有概率上的可解釋性。對于算法的設(shè)計(jì)和改進(jìn)工作,概統(tǒng)是核心課程,沒有之一。答主這里想要說的是,當(dāng)拿到現(xiàn)成的算法時(shí),僅需要概率基礎(chǔ)知識就能看懂,然后需要比較多的線代知識才能讓模型高效的跑起來。比如最近做卷積的作業(yè), 我手寫的比作業(yè)里給出的帶各種trick的fast函數(shù)慢幾個(gè)數(shù)量級,作業(yè)還安慰我不要在意效率,豈可修!)

  需要用到的編程知識也就是Matlab和Numpy了吧,Matlab是可以現(xiàn)學(xué)現(xiàn)賣的;至于Python,就看題主想用來做什么了,如果就是用來做機(jī)器學(xué)習(xí),完全可以一天入門,如果想要做更多好玩的事,一天不行那就兩天。(貼一個(gè)Python/Numpy的簡要教程:Python Numpy Tutorial,是cs231n的課堂福利。)

  我感覺機(jī)器學(xué)習(xí)的先修就這么點(diǎn),記得Adobe的馮東大神也說過機(jī)器學(xué)習(xí)簡直是21世界的黑科技——因?yàn)槔碚摲浅:唵蔚切Ч@人的好。

  ====

  既然提到好玩的,墻裂推薦 Kaggle: Your Home for Data Science ,引用維基上的介紹:

  Kaggle是一個(gè)數(shù)據(jù)建模和數(shù)據(jù)分析競賽平臺。企業(yè)和研究者可在其上發(fā)布數(shù)據(jù),統(tǒng)計(jì)學(xué)者和數(shù)據(jù)挖掘?qū)<铱稍谄渖线M(jìn)行競賽以產(chǎn)生最好的模型。這一眾包模式依賴于這一事實(shí),即有眾多策略可以用于解決幾乎所有預(yù)測建模的問題,而研究者不可能在一開始就了解什么方法對于特定問題是最為有效的。Kaggle的目標(biāo)則是試圖通過眾包的形式來解決這一難題,進(jìn)而使數(shù)據(jù)科學(xué)成為一場運(yùn)動(dòng)。

  編輯于 2016/12/5 15:09:11

  知乎用戶

  1226人贊同了該回答

  排名較高的幾個(gè)回答有一些問題:1.起點(diǎn)較高,不適合題主所問的普通程序員;2.資源很多,但是沒有主次之分,全部學(xué)習(xí)的話時(shí)間久,難度曲線也高低不平;3.缺乏對AI領(lǐng)域的介紹,AI并不僅僅是機(jī)器學(xué)習(xí)。本人也算是一名普通程序員,也剛轉(zhuǎn)入AI領(lǐng)域,因此結(jié)合自身經(jīng)驗(yàn),想回答這個(gè)問題。我的回答有以下特色:較為簡單,介紹學(xué)習(xí)資源不多,但有主次之分。

  一. 本文的目的

  本文的目的是給出一個(gè)簡單的,平滑的,易于實(shí)現(xiàn)的學(xué)習(xí)方法,幫助“普通”程序員踏入AI領(lǐng)域這個(gè)門。這里,我對普通程序員的定義是:擁有大學(xué)本科知識;平時(shí)工作較忙;自己能獲取的數(shù)據(jù)有限。因此,本文更像是一篇 “from the scratch” 的AI入門教程。

  二. AI領(lǐng)域的特點(diǎn)

  AI,也就是人工智能,并不僅僅包括機(jī)器學(xué)習(xí)。曾經(jīng),符號與邏輯被認(rèn)為是人工智能實(shí)現(xiàn)的關(guān)鍵,而如今則是基于統(tǒng)計(jì)的機(jī)器學(xué)習(xí)占據(jù)了主導(dǎo)地位。最近火熱的深度學(xué)習(xí)正是機(jī)器學(xué)習(xí)中的一個(gè)子項(xiàng)。目前可以說,學(xué)習(xí)AI主要的是學(xué)習(xí)機(jī)器學(xué)習(xí)。但是,人工智能并不等同于機(jī)器學(xué)習(xí),這點(diǎn)在進(jìn)入這個(gè)領(lǐng)域時(shí)一定要認(rèn)識清楚。關(guān)于AI領(lǐng)域的發(fā)展歷史介紹推薦看周老師寫的《機(jī)器學(xué)習(xí)簡介》。下面一個(gè)問題是:AI的門好跨么?其實(shí)很不好跨。我們以機(jī)器學(xué)習(xí)為例。在學(xué)習(xí)過程中,你會(huì)面對大量復(fù)雜的公式,在實(shí)際項(xiàng)目中會(huì)面對數(shù)據(jù)的缺乏,以及艱辛的調(diào)參等。如果僅僅是因?yàn)橛X得這個(gè)方向未來會(huì)“火”的話,那么這些困難會(huì)容易讓人放棄??紤]到普通程序員的特點(diǎn),而要學(xué)習(xí)如此困難的學(xué)科,是否就是沒有門路的?答案是否定的。只要制定合適的學(xué)習(xí)方法即可。

  三. 學(xué)習(xí)方法

  學(xué)習(xí)方法的設(shè)定簡單說就是回答以下幾個(gè)問題:我要學(xué)的是什么?我怎樣學(xué)習(xí)?我如何去學(xué)習(xí)?這三個(gè)問題概括說就是:學(xué)習(xí)目標(biāo),學(xué)習(xí)方針與學(xué)習(xí)計(jì)劃。學(xué)習(xí)目標(biāo)比較清楚,就是踏入AI領(lǐng)域這個(gè)門。這個(gè)目標(biāo)不大,因此實(shí)現(xiàn)起來也較為容易?!斑^大的目標(biāo)時(shí)就是為了你日后放棄它時(shí)找到了足夠的理由”。學(xué)習(xí)方針可以總結(jié)為 “興趣為先,踐學(xué)結(jié)合”。簡單說就是先培養(yǎng)興趣,然后學(xué)習(xí)中把實(shí)踐穿**來,螺旋式提高。這種方式學(xué)習(xí)效果好,而且不容易讓人放棄。有了學(xué)習(xí)方針以后,就可以制定學(xué)習(xí)計(jì)劃,也稱為學(xué)習(xí)路線。下面就是學(xué)習(xí)路線的介紹。

  四. 學(xué)習(xí)路線

  我推薦的學(xué)習(xí)路線是這樣的,如下圖:

  這個(gè)學(xué)習(xí)路線是這樣設(shè)計(jì)的:首先了解這個(gè)領(lǐng)域,建立起全面的視野,培養(yǎng)起充足的興趣,然后開始學(xué)習(xí)機(jī)器學(xué)習(xí)的基礎(chǔ),這里選擇一門由淺入深的課程來學(xué)習(xí),課程最好有足夠的實(shí)驗(yàn)?zāi)軌蜻M(jìn)行實(shí)戰(zhàn)?;A(chǔ)打下后,對機(jī)器學(xué)習(xí)已經(jīng)有了充足的了解,可以用機(jī)器學(xué)習(xí)來解決一個(gè)實(shí)際的問題。這時(shí)還是可以把機(jī)器學(xué)習(xí)方法當(dāng)作一個(gè)黑盒子來處理的。實(shí)戰(zhàn)經(jīng)驗(yàn)積累以后,可以考慮繼續(xù)進(jìn)行學(xué)習(xí)。這時(shí)候有兩個(gè)選擇,深度學(xué)習(xí)或者繼續(xù)機(jī)器學(xué)習(xí)。深度學(xué)習(xí)是目前最火熱的機(jī)器學(xué)習(xí)方向,其中一些方法已經(jīng)跟傳統(tǒng)的機(jī)器學(xué)習(xí)不太一樣,因此可以單獨(dú)學(xué)習(xí)。除了深度學(xué)習(xí)以外,機(jī)器學(xué)習(xí)還包括統(tǒng)計(jì)學(xué)習(xí),集成學(xué)習(xí)等實(shí)用方法。如果條件足夠,可以同時(shí)學(xué)習(xí)兩者,一些規(guī)律對兩者是共通的。學(xué)習(xí)完后,你已經(jīng)具備了較強(qiáng)的知識儲備,可以進(jìn)入較難的實(shí)戰(zhàn)。這時(shí)候有兩個(gè)選擇,工業(yè)界的可以選擇看開源項(xiàng)目,以改代碼為目的來讀代碼;學(xué)術(shù)界的可以看特定領(lǐng)域的論文,為解決問題而想發(fā)論文。無論哪者,都需要知識過硬,以及較強(qiáng)的編碼能力,因此很能考察和鍛煉水平。經(jīng)過這個(gè)階段以后,可以說是踏入AI領(lǐng)域的門了?!皫煾殿I(lǐng)進(jìn)門,修行在個(gè)人”。之后的路就要自己走了。

  下面是關(guān)于每個(gè)階段的具體介紹:

  0. 領(lǐng)域了解:在學(xué)習(xí)任何一門知識之前,首先第一步就是了解這個(gè)知識是什么?它能做什么事?它的價(jià)值在什么地方?如果不理解這些的話,那么學(xué)習(xí)本身就是一個(gè)沒有方向的舟,不知道駛向何處,也極易有沉船的風(fēng)險(xiǎn)。了解這些問題后,你才能培養(yǎng)出興趣,興趣是最好的引**,學(xué)習(xí)的動(dòng)力與持久力才能讓你應(yīng)付接下來的若干個(gè)階段。關(guān)于機(jī)器學(xué)習(xí)是什么,能做什么,它與深度學(xué)習(xí)以及人工智能的關(guān)系,可以看我寫的博客 從機(jī)器學(xué)習(xí)談起。

  1. 準(zhǔn)備工作:如果你離校過久,或者覺得基礎(chǔ)不牢,最好事先做一下準(zhǔn)備復(fù)習(xí)工作?!肮び破涫?,必先利其器”。以下的準(zhǔn)備工作不多,但足以應(yīng)付后面階段的學(xué)習(xí)。

  數(shù)學(xué):復(fù)習(xí)以下基本知識。線性代數(shù):矩陣乘法;高數(shù):求導(dǎo);概率論:條件與后驗(yàn)概率。其他的一些知識可以在后面的學(xué)習(xí)的過程中按需再補(bǔ);

  英文:常備一個(gè)在線英文詞典,例如愛詞霸,能夠不吃力的看一些英文的資料網(wǎng)頁;

  **:可以隨時(shí)隨地上Google,這是一個(gè)很重要的工具。不是說百度查的不能看,而是很多情況下Google搜出來的資料比百度搜的幾十頁的資料還管用,尤其是在查英文關(guān)鍵字時(shí)。節(jié)省時(shí)間可是很重要的學(xué)習(xí)效率提升;

  2. 機(jī)器學(xué)習(xí):機(jī)器學(xué)習(xí)的第一門課程首推Andrew Ng的機(jī)器學(xué)習(xí) (Machine Learning - Stanford University | Coursera)。這門課程有以下特點(diǎn):難度適中,同時(shí)有足夠的實(shí)戰(zhàn)例子,非常適合第一次學(xué)習(xí)的人。在 @子實(shí) 的回答下首推了cs229 (斯坦福大學(xué)公開課 :機(jī)器學(xué)習(xí)課程) 這門課程,但我這里不推薦,為什么,原因有以下:

  時(shí)間:cs229 的時(shí)間太早,一些知識已經(jīng)跟不上當(dāng)今的發(fā)展,目前最為火熱的神經(jīng)網(wǎng)絡(luò)一筆帶過。而Cousera上神經(jīng)網(wǎng)絡(luò)可是用了兩個(gè)課時(shí)去講的!而且非常詳細(xì);

  教學(xué):Ng在cs229 時(shí)候的教學(xué)稍顯青澀,可能是面對網(wǎng)絡(luò)教學(xué)的原因。有很多問題其實(shí)他都沒有講清楚,而且下面的人的提問其實(shí)也很煩躁,你往往不關(guān)心那些人的問題。這點(diǎn)在Coursera上就明顯得到了改善,你會(huì)發(fā)現(xiàn)Ng的教學(xué)水平大幅度改善了,他會(huì)對你循循善誘,推心置腹,由淺入深的教學(xué),在碰到你不明白的單詞術(shù)語時(shí)也會(huì)叫你不要擔(dān)心,更重要的,推導(dǎo)與圖表不要太完善,非常細(xì)致清晰,這點(diǎn)真是強(qiáng)力推薦;

  字幕:cs229 的字幕質(zhì)量比Coursera上的差了一截。Coursera上中文字幕翻譯經(jīng)過了多人把關(guān),質(zhì)量很有保證;

  作業(yè):cs229 沒有作業(yè),雖然你可以做一些,但不會(huì)有人看。這點(diǎn)遠(yuǎn)不如Coursera上每周有deadline的那種作業(yè),而且每期作業(yè)提交上去都有打分。更重要的是,每期作業(yè)都有實(shí)際的例子,讓你手把手練習(xí),而且能看到自己的成果,成就感滿滿!

  3. 實(shí)踐做項(xiàng)目:學(xué)習(xí)完了基礎(chǔ)課程,你對機(jī)器學(xué)習(xí)就有了初步了解。現(xiàn)在使用它們是沒有問題的,你可以把機(jī)器學(xué)習(xí)算法當(dāng)作黑盒子,放進(jìn)去數(shù)據(jù),就會(huì)有結(jié)果。在實(shí)戰(zhàn)中你更需要去關(guān)心如何獲取數(shù)據(jù),以及怎么調(diào)參等。如果有時(shí)間,自己動(dòng)手做一個(gè)簡單的實(shí)踐項(xiàng)目是最好的。這里需要選擇一個(gè)應(yīng)用方向,是圖像(計(jì)算機(jī)視覺),音頻(語音識別),還是文本(自然語言處理)。這里推薦選擇圖像領(lǐng)域,這里面的開源項(xiàng)目較多,入門也較簡單,可以使用OpenCV做開發(fā),里面已經(jīng)實(shí)現(xiàn)好了神經(jīng)網(wǎng)絡(luò),SVM等機(jī)器學(xué)習(xí)算法。項(xiàng)目做好后,可以開源到到 Github 上面,然后不斷完善它。實(shí)戰(zhàn)項(xiàng)目做完后,你可以繼續(xù)進(jìn)一步深入學(xué)習(xí),這時(shí)候有兩個(gè)選擇,深度學(xué)習(xí)和繼續(xù)機(jī)器學(xué)習(xí);

  4. 深度學(xué)習(xí):深度學(xué)習(xí)是目前最火熱的研究方向。有以下特點(diǎn):知識更新快,較為零碎,沒有系統(tǒng)講解的書。因此學(xué)習(xí)的資源也相對零散,下面是一些資源介紹。其中不推薦的部分并不代表不好,而是在這個(gè)初學(xué)階段不合適:

  推薦,UFLDL: 很詳盡的推導(dǎo),有翻譯,且翻譯質(zhì)量很高;

  推薦,Deep learning (paper):論文,高屋建瓴,一覽眾山小;

  推薦,Neural networks and deep learning:由淺入深;

  推薦,Recurrent Neural Networks: RNN推導(dǎo)初步學(xué)習(xí)的最佳教程;

  不推薦,Neural Networks for Machine Learning - University of Toronto | Coursera:太難;

  不推薦,Deep Learning (book):面面俱到,但缺乏深入;

  不推薦,CS231n:翻譯與字幕問題;

  5. 繼續(xù)機(jī)器學(xué)習(xí):傳統(tǒng)的機(jī)器學(xué)習(xí)有如下特點(diǎn),知識系統(tǒng)化,有相對經(jīng)典的書。其中統(tǒng)計(jì)學(xué)習(xí)(代表SVM)與集成學(xué)習(xí)(代表adaboost)是在實(shí)踐中使用非常多的技術(shù)。下面是相關(guān)資源:

  推薦,機(jī)器學(xué)習(xí):如果是在以前,機(jī)器學(xué)習(xí)方面的經(jīng)典教材首推PRML,但現(xiàn)在周老師的書出來以后,就不再是這樣了。首先推薦讀周老師的書。這本書有一個(gè)特點(diǎn),那就是再難的道理也能用淺顯精煉的語言表達(dá)出來。正如周老師的名言:“體現(xiàn)你水平的地方是把難的東西講容易了,而不是把容易的東西講難,想把一個(gè)東西講難實(shí)在太簡單”;

  不推薦,Pattern Recognition And Machine Learning:當(dāng)前階段不推薦。PRML是以貝葉斯的觀點(diǎn)看待很多機(jī)器學(xué)習(xí)方法,這也是它的一大特色。但對于初學(xué)者來說,這種觀點(diǎn)其實(shí)并無必要。而且此書沒有中文翻譯,當(dāng)前階段硬啃很容易放棄;

  6.開源項(xiàng)目:當(dāng)知識儲備較為充足時(shí),學(xué)習(xí)可以再次轉(zhuǎn)入實(shí)踐階段。這時(shí)候的實(shí)踐仍然可以分兩步走,學(xué)習(xí)經(jīng)典的開源項(xiàng)目或者發(fā)表高質(zhì)量的論文。開源項(xiàng)目的學(xué)習(xí)應(yīng)該以盡量以優(yōu)化為目的,單純?yōu)樽x代碼而學(xué)習(xí)效果往往不太好。好的開源項(xiàng)目都可以在Github 里搜索。這里以深度學(xué)習(xí)為例。深度學(xué)習(xí)的開源優(yōu)秀庫有很多,例如torch,theano等等,這里列舉其中的兩個(gè):

  推薦,DeepLearnToolbox:較早的一個(gè)深度學(xué)習(xí)庫,用matlab語言撰寫,較為適合從剛學(xué)習(xí)的課程轉(zhuǎn)入學(xué)習(xí)

  推薦,tensorflow:Google的開源庫,時(shí)至今日,已經(jīng)有40000多個(gè)star,非常驚人。

  7.會(huì)議論文:一般較好的課程都會(huì)推薦你一些論文。一些著名的技術(shù)與方法往往誕生于一些重要的會(huì)議。因此,看往年的會(huì)議論文是深入學(xué)習(xí)的方法。在這個(gè)階段,如果是在校學(xué)生,可以選擇某個(gè)課題,以發(fā)論文為目的來學(xué)習(xí)研究。一般來說,論文是工作的產(chǎn)物。有時(shí)候一篇基于實(shí)驗(yàn)的論文往往需要你寫很多代碼,利用一些開源項(xiàng)目。因此開源項(xiàng)目的學(xué)習(xí)與讀會(huì)議論文的工作兩者之間是有相關(guān)的。兩者可以同時(shí)進(jìn)行學(xué)習(xí)。關(guān)于在哪里看論文,可以看一下CCF推薦排名,了解一下這個(gè)領(lǐng)域里有哪些優(yōu)秀的會(huì)議。下面介紹兩個(gè)圖像與機(jī)器學(xué)習(xí)領(lǐng)域的著名頂級會(huì)議:

  CVPR:與另兩個(gè)會(huì)議ICCV和ECCV合稱計(jì)算機(jī)視覺領(lǐng)域的三大會(huì)。

  Conference on Neural Information Processing Systems:簡稱NIPS,許多重要的工作發(fā)表在這上面,例如關(guān)于CNN的一篇重要論文就是發(fā)表在上面。

  8.自由學(xué)習(xí):到這里了,可以說是進(jìn)入這個(gè)門了。下面可以依據(jù)興趣來自由學(xué)習(xí)。前階段不推薦的學(xué)習(xí)資源也可隨意學(xué)習(xí),下面是點(diǎn)評。

  cs229 (斯坦福大學(xué)公開課 :機(jī)器學(xué)習(xí)課程):Ng寫的講義很不錯(cuò),其中關(guān)于SVM的推導(dǎo)部分很清晰,想學(xué)習(xí)SVM推薦;

  Neural networks (Neural Networks for Machine Learning - University of Toronto | Coursera ):大牛的視角跟人就是不一樣,看看Hinton對神經(jīng)網(wǎng)絡(luò)是怎么看的,往往會(huì)讓你有種原來如此的感悟。其實(shí)看這門課程也等同于讀論文,因?yàn)閹缀趺抗?jié)課的參考資料里都有論文要你讀;

  cs231n (CS231n: Convolutional Neural Networks for Visual Recognition):最新的知識,還有詳細(xì)的作業(yè)。國內(nèi)應(yīng)該有團(tuán)隊(duì)對字幕進(jìn)行了翻譯,可以找找;

  PRML (Pattern Recognition And Machine Learning):作為一門經(jīng)典的機(jī)器學(xué)習(xí)書籍,是很有閱讀必要的,會(huì)讓你對機(jī)器學(xué)習(xí)擁有一個(gè)其他的觀察視角。

  五. 總結(jié)

  本文的目的是幫助對AI領(lǐng)域了解不深,但又想進(jìn)入的同學(xué)踏入這個(gè)門。這里只說踏入,是因?yàn)檫@個(gè)領(lǐng)域的專精實(shí)在非常困難,需要數(shù)年的積累與努力。在進(jìn)行領(lǐng)域?qū)W習(xí)前,充分認(rèn)識自己的特點(diǎn),制定合適的學(xué)習(xí)方法是十分重要的。首先得對這個(gè)領(lǐng)域進(jìn)行充分了解,培養(yǎng)興趣。在學(xué)習(xí)時(shí),保持著循序漸進(jìn)的學(xué)習(xí)方針,不要猛進(jìn)的學(xué)習(xí)過難資源;結(jié)合著學(xué)習(xí)與實(shí)踐相輔的策略,不要只讀只看,實(shí)際動(dòng)手才有成就感。學(xué)習(xí)某個(gè)資源時(shí)要有充分的目的,不是為了學(xué)開源項(xiàng)目而看代碼,而是為了寫開源項(xiàng)目而看;不是為了發(fā)論文而寫論文,而是為了做事情而寫論文。如果一個(gè)學(xué)習(xí)資源對你過難,并不代表一定是你的問題,可能是學(xué)習(xí)資源的演講或撰寫人的問題。能把難的問題講簡單的人才是真正有水平的人。所以,一定要學(xué)習(xí)優(yōu)質(zhì)資源,而不是不分青紅皂白的學(xué)習(xí)。最后,牢記以興趣來學(xué)習(xí)。學(xué)習(xí)的時(shí)間很長,過程也很艱難,而只有興趣才是讓你持之以恒,攻克難關(guān)的最佳助力。


網(wǎng)上報(bào)名
  • 姓名:
  • 專業(yè):
  • 層次: ??分?jǐn)?shù):
  • 電話:
  • QQ/微信:
  • 地址:

文中圖片素材來源網(wǎng)絡(luò),如有侵權(quán)請聯(lián)系644062549@qq.com刪除

轉(zhuǎn)載注明出處:http://www.tengyi66.com