從機器學習談起


  在本篇文章中,我將對機器學習做個概要的介紹。本文的目的是能讓即便完全不瞭解機器學習的人也能瞭解機器學習,並且上手相關的實踐。這篇文檔也算是EasyPR開發的番外篇,從這裏開始,必須對機器學習瞭解才能進一步介紹EasyPR的內核。當然,本文也面對一般讀者,不會對閱讀有相關的前提要求。

  在進入正題前,我想讀者心中可能會有一個疑惑:機器學習有什麼重要性,以至於要閱讀完這篇非常長的文章呢?

  我並不直接回答這個問題前。相反,我想請大家看兩張圖,下圖是圖一:


 圖1 機器學習界的執牛耳者與互聯網界的大鱷的聯姻  

  這幅圖上上的三人是當今機器學習界的執牛耳者。中間的是Geoffrey Hinton, 加拿大多倫多大學的教授,如今被聘爲“Google大腦”的負責人。右邊的是Yann LeCun, 紐約大學教授,如今是Facebook人工智能實驗室的主任。而左邊的大家都很熟悉,Andrew Ng,中文名吳恩達,斯坦福大學副教授,如今也是“百度大腦”的負責人與百度首席科學家。這三位都是目前業界炙手可熱的大牛,被互聯網界大鱷求賢若渴的聘請,足見他們的重要性。而他們的研究方向,則全部都是機器學習的子類--深度學習。

  下圖是圖二:

圖2 語音助手產品

  這幅圖上描述的是什麼?Windows Phone上的語音助手Cortana,名字來源於《光環》中士官長的助手。相比其他競爭對手,微軟很遲才推出這個服務。Cortana背後的核心技術是什麼,爲什麼它能夠聽懂人的語音?事實上,這個技術正是機器學習。機器學習是所有語音助手產品(包括Apple的siri與Google的Now)能夠跟人交互的關鍵技術。

  通過上面兩圖,我相信大家可以看出機器學習似乎是一個很重要的,有很多未知特性的技術。學習它似乎是一件有趣的任務。實際上,學習機器學習不僅可以幫助我們瞭解互聯網界最新的趨勢,同時也可以知道伴隨我們的便利服務的實現技術。

  機器學習是什麼,爲什麼它能有這麼大的魔力,這些問題正是本文要回答的。同時,本文叫做“從機器學習談起”,因此會以漫談的形式介紹跟機器學習相關的所有內容,包括學科(如數據挖掘、計算機視覺等),算法(神經網絡,svm)等等。本文的主要目錄如下:

  1.一個故事說明什麼是機器學習

  2.機器學習的定義

  3.機器學習的範圍

  4.機器學習的方法

  5.機器學習的應用--大數據

  6.機器學習的子類--深度學習

  7.機器學習的父類--人工智能

  8.機器學習的思考--計算機的潛意識

  9.總結

  10.後記

一、一個故事說明什麼是機器學習

  機器學習這個詞是讓人疑惑的,首先它是英文名稱 Machine Learning (簡稱ML)的直譯,在計算界Machine一般指計算機。這個名字使用了擬人的手法,說明了這門技術是讓機器“學習”的技術。但是計算機是死的,怎麼可能像人類一樣“學習”呢?

  傳統上如果我們想讓計算機工作,我們給它一串指令,然後它遵照這個指令一步步執行下去。有因有果,非常明確。但這樣的方式在機器學習中行不通。機器學習根本不接受你輸入的指令,相反,它接受你輸入的數據! 也就是說,機器學習是一種讓計算機利用數據而不是指令來進行各種工作的方法。這聽起來非常不可思議,但結果上卻是非常可行的。“統計”思想將在你學習“機器學習”相關理念時無時無刻不伴隨,相關而不是因果的概念將是支撐機器學習能夠工作的核心概念。你會顛覆對你以前所有程序中建立的因果無處不在的根本理念。

  下面我通過一個故事來簡單地闡明什麼是機器學習。這個故事比較適合用在知乎上作爲一個概念的闡明。在這裏,這個故事沒有展開,但相關內容與核心是存在的。如果你想簡單的瞭解一下什麼是機器學習,那麼看完這個故事就足夠了。如果你想了解機器學習的更多知識以及與它關聯緊密的當代技術,那麼請你繼續往下看,後面有更多的豐富的內容。

  這個例子來源於我真實的生活經驗,我在思考這個問題的時候突然發現它的過程可以被擴充化爲一個完整的機器學習的過程,因此我決定使用這個例子作爲所有介紹的開始。這個故事稱爲“等人問題”。

  我相信大家都有跟別人相約,然後等人的經歷。現實中不是每個人都那麼守時的,於是當你碰到一些愛遲到的人,你的時間不可避免的要浪費。我就碰到過這樣的一個例子。

  對我的一個朋友小Y而言,他就不是那麼守時,最常見的表現是他經常遲到。當有一次我跟他約好3點鐘在某個麥當勞見面時,在我出門的那一刻我突然想到一個問題:我現在出發合適麼?我會不會又到了地點後,花上30分鐘去等他?我決定採取一個策略解決這個問題。

  要想解決這個問題,有好幾種方法。第一種方法是採用知識:我搜尋能夠解決這個問題的知識。但很遺憾,沒有人會把如何等人這個問題作爲知識傳授,因此我不可能找到已有的知識能夠解決這個問題。第二種方法是問他人:我去詢問他人獲得解決這個問題的能力。但是同樣的,這個問題沒有人能夠解答,因爲可能沒人碰上跟我一樣的情況。第三種方法是準則法:我問自己的內心,我有否設立過什麼準則去面對這個問題?例如,無論別人如何,我都會守時到達。但我不是個死板的人,我沒有設立過這樣的規則。

  事實上,我相信有種方法比以上三種都合適。我把過往跟小Y相約的經歷在腦海中重現一下,看看跟他相約的次數中,遲到佔了多大的比例。而我利用這來預測他這次遲到的可能性。如果這個值超出了我心裏的某個界限,那我選擇等一會再出發。假設我跟小Y約過5次,他遲到的次數是1次,那麼他按時到的比例爲80%,我心中的閾值爲70%,我認爲這次小Y應該不會遲到,因此我按時出門。如果小Y在5次遲到的次數中佔了4次,也就是他按時到達的比例爲20%,由於這個值低於我的閾值,因此我選擇推遲出門的時間。這個方法從它的利用層面來看,又稱爲經驗法。在經驗法的思考過程中,我事實上利用了以往所有相約的數據。因此也可以稱之爲依據數據做的判斷。

  依據數據所做的判斷跟機器學習的思想根本上是一致的。

  剛纔的思考過程我只考慮“頻次”這種屬性。在真實的機器學習中,這可能都不算是一個應用。一般的機器學習模型至少考慮兩個量:一個是因變量,也就是我們希望預測的結果,在這個例子裏就是小Y遲到與否的判斷。另一個是自變量,也就是用來預測小Y是否遲到的量。假設我把時間作爲自變量,譬如我發現小Y所有遲到的日子基本都是星期五,而在非星期五情況下他基本不遲到。於是我可以建立一個模型,來模擬小Y遲到與否跟日子是否是星期五的概率。見下圖:

 

