普通程序員如何向人工智慧靠攏?

「互聯網+」已經發展的差不多了,應有盡有,空間不大,下個浪潮會不會是「AI+」?那麼作為一個普通程序員,如何提前向人工智慧(AI)靠攏?


本人碼農,從六月開始正式接觸機器學習(其實五年前的本科畢設就是在生物信息領域應用神經網路的項目,但是非常淺薄),深吸一口氣,先要聲明「人之患在好為人師」,我用的步驟只是適合我,下面的內容僅供參考。

第一步:複習線性代數。(學渣的線代忘了好多-_-||)

  • 懶得看書就直接用了著名的——麻省理工公開課:線性代數,深入淺出效果拔群,以後會用到的SVD、希爾伯特空間等都有介紹;
  • 廣告:邊看邊總結了一套筆記 GitHub - zlotus/notes-linear-algebra: 線性代數筆記。

第二步:入門機器學習演算法。

  • 還是因為比較懶,也就直接用了著名的——斯坦福大學公開課 :機器學習課程,吳恩達教授的老版cs229的視頻,講的非常細(演算法的目標-&>數學推演-&>偽代碼)。這套教程唯一的缺點在於沒有介紹最近大火的神經網路,但其實這也算是優點,讓我明白了演算法都有各自的應用領域,並不是所有問題都需要用神經網路來解決;
  • 多說一點,這個課程里詳細介紹的內容有:一般線性模型、高斯系列模型、SVM理論及實現、聚類演算法以及EM演算法的各種相關應用、PCA/ICA、學習理論、馬爾可夫系列模型。課堂筆記在:CS 229: Machine Learning (Course handouts),同樣非常詳細。
  • 廣告:邊看邊總結了一套筆記 GitHub - zlotus/notes-LSJU-machine-learning: 機器學習筆記

第三步:嘗試用代碼實現演算法。

  • 依然因為比較懶,繼續直接使用了著名的——機器學習 | Coursera ,還是吳恩達教授的課程,只不過這個是極簡版的cs229,幾乎就是教怎麼在matlab里快速實現一個模型(這套教程里有神經網路基本概念及實現)。這套課程的缺點是難度比較低,推導過程非常簡略,但是這也是它的優點——讓我專註於把理論轉化成代碼。
  • 廣告:作業參考 GitHub - zlotus/Coursera_Machine_Learning_Exercises: Machine Learning by Andrew Ng from Coursera

第四步:自己實現功能完整的模型——進行中。

  • 還是因為比較懶,搜到了cs231n的課程視頻 CS231n Winter 2016 - YouTube ,李飛飛教授的課,主講還有Andrej Karpathy和Justin Johnson,主要介紹卷積神經網路在圖像識別/機器視覺領域的應用(前面神經網路的代碼沒寫夠?這門課包你嗨到爆~到處都是從零手寫~)。這門課程的作業就更貼心了,直接用Jupyter Notebook布置的,可以本地運行並自己檢查錯誤。主要使用Python以及Python系列的科學計算庫(Scipy/Numpy/Matplotlib)。課堂筆記的翻譯可以參考 智能單元 - 知乎專欄,主要由知友杜客翻譯,寫的非常好~
  • 在多說一點,這門課對程序員來說比較走心,因為這個不像上一步中用matlab實現的作業那樣偏向演算法和模型,這門課用Python實現的模型同時注重軟體工程,包括常見的封裝layer的forward/backward、自定義組合layer、如何將layer組成網路、如何在網路中集成batch-normalization及dropout等功能、如何在複雜模型下做梯度檢查等等;最後一個作業中還有手動實現RNN及其基友LSTM、編寫有助於調試的CNN可視化功能、Google的DeepDream等等。(做完作業基本就可以看懂現在流行的各種圖片風格變換程序了,如 cysmith/neural-style-tf)另外,這門課的作業實現非常推崇computational graph,不知道是不是我的幻覺……要注意的是講師A.K的語速奇快無比,好在YouTube有自動生成解說詞的功能,準確率還不錯,可以當字幕看。
  • 廣告:作業參考 GitHub - zlotus/cs231n: CS231n Convolutional Neural Networks for Visual Recognition (winter 2016) (我的在作業的notebook上加了一些推導演算哦~可以用來參考:D)

因為最近手頭有論文要撕,時間比較緊,第四步做完就先告一段落。後面打算做繼續業界傳奇Geoffrey Hinton教授的Neural Networks for Machine Learning | Coursera,再看看NLP的課程 Stanford University CS224d: Deep Learning for Natural Language Processing,先把基礎補完,然後在東瞅瞅西逛逛看看有什麼好玩的……

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

PS**2:關於用到的系統性知識,主要有:

  • 線性代數,非常重要,模型計算全靠它~一定要複習紮實,如果平常不用可能忘的比較多;
  • 高數+概率,這倆只要掌握基礎就行了,比如積分和求導、各種分布、參數估計等等。(評論中有知友提到概率與數理統計的重要性,我舉四肢贊成,因為cs229中幾乎所有演算法的推演都是從參數估計及其在概率模型中的意義起手的,參數的更新規則具有概率上的可解釋性。對於演算法的設計和改進工作,概統是核心課程,沒有之一。答主這裡想要說的是,當拿到現成的演算法時,僅需要概率基礎知識就能看懂,然後需要比較多的線代知識才能讓模型高效的跑起來。比如最近做卷積的作業, 我手寫的比作業里給出的帶各種trick的fast函數慢幾個數量級,作業還安慰我不要在意效率,豈可修!)

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

我感覺機器學習的先修就這麼點,記得Adobe的馮東大神也說過機器學習簡直是21世界的黑科技——因為理論非常簡單但是效果驚人的好。

====

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

Kaggle是一個數據建模和數據分析競賽平台。企業和研究者可在其上發布數據,統計學者和數據挖掘專家可在其上進行競賽以產生最好的模型。這一眾包模式依賴於這一事實,即有眾多策略可以用於解決幾乎所有預測建模的問題,而研究者不可能在一開始就了解什麼方法對於特定問題是最為有效的。Kaggle的目標則是試圖通過眾包的形式來解決這一難題,進而使數據科學成為一場運動。


謝邀,我曾經也只是一個只懂 ACM 競賽相關演算法的普通程序員,誤打誤撞接觸到了數據挖掘,之後才開始系統地了解機器學習相關的知識,如今已經基本走上了正軌,開始了走向 Data Scientist 的征途。

但是最高贊的一篇回答居然是關於 Deep Learning 的,這感覺就想是有人問我這山地車好高級,能不能教我怎麼換擋,我告訴他說,這車太low了,我教你開飛機吧。我想即使目前開飛機(Deep Learning)的門檻一再降低,如果你沒有一個優秀的基礎,即使是老司機也是容易翻車的。

所以我給 @子實的回答點了贊:普通程序員如何向人工智慧靠攏? - 子實的回答 - 知乎

簡單認真回答一下,首先作為一個普通程序員,C++ / Java / Python 這樣的語言技能棧應該是必不可少的,其中 Python 需要重點關注爬蟲、數值計算、數據可視化方面的應用,主要是:

可以參考:

可以參考:怎麼用最短時間高效而踏實地學習 Python?

如果日常只編寫增刪改查的代碼的話,那可能數學已經忘得差不多了,需要重溫線性代數和微積分的基礎知識,這會為之後的學習立下汗馬功勞。

再然後就是統計學相關基礎,我在知乎專欄——BI學習大綱中寫過,貼過來僅供參考:

相關性分析(相關係數r、皮爾遜相關係數、餘弦相似度、互信息)

  • 回歸分析(線性回歸、L1/L2正則、PCA/LDA降維)
  • 聚類分析(K-Means)
  • 分布(正態分布、t分布、密度函數)
  • 指標(協方差、ROC曲線、AUC、變異係數、F1-Score)
  • 顯著性檢驗(t檢驗、z檢驗、卡方檢驗)
  • A/B測試

推薦閱讀:李航 —《統計學習方法》

如果以上知識都具備了,再往後的路就可以開得很快了,可以一直衝刺到 Deep Learning。但在這之前我們還是需要了解不少機器學習的基礎:

  • 關聯規則(Apriori、FP-Growth)
  • 回歸(Linear Regression、Logistics Regression)
  • 決策樹(ID3、C4.5、CART、GBDT、RandomForest)
  • SVM(各種核函數)
  • 推薦(User-CF、Item-CF)

推薦閱讀:《集體智慧編程》、Andrew Ng — Machine Learning Coursera from Stanford

