天天看點

《深度學習:Java語言實作》一一2.3監督學習和無監督學習

2.3監督學習和無監督學習

前一節中,我們看到即使一個非常簡單的分類問題都存在無數的邊界,然而,我們很難說究竟它們中哪一個是最合适的。這是因為,即便針對已知資料我們可以恰當地分類,這也并不能保證對未知資料能夠達到相同效果。不過,你可以提高模式識别的準确率。每一種機器學習方法都會設定一個标準來進行更好地模式分類,決定最佳可能的邊界——決策邊界——進而提高識别的準确率。毫無疑問,這些标準使用不同的方法時差異很大。在本節中,我們将介紹本書所涉及的各種方法。

首先,從廣義劃分而言,機器學習可以分為監督學習(supervised learning)和無監督學習(unsupervised learning)。這兩種分類之間的差異是機器學習使用的資料集是否加了标簽,即有标資料還是無标資料。監督學習中,機器使用包含輸入和輸出資料的标簽資料,并确定與之相适應的模式方法模式進行分類結合起來完成工作。當機器接收到未知資料時,它會判斷可以應用哪一種模式,并依據标簽資料——過去的正确答案,對新的資料進行分類。舉個例子,在圖像識别領域,如果你準備并提供一定數量的貓的圖檔(并将其标記為“貓”)和同樣數量的人類的圖檔(并将其标記為“人類”),之後你輸入一些圖像讓機器進行學習,它能夠自己進行判斷這些圖檔應該被歸類到貓或者人類的圖檔中(抑或二者都不屬于)。當然,僅僅隻是對圖像是貓還是人進行判斷并沒有太多的實用價值,不過,如果你完全将這一技術應用到其他領域,譬如你可以建立一個系統,它能夠自動地對上傳到社交媒體中的圖檔進行标記,說明照片中的人是誰。綜上所述,監督學習需要人們預先準備正确的資料,機器才能展開學習。

另一方面,無監督學習中,機器使用未标記的資料。這種情況下,隻需要提供輸入資料即可。機器學習的是資料集中隐含和包括的模式和規則。無監督學習的目标是掌握資料的形态。它包含了一個名為“聚類(clustering)”的過程,它将一組具有共同特征的資料劃分到一起,或者抽取出其中的關聯規則。譬如,假如你手上有一組資料,是使用者的年齡、性别以及通路線上購物網站的購買趨勢。那麼,你可能會發現,男性在二十多歲時的購物偏好和女性四十多歲時的購物偏好非常相近,你也許可以利用這種趨勢改進你的産品市場政策。關于這一點,我們有一個著名的案例——通過無監督學習,人們發現大量的人在購買啤酒的同時會購買尿布。

現在,你知道監督學習和無監督學習之間存在着巨大的差别,但這還不是全部。每一種學習方法及對應的算法分别還有自己的不同。接下來的一節,讓我們看看一些代表性的示例。

2.3.1支援向量機

你大概已經知道支援向量機(support vector machine, svm)是機器學習中最流行的監督學習方法。該方法仍被廣泛地應用于資料挖掘産業。使用支援向量機方法時,它會在每類資料中尋找與其他類最接近的資料,并将其标記為标準,決策邊界就通過這些标準定義,這樣每個标記資料與邊界的歐幾裡德距離之和最大。這些标記資料被稱之為支援向量(support vector)。簡而言之,支援向量機将決策邊界設定到了一個中間位置,使得每種模式到其的距離都最遠。是以,支援向量機在算法上也被稱之為“最大化間隔”算法。下面這幅圖解釋了支援向量機的概念:

如果僅僅隻聽這些,你也許會疑惑“它是這樣的嗎?”,不過讓支援向量機最有價值的是一種數學技術:核技巧(kernel trick),或者核方法(kernel method)。使用這種技術,我們可以将低次元無法線性分類的資料,映射到更高維的空間,之後就能毫不費力地以線性方式對其進行分類。看看下面這幅圖,你就能了解核心技巧是以怎樣的方式進行工作的了:

《深度學習:Java語言實作》一一2.3監督學習和無監督學習
《深度學習:Java語言實作》一一2.3監督學習和無監督學習

我們有兩種類型的資料,分别以圓形和三角形代表,很明顯,我們無法在二維空間中以線性的方式對其進行分類。然而,正如你在上圖中看到的那樣,一旦對這些資料(嚴格來說,是訓練資料的特征向量)使用“核函數”,所有的資料會被轉換到一個更高的次元空間,即三維空間,在這個空間裡,我們可以使用二維平面對它們進行分類。

雖然支援向量機既有用又優雅,它依然有其局限性。由于支援向量機需要把資料映射到高維空間,通常情況下,計算量都會增大,是以,使用支援向量機時,随着計算複雜度的增大,它所消耗的時間也會迅速增加。