圖3 決策樹模型

  這樣的圖就是一個最簡單的機器學習模型,稱之爲決策樹。

  當我們考慮的自變量只有一個時,情況較爲簡單。如果把我們的自變量再增加一個。例如小Y遲到的部分情況時是在他開車過來的時候(你可以理解爲他開車水平較臭,或者路較堵)。於是我可以關聯考慮這些信息。建立一個更復雜的模型,這個模型包含兩個自變量與一個因變量。

  再更復雜一點,小Y的遲到跟天氣也有一定的原因,例如下雨的時候,這時候我需要考慮三個自變量。

  如果我希望能夠預測小Y遲到的具體時間,我可以把他每次遲到的時間跟雨量的大小以及前面考慮的自變量統一建立一個模型。於是我的模型可以預測值,例如他大概會遲到幾分鐘。這樣可以幫助我更好的規劃我出門的時間。在這樣的情況下,決策樹就無法很好地支撐了,因爲決策樹只能預測離散值。我們可以用節2所介紹的線型迴歸方法建立這個模型。

  如果我把這些建立模型的過程交給電腦。比如把所有的自變量和因變量輸入,然後讓計算機幫我生成一個模型,同時讓計算機根據我當前的情況,給出我是否需要遲出門,需要遲幾分鐘的建議。那麼計算機執行這些輔助決策的過程就是機器學習的過程。

  機器學習方法是計算機利用已有的數據(經驗),得出了某種模型(遲到的規律),並利用此模型預測未來(是否遲到)的一種方法。

  通過上面的分析,可以看出機器學習與人類思考的經驗過程是類似的,不過它能考慮更多的情況,執行更加複雜的計算。事實上,機器學習的一個主要目的就是把人類思考歸納經驗的過程轉化爲計算機通過對數據的處理計算得出模型的過程。經過計算機得出的模型能夠以近似於人的方式解決很多靈活複雜的問題。

  下面,我會開始對機器學習的正式介紹,包括定義、範圍,方法、應用等等,都有所包含。

 

二、機器學習的定義

  從廣義上來說,機器學習是一種能夠賦予機器學習的能力以此讓它完成直接編程無法完成的功能的方法。但從實踐的意義上來說,機器學習是一種通過利用數據,訓練出模型,然後使用模型預測的一種方法。

  讓我們具體看一個例子。

圖4 房價的例子

  拿國民話題的房子來說。現在我手裏有一棟房子需要售賣,我應該給它標上多大的價格?房子的面積是100平方米,價格是100萬,120萬,還是140萬?

  很顯然,我希望獲得房價與面積的某種規律。那麼我該如何獲得這個規律?用報紙上的房價平均數據麼?還是參考別人面積相似的?無論哪種,似乎都並不是太靠譜。

  我現在希望獲得一個合理的,並且能夠最大程度的反映面積與房價關係的規律。於是我調查了周邊與我房型類似的一些房子,獲得一組數據。這組數據中包含了大大小小房子的面積與價格,如果我能從這組數據中找出面積與價格的規律,那麼我就可以得出房子的價格。

  對規律的尋找很簡單,擬合出一條直線,讓它“穿過”所有的點,並且與各個點的距離儘可能的小。

  通過這條直線,我獲得了一個能夠最佳反映房價與面積規律的規律。這條直線同時也是一個下式所表明的函數:

  房價 = 面積 * a + b

  上述中的a、b都是直線的參數。獲得這些參數以後,我就可以計算出房子的價格。

  假設a = 0.75,b = 50,則房價 = 100 * 0.75 + 50 = 125萬。這個結果與我前面所列的100萬,120萬,140萬都不一樣。由於這條直線綜合考慮了大部分的情況,因此從“統計”意義上來說,這是一個最合理的預測。

  在求解過程中透露出了兩個信息:
  1.房價模型是根據擬合的函數類型決定的。如果是直線,那麼擬合出的就是直線方程。如果是其他類型的線,例如拋物線,那麼擬合出的就是拋物線方程。機器學習有衆多算法,一些強力算法可以擬合出複雜的非線性模型,用來反映一些不是直線所能表達的情況。
  2.如果我的數據越多,我的模型就越能夠考慮到越多的情況,由此對於新情況的預測效果可能就越好。這是機器學習界“數據爲王”思想的一個體現。一般來說(不是絕對),數據越多,最後機器學習生成的模型預測的效果越好。

  通過我擬合直線的過程,我們可以對機器學習過程做一個完整的回顧。首先,我們需要在計算機中存儲歷史的數據。接着,我們將這些 數據通過機器學習算法進行處理,這個過程在機器學習中叫做“訓練”,處理的結果可以被我們用來對新的數據進行預測,這個結果一般稱之爲“模型”。對新數據 的預測過程在機器學習中叫做“預測”。“訓練”與“預測”是機器學習的兩個過程,“模型”則是過程的中間輸出結果,“訓練”產生“模型”,“模型”指導 “預測”。

  讓我們把機器學習的過程與人類對歷史經驗歸納的過程做個比對。

圖5 機器學習與人類思考的類比


  人類在成長、生活過程中積累了很多的歷史與經驗。人類定期地對這些經驗進行“歸納”,獲得了生活的“規律”。當人類遇到未知的問題或者需要對未來進行“推測”的時候,人類使用這些“規律”,對未知問題與未來進行“推測”,從而指導自己的生活和工作。

  機器學習中的“訓練”與“預測”過程可以對應到人類的“歸納”和“推測”過程。通過這樣的對應,我們可以發現,機器學習的思想並不複雜,僅僅是對人類在生活中學習成長的一個模擬。由於機器學習不是基於編程形成的結果,因此它的處理過程不是因果的邏輯,而是通過歸納思想得出的相關性結論。

   這也可以聯想到人類爲什麼要學習歷史,歷史實際上是人類過往經驗的總結。有句話說得很好,“歷史往往不一樣,但歷史總是驚人的相似”。通過學習歷史,我們從歷史中歸納出人生與國家的規律,從而指導我們的下一步工作,這是具有莫大價值的。當代一些人忽視了歷史的本來價值,而是把其作爲一種宣揚功績的手段,這其實是對歷史真實價值的一種誤用。

  