此時的你或許已經有一塊可以用的敲門磚了,但離工業界實際應用還有比較大的距離,主要差距就在於 Feature Engineering,這也是我在面試考察有經驗的人面前比較注重的點。這一塊中有一些比較基礎的知識點,簡單羅列如下:

  • 可用性評估:獲取難度、覆蓋率、準確率
  • 特徵清洗:清洗異常樣本
  • 採樣:數據不均衡、樣本權重
  • 單個特徵:無量綱化(標準化、歸一化)、二值化、離散化、缺失值(均值)、啞編碼(一個定性特徵擴展為N個定量特徵)
  • 數據變換:log、指數、Box-Cox
  • 降維:主成分分析PCA、線性判別分析LDA、SVD分解
  • 特徵選擇:Filter(相關係數、卡方檢驗)、Wrapper(AUC、設計評價函數A*、Embedded(L1-Lasso、L2-Ridge、決策樹、DL)
  • 衍生變數:組合特徵
  • 特徵監控:監控重要特徵,fa特徵質量下降

我放一張公司內部演算法培訓關於特徵工程的 PPT,僅供學習參考:

再往後你就可以在技能樹上點幾個酷炫的了:

  • 提升
    • Adaboost
    • 加法模型
    • xgboost
  • SVM
    • 軟間隔
    • 損失函數
    • 核函數
    • SMO演算法
    • libSVM
  • 聚類
    • K-Means
    • 並查集
    • K-Medoids
    • 聚譜類SC
  • EM演算法
    • Jensen不等式
    • 混合高斯分布
    • pLSA
  • 主題模型
    • 共軛先驗分布
    • 貝葉斯
    • 停止詞和高頻詞
    • TF-IDF
  • 詞向量
    • word2vec
    • n-gram
  • HMM
    • 前向/後向演算法
    • Baum-Welch
    • Viterbi
    • 中文分詞
  • 數據計算平台
    • Spark
    • Caffe
    • Tensorflow

推薦閱讀:周志華——《機器學習》


可以看到,不管你是用 TensorFlow 還是用 Caffe 還是用 MXNET 等等一系列平台來做高大上的 Deep Learning,在我看來都是次要的。想要在這個行業長久地活下去,內功的修鍊要比外功重要得多,不然會活得很累,也很難獲得一個優秀的晉陞空間。

最後,關注你所在行業的最新 paper,對最近的演算法理論體系發展有一個大致印象,譬如計算廣告領域的幾大經典問題:

相關 paper 的 gitlist 僅供參考:wnzhang/rtb-papers

最最後,也要時刻關注能幫你偷懶的工具,它將讓你擁有更多的時間去調參:
Python 網頁爬蟲 amp; 文本處理 amp; 科學計算 amp; 機器學習 amp; 數據挖掘兵器譜 - Python - 伯樂在線

-------------------------------------------------------------------

廣告時間:如果你對以上學習路徑有什麼困惑,或者你對以下問題感興趣:

* 怎麼定義一個演算法工程師?它與其它傳統研發崗位的區別是什麼?
* 演算法工程師所需的內功和外功是什麼?
* 演算法工程師擁有怎樣的不可替代性及成長性?
* 如何才能最快速度成長為一名合格的演算法工程師?
* 如何才能通過國內大廠的演算法崗面試?

歡迎來我的知乎 Live (????)??

SimonS 的知乎 Live - 如何成為當下合格的演算法工程師

SimonS 的知乎 Live - 如何快速攻克傳統演算法和數據結構

SimonS 的知乎 Live - 機器學習入門需要哪些數學基礎


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

一. 本文的目的

本文的目的是給出一個簡單的,平滑的,易於實現的學習方法,幫助「普通」程序員踏入AI領域這個門。這裡,我對普通程序員的定義是:擁有大學本科知識;平時工作較忙;自己能獲取的數據有限。因此,本文更像是一篇 「from the scratch」 的AI入門教程。

二. AI領域的特點

AI,也就是人工智慧,並不僅僅包括機器學習。曾經,符號與邏輯被認為是人工智慧實現的關鍵,而如今則是基於統計的機器學習佔據了主導地位。最近火熱的深度學習正是機器學習中的一個子項。目前可以說,學習AI主要的是學習機器學習。但是,人工智慧並不等同於機器學習,這點在進入這個領域時一定要認識清楚。關於AI領域的發展歷史介紹推薦看周老師寫的《機器學習簡介》。下面一個問題是:AI的門好跨么?其實很不好跨。我們以機器學習為例。在學習過程中,你會面對大量複雜的公式,在實際項目中會面對數據的缺乏,以及艱辛的調參等。如果僅僅是因為覺得這個方向未來會「火」的話,那麼這些困難會容易讓人放棄。考慮到普通程序員的特點,而要學習如此困難的學科,是否就是沒有門路的?答案是否定的。只要制定合適的學習方法即可。

三. 學習方法

學習方法的設定簡單說就是回答以下幾個問題:我要學的是什麼?我怎樣學習?我如何去學習?這三個問題概括說就是:學習目標,學習方針與學習計劃。學習目標比較清楚,就是踏入AI領域這個門。這個目標不大,因此實現起來也較為容易。「過大的目標時就是為了你日後放棄它時找到了足夠的理由」。學習方針可以總結為 「興趣為先,踐學結合」。簡單說就是先培養興趣,然後學習中把實踐穿插進來,螺旋式提高。這種方式學習效果好,而且不容易讓人放棄。有了學習方針以後,就可以制定學習計劃,也稱為學習路線。下面就是學習路線的介紹。

四. 學習路線

我推薦的學習路線是這樣的,如下圖:

這個學習路線是這樣設計的:首先了解這個領域,建立起全面的視野,培養起充足的興趣,然後開始學習機器學習的基礎,這裡選擇一門由淺入深的課程來學習,課程最好有足夠的實驗能夠進行實戰。基礎打下後,對機器學習已經有了充足的了解,可以用機器學習來解決一個實際的問題。這時還是可以把機器學習方法當作一個黑盒子來處理的。實戰經驗積累以後,可以考慮繼續進行學習。這時候有兩個選擇,深度學習或者繼續機器學習。深度學習是目前最火熱的機器學習方向,其中一些方法已經跟傳統的機器學習不太一樣,因此可以單獨學習。除了深度學習以外,機器學習還包括統計學習,集成學習等實用方法。如果條件足夠,可以同時學習兩者,一些規律對兩者是共通的。學習完後,你已經具備了較強的知識儲備,可以進入較難的實戰。這時候有兩個選擇,工業界的可以選擇看開源項目,以改代碼為目的來讀代碼;學術界的可以看特定領域的論文,為解決問題而想發論文。無論哪者,都需要知識過硬,以及較強的編碼能力,因此很能考察和鍛煉水平。經過這個階段以後,可以說是踏入AI領域的門了。「師傅領進門,修行在個人」。之後的路就要自己走了。

下面是關於每個階段的具體介紹:

0. 領域了解:在學習任何一門知識之前,首先第一步就是了解這個知識是什麼?它能做什麼事?它的價值在什麼地方?如果不理解這些的話,那麼學習本身就是一個沒有方向的舟,不知道駛向何處,也極易有沉船的風險。了解這些問題後,你才能培養出興趣,興趣是最好的引路人,學習的動力與持久力才能讓你應付接下來的若干個階段。關於機器學習是什麼,能做什麼,它與深度學習以及人工智慧的關係,可以看我寫的博客 從機器學習談起。

1. 準備工作:如果你離校過久,或者覺得基礎不牢,最好事先做一下準備複習工作。「工欲善其事,必先利其器」。以下的準備工作不多,但足以應付後面階段的學習。

    • 數學:複習以下基本知識。線性代數:矩陣乘法;高數:求導;概率論:條件與後驗概率。其他的一些知識可以在後面的學習的過程中按需再補;
    • 英文:常備一個在線英文詞典,例如愛詞霸,能夠不吃力的看一些英文的資料網頁;
    • 翻牆:可以隨時隨地上Google,這是一個很重要的工具。不是說百度查的不能看,而是很多情況下Google搜出來的資料比百度搜的幾十頁的資料還管用,尤其是在查英文關鍵字時。節省時間可是很重要的學習效率提升;

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

    • 時間:cs229 的時間太早,一些知識已經跟不上當今的發展,目前最為火熱的神經網路一筆帶過。而Cousera上神經網路可是用了兩個課時去講的!而且非常詳細;
    • 教學:Ng在cs229 時候的教學稍顯青澀,可能是面對網路教學的原因。有很多問題其實他都沒有講清楚,而且下面的人的提問其實也很煩躁,你往往不關心那些人的問題。這點在Coursera上就明顯得到了改善,你會發現Ng的教學水平大幅度改善了,他會對你循循善誘,推心置腹,由淺入深的教學,在碰到你不明白的單詞術語時也會叫你不要擔心,更重要的,推導與圖表不要太完善,非常細緻清晰,這點真是強力推薦;
    • 字幕:cs229 的字幕質量比Coursera上的差了一截。Coursera上中文字幕翻譯經過了多人把關,質量很有保證;
    • 作業:cs229 沒有作業,雖然你可以做一些,但不會有人看。這點遠不如Coursera上每周有deadline的那種作業,而且每期作業提交上去都有打分。更重要的是,每期作業都有實際的例子,讓你手把手練習,而且能看到自己的成果,成就感滿滿!

3. 實踐做項目:學習完了基礎課程,你對機器學習就有了初步了解。現在使用它們是沒有問題的,你可以把機器學習演算法當作黑盒子,放進去數據,就會有結果。在實戰中你更需要去關心如何獲取數據,以及怎麼調參等。如果有時間,自己動手做一個簡單的實踐項目是最好的。這裡需要選擇一個應用方向,是圖像(計算機視覺),音頻(語音識別),還是文本(自然語言處理)。這裡推薦選擇圖像領域,這裡面的開源項目較多,入門也較簡單,可以使用OpenCV做開發,裡面已經實現好了神經網路,SVM等機器學習演算法。項目做好後,可以開源到到 Github 上面,然後不斷完善它。實戰項目做完後,你可以繼續進一步深入學習,這時候有兩個選擇,深度學習和繼續機器學習;

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

    • 推薦,UFLDL: 很詳盡的推導,有翻譯,且翻譯質量很高;
    • 推薦,Deep learning (paper):論文,高屋建瓴,一覽眾山小;
    • 推薦,Neural networks and deep learning:由淺入深;
    • 推薦,Recurrent Neural Networks: RNN推導初步學習的最佳教程;

    • 不推薦,Neural Networks for Machine Learning - University of Toronto | Coursera:太難;
    • 不推薦,Deep Learning (book):面面俱到,但缺乏深入;
    • 不推薦,CS231n:翻譯與字幕問題;

5. 繼續機器學習:傳統的機器學習有如下特點,知識系統化,有相對經典的書。其中統計學習(代表SVM)與集成學習(代表adaboost)是在實踐中使用非常多的技術。下面是相關資源:

    • 推薦,機器學習:如果是在以前,機器學習方面的經典教材首推PRML,但現在周老師的書出來以後,就不再是這樣了。首先推薦讀周老師的書。這本書有一個特點,那就是再難的道理也能用淺顯精鍊的語言表達出來。正如周老師的名言:「體現你水平的地方是把難的東西講容易了,而不是把容易的東西講難,想把一個東西講難實在太簡單」;
    • 不推薦,Pattern Recognition And Machine Learning:當前階段不推薦。PRML是以貝葉斯的觀點看待很多機器學習方法,這也是它的一大特色。但對於初學者來說,這種觀點其實並無必要。而且此書沒有中文翻譯,當前階段硬啃很容易放棄;


6.開源項目:
當知識儲備較為充足時,學習可以再次轉入實踐階段。這時候的實踐仍然可以分兩步走,學習經典的開源項目或者發表高質量的論文。開源項目的學習應該以盡量以優化為目的,單純為讀代碼而學習效果往往不太好。好的開源項目都可以在Github 里搜索。這裡以深度學習為例。深度學習的開源優秀庫有很多,例如torch,theano等等,這裡列舉其中的兩個:

    • 推薦,DeepLearnToolbox:較早的一個深度學習庫,用matlab語言撰寫,較為適合從剛學習的課程轉入學習
    • 推薦,tensorflow:Google的開源庫,時至今日,已經有40000多個star,非常驚人。

7.會議論文:一般較好的課程都會推薦你一些論文。一些著名的技術與方法往往誕生於一些重要的會議。因此,看往年的會議論文是深入學習的方法。在這個階段,如果是在校學生,可以選擇某個課題,以發論文為目的來學習研究。一般來說,論文是工作的產物。有時候一篇基於實驗的論文往往需要你寫很多代碼,利用一些開源項目。因此開源項目的學習與讀會議論文的工作兩者之間是有相關的。兩者可以同時進行學習。關於在哪裡看論文,可以看一下CCF推薦排名,了解一下這個領域裡有哪些優秀的會議。下面介紹兩個圖像與機器學習領域的著名頂級會議:

    • CVPR:與另兩個會議ICCV和ECCV合稱計算機視覺領域的三大會。
    • Conference on Neural Information Processing Systems:簡稱NIPS,許多重要的工作發表在這上面,例如關於CNN的一篇重要論文就是發表在上面。

8.自由學習:到這裡了,可以說是進入這個門了。下面可以依據興趣來自由學習。前階段不推薦的學習資源也可隨意學習,下面是點評。

    • cs229 (斯坦福大學公開課 :機器學習課程):Ng寫的講義很不錯,其中關於SVM的推導部分很清晰,想學習SVM推薦;
    • Neural networks (Neural Networks for Machine Learning - University of Toronto | Coursera ):大牛的視角跟人就是不一樣,看看Hinton對神經網路是怎麼看的,往往會讓你有種原來如此的感悟。其實看這門課程也等同於讀論文,因為幾乎每節課的參考資料里都有論文要你讀;
    • cs231n (CS231n: Convolutional Neural Networks for Visual Recognition):最新的知識,還有詳細的作業。國內應該有團隊對字幕進行了翻譯,可以找找;
    • PRML (Pattern Recognition And Machine Learning):作為一門經典的機器學習書籍,是很有閱讀必要的,會讓你對機器學習擁有一個其他的觀察視角。

五. 總結

本文的目的是幫助對AI領域了解不深,但又想進入的同學踏入這個門。這裡只說踏入,是因為這個領域的專精實在非常困難,需要數年的積累與努力。在進行領域學習前,充分認識自己的特點,制定合適的學習方法是十分重要的。首先得對這個領域進行充分了解,培養興趣。在學習時,保持著循序漸進的學習方針,不要猛進的學習過難資源;結合著學習與實踐相輔的策略,不要只讀只看,實際動手才有成就感。學習某個資源時要有充分的目的,不是為了學開源項目而看代碼,而是為了寫開源項目而看;不是為了發論文而寫論文,而是為了做事情而寫論文。如果一個學習資源對你過難,並不代表一定是你的問題,可能是學習資源的演講或撰寫人的問題。能把難的問題講簡單的人才是真正有水平的人。所以,一定要學習優質資源,而不是不分青紅皂白的學習。最後,牢記以興趣來學習。學習的時間很長,過程也很艱難,而只有興趣才是讓你持之以恆,攻克難關的最佳助力。

謹以此文與諸位在學海中乘舟的各位共勉。


說說我學習深度學習的經歷吧,從開始學習到現在大概有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


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

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.


這些學習歷程中遇到的資料都記錄在了我的個人note里,希望大家共勉:

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


最後強調一個最最重要的事情:要有自己的想法,有將這種新技術用到自己項目中的強烈願望,從開始就要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還是一階相變。

paper: https://arxiv.org/pdf/1612.04262.pdf

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


大學是信息安全,可以說是IT眾小專業中和機器學習距離最遠的一個。讀研轉機器學習,也許經歷對你會有幫助。

假設你有程序員的基礎,懂至少一門語言,和基礎的數學知識。

首先,可以先找一個機器學習的工具玩起來。比如說現在很火的MXNet,Tensorflow…等
這個過程是為了培養親切感,對機器學習有初步感性認識。
我來做畢設前,導師讓我看語言模型。我對著一篇大牛的博士論文看了半個月,過來之後,導師讓我改一個複雜的模型,我是懵逼的。
理論和數學公式我都懂!可是這坨高大上的神經網路在計算機里到底是一個怎樣的東西啊?…這是我當時內心真實寫照。跑上了工具一切都清晰起來了。
所以現在帶本科生,都是先跑上工具,然後繼續後面的基礎知識完備和深入研究。

有了感性認識以後,可以開始補機器學習的底層基礎了。
首先是概率論,不確定你學過沒,學過不用的話大概率也忘了,而且大概率當時學的時候並不知道這個有什麼用。
矩陣理論和線性代數同理。
最優化理論也是重中之重。


這四個基礎數學知識學完之後,可以開始學上層的基礎了。
機器學習可遠遠不止是現在大熱的神經網路。
推薦Andrew的筆記,很多節~網上有很多譯版,即使是英文原版也非常全面易懂。
或者是最近也很火的西瓜書(周志華的機器學習)

做完以上幾點就挺不容易的。

在學晦澀的數學和機器學習基礎演算法的同時,可以轉轉工具玩玩,實現一下最近比較火的模型。無論是語音,圖像,NLP或者什麼自己感興趣的,調節調節。這個過程中,你一定對工具的上層代碼都熟悉了。

到這一步:知道數學原理,精通基礎經典機器學習演算法,會用機器學習工具,會改工具,已經算一個比較合格的機器學習程序員了吧。

接下來,還想繼續深入的話,工程方面可以選擇讀讀工具的底層實現代碼,涉及到cuda運算,或者進程調度,分散式編程這方面的。
自己完完全全寫個神經網路,或者寫個機器學習工具練練手。學習下GPU編程,多線程編程,多機多卡,分散式等等。

科研方面就可以在數學原理,模型結構,或者應用,數據上動動腦子做文章了。


未完待續…


來,給你指一條明路吧!

只要你懂Swift,你就直接能搞當前人工智慧界的tennage sex:深度學習,而且你只需要一台最新的iPhone 7手機,就能開發基於深度學習的應用!

蘋果正在開發了一套Metal的框架,讓你能夠搭積木一樣搭出一套深度學習的應用,提供了一套介面讓你直接操控GPU里的運算單元(得益於A10晶元是蘋果自己做的)。

大致了解各種神經網路的適用範圍之後,拍腦袋或者測試自己適合的神經網路模式,然後就可以鼓搗深度學習的應用了,就像寫Swift代碼一樣容易。

是的,童叟無欺,你可以做語音識別、圖像識別、NLP等各種應用,文末我還會提供源代碼!

比如利用Metal這個框架,你可以做語音識別!下面是個Demo:

你還可以調用CNN做圖像識別,深度學習技能Get!

(實時演示請看:https://raw.githubusercontent.com/shu223/iOS-10-Sampler/master/README_resources/digit.gif)

其他的圖像聚類啊打標籤啊也是分分鐘的事情啊!

嫌這個圖像識別太簡單?
你還能開發基於深度學習的實時的圖像識別,就是你直接用手機攝像頭可以做實時的圖像識別。

(實時演示請看:https://raw.githubusercontent.com/shu223/iOS-10-Sampler/master/README_resources/imagerecog.gif)

操作各種圖片,濾鏡什麼的,那是分分鐘的事情。

瞬間,你就成了會深度學習懂人工智慧的高科技碼農,想想是不是有點小激動啊?

不得不說,Metal對於iOS開發者,甚至是所有的程序員來說(可以想像其他廠商也許會跟隨,不過也壁壘在於蘋果是自己開發的A10晶元才能夠操作底層GPU):

這是一件開發者的大事,大快所有人心的大好事。

福利1:

再給大家展示一下用Metal做的一個應用(Picky Album),最新版馬上會有這個功能:利用深度學習識別圖像!

搜索"cat",手機里所有貓的圖片就出來了!

輸入"church",所有教堂的圖片都出來了!

再也不用翻遍相冊找照片。

福利2:

Metal的開發文檔:https://developer.apple.com/metal/
Metal的Demo 代碼鏈接:shu223/iOS-10-Sampler

(注意,蘋果官方還在改進Metal的性能,提高並發能力,預計明年一二月份會有最新的版本)

福利3
此外,我還提供兩個價值百萬的idea:

第一:開發和訓練一套能夠識別品牌商品的SDK,比如愛馬仕或者賓士什麼的,在朋友圈或者微博等上面的商品圖片識別後立馬就能導購了,在合適的時間點賣給這些廠商或者電商網站,或者自己做電商。


第二:訓練一套模型,通過你身體的姿勢和動作等,來判斷你是不是在開車(如何區分是在坐車還是開車,或者是步行),這是一個非常有用的模型,這個功能的重要性相信開發者都懂的,還是那句話,找到合適的時間點,一定能賣出去。

嗯,我自己都忍不住點贊了!

歡迎關註:嚴肅 - 知乎

AI專欄:Take AI Seriously


英文足夠好的話,可以去Udacity看AI課教學視頻,都是Georgia Tech的研究生/本科高年級課程。另外Georgia Tech的Machine Learning課也不錯,講博弈論的Machine Learning課我估計僅此一家。我上完基本上可以看懂AlphaGo那篇nature。當然英語水平和閱讀文獻的能力是我之前就有的,這方面還得靠自己額外下功夫。另外,Machine Learning for Trading,Reinforcement Learning等都值得一學。Machine Learning非常火資源又多,不少答案里已經給出我就不多說了。不過不得不提一句,Machine Learning只是AI的一個交集或者說實現的一個途徑,不代表AI研究的全部。

最近在上Knowledge-based AI課,需要的數學比較少,也跟狹義的Machine Learning幾乎沒什麼關係。做的project很有意思但比較難,是寫AI代碼解人類智商測試題「Raven"s Progressive Matrices」:純圖形識別,給出三個或八個圖形,在給出若干個選項圖形中選答案。例子如:

目前我寫出的AI能正確回答難度在這個級別的題目。當然我還在修改這個AI,以求解更複雜的題目。總之Georgia Tech的CS課程質量非常不錯,推薦給大家。


相信看到這篇文章的朋友,幾乎都想成為機器學習科學家。

怎麼做呢?讀個博士需要 5 年,以及幾十到上百萬元的花費。讀個線下培訓班,不僅教學質量參差不齊,而且價格也動輒需要好幾萬。

事實上,絕大多數的付費課程,基本上都有完全免費的課程放在另一個地方。我們只是把這些信息整理好,告訴你在哪兒可以找到他們,以及通過什麼樣的順序進行學習。

這樣,哪怕你是還沒畢業的大學生,或者是初入職場的工程師,都可以通過自學的方式掌握機器學習科學家的基礎技能,並在論文、工作甚至日常生活中快速應用。

在這裡我們推薦一份用戶友好型的機器學習教程,你可以通過幾個月的學習成為機器學習科學家,完全免費。

一份用戶友好型的機器學習教程

當你學習機器學習課程時,有沒有被信息過載所淹沒?

大部分的學習者都遇到了這個問題,這不是他們的錯,因為絕大多數的機器學習課程都過於關注個別演算法了。

沒錯,雖然演算法很重要,但他們還是把太多時間花在了演算法上。

以至於......你幾乎很難在短時間內走完一遍機器學習的流程,從而感受到通過它解決具體數據問題的巨大興奮。

這些機器學習課程關注於演算法是因為它容易教。相比之下,如果機器學習老師要帶你走一遍機器學習的流程,那麼他需要搭建計算環境,完成數據採集、清洗、拆分,特徵處理,模型調參和模型預測,甚至他還需要一個面向學習者的交互界面。老師哪有這麼多的工具,與其手把手帶著學生走一遭,還不如學習機器學習演算法。

但這樣的問題是,很難有人能堅持通過自學,成為一個卓越的機器學習科學家。哪怕他是數學博士,或者技術高超的程序員,都很容易陷在細節中而難以有具體項目實現的成就感。

這份教程將會帶來完全不同的思路。它非常適合自學者,即便完全沒有編程的基礎,也能通過恰當的工具快速實現機器學習模型,解決工作、生活中遇到的具體問題。

值得注意的是,我們享用了世界頂級的機器學習資源,而不需要花費 1 分錢。

自我學習的方式

我們推薦通過 Doing Shit(不是技術術語)完成你的學習。

在這之前你也許已經學習過機器學習了,但從我和朋友們的經驗來看,往往會被各種神秘的符號、公式、大量的教科書和論文整的暈頭轉向,然後再也不想碰這惱人的玩意了。

我們的方法會更加友好,它的學習過程就像小朋友學習一樣,你會了解一些基礎的知識(但不一定要完全弄懂),然後通過好用的工具快速實現出來就好了。而當你被建模出來的結果吸引,那時候我們才談演算法背後的數學邏輯和計算邏輯。

所以我們會在學習中做很多機器學習項目,這樣的好處是當你面對一個工作機會時,你就是一個經驗豐富的機器學習科學家了!

當然自學本身是需要自律的,這本教程將一直陪伴著你,以下是 4 個步驟。

1.前提條件 (不需要完全弄懂)
統計學、編程和數學(也可以不需要編程)

2.海綿模式
把自己浸泡在機器學習的各種理論中

3.目標實踐
通過機器學習包實踐 9 個有意思的題目

4.機器學習項目
深度參與到感興趣的項目和領域中

步驟 1:前提條件

機器學習之所以看起來很嚇人,是因為總伴隨著那些晦澀難懂的術語。實際上,即便你是中文系畢業的,也可以學好機器學習。不過,我們需要你在一些領域有基礎的理解。

好消息是,一旦你滿足了前提條件,其餘的將會非常容易。事實上,幾乎所有的機器學習都是把統計學和計算機科學的概念應用於數據領域。

任務:確保你了解基礎的統計學、編程和數學

統計學:理解統計學、特別是貝葉斯概率對許多機器學習演算法來說都是至關重要的。
免費的指南:How to Learn Statistics for Data Science, The Self-Starter Way

How to Learn Statistics for Data Science, The Self-Starter Way

編程:懂得編程將會更靈活的應用機器學習。
免費的指南:How to Learn Python for Data Science, The Self-Starter Way

How to Learn Python for Data Science in 2017 (Updated)

數學:對原始演算法的研究需要線性代數、多變數計算的基礎。
免費的指南:How to Learn Math for Data Science, The Self-Starter Way

How to Learn Math for Data Science, The Self-Starter Way

你可以先看看這些教程,給你的機器學習道路打下知識基礎。

步驟 2:海綿模式

海綿模式是儘可能吸收足夠多的機器學習理論知識。

現在有些人可能會想:「如果我不打算進行原創性研究,為什麼在可以使用現有機器學習包的時候,還需要學習理論?」

這是一個合理的問題!

然而,如果你想把機器學習更靈活的應用於日常工作,學習一些基礎理論還是很有好處的,而且你並不需要完全弄懂。下面我們會劇透學習機器學習理論的 5 個理由。

(1)規劃和數據採集
數據採集真是一個昂貴和耗時的過程!那麼我需要採集哪些類型的數據?根據模型的不同,我需要多少數據?這個挑戰是否可行?

(2)數據假設和預處理
不同的演算法對數據輸入有不同的假設,那我應該如何預處理我的數據?我應該正則化嗎?假如我的模型缺少一些數據,它還穩定嗎?離群值怎麼處理?

(3)解釋模型結果
簡單的認為機器學習是一個「黑盒子」的概念是錯誤的。是的,並不是所有的結果都直接可以解釋,但你需要診斷自己的模型然後改善它們。我要怎麼評估模型是過擬合還是欠擬合?我要向業務利益相關者怎麼解釋這些結果?以及模型還有多少的改善空間?

(4)改進和調整模型
你的第一次訓練很少會達到最佳模式,你需要了解不同的調參和正則化方法的細微差別。如果我的模型是過擬合了,我該如何補救?我應該花更多時間在特徵工程上,還是數據採集上?我可以組合我的模型嗎?

(5)驅動商業價值
機器學習從來不會在真空中完成。如果你不了解武器庫中的工具,就無法最大化發揮它們的效能。在這麼多結果指標中,哪些是優化的參考指標?哪個更為重要?或者還有其他的演算法會表現更好嗎?

好消息是,你不需要一開始就知道所有問題的答案。所以我們推薦你從學習足夠的理論開始,然後快速進入到實踐。這樣的話,你比較能夠堅持下來,並在一段時間後真正精通機器學習。

以下是一些免費的機器學習資料。

2.1 機器學習視頻課程

這是來自哈佛大學和耶魯大學的世界級課程。

任務:完成至少一門課程

哈佛大學數據科學課程

端到端的數據科學課程。相比吳恩達的課程,它對機器學習的重視程度較低,但是從數據收集到分析,你可以在這裡學到整個數據科學的工作流程。

課程主頁:http://cs109.github.io/2015/

斯坦福大學機器學習課程

這是吳恩達的著名課程,這些視頻說清楚了機器學習背後的核心理念。如果你的時間只能上一節課,我們建議這個。

課程主頁:https://www.youtube.com/watch?v=qeHZOdmJvFUlist=PLZ9qNFMHZ-A4rycgrgOYma6zxF4BZGGPWindex=1

2.2 機器學習參考資料

接下來我們推薦行業中兩本經典的教材。

任務:看這些 PDF 作為教科書

An Introduction to Statistical Learning
Gentler 在書里介紹了統計學習的基本要素,適合所有機器學習的學習者。
PDF 地址:http://www-bcf.usc.edu/~gareth/ISL/ISLR%20Sixth%20Printing.pdf

Elements of Statistical Learning
嚴格的介紹了機器學習理論和數學,推薦給機器學習的研究員。
PDF 地址:http://statweb.stanford.edu/~tibs/ElemStatLearn/

2.3 成功的關鍵

以下是每個步驟成功的關鍵。

A:注重大局,總是問為什麼

每當你被介紹一個新概念時,問一句「為什麼」。為什麼在某些情況下要使用決策樹而不是回歸?為什麼要規範參數?為什麼要拆分數據集?當你了解為什麼使用每個工具時,你將成為真正的機器學習從業者。

B:接受你不會記得所有學過的東西

不要瘋狂的做筆記,也不要每個課程都複習 3 次。在自己的實際工作中,你會經常需要回過頭查看。

C:繼續前進,不要氣餒

盡量避免在一個話題上拖太久的時間。即便是對於機器學習教授來說,有些概念也很不好解釋。但是當你在實踐中開始應用時,你會很快就懂得概念的真實含義。

D:視頻比教科書更有效

從我們的經驗來看,教科書是很好的參考工具,但它很難堅持。我們強烈推薦視頻講座的形式。

步驟 3:有目的實踐

在海綿模式之後,我們會通過刻意練習的方式磨練技能,把機器學習能力提高到一個新水平。目標包括三個方面:

1.實踐完整的機器學習流程:包括數據收集、清洗、預處理,建立模型,調整參數和模型評估。

2.在真實的數據集中練習,逐漸建立哪種模型適合哪種挑戰的直覺。

3.深入到一個具體主題中,例如在數據集中應用不同類型的聚類演算法,看哪些效果最好。

在完成這些步驟後,當你開始解決大型項目時就不會不知所措了。

3.1 機器學習的工具

為了快速實現機器學習模型,我們推薦使用現成的建模工具。這樣的話,你會在短時間內練習整個機器學習的工作流程,而無需在任何一個步驟花費太多時間。這會給你非常有價值的「大局直覺」(Big Picture Intuition)。

Python:Scikit-Learn

Scikit-learn 和 Sklearn 是通用機器學習中 Python 的黃金標準庫,它具有常規演算法的實現。

R:Caret

Caret 為 R 語言中的模型包提供一個統一的界面。它還包括了預處理、數據拆分、模型評估的功能,使其成為一個完整的端到端解決方案。

3.2 實踐數據集

學習了工具後,你還需要一些數據集。數據科學和機器學習的藝術,很多都在於解決問題時的幾十個微觀決定。我們會在不同的數據集中看到建模的結果。

任務:從以下選項中選擇 5 到 10 個數據集。我們建議從 UCI 的機器學習庫開始,例如你可以選擇 3 個數據集,分別用於回歸、分類和聚類。

在進行機器學習工程的時候,想想以下問題:
你需要為每個數據集執行哪些類型的預處理?
你需要進行降維操作嗎?你可以使用什麼方法?
你可以如何拆分數據集?
你怎麼知道模型是否出現「過擬合」?
你應該使用哪些類型的性能指標?
不同的參數調整會如何影響模型的結果?
你能夠進行模型組合以得到更好的結果嗎?
你的聚類結果和直觀的相符么?

UCI 機器學習報告
UCI 機器學習報告採集了超過 350 個不同的數據集,專門為機器學習提供訓練數據。你可以按照任務搜索(回歸、分類或聚類),也可以按照行業、數據集大小搜索。
地址:http://archive.ics.uci.edu/ml/

Kaggle
http://Kaggle.com 以舉辦數據科學比賽聞名,但是該網站還擁有超過 180 個社區數據集,它們包含了有趣的話題,從用戶寵物小精靈到歐洲足球比賽的數據應有盡有。
https://www.kaggle.com/datasets

http://Data.gov
如果你正在尋找社會科學或者與政府有關的數據集,請查看 http://Data.gov。這是美國政府開放數據集合,你可以搜索超過 190,000 個數據集。

Frontpage

步驟 4:機器學習項目

好了,現在到了真正有趣的部分了。到目前為止,我們已經涵蓋了前提條件、基本理論和有目的實踐。現在我們準備好進入更大的項目。

這一步驟的目標是將機器學習技術整合到完整的、端到端的分析中。

4.1 完成一個機器學習項目

任務:完成泰坦尼克倖存者挑戰。

泰坦尼克號倖存者預測挑戰是一個非常受歡迎的機器學習實踐項目,事實上,這是 http://Kaggle.com 上最受歡迎的比賽。

我們喜歡以這個項目作為起點,因為它有很多偉大的教程。你可以從中了解到這些有經驗的數據科學家們是怎麼處理數據探索、特徵工程和模型調參的。

Python 教程
我們真的非常喜歡這個教程,因為它教會你如何進行數據預處理和糾正數據。教程由 Pycon UK 提供。
教程地址:https://github.com/savarin/pyconuk-introtutorial

R 教程
在 R 中使用 Caret 包來處理幾個不同的模型。本教程很好總結了端到端的預測建模過程。
教程地址:http://amunategui.github.io/binary-outcome-modeling/

這是一個「不負責任」的快速教程:僅僅是個教程,跳過了理論講解。不過這也很有用,而且它顯示了如何進行隨機森林操作。
教程地址:http://will-stanton.com/machine-learning-with-r-an-irresponsibly-fast-tutorial/

4.2 從頭寫個演算法

為了對機器學習有更深的理解,沒有什麼比從頭寫個演算法有幫助了,因為魔鬼總是在細節里。

我們建議從一些簡單的開始,例如邏輯回歸、決策樹或者 KNN 演算法。

這個項目也為你提供了一個將數據語言翻譯成程序語言的實踐。當你想把最新的學術界研究應用於工作時,這個技能將會十分方便。

而如果你卡住了,這裡有一些提示:
維基百科有很多好資源,它有很多常見演算法的偽代碼。
為了培養你的靈感,請嘗試查看現有機器學習軟體包的源代碼。
將你的演算法分解,為採樣、梯度下降等編寫單獨的功能
從簡單開始,在嘗試編寫隨機森林前,先執行一個決策樹。

4.3 選擇一個有趣的項目或領域

如果你沒有好奇心,你是很難學好的。但目前為止,也許你已經找到了想堅持下去的領域,那麼開始建模吧!

老實說這是機器學習最好的部分了。這是一個強大的工具,而一旦你開始理解,很多想法都會主動找上門。

好消息是,如果你一直在跟蹤,也準備好從事這份工作,那麼你的收穫會遠超你的想像!

我們也推薦了 6 個有趣的機器學習項目。
地址:https://elitedatascience.com/machine-learning-projects-for-beginners

恭喜你到達了自學指南的終點

這裡有一個好消息,如果你已經遵循並完成了所有任務,那麼你在應用機器學習上將會比 90% 自稱是數據科學家的人更好。

而更好的消息是,你還有很多東西要學習。例如深度學習、強化學習、遷移學習、對抗生成模型等等。

成為最好的機器學習科學家的關鍵是永遠不要停止學習。在這個充滿活力、激動人心的領域,開始你的旅程吧!

該教程由 EliteDataScience 提供,我們翻譯了這份教程,略有改動。這是原文鏈接:https://elitedatascience.com/learn-machine-learning


首先你要買一台帶titan x顯卡的電腦,或者至少是1080顯卡。

然後你覺得這麼好的電腦不打遊戲可惜了,於是下了個Stream。


你要考慮一個問題,寫下「『互聯網+』已經發展的差不多了,應有盡有,空間不大,下個浪潮會不會是『AI+』?」這句話的人,很可能當初是因為幹不了程序員才改行去做網編。


數據採集小爬蟲員來怒答一發。
本人屬於數據挖掘中專職採集的。偶爾公司需求偶爾自己想玩就抓了很多的數據存著。比如圖片,比如推特,因為從事定位還有大量的和經緯沾邊的數據。就經常順道用數據在做一些好玩的處理。也在逐步學習這些演算法用於解決眼前採集中的問題如驗證碼破解

1:最初破解驗證碼時,用knn(入門級)和圖像處理來識彆扭曲字體。如下:

2:之後用於分析這類滑動驗證碼的破解曲線(就是拿人的曲線反覆訓練出像人的移動曲線)如下:

3:現在因為有很多的經緯度需要對他們進行聚類劃分,就學了kmeans用距離的密度的,在寫這篇回答的時候正在對某地140w個坐標點進行2w次聚類。如下:

——————×××××× -我是總結的分界線--×××××××————————
現在自然是菜鳥中的菜鳥,但是在用這些自己採集到的小數據去嘗試機器學習演算法的時候實在相當開拓眼界。。我現在在這個領域沒有什麼資格去評價該如何靠攏,如何學習。學這個一方面是因為採集工作輕鬆,爬蟲一寫好就」監控著「小調整即可。學著玩,學以用,學得好,自然會有用武之地。


如果你是在校學生,自信代碼能力強,有過比較好的acm這類成績或其他類似其他經驗,複習一下線性代數和概率,自學下cs231n的課程確認基本理解,然後來面試商湯實習生吧~ 實際經驗只有在實戰中積累,尤其是深度學習這種有人帶會成長快很多。有興趣私信聯繫


這年頭,放高利貸改名叫p2p,統計改叫大數據分析,建廠房的改名叫孵化器,乞討改叫眾籌,算命改叫分析師。

就連以前學人工智慧找不到工作的幾個師兄們名片也改叫深度學習專家了。這不盡讓我想起以前某學校招聘生化專業找不到足夠生源,次年課表上加了門C語言改名信息化與生物技術,報名人數立刻翻番的事情。

以前學模式識別的幾個校友,畢業後基本沒幾個人從事本專業,唯一幾個留校的還有有幾個也就是給交警刑警做點人臉識別的設備的,大部分都去干別的和專業無關的東西去了,如今一個二個都躍躍欲試,要回來機器學習創業了,我就想問他們早十多年哪裡去了。

離那一天還早著呢,或許二十年或者更長都見不到真ai。爺爺奶奶不懂英語看見幼兒園的孫子會被兩篇英文稿就以為自己天才外甥掌握英語了,逢人就吹噓。媒體不懂瞎鬧也就罷了,研究幾十年的學者知道怎麼回事情故意改個名字忽悠經費也能理解,你個搞計算機的怎麼回事情都沒搞清楚跟著別跟著雲里霧裡的幹嘛我就不明白了,未來十年是不是真有那麼大需求么?烏龜換身馬甲十年內就能大爆炸了?

還是先把特斯拉自動駕駛車毀人亡的事情解決了再說吧,就跟vr先把移動眩暈和重力反饋給解決掉一樣。

別天天想著放衛星。前幾年一窩蜂搞遊戲,手游搞垮了,去年又一窩蜂搞直播,直播即將洗牌,今年又一窩蜂人工智慧。這叫投機。不管是遊戲還是直播掙到錢的那撥人都是在沒人看好的早好幾年就開始耕耘了,不是看啥火就撲上去的投機者。再看所謂人工智慧,雖然硬體有所提高(然而硬體也快瓶頸了)但現在的情況僅僅是量變沒有質變,連數學模型都根二十年前的教科書十分類似,神經網路還是那個神經網路,概率論還是那個概率論,數據分類還是那些數據分類,只是分析方法有所進步罷了,質變的那一天還早著呢。以遊戲和直播這些看得見摸得著的行業來說,泡沫期加入善且很難分杯羹,人工智慧這五年內還是虛無縹緲的東西,你在最泡沫的時候什麼都沒搞清楚就缺乏判斷的要擠進去蹭熱點有啥用呢?

第一步先把自動駕駛技術搞定再說吧,然後需要大數學家出來設計新的模型,還是現在和二十年前差不多的一套模型框架內耍花搶換行頭的話,別說大爆炸了,就連下一個大規模應用的窗口我看五年內也很難出現,十年內出現機會不大。

人工智慧做工程的沒戲,因為上遊學院派二十年沒有質變。做學術苦逼,你知道自己正處於滿滿長夜的最開始階段。做投資需謹慎,缺乏新理論支撐的應用創新是很艱難的。

說不定隔幾年風口一過,那幾個原來學人工智慧畢業後改行現在又回頭本專業創業的師兄又回原來公司寫sql做app去了,或者回傳統行業跑銷售去了吧,會忽悠了么,銷售應該跑的更好了吧。

就跟去年叫的很火的vr一樣,個個打了雞血,今年還有幾個人叫呢?
怎樣看待2016年底,VR行業熱度出現(疑似極速)衰退的現象? - 知乎用戶的回答 - 知乎

義和團號稱自己刀槍不入,成天給下面的拳民表演各種雜耍,這個吐個火球,那個吞把寶劍,拳民們不明真相以為加入義和團就個個神靈護體,喝碗中藥就能刀槍不入一樣。八國聯軍的真刀真槍一來,立馬就成肉窟窿了。

看看現在全民人工智慧的樣子,今天生張圖片,明天弄段音樂,後天下盤圍棋什麼的,我看著怎麼這麼眼熟呢?

--


那得首先知道搞人工智慧/機器學習的人都在幹嘛吧。

首先,這個領域,學術圈和工業圈的差別很大,而寫教材的還是學術背景的多。學術圈研究的問題,大部分是相對獨立,數據乾淨定義明確的問題。典型例子如下圍棋,沒錯它很難,但它是一個很乾凈的信息完全的問題。學術圈怎麼玩我不了解我也不瞎掰了。

我假定題主這裡的向人工智慧靠攏不是投身學術,還是做工業應用。那麼先明確一點,在這兒人工智慧是要為產品服務的,你的模型做出花兒來,提高不了產品指標換不來錢就是個廢物 —— 這種事還真不少。所以你首先得懂產品,能給業務建模,定義問題,找到關鍵的優化指標;找有效的 feature, 那更是需要持續的產品感覺。

然後就是各種 feature engineering 了。相信我,到項目里,你如果既不在看數據也不在洗數據,那你一定是在問候數據的家人。所以,你還是需要很好的工程能力:編程,看數據找問題,保護頸椎。

我好像到現在都沒說怎麼學ML知識吧,這部分其他答主已經答得很好了。這些基礎知識有點像演算法基礎 —— 經常有人問現在演算法都是封裝好直接調用的為什麼要學,同樣的現在ML工具包模型框架差不多都是現成的為什麼還要啃公式推導。但是演算法尤其是演算法分析的學習,讓你在面對複雜工程問題時有良好的建模分析的能力,甚至是直覺。這些 ML 基礎知識同理,你要在具體產品問題里找影響力大又容易做ML的優化指標,你去分析哪些feature質量高覆蓋好可以用,訓練數據要有多大,都是用 learning theory 的知識做指導,雖然你已經不需要真的套公式去算而是靠直覺。你選 model, 調網路結構,選 feature 做 cross 做 normalization, 無一不是基於對基本模型特性的理解。這就是有了那麼多現成工具還是要從基礎學習的理由。

再往後,到系統跑上一定年月,你就要開始解決數據規模問題,想各種壓縮模型省內存的齷齪招數,還要頭疼各種各樣的數據質量問題 —— Google Ads team 有兩篇很好的描述機器學習工程師真實日常生活的文章 Ad Click Prediction: a View from the Trenches, Hidden Technical Debt in Machine Learning Systems 看標題感受一下。

所以,普通程序員如何向人工智慧靠攏呢:先學好基礎知識,寫好code搞好engineering, 還要懂產品 —— 這其實是通用的對工程師的要求。人工智慧的知識和經驗應該是你成為更好的程序員的歷程中,放入行囊的其中一把趁手的鎚子,「向人工智慧靠攏」不應該是你的目標。


推薦閱讀:騰訊雲總監手把手教你,如何成為AI工程師? - 騰雲閣


以下是原文部分摘要,希望對你的問題有幫助:)

【傳統開發 轉行AI工程師的障礙】

2.1 急於求成的心態

  LR, SVM, 決策樹,DNN,CNN, AlexNet, GoogleNet, Caffee,TensorFlow, 智能駕駛,AlphaGo, 個性化推薦, 智能語音,GPU, FPGA....
  暈了沒? 沒暈再來一波。。。。


  這裡面的水很深,不要太急躁很快能搞懂,事實上由於數學理論不完備,有些東西還真解釋不清楚,比如在圖像識別上ResNet 比GoogleNet識別率更高,ResNet是怎麼推導出來的?
   梳理好這些概念,結合實際應用,化整為零逐步理解和吸收,有的放矢,不可操之過急。   

2.2 自底往上的學習方法,想要從基本概念學習

建議結合應用場景先動手實踐,再逐步細化。
推薦《機器學習》 周志華 清華大學出版社

【入門成為AI工程師的可行路徑】

  雖然從垂直領域講有語音識別,圖像視覺,個性化推薦等業務領域的AI工程師,但從其所從事的研發內容來看,從事AI研發的工程師主要分為3類:

1)AI演算法研究

  這類人大都有博士學歷,在學校中積累了較好的理論和數學基礎積累,對最新的學術成果能較快理解和吸收。這裡的理論是指比如語音處理,計算機視覺等專業知識。
AI演算法研究的人主要研究內容有 樣本特徵,模型設計和優化,模型訓練。樣本特徵是指如何從給定的數據中構建樣本,定義樣本的特徵,這在個性化推薦領域中就非常重要。模型設計和優化是設計新的網路模型,或基於已有的模型機型迭代優化,比如CNN網路模型中AlexNet, GoogleNet v1/v2/v3, ResNet等新模型的不斷出現,另外就是比如模型剪枝,在損失5%計算精度情況下,減少80%計算量,以實現移動終端的邊緣計算等等。模型訓練是指訓練網路,如何防止過擬合以及快速收斂。

2)AI工程實現

  這類人主要提供將計算邏輯,硬體封裝打包起來,方便模型的訓練和預測。比如:
精通Caffee/TensorFlow等訓練框架源碼,能熟練使用並做針對性優化;
構建機器學習平台,降低使用門檻,通過頁面操作提供樣本和模型就能啟動訓練;
通過FPGA實行硬體加速,實現更低延時和成本的模型預測;
在新模型驗證完成後,實現在線平滑的模型切換;   

3)AI應用

  側重驗證好的模型在業務上的應用,常見語音識別,圖像視覺,個性化推薦。當然這也包括更多結合業務場景的應用,比如終端網路傳輸帶寬的預測,圖片轉碼中參數的預測等等。


1. 如果你數學基礎不行,英語不行, 不要因為人工智慧熱門就強行向人工智慧靠攏,即使靠攏了也是在外圍轉圈,沒什麼實際用處。深度學習之類的還是讓更專業的人去做。做一個更專業的程序員更好,術業有專攻。
2. 如果你數學基礎好,英語強,又對人工智慧有強烈的興趣,要麼讀一個相關的碩士學位,要麼按照前面高票答案一步一步自學,但關鍵是做好路徑規劃:實踐,用它解決某個實際問題,或者有一定基礎後加入某個相關的公司或團隊,這樣的「靠攏」比較靠譜。


2016年中國計算機大會,張跋院士,譚鐵牛院士,高文院士,周志華教授都表示機器學習現在還紙處在初級階段,人工智慧已經在60年的歷史中幾起幾落了。所以不要覺得人工智慧時代那麼快就來臨了。特別是深度學習,現在學術圈已經開始反思深度學習了。高文院士說,在美國凡是關於深度學習應用研究的基金申請全部都會被拒掉?