2.3.2隐馬爾可夫模型

隐馬爾可夫模型(hidden markov model, hmm)是一種無監督訓練方法,它假設所有的資料都遵循馬爾可夫過程(markov process)。馬爾可夫過程是一種随機過程,它假設未來狀态隻與目前值相關,而與過去的狀态無關。隐馬爾可夫模型主要用于預測隻有一個可觀察序列可見時,該觀察對象可能的狀态。

單憑前面的介紹,你可能還是無法全面地了解隐馬爾可夫模型是如何工作的,那我們就一起來看一個例子。隐馬爾可夫模型經常被用于分析堿基序列(base sequence)。你可能知道一個堿基序列包含了四個核苷酸(nucleotide),譬如說a、t、g、c;堿基序列實際上就是這些核苷酸構成的串。如果僅僅是看這個串你得不到任何資訊,你還需要分析它們與某一個基因的相對關系。如果我們假設,任何的堿基序列都是随機排列的,那麼你從堿基序列中截取任意部分,這四個字母出現的幾率都是百分之二十五。

然而,如果堿基序列的排列遵循一定的規律,譬如,c通常出現在g的後面 ,或者att字母的組合出現頻率更高,那麼每一種字元出現的機率也會随之發生變化。這種規律就是機率模型,如果輸出的機率模型隻依賴于它的直接前基,你就可以憑借隐馬爾可夫模型從堿基序列(可觀察狀态序列)中定位出遺傳資訊(隐藏狀态序列)。

除了生物資訊領域,隐馬爾可夫模型也常用于需要時間序列模式的領域,譬如自然語言處理(natural language processing, nlp)的文法分析,或者是聲音信号處理。我們在這兒并未深入介紹隐馬爾可夫模型,因為它的算法與深度學習相關性不大,不過如果你想了解更多的話,可以閱讀由麻省理工出版社出版的名聲顯赫的著作《統計自然語言處理基礎(foundations of statistical natural language processing)》。

2.3.3神經網絡

神經網絡(neural network)與傳統的機器學習算法略有不同。雖然其他的機器學習算法都采取基于機率或者統計的方式,神經網絡卻獨辟蹊徑,采用了完全不同的方式,它試圖模拟人類大腦的結構。人類大腦是由神經元網絡組成。看看下圖就能得到一個大緻的輪廓:

《深度學習:Java語言實作》一一2.3監督學習和無監督學習

一個神經元通過另一個神經元連接配接到網絡中,它從突觸接收電信号的刺激。當電位超過某個閥值,神經元就被激活,将電刺激傳送給它網絡中連接配接的下一個神經元。神經網絡依據電刺激是如何傳遞的來對外界進行判定。

神經網絡剛出現時是一種監督學習,它以數字表示收到電信号的刺激。最近,尤其是深度學習出現以來,湧現了各種各樣的神經網絡算法,其中相當一部分是無監督學習。通過在學習中不斷調整網絡的權重,這些算法提升了它們預測的準确度。深度學習是一種基于神經網絡的算法。我們會在後面的内容中詳細介紹神經網絡的知識,并提供相應的實作。

2.3.4邏輯回歸

邏輯回歸(logistic regression)是變量服從伯努利分布(bernoulli distribution)的一種統計回歸模型。不同于支援向量機和神經網絡都是分類模型,邏輯回歸是一種回歸模型,不過它也是一種監督學習方法。雖然邏輯回歸并不是神經網絡,但從數學解釋上看,它可以被看作一種神經網絡。我們在後面的内容中也會介紹邏輯回歸的細節,并提供其實作。

正如你所看到的,每一種機器學習方法都有其獨特的特征。依據你想要知道什麼或者你希望用你的資料幹什麼,選擇正确的算法是非常重要的。你可以說它們都是深度學習。不過深度學習也有不同的方法,是以,你不僅應該考量到底采用哪一種最适合的方法,還需要考慮是否在某些情況下沒有必要使用深度學習。量體裁衣,因地制宜地選擇最合适的方法非常重要。

2.3.5增強學習

除此之外,僅供參考的還有另外一種機器學習方法,名叫“增強學習”(reinforcement learning)。雖然有的分類方法會把增強學習劃分到無監督學習,還有相當一部分的分類方法認為這三種學習算法:監督學習、無監督學習以及增強學習應該被劃分為三種獨立的算法類型。下圖展示了增強學習的基礎架構:

《深度學習:Java語言實作》一一2.3監督學習和無監督學習

主體依據環境的狀态采取相應的動作,環境根據動作呈現相應的變化。系統依據環境的變化為代理提供了一套獎勵機制,代理借此可以學習更好的動作抉擇(決策)。