三、機器學習的範圍

  上文雖然說明了機器學習是什麼,但是並沒有給出機器學習的範圍。

  其實,機器學習跟模式識別,統計學習,數據挖掘,計算機視覺,語音識別,自然語言處理等領域有着很深的聯繫。

  從範圍上來說,機器學習跟模式識別,統計學習,數據挖掘是類似的,同時,機器學習與其他領域的處理技術的結合,形成了計算機視覺、語音識別、自然語言處理等交叉學科。因此,一般說數據挖掘時,可以等同於說機器學習。同時,我們平常所說的機器學習應用,應該是通用的,不僅僅侷限在結構化數據,還有圖像,音頻等應用。

  在這節對機器學習這些相關領域的介紹有助於我們理清機器學習的應用場景與研究範圍,更好的理解後面的算法與應用層次。

  下圖是機器學習所牽扯的一些相關範圍的學科與研究領域。


圖6 機器學習與相關學科

  模式識別
  模式識別=機器學習。兩者的主要區別在於前者是從工業界發展起來的概念,後者則主要源自計算機學科。在著名的《Pattern Recognition And Machine Learning》這本書中,Christopher M. Bishop在開頭是這樣說的“模式識別源自工業界,而機器學習來自於計算機學科。不過,它們中的活動可以被視爲同一個領域的兩個方面,同時在過去的10年間,它們都有了長足的發展”。
  
  數據挖掘
  數據挖掘=機器學習+數據庫。這幾年數據挖掘的概念實在是太耳熟能詳。幾乎等同於炒作。但凡說數據挖掘都會吹噓數據挖掘如何如何,例如從數據中挖出金子,以及將廢棄的數據轉化爲價值等等。但是,我儘管可能會挖出金子,但我也可能挖的是“石頭”啊。這個說法的意思是,數據挖掘僅僅是一種思考方式,告訴我們應該嘗試從數據中挖掘出知識,但不是每個數據都能挖掘出金子的,所以不要神話它。一個系統絕對不會因爲上了一個數據挖掘模塊就變得無所不能(這是IBM最喜歡吹噓的),恰恰相反,一個擁有數據挖掘思維的人員纔是關鍵,而且他還必須對數據有深刻的認識,這樣纔可能從數據中導出模式指引業務的改善。大部分數據挖掘中的算法是機器學習的算法在數據庫中的優化。

  統計學習
  統計學習近似等於機器學習。統計學習是個與機器學習高度重疊的學科。因爲機器學習中的大多數方法來自統計學,甚至可以認爲,統計學的發展促進機器學習的繁榮昌盛。例如著名的支持向量機算法,就是源自統計學科。但是在某種程度上兩者是有分別的,這個分別在於:統計學習者重點關注的是統計模型的發展與優化,偏數學,而機器學習者更關注的是能夠解決問題,偏實踐,因此機器學習研究者會重點研究學習算法在計算機上執行的效率與準確性的提升。
    
  計算機視覺
  計算機視覺=圖像處理+機器學習。圖像處理技術用於將圖像處理爲適合進入機器學習模型中的輸入,機器學習則負責從圖像中識別出相關的模式。計算機視覺相關的應用非常的多,例如百度識圖、手寫字符識別、車牌識別等等應用。這個領域是應用前景非常火熱的,同時也是研究的熱門方向。隨着機器學習的新領域深度學習的發展,大大促進了計算機圖像識別的效果,因此未來計算機視覺界的發展前景不可估量。
  
  語音識別
  語音識別=語音處理+機器學習。語音識別就是音頻處理技術與機器學習的結合。語音識別技術一般不會單獨使用,一般會結合自然語言處理的相關技術。目前的相關應用有蘋果的語音助手siri等。

  自然語言處理
  自然語言處理=文本處理+機器學習。自然語言處理技術主要是讓機器理解人類的語言的一門領域。在自然語言處理技術中,大量使用了編譯原理相關的技術,例如詞法分析,語法分析等等,除此之外,在理解這個層面,則使用了語義理解,機器學習等技術。作爲唯一由人類自身創造的符號,自然語言處理一直是機器學習界不斷研究的方向。按照百度機器學習專家餘凱的說法“聽與看,說白了就是阿貓和阿狗都會的,而只有語言纔是人類獨有的”。如何利用機器學習技術進行自然語言的的深度理解,一直是工業和學術界關注的焦點。

  可以看出機器學習在衆多領域的外延和應用。機器學習技術的發展促使了很多智能領域的進步,改善着我們的生活。

 