普通程序員擁抱人工智慧,最簡單有效的策略是這樣的:

  1. 找到一個開源框架,比如TensorFlow
  2. 學習這個框架,了解它的適用場景
  3. 針對適用場景,構建一些小的示例,把框架用起來

如果想擁抱的更徹底,那就需要懂相應的演算法,要求數學,普通程序員基本只用初中數學(我初中數學都忘了……),所以難度較大。


序言

回答問題的,都是技術大神,所以我在這裡不會談過多的技術的問題,不然就是自討沒趣,我將從如下三個方面講述,也是本文的脈絡

  • 學習什麼—幫你規劃學習路徑
  • 如何學習—給你高效學習方法
  • 有哪些好的學習資料—市面口碑較好的學習資料

我不得不問問其他回答者

第一:既然這個話題名稱叫《普通程序員如何像人工智慧靠攏?》,那麼各位大神寫的技術含量這麼高的文章,是不是顯的太深奧了,一般程序員是不是真的能看懂?

——所以我必須要深入淺出的道個明白

第二:推薦的資料就算是再好,但是資料不等於知識,學習效果怎麼樣,別人能不能堅持學完那就是另一回事。

——所以我會講:如何高效的學習人工智慧知識?

第三:市面現在人工智慧的書籍、視頻這麼多,哪些是真正的好東西,哪些才是適合普通程序員學習的資料。

