機器學習的入門介紹

轉載文章:

  1. 計算機的潛意識

零、從機器學習談起

  1. 機器學習是人工智能的子類,深度學習是機器學習的子類
  2. Windows Phone上的語音助手Cortana。Cortana背後的核心技術是什麼,爲什麼它能夠聽懂人的語音?事實上,這個技術正是機器學習

機器學習是所有語音助手產品(包括Apple的siri與Google的Now)能夠跟人交互的關鍵技術。

  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所介紹的線型迴歸方法建立這個模型。

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

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

通過上面的分析,可以看出機器學習與人類思考的經驗過程是類似的,不過它能考慮更多的情況,執行更加複雜的計算

事實上,機器學習的一個主要目的就是把人類思考歸納經驗的過程轉化爲計算機通過對數據的處理計算得出模型的過程

經過計算機得出的模型能夠以近似於人的方式解決很多靈活複雜的問題。

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


二、機器學習的定義

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

讓我們具體看一個例子。
在這裏插入圖片描述
拿國民話題的房子來說。現在我手裏有一棟房子需要售賣,我應該給它標上多大的價格?房子的面積是100平方米,價格是100萬,120萬,還是140萬?

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

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

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

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

房價 = 面積 * a + b

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

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

在求解過程中透露出了兩個信息:

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

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

“訓練”與“預測”是機器學習的兩個過程“模型”則是過程的中間輸出結果
“訓練”產生“模型”,“模型”指導 “預測”

讓我們把機器學習的過程人類對歷史經驗歸納的過程做個比對。
在這裏插入圖片描述
人類在成長、生活過程中積累了很多的歷史與經驗。人類定期地對這些經驗進行“歸納”,獲得了生活的“規律”。當人類遇到未知的問題或者需要對未來進行“推測”的時候,人類使用這些“規律”,對未知問題與未來進行“推測”,從而指導自己的生活和工作。

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


三、機器學習的範圍

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

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

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

  1. 模式識別

模式識別=機器學習。兩者的主要區別在於前者是從工業界發展起來的概念,後者則主要源自計算機學科。在著名的《Pattern Recognition And Machine Learning》這本書中,Christopher M. Bishop在開頭是這樣說的“模式識別源自工業界,而機器學習來自於計算機學科。不過,它們中的活動可以被視爲同一個領域的兩個方面,同時在過去的10年間,它們都有了長足的發展”。

  1. 數據挖掘

數據挖掘=機器學習+數據庫。這幾年數據挖掘的概念實在是太耳熟能詳。幾乎等同於炒作。但凡說數據挖掘都會吹噓數據挖掘如何如何,例如從數據中挖出金子,以及將廢棄的數據轉化爲價值等等。但是,我儘管可能會挖出金子,但我也可能挖的是“石頭”啊。這個說法的意思是,數據挖掘僅僅是一種思考方式,告訴我們應該嘗試從數據中挖掘出知識,但不是每個數據都能挖掘出金子的,所以不要神話它。一個系統絕對不會因爲上了一個數據挖掘模塊就變得無所不能(這是IBM最喜歡吹噓的),恰恰相反,一個擁有數據挖掘思維的人員纔是關鍵,而且他還必須對數據有深刻的認識,這樣纔可能從數據中導出模式指引業務的改善。大部分數據挖掘中的算法是機器學習的算法在數據庫中的優化。

  1. 統計學習

統計學習近似等於機器學習。統計學習是個與機器學習高度重疊的學科。因爲機器學習中的大多數方法來自統計學,甚至可以認爲,統計學的發展促進機器學習的繁榮昌盛。例如著名的支持向量機算法,就是源自統計學科。但是在某種程度上兩者是有分別的,這個分別在於:統計學習者重點關注的是統計模型的發展與優化,偏數學,而機器學習者更關注的是能夠解決問題,偏實踐,因此機器學習研究者會重點研究學習算法在計算機上執行的效率與準確性的提升。

  1. 計算機視覺

計算機視覺=圖像處理+機器學習圖像處理技術用於將圖像處理爲適合進入機器學習模型中的輸入,機器學習則負責從圖像中識別出相關的模式。計算機視覺相關的應用非常的多,例如百度識圖、手寫字符識別、車牌識別等等應用。這個領域是應用前景非常火熱的,同時也是研究的熱門方向。隨着機器學習的新領域深度學習的發展,大大促進了計算機圖像識別的效果,因此未來計算機視覺界的發展前景不可估量。

  1. 語音識別

語音識別=語音處理+機器學習。語音識別就是音頻處理技術與機器學習的結合。語音識別技術一般不會單獨使用,一般會結合自然語言處理的相關技術。目前的相關應用有蘋果的語音助手siri等。

  1. 自然語言處理

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


四、機器學習的方法

簡要介紹一下機器學習中的經典代表方法。這部分介紹的重點是這些方法內涵的思想,數學與實踐細節不會在這討論。

1. 迴歸算法:線性迴歸、邏輯迴歸

在這裏插入圖片描述
邏輯迴歸的直觀解釋:
在這裏插入圖片描述
在這裏插入圖片描述

2. 神經網絡

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

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

在這裏插入圖片描述

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

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

3. SVM(支持向量機)

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

4. 聚類算法

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

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

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

5. 降維算法

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

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

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

6. 推薦算法

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

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

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

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

7. 其他

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

在這裏插入圖片描述


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

隨着大數據概念的興起,機器學習大量的應用都與大數據高度耦合,幾乎可以認爲大數據是機器學習應用的最佳場景

在這裏插入圖片描述
機器學習界的名言:成功的機器學習應用不是擁有最好的算法,而是擁有最多的數據!


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

深度學習屬於機器學習的子類

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

具有多個隱藏層的神經網絡被稱爲深度神經網絡基於深度神經網絡的學習研究稱之爲深度學習


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

人工智能是機器學習的父類。深度學習則是機器學習的子類。如果把三者的關係用圖來表明的話,則是下圖:
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
例如計算能力我們有分佈式計算,反應能力我們有事件驅動架構,檢索能力我們有搜索引擎,知識存儲能力我們有數據倉庫,邏輯推理能力我們有專家系統,但是,唯有對應智慧中最顯著特徵的歸納與感悟能力,只有機器學習與之對應。這也是機器學習能力最能表徵智慧的根本原因

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