四、機器學習的方法

  通過上節的介紹我們知曉了機器學習的大致範圍,那麼機器學習裏面究竟有多少經典的算法呢?在這個部分我會簡要介紹一下機器學習中的經典代表方法。這部分介紹的重點是這些方法內涵的思想,數學與實踐細節不會在這討論。

  1、迴歸算法

  在大部分機器學習課程中,迴歸算法都是介紹的第一個算法。原因有兩個:一.迴歸算法比較簡單,介紹它可以讓人平滑地從統計學遷移到機器學習中。二.迴歸算法是後面若干強大算法的基石,如果不理解迴歸算法,無法學習那些強大的算法。迴歸算法有兩個重要的子類:即線性迴歸和邏輯迴歸。

  線性迴歸就是我們前面說過的房價求解問題。如何擬合出一條直線最佳匹配我所有的數據?一般使用“最小二乘法”來求解。“最小二乘法”的思想是這樣的,假設我們擬合出的直線代表數據的真實值,而觀測到的數據代表擁有誤差的值。爲了儘可能減小誤差的影響,需要求解一條直線使所有誤差的平方和最小。最小二乘法將最優問題轉化爲求函數極值問題。函數極值在數學上我們一般會採用求導數爲0的方法。但這種做法並不適合計算機,可能求解不出來,也可能計算量太大。

  計算機科學界專門有一個學科叫“數值計算”,專門用來提升計算機進行各類計算時的準確性和效率問題。例如,著名的“梯度下降”以及“牛頓法”就是數值計算中的經典算法,也非常適合來處理求解函數極值的問題。梯度下降法是解決迴歸模型中最簡單且有效的方法之一。從嚴格意義上來說,由於後文中的神經網絡和推薦算法中都有線性迴歸的因子,因此梯度下降法在後面的算法實現中也有應用。

  邏輯迴歸是一種與線性迴歸非常類似的算法,但是,從本質上講,線型迴歸處理的問題類型與邏輯迴歸不一致。線性迴歸處理的是數值問題,也就是最後預測出的結果是數字,例如房價。而邏輯回歸屬於分類算法,也就是說,邏輯迴歸預測結果是離散的分類,例如判斷這封郵件是否是垃圾郵件,以及用戶是否會點擊此廣告等等。

  實現方面的話,邏輯迴歸只是對對線性迴歸的計算結果加上了一個Sigmoid函數,將數值結果轉化爲了0到1之間的概率(Sigmoid函數的圖像一般來說並不直觀,你只需要理解對數值越大,函數越逼近1,數值越小,函數越逼近0),接着我們根據這個概率可以做預測,例如概率大於0.5,則這封郵件就是垃圾郵件,或者腫瘤是否是惡性的等等。從直觀上來說,邏輯迴歸是畫出了一條分類線,見下圖。


  圖7 邏輯迴歸的直觀解釋

  假設我們有一組腫瘤患者的數據,這些患者的腫瘤中有些是良性的(圖中的藍色點),有些是惡性的(圖中的紅色點)。這裏腫瘤的紅藍色可以被稱作數據的“標籤”。同時每個數據包括兩個“特徵”:患者的年齡與腫瘤的大小。我們將這兩個特徵與標籤映射到這個二維空間上,形成了我上圖的數據。

  當我有一個綠色的點時,我該判斷這個腫瘤是惡性的還是良性的呢?根據紅藍點我們訓練出了一個邏輯迴歸模型,也就是圖中的分類線。這時,根據綠點出現在分類線的左側,因此我們判斷它的標籤應該是紅色,也就是說屬於惡性腫瘤。

  邏輯迴歸算法劃出的分類線基本都是線性的(也有劃出非線性分類線的邏輯迴歸,不過那樣的模型在處理數據量較大的時候效率會很低),這意味着當兩類之間的界線不是線性時,邏輯迴歸的表達能力就不足。下面的兩個算法是機器學習界最強大且重要的算法,都可以擬合出非線性的分類線。

  2、神經網絡

  神經網絡(也稱之爲人工神經網絡,ANN)算法是80年代機器學習界非常流行的算法,不過在90年代中途衰落。現在,攜着“深度學習”之勢,神經網絡重裝歸來,重新成爲最強大的機器學習算法之一。

  神經網絡的誕生起源於對大腦工作機理的研究。早期生物界學者們使用神經網絡來模擬大腦。機器學習的學者們使用神經網絡進行機器學習的實驗,發現在視覺與語音的識別上效果都相當好。在BP算法(加速神經網絡訓練過程的數值算法)誕生以後,神經網絡的發展進入了一個熱潮。BP算法的發明人之一是前面介紹的機器學習大牛Geoffrey Hinton(圖1中的中間者)。

  具體說來,神經網絡的學習機理是什麼?簡單來說,就是分解與整合。在著名的Hubel-Wiesel試驗中,學者們研究貓的視覺分析機理是這樣的。



   圖8 Hubel-Wiesel試驗與大腦視覺機理

  比方說,一個正方形,分解爲四個折線進入視覺處理的下一層中。四個神經元分別處理一個折線。每個折線再繼續被分解爲兩條直線,每條直線再被分解爲黑白兩個面。於是,一個複雜的圖像變成了大量的細節進入神經元,神經元處理以後再進行整合,最後得出了看到的是正方形的結論。這就是大腦視覺識別的機理,也是神經網絡工作的機理。

  讓我們看一個簡單的神經網絡的邏輯架構。在這個網絡中,分成輸入層,隱藏層,和輸出層。輸入層負責接收信號,隱藏層負責對數據的分解與處理,最後的結果被整合到輸出層。每層中的一個圓代表一個處理單元,可以認爲是模擬了一個神經元,若干個處理單元組成了一個層,若干個層再組成了一個網絡,也就是"神經網絡"。


圖9 神經網絡的邏輯架構


  在神經網絡中,每個處理單元事實上就是一個邏輯迴歸模型,邏輯迴歸模型接收上層的輸入,把模型的預測結果作爲輸出傳輸到下一個層次。通過這樣的過程,神經網絡可以完成非常複雜的非線性分類。

  下圖會演示神經網絡在圖像識別領域的一個著名應用,這個程序叫做LeNet,是一個基於多個隱層構建的神經網絡。通過LeNet可以識別多種手寫數字,並且達到很高的識別精度與擁有較好的魯棒性。