——所以我對資料做了優缺點分析,並給出評分等級

特別注意

看知乎的,基本都是中國人,很多大牛推薦的東西的都是國外網站、國外教授的英語課程,雖然他們講的很好

  • 但是你們不知道么?????
  • 中國人學習英文課程很痛苦么?????
  • 裡面晦澀難懂的辭彙那麼多,那是要折磨我么????

除非你英語很好,這裡只是除非。大部分的人英語應該都一般吧

所以我講的,你看完一定能看懂,看不懂的,歡迎評論區留言

誤解:人工智慧是門檻很高,是很高大尚的技術,一般人是沒辦法入行的

我在這裡先假設你是一名具有高等教育背景的理工科學生,學習過高等數學,如果你想轉行人工智慧該怎麼學習

科普

在踏入人工智慧大門前,我先講一下,為什麼這兩年深度學習為什麼突然火了

2016年AlphaGo 4比1 戰勝李世石,掀起了一波AI熱潮,DeepMind背後所用的深度學習一下子火了起來了。其實在內行看來,AlphaGo對陣李世石的結果是毫無懸念的,真正的突破在幾年前就發生了。

最近AlphaGo的弟弟AlphaGo Zero把自己的哥哥直接橫掃了,原因是AlphaGo Zero是兩個機器人自己博弈,所以收斂速度要比學習人類棋譜快多了。

