1. 程式人生 > >深入淺出,一篇超棒的機器學習入門文章

深入淺出,一篇超棒的機器學習入門文章

在本篇文章中,我將對機器學習做個概要的介紹。本文的目的是能讓即便完全不瞭解機器學習的人也能瞭解機器學習,並且上手相關的實踐。這篇文件也算是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.後記



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


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


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


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


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


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


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


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


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


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


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




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


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


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


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


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


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


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


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


2.機器學習的定義


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


讓我們具體看一個例子。




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


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


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


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


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


房價 = 面積 * a + b

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


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


在求解過程中透露出了兩個資訊:


  1. 房價模型是根據擬合的函式型別決定的。如果是直線,那麼擬合出的就是直線方程。如果是其他型別的線,例如拋物線,那麼擬合出的就是拋物線方程。機器學習有眾多演算法,一些強力演算法可以擬合出複雜的非線性模型,用來反映一些不是直線所能表達的情況。

  2. 如果我的資料越多,我的模型就越能夠考慮到越多的情況,由此對於新情況的預測效果可能就越好。這是機器學習界“資料為王”思想的一個體現。一般來說(不是絕對),資料越多,最後機器學習生成的模型預測的效果越好。


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


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



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


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


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


3.機器學習的範圍


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


其實,機器學習跟模式識別,統計學習,資料探勘,計算機視覺,語音識別,自然語言處理等領域有著很深的聯絡。


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


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


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




資料探勘

相關推薦

深入淺出機器學習入門文章

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

深入淺出文章讓你學會Dagger2使用

本篇文章已授權微信公眾號 guolin_blog (郭霖)獨家釋出 前言 最近在做專案中,用到了Dagger2,所以找了一些部落格並參考了菜鳥窩Ivan的視訊,算是知道如何使用了,但是對其理解還相差很遠。所以這篇文章重點針對如何使用和使用中常見的一些問題

「mysql優化專題」這大概是最好的mysql優化入門文章(1)

left 機械 增刪改查 靜態 命中 mysql查詢 關註 mysq 增刪改 優化,一直是面試最常問的一個問題。因為從優化的角度,優化的思路,完全可以看出一個人的技術積累。那麽,關於系統優化,假設這麽個場景,用戶反映系統太卡(其實就是高並發),那麽我們怎麽優化? 如果請

很好的Hadoop入門文章:Hadoop是什麼、核心HDFS與MapReduce的原理

Hadoop一直是我想學習的技術,正巧最近專案組要做電子商城,我就開始研究Hadoop,雖然最後鑑定Hadoop不適用我們的專案,但是我會繼續研究下去,技多不壓身。 《Hadoop基礎教程》是我讀的第一本Hadoop書籍,當然在線只能試讀第一章,不過對Hadoop歷史、

文看懂Python的面向物件程式設計這是真正的非常的教程!

  之前在網路上看了很多關於面向物件的程式設計詳解,還是不夠過癮,所以決定自己動手寫一篇。 面向物件:Object Oriented Programming,簡稱OOP,即面向物件程式設計。           &nbs

深度學習/機器學習入門基礎數學知識整理():線性代數基礎矩陣範數等

前面大概有2年時間,利用業餘時間斷斷續續寫了一個機器學習方法系列,和深度學習方法系列,還有一個三十分鐘理解系列(一些趣味知識);新的一年開始了,今年給自己定的學習目標——以補齊基礎理論為重點,研究一些基礎課題;同時逐步繼續寫上述三個系列的文章。 最近越來越多的

TensorFlow深度學習文章就夠了

作者: 陳迪豪,就職小米科技,深度學習工程師,TensorFlow程式碼提交者。 TensorFlow深度學習框架 Google不僅是大資料和雲端計算的領導者,在機器學習和深度學習上也有很好的實踐和積累,在2015年年底開源了內部使用的深度學習框架TensorFlow。 與

[轉]機器學習科普文章:“文讀懂機器學習大資料/自然語言處理/演算法全有了”

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

獨家總結 | 文讀懂機器學習的“發展歷程” (時間歷程詳細又充實!)

機器學習是人工智慧AI研究發展到一定階段的必然產物! 二十世紀五十年代~七十年代初,“推理期”:機器的只能體現在具有邏輯推理能力。 二十世紀七十年代中期開始,AI進入“知識期”,希望機器能夠自己學習! 其實,圖靈1950年就曾提到過機器學習的可能 五十年代中後期,基於神經網路的“連線

文讀懂機器學習大資料/自然語言處理/演算法全有了……

作者注:本文生動形象,深入淺出的方式介紹了機器學習及其它演算法,適合新人和想更加了解機器學習的讀者閱讀,此文屬於轉載,下面連結是原文出處,我們尊重原作者的版權保護。https://www.cnblogs.com/donaldlee2008/p/5224325.html  在本

轉載牛的文章給自己留個紀念

不過,中國的學術界和世俗世界的距離被拉得太近了,甚至大學內外的世界隨著圍牆的拆除而徹底融合在一起了。教授同時成為了商人,或者成為了政客。這讓部分學術投機分子同時通過投機獲得了不少的經濟或政治上的利益,但是同時也讓中國的大學以及整個學術圈裡的人失去了應有的地位和尊重。1998年北京大學建校100週年的時候邀請了

的 MySQL 觸發器學習教程

        下面簡單參考知乎和CSDN論壇,簡單講解幾個內容:問題一:         大型系統必須得要儲存過程和觸發器嗎? - 知乎回答1:                我們先要弄清楚二個問題:        1.什麼是大型系統?        2.你討論的是什麼領域的應用,可以大致分為二種:網際網路

500多頁的機器學習入門筆記下載5萬次都講了些什麼?

導讀:今年 4 月,樑勁在百度雲盤上傳了一份自己整理的學習筆記——《機器學習——從入門到放棄》。

份MIT博士的學習心得送你入坑機器學習?(可下載PDF)

整理 | 機器之心請這位叫Apple的小夥伴加我微信:guodongwe1991,送你一本《深度

恰到好處的機器學習入門站搞定基礎+演算法+實戰

每天能留給學習的時間不多,當入門一個新技術的時候,多麼希望學到的每一個字都能立馬爬上用場,所以我

GitHub機器學習工程師成長路線圖開源兩日收獲3700+Star!【轉】

參數優化 及其 公式 pre 大量 toc exp geb 共享文檔 作者 | 琥珀 出品 | AI科技大本營(ID:rgznai100) 近日,一個在 GitHub 上開源即收獲了 3700+ Star 的項目,引起了營長的註意。據介紹,該項目以 TensorFlow

這10本由淺入深的好書或讓你成為機器學習領域的專家

微博 .com 比較 編碼風格 兩個 行數據 開始 自己 推薦書 [email protected]/* */ 老師推薦,阿裏雲雲棲社區組織翻譯。 以下為譯文: 機器學習是個跨領域的學科,而且在實際應用中有巨大作用,但是沒有一本書能讓你成為機器學習

關於HTTP協議就夠了

改變 就會 足夠 options 服務器交互 視頻 用戶 base64加密 英文字母 關於HTTP協議,一篇就夠了 作者 RaphetS 關註 2016.10.13 06:48* 字數 4806 閱讀 12969評論 26喜歡 203贊賞 1 HTT

4-關於HTTP協議就夠了

nal ont 操作 規則 自身 .com 工作 擴展 概念 HTTP簡介 HTTP協議是Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫,是用於從萬維網(WWW:World Wide Web )服務器傳輸超文本到本地瀏覽器的傳送協議。 H