圖10 LeNet的效果展示

  右下方的方形中顯示的是輸入計算機的圖像,方形上方的紅色字樣“answer”後面顯示的是計算機的輸出。左邊的三條豎直的圖像列顯示的是神經網絡中三個隱藏層的輸出,可以看出,隨着層次的不斷深入,越深的層次處理的細節越低,例如層3基本處理的都已經是線的細節了。LeNet的發明人就是前文介紹過的機器學習的大牛Yann LeCun(圖1右者)。

  進入90年代,神經網絡的發展進入了一個瓶頸期。其主要原因是儘管有BP算法的加速,神經網絡的訓練過程仍然很困難。因此90年代後期支持向量機(SVM)算法取代了神經網絡的地位。

  3、SVM(支持向量機)

  支持向量機算法是誕生於統計學習界,同時在機器學習界大放光彩的經典算法。

  支持向量機算法從某種意義上來說是邏輯迴歸算法的強化:通過給予邏輯迴歸算法更嚴格的優化條件,支持向量機算法可以獲得比邏輯迴歸更好的分類界線。但是如果沒有某類函數技術,則支持向量機算法最多算是一種更好的線性分類技術。

  但是,通過跟高斯“核”的結合,支持向量機可以表達出非常複雜的分類界線,從而達成很好的的分類效果。“核”事實上就是一種特殊的函數,最典型的特徵就是可以將低維的空間映射到高維的空間。

  例如下圖所示:

          

 圖11 支持向量機圖例


  我們如何在二維平面劃分出一個圓形的分類界線?在二維平面可能會很困難,但是通過“核”可以將二維空間映射到三維空間,然後使用一個線性平面就可以達成類似效果。也就是說,二維平面劃分出的非線性分類界線可以等價於三維平面的線性分類界線。於是,我們可以通過在三維空間中進行簡單的線性劃分就可以達到在二維平面中的非線性劃分效果。

 圖12 三維空間的切割


  支持向量機是一種數學成分很濃的機器學習算法(相對的,神經網絡則有生物科學成分)。在算法的核心步驟中,有一步證明,即將數據從低維映射到高維不會帶來最後計算複雜性的提升。於是,通過支持向量機算法,既可以保持計算效率,又可以獲得非常好的分類效果。因此支持向量機在90年代後期一直佔據着機器學習中最核心的地位,基本取代了神經網絡算法。直到現在神經網絡藉着深度學習重新興起,兩者之間才又發生了微妙的平衡轉變。


  4、聚類算法

  前面的算法中的一個顯著特徵就是我的訓練數據中包含了標籤,訓練出的模型可以對其他未知數據預測標籤。在下面的算法中,訓練數據都是不含標籤的,而算法的目的則是通過訓練,推測出這些數據的標籤。這類算法有一個統稱,即無監督算法(前面有標籤的數據的算法則是有監督算法)。無監督算法中最典型的代表就是聚類算法。

  讓我們還是拿一個二維的數據來說,某一個數據包含兩個特徵。我希望通過聚類算法,給他們中不同的種類打上標籤,我該怎麼做呢?簡單來說,聚類算法就是計算種羣中的距離,根據距離的遠近將數據劃分爲多個族羣。

  聚類算法中最典型的代表就是K-Means算法。


  5、降維算法

  降維算法也是一種無監督學習算法,其主要特徵是將數據從高維降低到低維層次。在這裏,維度其實表示的是數據的特徵量的大小,例如,房價包含房子的長、寬、面積與房間數量四個特徵,也就是維度爲4維的數據。可以看出來,長與寬事實上與面積表示的信息重疊了,例如面積=長 × 寬。通過降維算法我們就可以去除冗餘信息,將特徵減少爲面積與房間數量兩個特徵,即從4維的數據壓縮到2維。於是我們將數據從高維降低到低維,不僅利於表示,同時在計算上也能帶來加速。

  剛纔說的降維過程中減少的維度屬於肉眼可視的層次,同時壓縮也不會帶來信息的損失(因爲信息冗餘了)。如果肉眼不可視,或者沒有冗餘的特徵,降維算法也能工作,不過這樣會帶來一些信息的損失。但是,降維算法可以從數學上證明,從高維壓縮到的低維中最大程度地保留了數據的信息。因此,使用降維算法仍然有很多的好處。

  降維算法的主要作用是壓縮數據與提升機器學習其他算法的效率。通過降維算法,可以將具有幾千個特徵的數據壓縮至若干個特徵。另外,降維算法的另一個好處是數據的可視化,例如將5維的數據壓縮至2維,然後可以用二維平面來可視。降維算法的主要代表是PCA算法(即主成分分析算法)。


  6、推薦算法

  推薦算法是目前業界非常火的一種算法,在電商界,如亞馬遜,天貓,京東等得到了廣泛的運用。推薦算法的主要特徵就是可以自動向用戶推薦他們最感興趣的東西,從而增加購買率,提升效益。推薦算法有兩個主要的類別:

  一類是基於物品內容的推薦,是將與用戶購買的內容近似的物品推薦給用戶,這樣的前提是每個物品都得有若干個標籤,因此纔可以找出與用戶購買物品類似的物品,這樣推薦的好處是關聯程度較大,但是由於每個物品都需要貼標籤,因此工作量較大。

  另一類是基於用戶相似度的推薦,則是將與目標用戶興趣相同的其他用戶購買的東西推薦給目標用戶,例如小A歷史上買了物品B和C,經過算法分析,發現另一個與小A近似的用戶小D購買了物品E,於是將物品E推薦給小A。

  兩類推薦都有各自的優缺點,在一般的電商應用中,一般是兩類混合使用。推薦算法中最有名的算法就是協同過濾算法。

  7、其他

  除了以上算法之外,機器學習界還有其他的如高斯判別,樸素貝葉斯,決策樹等等算法。但是上面列的六個算法是使用最多,影響最廣,種類最全的典型。機器學習界的一個特色就是算法衆多,發展百花齊放。

  下面做一個總結,按照訓練的數據有無標籤,可以將上面算法分爲監督學習算法和無監督學習算法,但推薦算法較爲特殊,既不屬於監督學習,也不屬於非監督學習,是單獨的一類。

  監督學習算法:
  線性迴歸,邏輯迴歸,神經網絡,SVM

  無監督學習算法:
  聚類算法,降維算法

  特殊算法:
  推薦算法

  除了這些算法以外,有一些算法的名字在機器學習領域中也經常出現。但他們本身並不算是一個機器學習算法,而是爲了解決某個子問題而誕生的。你可以理解他們爲以上算法的子算法,用於大幅度提高訓練過程。其中的代表有:梯度下降法,主要運用在線型迴歸,邏輯迴歸,神經網絡,推薦算法中;牛頓法,主要運用在線型迴歸中;BP算法,主要運用在神經網絡中;SMO算法,主要運用在SVM中。


五、機器學習的應用--大數據

  說完機器學習的方法,下面要談一談機器學習的應用了。無疑,在2010年以前,機器學習的應用在某些特定領域發揮了巨大的作用,如車牌識別,網絡攻擊防範,手寫字符識別等等。但是,從2010年以後,隨着大數據概念的興起,機器學習大量的應用都與大數據高度耦合,幾乎可以認爲大數據是機器學習應用的最佳場景。

  譬如,但凡你能找到的介紹大數據魔力的文章,都會說大數據如何準確準確預測到了某些事。例如經典的Google利用大數據預測了H1N1在美國某小鎮的爆發。

 

圖13 Google成功預測H1N1


  百度預測2014年世界盃,從淘汰賽到決賽全部預測正確。