2012年,Gefferey Hinton的學生Alex使用一個特別構造的深度神經網路(後來就叫AlexNet),在圖像識別的專業比賽ImageNet中,得到了遠超之前最好成績的結果,那個時候,整個人工智慧領域就已經明白,深度學習的革命已經到來了。

果然,之後深度學習在包括語音識別,圖像理解,機器翻譯等傳統的人工智慧領域都超越了原先各自領域效果最好的方法。從2015年起,工業界內一些嗅覺靈敏的人士也意識到,一場革命或已到來。

隨著機器學習在生活中越來越廣泛得被應用在各個領域,

比如:

  • 資訊類APP,每日的消息推送都是我們自己喜歡且關注的內容(人工智慧的學習和記憶)
  • 百度搜索結果的排序推送是基於用戶歷史的點擊數據,會更多地推送個人喜歡或認為正確的結果
  • 百度廣告根據每個人喜好去最大化點擊的概率
  • 美圖秀秀根據用戶儲存的自動美化後的照片來優化演算法
  • 滴滴幫助司機選擇路線、規劃車輛調度方案
  • 未來的自動駕駛技術重新定義智能出行、智能城市
  • APP背後的判斷、預測、抉擇、分類。
  • 當前發展比較熱門的應用,語音識別 自然語言理解 知識圖譜 個性推薦 個性化排序各種領域的進步

越來越多的程序員加入AI領域,那麼入行AI領域需要哪些技能呢?

肯定你們也聽到了,人工智慧、機器學習、深度學習這樣的關鍵詞,那麼他們之間得關係是什麼?

從圖上可以看到,人工智慧是一個很大的概念,機器學習是其中一個子集,而深度學習又是機器學習里的一種

第一章:學什麼?

面對不同人,我規划了兩種不同的路徑

路徑一:一步一個腳印,扎紮實實從基礎學起,逐步提高學習難度

Step1:了解行業資訊,先來一波科普

所以在學習人工智慧之前,你先了解一下行業得相關資訊,對這個行業有一個基本的認識,那麼接下來你要準備學習了

Step2:務實基礎—高數+Python來當道

機器學習裡面涉及了很多演算法,而這些演算法又是數學推導出來,所以你要理解演算法,就需要先學習一部分高數知識。不管是你在機器幾面編輯一個演算法還是應用演算法,你都需要通過寫程序來和機器進行對話,那麼你需要編程,假如你的造詣比較高,可以用C語言,如果你是轉行過來或者以前沒有編程基礎,那麼學習Python會不錯,因為Python語言相對比較簡單。

Step3:機器學習演算法+實踐

掌握以上基礎以後,就要開始學習完機器學習的演算法,並通過案例實踐來加深理解和掌握。還有很多機器學習的小案例等著你來挑戰,前面掌握的好,後面當然輕鬆很多,步入深度學習

Step4:深度學習

深度學習需要機器大量的經過標註的數據來訓練模型,所以你的掌握一些數據挖掘和數據分析的技能,然後你再用來訓練模式。在這裡你可能會有疑問,據說深度學習,好像有很多神經網路,看著好複雜,編輯這些神經網路那不是太難了,你大可放心,谷歌、亞馬遜、微軟等大公司已經把這些神經網路模型封裝在他們各自的框架裡面了,你只需要調用就可以了。

Step5:行業大型項目實踐

當你學習完深度學習,此時你就可以自己動手訓練一個小模型了。有條件的話,從一個項目的前期數據挖掘,到中間模型訓練,並做出一個有意思的原型,能把一整套的流程跑通,那麼恭喜你,你已經具備一名人工智慧初級工程師的水準了

為了方便讓你理解,我給你列舉了學習課程的大綱,你一看啊就明白了

1、人工智慧基礎 — 高等數學必知必會

  1. 數據分析(就是高數)
  • 常數e
  • 導數
  • 梯度
  • Taylor
  • gini係數
  • 信息熵與組合數
  • 梯度下降
  • 牛頓法

2.概率論(大一大二學過有木有)

  • 微積分與逼近論
  • 極限、微分、積分基本概念
  • 利用逼近的思想理解微分,利用積分的方式理解概率
  • 概率論基礎
  • 古典模型
  • 常見概率分布
  • 大數定理和中心極限定理
  • 協方差(矩陣)和相關係數
  • 最大似然估計和最大後驗估計

3.線性代數及矩陣(大一大二學過有木有)

  • 線性空間及線性變換
  • 矩陣的基本概念
  • 狀態轉移矩陣
  • 特徵向量
  • 矩陣的相關乘法
  • 矩陣的QR分解
  • 對稱矩陣、正交矩陣、正定矩陣
  • 矩陣的SVD分解
  • 矩陣的求導
  • 矩陣映射/投影

