在 本篇文章中,我將對機器學習作個概要的介紹。本文的目的是能讓即使徹底不瞭解機器學習的人也能瞭解機器學習,而且上手相關的實踐。這篇文檔也算是 EasyPR開發的番外篇,從這裏開始,必須對機器學習瞭解才能進一步介紹EasyPR的內核。固然,本文也面對通常讀者,不會對閱讀有相關的前提要求。html
在進入正題前,我想讀者心中可能會有一個疑惑:機器學習有什麼重要性,以致於要閱讀完這篇很是長的文章呢?git
我並不直接回答這個問題前。相反,我想請你們看兩張圖,下圖是圖一:github
圖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所介紹 的線型迴歸方法創建這個模型。
若是我把這些創建模型的過程交給電腦。好比把全部的自變量和因變量輸入,而後讓計算機幫我生成一個模型,同時讓計算機根據我當前的狀況,給出我是否須要遲出門,須要遲幾分鐘的建議。那麼計算機執行這些輔助決策的過程就是機器學習的過程。
機器學習方法是計算機利用已有的數據(經驗),得出了某種模型(遲到的規律),並利用此模型預測將來(是否遲到)的一種方法。
經過上面的分析,能夠看出機器學習與人類思考的經驗過程是相似的,不過它能考慮更多的狀況,執行更加複雜的計算。事實上,機器學習的一個主要目的就是把 人類思考概括經驗的過程轉化爲計算機經過對數據的處理計算得出模型的過程。通過計算機得出的模型可以以近似於人的方式解決不少靈活複雜的問題。
下面,我會開始對機器學習的正式介紹,包括定義、範圍,方法、應用等等,都有所包含。
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等。
天然語言處理
天然語言處理=文本處理+機器學習。天然語言處理技術主要是讓機器理解人類的語言的一門領域。在天然語言處理技術中,大量使用了編譯原理相關的技術,例 如詞法分析,語法分析等等,除此以外,在理解這個層面,則使用了語義理解,機器學習等技術。做爲惟一由人類自身創造的符號,天然語言處理一直是機器學習界 不斷研究的方向。按照百度機器學習專家餘凱的說法「聽與看,說白了就是阿貓和阿狗都會的,而只有語言纔是人類獨有的」。如何利用機器學習技術進行天然語言 的的深度理解,一直是工業和學術界關注的焦點。
能夠看出機器學習在衆多領域的外延和應用。機器學習技術的發展促使了不少智能領域的進步,改善着咱們的生活。
經過上節的介紹咱們知曉了機器學習的大體範圍,那麼機器學習裏面究竟有多少經典的算法呢?在這個部分我會簡要介紹一下機器學習中的經典表明方法。這部分介紹的重點是這些方法內涵的思想,數學與實踐細節不會在這討論。
一、迴歸算法
在大部分機器學習課程中,迴歸算法都是介紹的第一個算法。緣由有兩個:一.迴歸算法比較簡單,介紹它可讓人平滑地從統計學遷移到機器學習中。 二.迴歸算法是後面若干強大算法的基石,若是不理解迴歸算法,沒法學習那些強大的算法。迴歸算法有兩個重要的子類:即線性迴歸和邏輯迴歸。
線性迴歸就是咱們前面說過的房價求解問題。如何擬合出一條直線最佳匹配我全部的數據?通常使用「最小二乘法」來求解。「最小二乘法」的思想是這 樣的,假設咱們擬合出的直線表明數據的真實值,而觀測到的數據表明擁有偏差的值。爲了儘量減少偏差的影響,須要求解一條直線使全部偏差的平方和最小。最 小二乘法將最優問題轉化爲求函數極值問題。函數極值在數學上咱們通常會採用求導數爲0的方法。但這種作法並不適合計算機,可能求解不出來,也可能計算量太 大。
計算機科學界專門有一個學科叫「數值計算」,專門用來提高計算機進行各種計算時的準確性和效率問題。例如,著名的「梯度降低」以及「牛頓法」就 是數值計算中的經典算法,也很是適合來處理求解函數極值的問題。梯度降低法是解決迴歸模型中最簡單且有效的方法之一。從嚴格意義上來講,因爲後文中的神經 網絡和推薦算法中都有線性迴歸的因子,所以梯度降低法在後面的算法實現中也有應用。
邏輯迴歸是一種與線性迴歸很是相似的算法,可是, 從本質上講,線型迴歸處理的問題類型與邏輯迴歸不一致。線性迴歸處理的是數值問題,也就是最後預測出的結果是數字,例如房價。而邏輯迴歸屬於分類算法,也 就是說,邏輯迴歸預測結果是離散的分類,例如判斷這封郵件是不是垃圾郵件,以及用戶是否會點擊此廣告等等。
實現方面的話,邏輯迴歸只是對對線性迴歸的計算結果加上了一個Sigmoid函數,將數值結果轉化爲了0到1之間的機率(Sigmoid函數的 圖像通常來講並不直觀,你只須要理解對數值越大,函數越逼近1,數值越小,函數越逼近0),接着咱們根據這個機率能夠作預測,例如機率大於0.5,則這封 郵件就是垃圾郵件,或者腫瘤是不是惡性的等等。從直觀上來講,邏輯迴歸是畫出了一條分類線,見下圖。
圖7 邏輯迴歸的直觀解釋
假設咱們有一組腫瘤患者的數據,這些患者的腫瘤中有些是良性的(圖中的藍色點),有些是 惡性的(圖中的紅色點)。這裏腫瘤的紅藍色能夠被稱做數據的「標籤」。同時每一個數據包括兩個「特徵」:患者的年齡與腫瘤的大小。咱們將這兩個特徵與標籤映 射到這個二維空間上,造成了我上圖的數據。
當我有一個綠色的點時,我該判斷這個腫瘤是惡性的仍是良性的呢?根據紅藍點咱們訓練出了一個邏輯迴歸模型,也就是圖中的分類線。這時,根據綠點出如今分類線的左側,所以咱們判斷它的標籤應該是紅色,也就是說屬於惡性腫瘤。
邏輯迴歸算法劃出的分類線基本都是線性的(也有劃出非線性分類線的邏輯迴歸,不過那樣的模型在處理數據量較大的時候效率會很低),這意味着當兩類之間的 界線不是線性時,邏輯迴歸的表達能力就不足。下面的兩個算法是機器學習界最強大且重要的算法,均可以擬合出非線性的分類線。
二、神經網絡
神經網絡(也稱之爲人工神經網絡,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)算法取代了神經網絡的地位。
三、SVM(支持向量機)
支持向量機算法是誕生於統計學習界,同時在機器學習界大放光彩的經典算法。
支持向量機算法從某種意義上來講是邏輯迴歸算法的強化:經過給予邏輯迴歸算法更嚴格的優化條件,支持向量機算法能夠得到比邏輯迴歸更好的分類界線。可是若是沒有某類函數技術,則支持向量機算法最多算是一種更好的線性分類技術。
可是,經過跟高斯「核」的結合,支持向量機能夠表達出很是複雜的分類界線,從而達成很好的的分類效果。「核」事實上就是一種特殊的函數,最典型的特徵就是能夠將低維的空間映射到高維的空間。
例以下圖所示:
圖11 支持向量機圖例
咱們如何在二維平面劃分出一個圓形的分類界線?在二維平面可能會很困 難,可是經過「核」能夠將二維空間映射到三維空間,而後使用一個線性平面就能夠達成相似效果。也就是說,二維平面劃分出的非線性分類界線能夠等價於三維平 面的線性分類界線。因而,咱們能夠經過在三維空間中進行簡單的線性劃分就能夠達到在二維平面中的非線性劃分效果。
圖12 三維空間的切割
支持向量機是一種數學成分很濃的機器學習算法(相對的,神經網絡則有生物科學成分)。在算法的核心步驟中,有一步證實,即將數據從低維 映射到高維不會帶來最後計算複雜性的提高。因而,經過支持向量機算法,既能夠保持計算效率,又能夠得到很是好的分類效果。所以支持向量機在90年代後期一 直佔據着機器學習中最核心的地位,基本取代了神經網絡算法。直到如今神經網絡藉着深度學習從新興起,二者之間才又發生了微妙的平衡轉變。
四、聚類算法
前面的算法中的一個顯著特徵就是個人訓練數據中包含了標籤,訓練出的模型能夠對其餘未知數據預測標籤。在下面的算法中,訓練數據都是不含標籤 的,而算法的目的則是經過訓練,推測出這些數據的標籤。這類算法有一個統稱,即無監督算法(前面有標籤的數據的算法則是有監督算法)。無監督算法中最典型 的表明就是聚類算法。
讓咱們仍是拿一個二維的數據來講,某一個數據包含兩個特徵。我但願經過聚類算法,給他們中不一樣的種類打上標籤,我該怎麼作呢?簡單來講,聚類算法就是計算種羣中的距離,根據距離的遠近將數據劃分爲多個族羣。
聚類算法中最典型的表明就是K-Means算法。
五、降維算法
降維算法也是一種無監督學習算法,其主要特徵是將數據從高維下降到低維層次。 在這裏,維度其實表示的是數據的特徵量的大小,例如,房價包含房子的長、寬、面積與房間數量四個特徵,也就是維度爲4維的數據。能夠看出來,長與寬事實上 與面積表示的信息重疊了,例如面積=長 × 寬。經過降維算法咱們就能夠去除冗餘信息,將特徵減小爲面積與房間數量兩個特徵,即從4維的數據壓縮到2維。因而咱們將數據從高維下降到低維,不只利於表 示,同時在計算上也能帶來加速。
剛纔說的降維過程當中減小的維度屬於肉眼可視的層次,同時壓縮也不會帶來信息的損失(由於信息冗餘 了)。若是肉眼不可視,或者沒有冗餘的特徵,降維算法也能工做,不過這樣會帶來一些信息的損失。可是,降維算法能夠從數學上證實,從高維壓縮到的低維中最 大程度地保留了數據的信息。所以,使用降維算法仍然有不少的好處。
降維算法的主要做用是壓縮數據與提高機器學習其餘算法的效率。經過 降維算法,能夠將具備幾千個特徵的數據壓縮至若干個特徵。另外,降維算法的另外一個好處是數據的可視化,例如將5維的數據壓縮至2維,而後能夠用二維平面來 可視。降維算法的主要表明是PCA算法(即主成分分析算法)。
六、推薦算法
推薦算法是目前業界很是火的一種算法,在電商界,如亞馬遜,天貓,京東等獲得了普遍的運用。推薦算法的主要特徵就是能夠自動向用戶推薦他們最感興趣的東西,從而增長購買率,提高效益。推薦算法有兩個主要的類別:
一類是基於物品內容的推薦,是將與用戶購買的內容近似的物品推薦給用戶,這樣的前提是每一個物品都得有若干個標籤,所以才能夠找出與用戶購買物品相似的物品,這樣推薦的好處是關聯程度較大,可是因爲每一個物品都須要貼標籤,所以工做量較大。
另外一類是基於用戶類似度的推薦,則是將與目標用戶興趣相同的其餘用戶購買的東西推薦給目標用戶,例如小A歷史上買了物品B和C,通過算法分析,發現另外一個與小A近似的用戶小D購買了物品E,因而將物品E推薦給小A。
兩類推薦都有各自的優缺點,在通常的電商應用中,通常是兩類混合使用。推薦算法中最有名的算法就是協同過濾算法。
七、其餘
除了以上算法以外,機器學習界還有其餘的如高斯判別,樸素貝葉斯,決策樹等等算法。可是上面列的六個算法是使用最多,影響最廣,種類最全的典型。機器學習界的一個特點就是算法衆多,發展百花齊放。
下面作一個總結,按照訓練的數據有無標籤,能夠將上面算法分爲監督學習算法和無監督學習算法,但推薦算法較爲特殊,既不屬於監督學習,也不屬於非監督學習,是單獨的一類。
監督學習算法:
線性迴歸,邏輯迴歸,神經網絡,SVM
無監督學習算法:
聚類算法,降維算法
特殊算法:
推薦算法
除了這些算法之外,有一些算法的名字在機器學習領域中也常常出現。但他們自己 並不算是一個機器學習算法,而是爲了解決某個子問題而誕生的。你能夠理解他們爲以上算法的子算法,用於大幅度提升訓練過程。其中的表明有:梯度降低法,主 要運用在線型迴歸,邏輯迴歸,神經網絡,推薦算法中;牛頓法,主要運用在線型迴歸中;BP算法,主要運用在神經網絡中;SMO算法,主要運用在SVM中。
5.機器學習的應用--大數據
說完機器學習的方法,下面要談一談機器學習的應用了。無疑,在2010年之前,機器學習的應用在某些特定領域發揮了巨大的做用,如車牌識別,網絡攻擊防 範,手寫字符識別等等。可是,從2010年之後,隨着大數據概念的興起,機器學習大量的應用都與大數據高度耦合,幾乎能夠認爲大數據是機器學習應用的最佳 場景。
譬如,但凡你能找到的介紹大數據魔力的文章,都會說大數據如何準確準確預測到了某些事。例如經典的Google利用大數據預測了H1N1在美國某小鎮的爆發。
圖13 Google成功預測H1N1
百度預測2014年世界盃,從淘汰賽到決賽所有預測正確。
圖14 百度世界盃成功預測了全部比賽結果
這些實在太神奇了,那麼到底是什麼緣由致使大數據具備這些魔力的呢?簡單來講,就是機器學習技術。正是基於機器學習技術的應用,數據才能發揮其魔力。
大數據的核心是利用數據的價值,機器學習是利用數據價值的關鍵技術,對於大數 據而言,機器學習是不可或缺的。相反,對於機器學習而言,越多的數據會越 可能提高模型的精確性,同時,複雜的機器學習算法的計算時間也迫切須要分佈式計算與內存計算這樣的關鍵技術。所以,機器學習的興盛也離不開大數據的幫助。 大數據與機器學習二者是互相促進,相依相存的關係。
機器學習與大數據緊密聯繫。可是,必須清醒的認識到,大數據並不等同於機器學習,同理,機器學習也不等同於大數據。大數據中包含有分佈式計算,內存數據庫,多維分析等等多種技術。單從分析方法來看,大數據也包含如下四種分析方法:
1.大數據,小分析:即數據倉庫領域的OLAP分析思路,也就是多維分析思想。
2.大數據,大分析:這個表明的就是數據挖掘與機器學習分析法。
3.流式分析:這個主要指的是事件驅動架構。
4.查詢分析:經典表明是NoSQL數據庫。
也就是說,機器學習僅僅是大數據分析中的一種而已。儘管機器學習的一些結果具備很大的魔力,在某種場合下是大數據價值最好的說明。但這並不表明機器學習是大數據下的惟一的分析方法。
機器學習與大數據的結合產生了巨大的價值。基於機器學習技術的發展,數據可以「預測」。對人類而言,積累的經驗越豐富,閱歷也普遍,對將來的判斷越準 確。例如常說的「經驗豐富」的人比「初出茅廬」的小夥子更有工做上的優點,就在於經驗豐富的人得到的規律比他人更準確。而在機器學習領域,根據著名的一個 實驗,有效的證明了機器學習界一個理論:即機器學習模型的數據越多,機器學習的預測的效率就越好。見下圖:
圖15 機器學習準確率與數據的關係
經過這張圖能夠看出,各類不一樣算法在輸入的數據量達到必定級數後,都有相近的高準確度。因而誕生了機器學習界的名言:成功的機器學習應用不是擁有最好的算法,而是擁有最多的數據!
在大數據的時代,有好多優點促使機器學習可以應用更普遍。例如隨着物聯網和移動設備的發展,咱們擁有的數據愈來愈多,種類也包括圖片、文本、視頻等非結 構化數據,這使得機器學習模型能夠得到愈來愈多的數據。同時大數據技術中的分佈式計算Map-Reduce使得機器學習的速度愈來愈快,能夠更方便的使 用。種種優點使得在大數據時代,機器學習的優點能夠獲得最佳的發揮。
6.機器學習的子類--深度學習
近來,機器學習的發展產生了一個新的方向,即「深度學習」。
雖然深度學習這四字聽起來頗爲高大上,但其理念卻很是簡單,就是傳統的神經網絡發展到了多隱藏層的狀況。
在上文介紹過,自從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 馬斯克與人工智能
儘管馬斯克的擔憂有些危言聳聽,可是馬斯克的推理不無道理。「若是人工智能想 要消除垃圾郵件的話,可能它最後的決定就是消滅人類。」馬斯克認爲預防此類現象的方法是引入政府的監管。在這裏做者的觀點與馬斯克相似,在人工智能誕生之 初就給其加上若干規則限制可能有效,也就是不該該使用單純的機器學習,而應該是機器學習與規則引擎等系統的綜合可以較好的解決這類問題。由於若是學習沒有 限制,極有可能進入某個誤區,必需要加上某些引導。正如人類社會中,法律就是一個最好的規則,殺人者死就是對於人類在探索提升生產力時不可逾越的界限。
在這裏,必須提一下這裏的規則與機器學習引出的規律的不一樣,規律不是一個嚴格 意義的準則,其表明的更可能是機率上的指導,而規則則是神聖不可侵犯,不可修改的。規律能夠調整,但規則是不能改變的。有效的結合規律與規則的特色,能夠引 導出一個合理的,可控的學習型人工智能。
8.機器學習的思考--計算機的潛意識
最後,做者想談一談關於機器學習的一些思考。主要是做者在平常生活總結出來的一些感悟。
回想一下我在節1裏所說的故事,我把小Y過往跟我相約的經歷作了一個羅列。但 是這種羅列以往全部經歷的方法只有少數人會這麼作,大部分的人採用的是更直接的方法,即利用直覺。那麼,直覺是什麼?其實直覺也是你在潛意識狀態下思考經 驗後得出的規律。就像你經過機器學習算法,獲得了一個模型,那麼你下次只要直接使用就好了。那麼這個規律你是何時思考的?多是在你無心識的狀況下, 例如睡覺,走路等狀況。這種時候,大腦其實也在默默地作一些你察覺不到的工做。
這種直覺與潛意識,我把它與另外一種人類思考經驗的方式作了區分。若是一我的勤 于思考,例如他會天天作一個小結,譬如「吾日三省吾身」,或者他常常與同伴討論最近工做的得失,那麼他這種訓練模型的方式是直接的,明意識的思考與概括。 這樣的效果很好,記憶性強,而且更能得出有效反應現實的規律。可是大部分的人可能不多作這樣的總結,那麼他們得出生活中規律的方法使用的就是潛意識法。
舉一個做者本人關於潛意識的例子。做者本人之前沒開過車,最近一段時間買了車 後,每天開車上班。我天天都走固定的路線。有趣的是,在一開始的幾天,我很是緊張的注意着前方的路況,而如今我已經在無心識中就把車開到了目標。這個過程 中個人眼睛是注視着前方的,個人大腦是沒有思考,可是我手握着的方向盤會自動的調整方向。也就是說。隨着我開車次數的增多,我已經把我開車的動做交給了潛 意識。這是很是有趣的一件事。在這段過程當中,個人大腦將前方路況的圖像記錄了下來,同時大腦也記憶了我轉動方向盤的動做。通過大腦本身的潛意識思考,最後 生成的潛意識能夠直接根據前方的圖像調整我手的動做。假設咱們將前方的錄像交給計算機,而後讓計算機記錄與圖像對應的駕駛員的動做。通過一段時間的學習, 計算機生成的機器學習模型就能夠進行自動駕駛了。這很神奇,不是麼。其實包括Google、特斯拉在內的自動駕駛汽車技術的原理就是這樣。
除了自動駕駛汽車之外,潛意識的思想還能夠擴展到人的交際。譬如說服別人,一個最佳的方法就是給他展現一些信息,而後讓他本身去概括得出咱們想要的結論。這就比如在闡述一個觀點時,用一個事實,或者一個故事,比大段的道理要好不少。從古到今,但凡優秀的說客,無不採用的是這種方法。春秋戰國時期,各國合縱連橫,常常有各類說客去跟一國之君交流,直接告訴君主該作什麼,無異於自尋死路,可是跟君主講故事,經過這些故事讓君主恍然大悟,就是一種正確的過程。這裏面有許多傑出的表明,如墨子,蘇秦等等。
基本上全部的交流過程,使用故事說明的效果都要遠勝於闡述道義之類的效果好不少。爲何用故事的方法比道理或者其餘的方法好不少,這是由於在人成長的過 程,通過本身的思考,已經造成了不少規律與潛意識。若是你告訴的規律與對方的不相符,頗有可能出於保護,他們會本能的拒絕你的新規律,可是若是你跟他講一 個故事,傳遞一些信息,輸送一些數據給他,他會思考並自我改變。他的思考過程實際上就是機器學習的過程,他把新的數據歸入到他的舊有的記憶與數據中,通過 從新訓練。若是你給出的數據的信息量很是大,大到調整了他的模型,那麼他就會按照你但願的規律去作事。有的時候,他會本能的拒絕執行這個思考過程,可是數 據一旦輸入,不管他但願與否,他的大腦都會在潛意識狀態下思考,而且可能改變他的見解。
若是計算機也擁有潛意識(正如本博客的名稱同樣),那麼會怎麼樣?譬如讓計算機在工做的過程當中,逐漸產生了自身的潛意識,因而甚至能夠在你不須要告訴它作什麼時它就會完成那件事。這是個很是有意思的設想,這裏留給各位讀者去發散思考吧。
本文首先介紹了互聯網界與機器學習大牛結合的趨勢,以及使用機器學習的相關應 用,接着以一個「等人故事」展開對機器學習的介紹。介紹中首先是機器學習的概念與定義,而後是機器學習的相關學科,機器學習中包含的各種學習算法,接着介 紹機器學習與大數據的關係,機器學習的新子類深度學習,最後探討了一下機器學習與人工智能發展的聯繫以及機器學習與潛意識的關聯。通過本文的介紹,相信大 家對機器學習技術有必定的瞭解,例如機器學習是什麼,它的內核思想是什麼(即統計和概括),經過了解機器學習與人類思考的近似聯繫能夠知曉機器學習爲何 具備智慧能力的緣由等等。其次,本文漫談了機器學習與外延學科的關係,機器學習與大數據相互促進相得益彰的聯繫,機器學習界最新的深度學習的迅猛發展,以 及對於人類基於機器學習開發智能機器人的一種展望與思考,最後做者簡單談了一點關於讓計算機擁有潛意識的設想。
機器學習是目前業界最 爲Amazing與火熱的一項技術,從網上的每一次淘寶的購買東西,到自動駕駛汽車技術,以及網絡攻擊抵禦系統等等,都有機器學習的因子在內,同時機器學 習也是最有可能令人類完成AI dream的一項技術,各類人工智能目前的應用,如微軟小冰聊天機器人,到計算機視覺技術的進步,都有機器學習努力的成分。做爲一名當代的計算機領域的開 發或管理人員,以及身處這個世界,使用者IT技術帶來便利的人們,最好都應該瞭解一些機器學習的相關知識與概念,由於這能夠幫你更好的理解爲你帶來莫大便 利技術的背後原理,以及讓你更好的理解當代科技的進程。
10.後記
這篇文檔花了做者兩個月的時間,終於在2014年的最後一天的前一天基本完成。經過這篇文章,做者但願對機器學習在國內的普及作一點貢獻,同時也是做者 本人本身對於所學機器學習知識的一個融匯貫通,總體概括的提升過程。做者把這麼多的知識通過本身的大腦思考,訓練出了一個模型,造成了這篇文檔,能夠說這 也是一種機器學習的過程吧(笑)。
做者所在的 行業會接觸到大量的數據,所以對於數據的處理和分析是日常很是重要的工做,機器學習課程的思想和理念對於做者平常的工做指引做用極大,幾乎致使了做者對於 數據價值的從新認識。想一想半年前,做者還對機器學習似懂非懂,現在也能夠算是一個機器學習的Expert了(笑)。但做者始終認爲,機器學習的真正應用不 是經過概念或者思想的方式,而是經過實踐。只有當把機器學習技術真正應用時,纔可算是對機器學習的理解進入了一個層次。正所謂再「陽春白雪」的技術,也必 須落到「下里巴人」的場景下運用。目前有一種風氣,國內外研究機器學習的某些學者,有一種高貴的逼格,認爲本身的研究是普通人沒法理解的,可是這樣的理念 是根本錯誤的,沒有在真正實際的地方發揮做用,憑什麼證實你的研究有所價值呢?做者認爲必須將高大上的技術用在改變普通人的生活上,才能發揮其根本的價 值。一些簡單的場景,偏偏是實踐機器學習技術的最好地方。
最後,做者很感謝可以閱讀到這裏的讀者。若是看完以爲好的話,還請輕輕點一下贊,大家的鼓勵就是做者繼續行文的動力。
對EasyPR作下說明:EasyPR,一個開源的中文車牌識別系統,代碼託管在github。其次,在前面的博客文章中,包含EasyPR至今的開發文檔與介紹。在後續的文章中,做者會介紹EasyPR中基於機器學習技術SVM的應用即車牌判別模塊的核心內容,歡迎繼續閱讀。
版權說明:
本文中的全部文字,圖片,代碼的版權都是屬於做者和博客園共同全部。歡迎轉載,可是務必註明做者與出處。任何未經容許的剽竊以及爬蟲抓取都屬於侵權,做者和博客園保留全部權利。