圖14 百度世界盃成功預測了所有比賽結果

  這些實在太神奇了,那麼究竟是什麼原因導致大數據具有這些魔力的呢?簡單來說,就是機器學習技術。正是基於機器學習技術的應用,數據才能發揮其魔力。

  大數據的核心是利用數據的價值,機器學習是利用數據價值的關鍵技術,對於大數據而言,機器學習是不可或缺的。相反,對於機器學習而言,越多的數據會越 可能提升模型的精確性,同時,複雜的機器學習算法的計算時間也迫切需要分佈式計算與內存計算這樣的關鍵技術。因此,機器學習的興盛也離不開大數據的幫助。 大數據與機器學習兩者是互相促進,相依相存的關係。

  機器學習與大數據緊密聯繫。但是,必須清醒的認識到,大數據並不等同於機器學習,同理,機器學習也不等同於大數據。大數據中包含有分佈式計算,內存數據庫,多維分析等等多種技術。單從分析方法來看,大數據也包含以下四種分析方法:

  1.大數據,小分析:即數據倉庫領域的OLAP分析思路,也就是多維分析思想。
  2.大數據,大分析:這個代表的就是數據挖掘與機器學習分析法。
  3.流式分析:這個主要指的是事件驅動架構。
  4.查詢分析:經典代表是NoSQL數據庫。

  也就是說,機器學習僅僅是大數據分析中的一種而已。儘管機器學習的一些結果具有很大的魔力,在某種場合下是大數據價值最好的說明。但這並不代表機器學習是大數據下的唯一的分析方法。

  機器學習與大數據的結合產生了巨大的價值。基於機器學習技術的發展,數據能夠“預測”。對人類而言,積累的經驗越豐富,閱歷也廣泛,對未來的判斷越準確。例如常說的“經驗豐富”的人比“初出茅廬”的小夥子更有工作上的優勢,就在於經驗豐富的人獲得的規律比他人更準確。而在機器學習領域,根據著名的一個實驗,有效的證實了機器學習界一個理論:即機器學習模型的數據越多,機器學習的預測的效率就越好。見下圖:

圖15 機器學習準確率與數據的關係

  通過這張圖可以看出,各種不同算法在輸入的數據量達到一定級數後,都有相近的高準確度。於是誕生了機器學習界的名言:成功的機器學習應用不是擁有最好的算法,而是擁有最多的數據!

  在大數據的時代,有好多優勢促使機器學習能夠應用更廣泛。例如隨着物聯網和移動設備的發展,我們擁有的數據越來越多,種類也包括圖片、文本、視頻等非結構化數據,這使得機器學習模型可以獲得越來越多的數據。同時大數據技術中的分佈式計算Map-Reduce使得機器學習的速度越來越快,可以更方便的使用。種種優勢使得在大數據時代,機器學習的優勢可以得到最佳的發揮。

六、機器學習的子類--深度學習

  近來,機器學習的發展產生了一個新的方向,即“深度學習”。

  雖然深度學習這四字聽起來頗爲高大上,但其理念卻非常簡單,就是傳統的神經網絡發展到了多隱藏層的情況。

  在上文介紹過,自從90年代以後,神經網絡已經消寂了一段時間。但是BP算法的發明人Geoffrey Hinton一直沒有放棄對神經網絡的研究。由於神經網絡在隱藏層擴大到兩個以上,其訓練速度就會非常慢,因此實用性一直低於支持向量機。2006年,Geoffrey Hinton在科學雜誌《Science》上發表了一篇文章,論證了兩個觀點:

  1.多隱層的神經網絡具有優異的特徵學習能力,學習得到的特徵對數據有更本質的刻畫,從而有利於可視化或分類;

  2.深度神經網絡在訓練上的難度,可以通過“逐層初始化” 來有效克服。



圖16 Geoffrey Hinton與他的學生在Science上發表文章

  通過這樣的發現,不僅解決了神經網絡在計算上的難度,同時也說明了深層神經網絡在學習上的優異性。從此,神經網絡重新成爲了機器學習界中的主流強大學習技術。同時,具有多個隱藏層的神經網絡被稱爲深度神經網絡,基於深度神經網絡的學習研究稱之爲深度學習。

  由於深度學習的重要性質,在各方面都取得極大的關注,按照時間軸排序,有以下四個標誌性事件值得一說:

  2012年6月,《紐約時報》披露了Google Brain項目,這個項目是由Andrew Ng和Map-Reduce發明人Jeff Dean共同主導,用16000個CPU Core的並行計算平臺訓練一種稱爲“深層神經網絡”的機器學習模型,在語音識別和圖像識別等領域獲得了巨大的成功。Andrew Ng就是文章開始所介紹的機器學習的大牛(圖1中左者)。

  2012年11月,微軟在中國天津的一次活動上公開演示了一個全自動的同聲傳譯系統,講演者用英文演講,後臺的計算機一氣呵成自動完成語音識別、英中機器翻譯,以及中文語音合成,效果非常流暢,其中支撐的關鍵技術是深度學習;

  2013年1月,在百度的年會上,創始人兼CEO李彥宏高調宣佈要成立百度研究院,其中第一個重點方向就是深度學習,併爲此而成立深度學習研究院(IDL)。

  2013年4月,《麻省理工學院技術評論》雜誌將深度學習列爲2013年十大突破性技術(Breakthrough Technology)之首。


圖17 深度學習的發展熱潮

  文章開頭所列的三位機器學習的大牛,不僅都是機器學習界的專家,更是深度學習研究領域的先驅。因此,使他們擔任各個大型互聯網公司技術掌舵者的原因不僅在於他們的技術實力,更在於他們研究的領域是前景無限的深度學習技術。

  目前業界許多的圖像識別技術與語音識別技術的進步都源於深度學習的發展,除了本文開頭所提的Cortana等語音助手,還包括一些圖像識別應用,其中典型的代表就是下圖的百度識圖功能。

圖18 百度識圖

  深度學習屬於機器學習的子類。基於深度學習的發展極大的促進了機器學習的地位提高,更進一步地,推動了業界對機器學習父類人工智能夢想的再次重視。

 

七、機器學習的父類--人工智能

  人工智能是機器學習的父類。深度學習則是機器學習的子類。如果把三者的關係用圖來表明的話,則是下圖:


圖19 深度學習、機器學習、人工智能三者關係

  毫無疑問,人工智能(AI)是人類所能想象的科技界最突破性的發明了,某種意義上來說,人工智能就像遊戲最終幻想的名字一樣,是人類對於科技界的最終夢想。從50年代提出人工智能的理念以後,科技界,產業界不斷在探索,研究。這段時間各種小說、電影都在以各種方式展現對於人工智能的想象。人類可以發明類似於人類的機器,這是多麼偉大的一種理念!但事實上,自從50年代以後,人工智能的發展就磕磕碰碰,未有見到足夠震撼的科學技術的進步。

  總結起來,人工智能的發展經歷瞭如下若干階段,從早期的邏輯推理,到中期的專家系統,這些科研進步確實使我們離機器的智能有點接近了,但還有一大段距離。直到機器學習誕生以後,人工智能界感覺終於找對了方向。基於機器學習的圖像識別和語音識別在某些垂直領域達到了跟人相媲美的程度。機器學習使人類第一次如此接近人工智能的夢想。

  事實上,如果我們把人工智能相關的技術以及其他業界的技術做一個類比,就可以發現機器學習在人工智能中的重要地位不是沒有理由的。

  人類區別於其他物體,植物,動物的最主要區別,作者認爲是“智慧”。而智慧的最佳體現是什麼?

  是計算能力麼,應該不是,心算速度快的人我們一般稱之爲天才。
  是反應能力麼,也不是,反應快的人我們稱之爲靈敏。
  是記憶能力麼,也不是,記憶好的人我們一般稱之爲過目不忘。
  是推理能力麼,這樣的人我也許會稱他智力很高,類似“福爾摩斯”,但不會稱他擁有智慧。
  是知識能力麼,這樣的人我們稱之爲博聞廣,也不會稱他擁有智慧。

  想想看我們一般形容誰有大智慧?聖人,諸如莊子,老子等。智慧是對生活的感悟,是對人生的積澱與思考,這與我們機器學習的思想何其相似?通過經驗獲取規律,指導人生與未來。沒有經驗就沒有智慧。

 



圖20 機器學習與智慧

  

  那麼,從計算機來看,以上的種種能力都有種種技術去應對。

  例如計算能力我們有分佈式計算,反應能力我們有事件驅動架構,檢索能力我們有搜索引擎,知識存儲能力我們有數據倉庫,邏輯推理能力我們有專家系統,但是,唯有對應智慧中最顯著特徵的歸納與感悟能力,只有機器學習與之對應。這也是機器學習能力最能表徵智慧的根本原因。

  讓我們再看一下機器人的製造,在我們具有了強大的計算,海量的存儲,快速的檢索,迅速的反應,優秀的邏輯推理後我們如果再配合上一個強大的智慧大腦,一個真正意義上的人工智能也許就會誕生,這也是爲什麼說在機器學習快速發展的現在,人工智能可能不再是夢想的原因。

  人工智能的發展可能不僅取決於機器學習,更取決於前面所介紹的深度學習,深度學習技術由於深度模擬了人類大腦的構成,在視覺識別與語音識別上顯著性的突破了原有機器學習技術的界限,因此極有可能是真正實現人工智能夢想的關鍵技術。無論是谷歌大腦還是百度大腦,都是通過海量層次的深度學習網絡所構成的。也許藉助於深度學習技術,在不遠的將來,一個具有人類智能的計算機真的有可能實現。

  最後再說一下題外話,由於人工智能藉助於深度學習技術的快速發展,已經在某些地方引起了傳統技術界達人的擔憂。真實世界的“鋼鐵俠”,特斯拉CEO馬斯克就是其中之一。最近馬斯克在參加MIT討論會時,就表達了對於人工智能的擔憂。“人工智能的研究就類似於召喚惡魔,我們必須在某些地方加強注意。”

 

圖21 馬斯克與人工智能

  儘管馬斯克的擔心有些危言聳聽,但是馬斯克的推理不無道理。“如果人工智能想要消除垃圾郵件的話,可能它最後的決定就是消滅人類。”馬斯克認爲預防此類現象的方法是引入政府的監管。在這裏作者的觀點與馬斯克類似,在人工智能誕生之初就給其加上若干規則限制可能有效,也就是不應該使用單純的機器學習,而應該是機器學習與規則引擎等系統的綜合能夠較好的解決這類問題。因爲如果學習沒有限制,極有可能進入某個誤區,必須要加上某些引導。正如人類社會中,法律就是一個最好的規則,殺人者死就是對於人類在探索提高生產力時不可逾越的界限。

  在這裏,必須提一下這裏的規則與機器學習引出的規律的不同,規律不是一個嚴格意義的準則,其代表的更多是概率上的指導,而規則則是神聖不可侵犯,不可修改的。規律可以調整,但規則是不能改變的。有效的結合規律與規則的特點,可以引導出一個合理的,可控的學習型人工智能。

 