4.凸優化(看不懂不要緊,掌握基礎即可)

  • 凸優化基本概念
  • 凸集
  • 凸函數
  • 凸優化問題標準形式
  • 凸優化之Lagerange對偶化
  • 凸優化之牛頓法、梯度下降法求解

2、人工智慧基礎-Python入門及實踐課程

  • Python快速入門
  • 科學計算庫Numpy
  • 數據分析處理庫Pandas
  • 可視化庫Matplotlib
  • 更簡單的可視化Seaborn

3、人工智慧提升 — Python項目

  • Python爬蟲項目

4、機器學習基礎入門-演算法講解

  • 線性回歸演算法
  • 梯度下降原理
  • 邏輯回歸演算法
  • 案例實戰:Python實現邏輯回歸
  • 案例實戰:對比不同梯度下降策略
  • 案例實戰:Python分析科比生涯數據
  • 案例實戰:信用卡欺詐檢測
  • 決策樹構造原理
  • 案例實戰:決策樹構造實例
  • 隨機森林與集成演算法
  • 案例實戰:泰坦尼克號獲救預測
  • 貝葉斯演算法推導
  • 案例實戰:新聞分類任務
  • Kmeans聚類及其可視化展示
  • DBSCAN聚類及其可視化展示
  • 案例實戰:聚類實踐
  • 降維演算法:線性判別分析
  • 案例實戰:Python實現線性判別分析
  • 降維演算法:PCA主成分分析
  • 案例實戰:Python實現PCA演算法

5、機器學習進階提升-項目演練

  • EM演算法原理推導
  • GMM聚類實踐
  • 推薦系統
  • 案例實戰:Python實戰推薦系統
  • 支持向量機原理推導
  • 案例實戰:SVM實例
  • 時間序列ARIMA模型
  • 案例實戰:時間序列預測任務
  • Xgbooost提升演算法
  • 案例實戰:Xgboost調參實戰
  • 計算機視覺挑戰
  • 神經網路必備基礎
  • 神經網路整體架構
  • 案例實戰:CIFAR圖像分類任務
  • 語言模型
  • 自然語言處理-word2vec
  • 案例實戰:Gensim詞向量模型
  • 案例實戰:word2vec分類任務
  • 探索性數據分析:賽事數據集
  • 探索性數據分析:農糧組織數據集

6、深度學習基礎

  • 計算機視覺-卷積神經網路
  • 三代物體檢測框架
  • 卷積神經網路基本原理
  • 卷積參數詳解
  • 案例實戰CNN網路
  • 網路模型訓練技巧
  • 經典網路架構與物體檢測任務
  • 深度學習框架Tensorflow基本操作
  • Tensorflow框架構造回歸模型
  • Tensorflow神經網路模型
  • Tensorflow構建CNN網路
  • Tensorflow構建RNN網路
  • Tensorflow載入訓練好的模型
  • 深度學習項目實戰-驗證碼識別
  • 深度學習框架Caffe網路配置
  • Caffe製作數據源
  • Caffe框架小技巧
  • Caffe框架常用工具

7、深度學習項目演練

  • 項目演練:人臉檢測數據源製作與網路訓練(基於Caffe)
  • 項目演練:實現人臉檢測(基於Caffe)
  • 項目演練:關鍵點檢測第一階段網路訓練(基於Caffe)
  • 項目演練:關鍵點檢測第二階段模型實現(基於Caffe)
  • 項目演練:對抗生成網路(基於Tensorflow)
  • 項目演練:LSTM情感分析(基於Tensorflow)
  • 項目演練:機器人寫唐詩(基於Tensorflow)
  • 項目演練:文本分類任務解讀與環境配置
  • 項目演練:文本分類實戰(基於Tensorflow)
  • 項目演練:強化學習基礎(基於Tensorflow)
  • 項目演練:DQN讓AI自己玩遊戲(基於Tensorflow)

8、人工智慧綜合項目實戰

  • 語音識別、人臉識別、
  • 電商網站數據挖掘及推薦演算法
  • 金融P2P平台的智能投資顧問
  • 自動駕駛技術
  • 醫療行業疾病診斷監測
  • 教育行業智能學習系統

路徑二、如果你希望快速學習完進行項目實踐,請直接學習深度學習(哪裡不懂,單獨學習不懂得地方就可以了)

只了解以上的東西就夠了么?

我們只知道了學什麼?別忘了,人都有惰性,很多人是沒辦法堅持學習完的,而且就算是你堅持了,學習方法不對,你的效率依然很低,浪費大量時間,那麼我給你列舉了如下學習方法(大師級別的學習方法)

第二章:怎麼學?

為了解釋這個問題,我想用高效學習的方法論來闡述,其中的關鍵詞:

適合自己——學習方法——短時間——注意力——解決難題——設定目標——名師

首先找到適合自己的學習方法

學習方法裡面有兩種,一個是自然主義,一個是結構主義,自然主義注重模仿,結構注意注重創造

比如英語學習:英語你更多的是需要模仿別人說話,模仿得多了,自己也就會說了,就像是小孩子學習漢語,都是模仿父母學習一個道理,這是典型的自然主義,注重文本本身,就是只是表面看起來的樣子。

高等數學則需要紮實的基本功,一步一步來,就像是你高中數學很差,學高等數學就很吃力,學習高等數學,你做了大量的習題練習,你對於概念的理解就會深刻,本身像數學物理這些學科,讓你記得東西本來就不多。

學習這些的目的就是為了讓你舉一反三,讓你學會創造。像英語這樣完全是不需要我門創造了。

人工智慧課程屬於技能課程學習,那就要遵循技能課程的學習規律,這是典型的結構注意學習方法

所以你要多練,一定要把案例逐個實踐一遍,然後去想,如果自己去做一個案例,或實現某個應用,你該怎麼去做

1、任務驅動

學習本身就是反人性的事情,就算是你的學習資料再好,我沒有足夠的動力學啊,或者說我沒法堅持學下去,常常半途而廢。

有人說我學習方法對了,為什麼還是不管用,一種是學不會,另一種是學不好

學不會是指連入門都沒有辦法,學不好往往指的是達不到某種專業程度

學不會,可能跟天賦有關,比如身高就是不夠打籃球,這種情況就不討論了,直接說學不好。學不好這種情況是可以被優化,我們經常聽到一句話,興趣是最好的老師。這句話是對的,但是我在這裡苦口婆心說你要多培養自己興趣啊,這樣的話,你累,我比你還要累,明明沒有興趣,非要讓你喜歡上一件東西,這叫包辦。很多事做成,都不是基於興趣的。那是基於什麼呢?你要知道任何人做任何事,都是要回報的。這是一個很淺顯的道理,就算是一個人帶著很大的痛苦去做一件事也是因為做成了這件事能獲得更大的利益。

人做成事來自兩個驅動力

  • 內部驅動,興趣這就是很強的內部驅動,此外還有虛榮心等
  • 外部驅動,也就是完成任務帶來的獎勵

既然你乾脆沒有興趣,我們乾脆就把興趣學習這件事給否定了,我要說的是,成年人學習不需要培養興趣,應該用任務來驅動,我沒有任務,我找不到任務啊,你會說,我沒有任務啊,生活中的任務驅動,工作中的職業強迫,以教為學這些都是任務驅動。其中工作的職業強迫就是一種非常強的任務驅動,比如你可以通過學習人工智慧技能,獲得了更好的職業收入。你說我實在沒有公司去聘請我,那你可以出教程啊,你出完教程然後去學習網站去賣。為了給別人教東西,而去學習。比如我一個朋友,他說他會說英語和日語。我說你啥時候會的日語啊,他說有一次他去英語輔導上課,那天正好日語課的講師沒有來,他自告奮勇說老師,我會教日語。然後他趕快報了一個日語班,結果一邊學一邊教,他的學生還教的特別好。因為我的這個朋友,他的目標比較明確,他是為了學完去教別人,假如你和他一起報名去學習日語,他一定比你學的好。所以我們是不是也可以抱著為了教別人的心態去學習。

我在上本科的時候,就想學習PS,可是八年時間過去了,PS還沒學會,偶爾學兩天,最後也沒堅持下去,直到有一次因為要給老媽開一個淘寶店。為了省錢,自己拍照,自己修圖,但是不會PS怎麼辦,就在網上找學習如何做淘寶美工得教程,結果三天把教程裡面的案例實踐了一遍,愣是自己把淘寶店得圖片給修好了,你還別說,圖片處理得有模有樣。別人都看不出來是新手。

這就是典型得任務驅動,你啊,趕快給自己找一個任務

2、拖延症的確診與治療

通過上面一段,我是盡我所能幫你製造了學習的動機,但是光有動機,後面還會遇到別的問題。

我們接下來就會談在學習過程中會遇到的其他問題。你說我現在已經有了要教別人的動機,但是有拖延症啊,我就笑一下,你咋得了這麼時髦的病啊。最近不少人得了這個病,拖延症中拖延兩個字是一個表象。拖延症有個學名叫注意力缺陷多動障礙,在拖延得表象之下,其實本質是注意力無法集中。如果你有這個病,在下一段我嘗試給你解決這個問題,我還是要強調,只有任務,只有嚴峻得任務才能解決你的拖延症。

關於拖延症我希望你清楚得認識兩點:

  • 任何人都有拖延症,只不過有些事拖延,有些事不拖延,因為一個人總不可能什麼都不幹嘛
  • 第二就算是自認為或者別人認為有拖延症得人,也沒有被拖死

據我了解,醫學上得了這個注意力缺陷多動障礙得人,連初中學業都完成不了,高中學業得少之又少,能考上大學的簡直是寥寥無幾。所以你說你考上了大學,說明你是沒有拖延症。想要解決這個拖延症是任務還是任務。主要是你沒有給自己設置嚴峻得任務。比如你要做一個報告是給你自己朋友得,你可能會拖延,但是假如你要是給你的老闆報告,你敢拖延么,假如你是給上千人做報告你敢拖延么?你想想你有給自己設置過這麼嚴峻得任務么?定期像上千人交代,最好是隔天交一份報告的,最好是隔天交一份報告這樣嚴峻,你可能需要這樣一次得經驗。這裡你肯定又要問了,我去哪裡找上千人報告去。在這裡我要告訴你一個方法,你要把你任務告訴你的身邊的朋友,越多越好,相當於給他們吹個牛逼,這樣你為了不被別人笑話你,你就必須的努力啊。有的人說,我連一件小事都堅持不下了,比如我要減掉5斤肉,幾乎大部分女孩子都成天喊著減肥,但是一直沒有執行起來,這裡面可能是你得目標設置得有問題。你總想著我有我有一個完美得身材,是的,我還想者當億萬富翁呢,這種目標設置是有問題得,王健林不是給我們提過小目標嗎,我覺得他得方法是對的,練習一定伴隨著一定程度的痛苦。只不過有些人他的長期目標非常明確,有的人覺得他很苦,他自己不覺得苦,他就能堅持下來,長期目標太長了,太宏大了會增加這個過程當中的痛苦,那你不妨先不要想著最後的結果,什麼馬甲線啊,什麼翹臀啊,你可以先設置個小遊戲,做仰卧起做,每天增加一下,今天做5下,明天做6下,這是設定小得目標,把你的大的目標細化成可以每天完成事情,完不成總覺得不行。如果你總覺得舒適,那就不是學習,是練習,如果每天只比頭一天多做一個仰卧起坐,那沒那麼苦吧,三個月之後你就可以秀你得身材了,這件事難道聽起來還不夠過癮么。所以說了這麼多,我再嘗試解決你的拖延問題,這個問題是不太容易解決,要解決它之前,你要先認清一個事實,就是

  • 任何人都有拖延得表現,給自己設置一個正真嚴峻的任務
  • 用小的目標去解決拖延的問題
  • 我也為你指出了,從整治自己的身材開始

設定小目標,通過做成這件事來突破,然後形成一種慣性,逐漸去學習一些技巧性比較強的東西,先來增強自己信心,最後再去做哪些需要有量變完成質變得事,那整個這個過程算是高效得了。當然拖延症這種表象前提下事注意力無法集中,接下來會為你好好講講怎麼改善注意力不集中得問題。

3、通過衣食住行訓練專註力

方法一:

如果你要學習一樣東西,需要工具,你要買貴的,比如像樂器,人們學習樂器是為了什麼呢?就是為了聽到好的聲音啊。有人說你是有錢啊,才能買貴的,其實我之前都是買便宜的。關於買工具這件事其實只要你稍微讓自己心疼一點兒就達到效果了,刻意練習這本書強調大量練習,可是你知道怎麼心甘情願得大量練習么?就是要買自己讓自己心疼的工具。

方法二:

吃上怎麼訓練自己專註力,就是吃點兒好的,少吃素食,少吃外賣,少吃自助餐,就算是人均500得自助餐也少吃,吃一次也就夠了。無論是買東西還是吃飯,還是後面提到的其他方面,要的是什麼,是一種儀式感,就自助餐就是缺乏儀式感得活動,這個吃一點兒那個吃一點兒,自助餐往往不會是你吃好,但是會把你吃撐,好幾天都消化不了,我會建議你少去吃自助餐,吃那些素食、外賣弄幾個盒飯在那兒吃,這些都缺乏儀式感,哪怕每次都只有你一個人,也要學會好好吃飯,有人說你能想像出比一個人吃火鍋更孤獨,更寂寞得狀態么,要我說,你們每個人都應該認認真真一個人吃一頓火鍋,最好能學會做一頓飯給自己吃,這是營造儀式感非常好得行為活動,就像上一講給你提到過的,讓自己得身體變得更好,可以是我們重塑自己的開端,一個對感受自己身體走樣都感受不到,把飯吃好,都做不到,那其他方面是很難做到的,

方法三:

我的第三個建議就是在工作學習過程中,盡量使用射燈,就是這個燈得光只會局部打亮,就是光線會聚集在一個範圍得那種燈,這種儀式感得建立可以讓你的注意力稍微集中一點兒,因為其他環境都是黑的,有點兒像舞台得那種感覺,你把自己放在舞台上,應該會把自己放在觀眾席上面更加專註一些,有的人是無法專註,有的人是過分專註,也就是所謂的沉溺。

方法四:

最後我要說一個平常生活中非常影響大家專註的事就是睡眠,睡眠不夠,人很難做到專註,如果你是一個長期缺覺得人,你想專註那真是太難了,所以我在這裡告訴你,困了就睡,不要困得不行了,還要硬撐者做事,這個效率是非常低的,你不如立即進入到高質量的睡眠,你說怎麼進入高質量的睡眠,只有當你累壞了的時候才能進入高質量的睡眠,也就是感覺非常困了,你要知道小孩子睡眠經常伴隨很多次得夜醒,這種睡眠質量算是非常低的。

4、大師

要有明確的目標,直奔大師,不必從基礎開始。你找一些樂器課程,都是讓你基礎開始學習,這是學生得學習路徑,但是我們是成年人,如果是從基礎開始,是沒辦法堅持下來的。要去到哪裡,從哪裡開始

比如你要學習吉他,正好你有一首特別喜歡的歌,那麼就練那一首歌,練三個月。你看你能不能學會。

輔導機構為啥讓你從基礎開始啊,因為不從基礎開始,他們怎麼掙錢呢?

這裡面即涵蓋了興趣,也包含了任務

在這裡你肯定很好奇,為啥說吉他,這與大師有啥關係,因為讓我直接去彈自己喜歡的歌曲,這個方法就是大師教的

那麼對應得就是要學習人工智慧,你就要去找,這個裡面教學水品最好的,儘管會稍微貴一點兒(當然也有教學效果好,還不貴得,有的話我一定在下面推薦),但是效果好呀,節省下來的時間,和讓自己提升得層次水平,讓你在工作裡面不知道能多賺多少錢。

5、製造反饋

如何自己給自己製造反饋,寫一點兒東西出來,錄製一點兒東西出來,以前我給學生講物理題的時候,我都讓學生給我講一遍,給我講清楚算學懂。缺少反饋的是經常是就是平時看書,看完了啥都沒記下。

看書的時候,寫摘要。 Summary 需要看著文本寫,,其中的例子,就不需要出現了。Summary需要用自己的話來寫,找出文本當中重要得事實,觀點和論據 ,要用自己的話來解釋他的話。通過大量的應用和不斷的重複,你沒想背也把它記住了,要的是這種效果,當我們學習英語的時候。尤其是那種你經常犯錯的地方,你需要及時反饋,不然你會在錯誤當中不停打轉,比如學習英語過程中,英語語音掌握就是比較容易犯錯誤的情況,接著給英語發音給你講一講 印度口音 日本口音。練習出了問題,精度不夠,重新回爐,要給自己製造反饋,將自己錄一下聽一聽,不錄下來就不知道自己丑態百出,你能想像舞蹈演員為啥要對著鏡子練習么?

人工智慧學習,怎麼製造反饋呢,你把你學習心得,學習過程中遇到的問題,可以當經驗分享出來,讓別人幫你看哪裡有問題,或者自己找問題。

6、突破學習瓶頸

  • 涉獵範圍不夠廣,影響了你發揮,
  • 專註力不夠,影響了你發揮。

遇到瓶頸不是方法可能是心態。怎麼通過調整心態突破瓶頸,打遊戲可以培養自信心。技術層面做出調整,突破瓶頸,也就是調整方法,這可能就是心態的問題了。心態調整的好,做好多事就會容易很多,這跟訓練專註力,使用射燈的效果是一樣的。遇到瓶頸的第二個瓶頸可能是涉獵範圍不夠廣,比如你要學樂器,你發現你都沒有聽世界級小提請演奏家的的演奏,突破美感的東西就不能靠重複練習了,如果要突破自己瓶頸就需要涉獵範圍廣,聽一些世界級演奏家的演奏,功夫在世外,如果涉獵範圍也夠了,可你還是沒辦法突破,可能是你的專註力不夠。一通百通,一個拿下來,你去學其他的,就會比較快

所以學習人工智慧得過程中,我們不能只悶頭學習,應該也要多聽聽大師得是講座,一些相關的資訊,來加深自己理解。甚至你看看人工智慧其他流派的學術著作,都有助於你理解人工智慧。

第三章:學習資料推薦

推薦以下學習資料不代表是最好的,只是目前還沒發現更好的,如果有人發現了比這更好得,歡迎評論區推薦

並且我會把每個學習資料得優略均做一個分析

推薦資料之前,我要特別申明,堅決反對收藏學習資料(收藏本文可以),儘管收藏了可以短暫緩解你的焦慮

書籍類

科普——人工智慧未來的腦洞:《三體1,2,3》、《未來簡史》、《奇點臨近》、《機器人時代》

科普——人工智慧發展:《失控》、《智能時代》、《人工智慧:李開復談AI如何重塑個人、商業與社會的未來圖譜》、《科學的極致-漫談人工智慧》、《終極演算法》

數學類:《數學之美》、《7日入門微積分》、《程序員的數學》(簡單數學入門)、《程序員的數學-2》(概率與統計)、《程序員的數學-3》(線性代數)

機器學習類:《圖解機器學習》、《機器學習-周志華》

其他AI類:《人工智慧:一種現代的方法》

編程實戰類:《白話深度學習與TensorFlow》、《TensorFlow實戰》、《Python編程 從入門到實踐》

課程類

吳恩達在網易雲課堂上的深度學習課程:https://mooc.study.163.com/smartSpec/detail/1001319001.htm

優點:大師講授,有內容有深度

缺點:英文教學,其中一些教授用的辭彙,根本難以理解,實踐項目偏少

推薦指數:

coursera上的機器學習課程https://www.coursera.org/learn/machine-learning

優點:大師講授,有內容有深度;有證書認證

缺點:英文教學,其中一些教授用的辭彙,根本難以理解;實踐項目偏少;按月收費價格昂貴

推薦指數:

優達學城人工智慧工程師https://cn.udacity.com/course/artificial-intelligence-nanodegree--nd889

優點:谷歌大師親授,有作業批改服務;質量上看有一定的性價比

缺點:英文教學,學習費勁;按課收費,價格偏貴,學生黨望而卻步;部分內容講的不夠深入全面

推薦指數:

小象學院

深度學習課程:http://www.chinahadoop.cn/course/1024

優點:按期教學,帶領學員進度

缺點:只有視頻,很考驗耐性;老師講課語言呆板;純視頻899,價格昂貴;缺乏互動反饋

推薦指數:

北風網人工智慧實戰課程:http://www.ibeifeng.com/job_AIpage.html

優點:內容全面

缺點:內容太多;只有視頻,很考驗耐性;缺乏互動反饋,

推薦指數:

以上就是內容的優缺點,歡迎大家評論區補充,盡量客觀公正,我會採納好的意見補充進來

如果有機構課程做的,質量高、互動好、反饋好、內容極簡、直奔主題,服務好,而且價格實惠。我會強力推薦

當然,如果裡面涉及的技術問題不夠嚴謹,也歡迎大神留言,我看到確認無誤以後,會及時糾正


我的入門主要是通過 Coursera 的機器學習課程和 Udacity 的機器學習工程師納米學位。


推薦閱讀:

為什麼AlphaGo和李世石下棋這麼慢,卻能和自己一天下一百萬盤棋?
目前有哪些比較成功的人工智慧應用?
明明可以語音輸入,為什麼大家還會發語音消息?
如何簡單形象又有趣地講解神經網路是什麼?
概率圖模型(PGM)有必要系統地學習一下嗎?

TAG:人工智慧 | 程序員 | 編程 | 科技 | 機器學習 |