八、機器學習的思考--計算機的潛意識

  最後,作者想談一談關於機器學習的一些思考。主要是作者在日常生活總結出來的一些感悟。

  回想一下我在節1裏所說的故事,我把小Y過往跟我相約的經歷做了一個羅列。但是這種羅列以往所有經歷的方法只有少數人會這麼做,大部分的人採用的是更直接的方法,即利用直覺。那麼,直覺是什麼?其實直覺也是你在潛意識狀態下思考經驗後得出的規律。就像你通過機器學習算法,得到了一個模型,那麼你下次只要直接使用就行了。那麼這個規律你是什麼時候思考的?可能是在你無意識的情況下,例如睡覺,走路等情況。這種時候,大腦其實也在默默地做一些你察覺不到的工作。

  這種直覺與潛意識,我把它與另一種人類思考經驗的方式做了區分。如果一個人勤于思考,例如他會每天做一個小結,譬如“吾日三省吾身”,或者他經常與同伴討論最近工作的得失,那麼他這種訓練模型的方式是直接的,明意識的思考與歸納。這樣的效果很好,記憶性強,並且更能得出有效反應現實的規律。但是大部分的人可能很少做這樣的總結,那麼他們得出生活中規律的方法使用的就是潛意識法。

  舉一個作者本人關於潛意識的例子。作者本人以前沒開過車,最近一段時間買了車後,天天開車上班。我每天都走固定的路線。有趣的是,在一開始的幾天,我非常緊張的注意着前方的路況,而現在我已經在無意識中就把車開到了目標。這個過程中我的眼睛是注視着前方的,我的大腦是沒有思考,但是我手握着的方向盤會自動的調整方向。也就是說。隨着我開車次數的增多,我已經把我開車的動作交給了潛意識。這是非常有趣的一件事。在這段過程中,我的大腦將前方路況的圖像記錄了下來,同時大腦也記憶了我轉動方向盤的動作。經過大腦自己的潛意識思考,最後生成的潛意識可以直接根據前方的圖像調整我手的動作。假設我們將前方的錄像交給計算機,然後讓計算機記錄與圖像對應的駕駛員的動作。經過一段時間的學習,計算機生成的機器學習模型就可以進行自動駕駛了。這很神奇,不是麼。其實包括Google、特斯拉在內的自動駕駛汽車技術的原理就是這樣。

  除了自動駕駛汽車以外,潛意識的思想還可以擴展到人的交際。譬如說服別人,一個最佳的方法就是給他展示一些信息,然後讓他自己去歸納得出我們想要的結論。就好比在闡述一個觀點時,用一個事實,或者一個故事,比大段的道理要好很多。古往今來,但凡優秀的說客,無不採用的是這種方法。春秋戰國時期,各國合縱連橫,經常有各種說客去跟一國之君交流,直接告訴君主該做什麼,無異於自尋死路,但是跟君主講故事,通過這些故事讓君主恍然大悟,就是一種正確的過程。這裏面有許多傑出的代表,如墨子,蘇秦等等。

  基本上所有的交流過程,使用故事說明的效果都要遠勝於闡述道義之類的效果好很多。爲什麼用故事的方法比道理或者其他的方法好很多,這是因爲在人成長的過程,經過自己的思考,已經形成了很多規律與潛意識。如果你告訴的規律與對方的不相符,很有可能出於保護,他們會本能的拒絕你的新規律,但是如果你跟他講一個故事,傳遞一些信息,輸送一些數據給他,他會思考並自我改變。他的思考過程實際上就是機器學習的過程,他把新的數據納入到他的舊有的記憶與數據中,經過重新訓練。如果你給出的數據的信息量非常大,大到調整了他的模型,那麼他就會按照你希望的規律去做事。有的時候,他會本能的拒絕執行這個思考過程,但是數據一旦輸入,無論他希望與否,他的大腦都會在潛意識狀態下思考,並且可能改變他的看法。

  如果計算機也擁有潛意識(正如本博客的名稱一樣),那麼會怎麼樣?譬如讓計算機在工作的過程中,逐漸產生了自身的潛意識,於是甚至可以在你不需要告訴它做什麼時它就會完成那件事。這是個非常有意思的設想,這裏留給各位讀者去發散思考吧。


九、總結

  本文首先介紹了互聯網界與機器學習大牛結合的趨勢,以及使用機器學習的相關應用,接着以一個“等人故事”展開對機器學習的介紹。介紹中首先是機器學習的概念與定義,然後是機器學習的相關學科,機器學習中包含的各類學習算法,接着介紹機器學習與大數據的關係,機器學習的新子類深度學習,最後探討了一下機器學習與人工智能發展的聯繫以及機器學習與潛意識的關聯。經過本文的介紹,相信大家對機器學習技術有一定的瞭解,例如機器學習是什麼,它的內核思想是什麼(即統計和歸納),通過了解機器學習與人類思考的近似聯繫可以知曉機器學習爲什麼具有智慧能力的原因等等。其次,本文漫談了機器學習與外延學科的關係,機器學習與大數據相互促進相得益彰的聯繫,機器學習界最新的深度學習的迅猛發展,以及對於人類基於機器學習開發智能機器人的一種展望與思考,最後作者簡單談了一點關於讓計算機擁有潛意識的設想。

  機器學習是目前業界最爲Amazing與火熱的一項技術,從網上的每一次淘寶的購買東西,到自動駕駛汽車技術,以及網絡攻擊抵禦系統等等,都有機器學習的因子在內,同時機器學習也是最有可能使人類完成AI dream的一項技術,各種人工智能目前的應用,如微軟小冰聊天機器人,到計算機視覺技術的進步,都有機器學習努力的成分。作爲一名當代的計算機領域的開發或管理人員,以及身處這個世界,使用者IT技術帶來便利的人們,最好都應該瞭解一些機器學習的相關知識與概念,因爲這可以幫你更好的理解爲你帶來莫大便利技術的背後原理,以及讓你更好的理解當代科技的進程。

十、後記

  這篇文檔花了作者兩個月的時間,終於在2014年的最後一天的前一天基本完成。通過這篇文章,作者希望對機器學習在國內的普及做一點貢獻,同時也是作者本人自己對於所學機器學習知識的一個融匯貫通,整體歸納的提高過程。作者把這麼多的知識經過自己的大腦思考,訓練出了一個模型,形成了這篇文檔,可以說這也是一種機器學習的過程吧(笑)。

  作者所在的行業會接觸到大量的數據,因此對於數據的處理和分析是平常非常重要的工作,機器學習課程的思想和理念對於作者日常的工作指引作用極大,幾乎導致了作者對於數據價值的重新認識。想想半年前,作者還對機器學習似懂非懂,如今也可以算是一個機器學習的Expert了(笑)。但作者始終認爲,機器學習的真正應用不是通過概念或者思想的方式,而是通過實踐。只有當把機器學習技術真正應用時,纔可算是對機器學習的理解進入了一個層次。正所謂再“陽春白雪”的技術,也必須落到“下里巴人”的場景下運用。目前有一種風氣,國內外研究機器學習的某些學者,有一種高貴的逼格,認爲自己的研究是普通人無法理解的,但是這樣的理念是根本錯誤的,沒有在真正實際的地方發揮作用,憑什麼證明你的研究有所價值呢?作者認爲必須將高大上的技術用在改變普通人的生活上,才能發揮其根本的價值。一些簡單的場景,恰恰是實踐機器學習技術的最好地方。

  最後,作者很感謝能夠閱讀到這裏的讀者。如果看完覺得好的話,還請輕輕點一下贊,你們的鼓勵就是作者繼續行文的動力。

 

  對EasyPR做下說明:EasyPR,一個開源的中文車牌識別系統,代碼託管在github。其次,在前面的博客文章中,包含EasyPR至今的開發文檔與介紹在後續的文章中,作者會介紹EasyPR中基於機器學習技術SVM的應用即車牌判別模塊的核心內容,歡迎繼續閱讀。

 

版權說明:

  本文中的所有文字,圖片,代碼的版權都是屬於作者和博客園共同所有。歡迎轉載,但是務必註明作者與出處。任何未經允許的剽竊以及爬蟲抓取都屬於侵權,作者和博客園保留所有權利。

 

 

參考文獻:

  1.Andrew Ng Courera Machine Learning

  2.LeNet Homepage

  3.pluskid svm



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章