官术网_书友最值得收藏!

2.3 分類器介紹

個樣本屬于且只屬于多個類中的一個,一個樣本只能屬于一個類,不同類之間是互斥的,因此分類器就是一個由特征向量到預測類別并將樣本正確分類的函數。在鳶尾花的分類問題中,我們用+1和-1兩個值分別代表變色鳶尾和山鳶尾兩個類別,并用字母y表示,即y可以取+1和-1兩個值。前面我們已經提取了鳶尾花的特征,將它表示為特征向量,并把特征向量畫在了特征空間中。那么對鳶尾花品種分類的問題就轉變成在特征空間中將一些特征點分開的問題。如果我們用直線作為分界線,那么這個問題就變成:坐標平面中有兩類點,畫一條直線將這兩類點分開。我們設這個函數為f(x),f(x)是分類函數的核心。函數f(x)的形式多種多樣,具有f(x1,x2,…,xn)=a1x1+a2x2++anbn+b形式的分類器被稱為線性分類器,其中,n是特征向量的維數;a1,a2,an,b是函數的系數,被稱為分類器的參數。

在區分鳶尾花品種的簡單例子中,我們可以直接畫出一條直線將兩類點分開。實際情況中,特征點在特征空間中的位置非常復雜,采用觀察和嘗試來畫出分類直線往往是不可能的,也是沒有效率的。因此需要通過一些方法,讓分類器自己學習得到分類直線。

2.3.1 訓練分類器

我們可以把人工智能系統和人類做類比。人們需要經過在學校的學習來吸收知識;為了檢驗學習效果,要參加考試;學到知識、掌握技能后,就會在工作中解決實際問題。人工智能系統也類似,它的學習過程被稱為訓練(training);考試過程被稱為測試(testing);解決實際問題的過程,被稱為應用(application)。訓練集和測試集的作用和類比見表2-1。

表2-1 訓練集和測試集

讓分類器學習從而得到合適的參數的過程稱為分類器的訓練。在本小節中所講的訓練分類器就是找到一條好的分類直線。我們在學校通過老師、課本來接受知識,那么人工智能系統是通過什么進行學習的呢?答案是數據。數據是人工智能的支柱之一,人工智能系統的訓練往往需要大量的數據作支撐。

在訓練階段使用的數據被稱為訓練數據;相應地,測試階段使用的數據被稱為測試數據。在分類中,訓練數據和測試數據一般都需要知道它們實際的類別。

人工地給數據標上真實類別(其他任務中對應著其他真實的值)的過程被稱為數據的標注(annotation)。數據標注的過程耗時耗力,有的數據標注還可能需要相關領域的專業知識。對數據的采集和標注是非常重要的過程,人工智能系統是數據驅動的,數據標注的質量會直接影響到訓練后人工智能系統的性能好壞。

鳶尾花的數據是由美國植物學家埃德加·安德森(Edgar Anderson)在加拿大加斯佩半的農場測量鳶尾花的花瓣長度和寬度等特征得到的。此外,他根據自己所學的植物學知識,標注好每一朵花屬于什么種類,我們可以將山鳶尾打上“0”標簽,將變色鳶尾打上“1”標簽。有了這樣的數據集,就可以在它的基礎之上去訓練一個分類器。由上面的介紹我們得知,當一個數據集被用于分類器訓練時,稱之為訓練集。接下來將介紹基于數據集來訓練分類器的過程。這個過程是由一系列判斷和計算步驟組成的,通常被稱為算法(algorithm)。在一個數據集上,使用不同的算法可能會獲得不同的分類器。如何設計一個算法能獲得性能好的分類器是機器學習里面一個經典的研究課題。

我們的目的就是尋找一個線性分類器對鳶尾花分類,在這里線性分類器的f(x)可以被概括地表示為f(x1,x2)=a1x1+a2x2+b。我們要找到合適的a1,a2,b參數,使得對應的分類器能夠區分變色鳶尾和山鳶尾。通過上面的介紹我們可以把特征向量表示在直角坐標系中,如下圖所示,用x1表示花瓣的長度,x2表示花瓣的寬度,比如(1.1,0.1),就可以是直角坐標系中的一個點,那么將樣本的所有數據都對應到下圖的直角坐標系,再用一條線將樣本進行分類,區別山鳶尾和變色鳶尾,下圖是分類的三種情況,這里將×表示為山鳶尾,將○表示為變色鳶尾,那么第一個圖中有9個山鳶尾被分類成變色鳶尾,第二個圖有兩個樣本分類錯誤,第三個圖雖全部分類正確但是分類器顯得過于復雜和過度擬合訓練數據,這將會導致該分類器不會在最終的測試即“考試”階段舉一反三,反而得不到“好成績”。因此,圖2-4就是欠擬合、剛好和過擬合三種情況。

圖2-4 欠擬合、剛好、過擬合

最后,我們用表2-2來總結模型分類的三種情況。我們需要找到一種分類“剛好”的情況。

表2-2 表格說明

2.3.2 感知器

首先我們介紹一下機器學習的三種主要的學習方式。

監督學習

使用有類標的訓練數據構建模型,即在訓練過程中,所有的數據都是知道它的類別的。通過構建的這個模型對未來的數據進行預測。在監督學習的下面,又可以分為分類(利用分類對類標進行預測)和回歸(使用回歸預測連續輸出值),上面鳶尾花的分類就是一個監督學習的典型例子,因為在分類前我們已經將樣本打上標簽即類標。

無監督學習

在沒有已知輸出變量(分類問題中是數據的類標)和反饋函數指導的情況下提取有效信息來探索數據的整體結構。

強化學習

構建一個系統,在與環境交互的過程中提高系統的性能,我們可以將強化學習視為與監督學習相關的一個領域。但是強化學習與監督學習不同的是,在強化學習中,并沒有一個確定的類標或一個連續類型的值,而是一個通過反饋函數產生的反饋值。該反饋值是對當前的系統行為的一個評價。強化學習解決的主要是交互式問題,象棋對弈就是一個常用的強化學習的例子。

感知器(perceptron)是一種訓練線性分類器的算法,由弗朗克·羅森布拉特(Frank Rossenblatt)基于MPC神經元模型提出,感知器可以看作一個處理二分類問題的算法。感知器的結構模型如圖2-5所示。

圖2-5 感知器模型結構

感知器的訓練方法是利用被誤分類的訓練數據調整現有分類器的參數,使得調整后的分類器判斷更加準確。感知器使用被分錯的樣本來調整分類器——如果標注的類別是+1,使得a1x1+a2x2+b<0的樣本就是被誤分類;如果標注的類別是-1,使得a1x1+a2x2+b≥0的樣本就是被誤分類。綜合起來就是若(a1x1+a2x2+b)≤0,那么樣本就被分錯了,其中y表示數據的真實類別。根據這個誤分類的樣本來調整分類直線的參數,使得直線向該誤分類數據一側移動,以減小該誤分類數據與直線的距離,直到直線越過該誤分類數據使其被正確分類。具體的感知器學習算法如下所示。

第一步:選取初始分類器參數a1,a2,b;

第二步:在訓練集中選取一個訓練數據,如果這個訓練數據被誤分類,則按照以下規則更新參數(將箭頭右邊更新后的值賦給左邊的參數):

a 1a1+ηyx1

a 2a2+ηyx2

bb+ηy

第三步:回到第二步,直到訓練數據中沒有誤分類數據(即收斂時)為止。

其中,η是學習率(learning rate),學習率是指每一次更新參數的程度大小。學習率越低,損失函數的變化速度就越慢,雖然使用低學習率可以確保我們不會錯過任何局部極小值,但也意味著將花費更長的時間來進行收斂。

表2-3是對學習率的總結。

表2-3 大學習率和小學習率

感知器的學習算法就是不斷減少對數據誤分類的過程。在這里,同學們可能會有兩個疑問:一是如何衡量分類器對數據的誤分類程度呢?二是我們該如何利用誤分類的數據來調整分類器的參數,也就是感知器學習算法中更新參數的規則是怎么來的呢?為此,我們分別介紹損失函數和優化方法來回答上面的兩個問題。

損失函數(loss function)是在訓練過程中用來度量分類器輸出錯誤程度的數學化表示。預測錯誤程度越大,損失函數的取值就越大。定義合適的損失函數對于訓練分類器是非常重要的。感知器和支持向量機就是基于不同的損失函數建立起來的。

在分類鳶尾花的例子中,假定總共有N個訓練數據,我們用來表示第i個訓練數據的特征向量,y(i)表示第i個訓練數據的標注類別,那么感知器的損失函數L定義為

顯然,如果沒有誤分類的數據,那么損失函數為零,如果有誤分類數據,就會使得損失函數增大,并且誤分類數據越多,損失函數越大。

有了損失函數衡量分類器對數據的誤分類程度后,我們可以用優化的方法來調整分類器的參數,以減少分類器對數據的誤分類。上面感知器學習算法中調整參數的規則是優化方法在感知器損失函數上的具體應用。細心的同學可能會發現,損失函數是在整個訓練數據集上求得的,如果用它來更新參數,則是利用了整個數據集中被誤分類的數據;而感知器學習算法中的第二步是每一次隨機選取一個樣本,如果是誤分類樣本則用它來更新參數,這樣不斷迭代直到訓練數據中沒有誤分類數據為止。這是感知器損失函數利用優化方法得到感知器學習算法中做的一點小改動。

一般地,優化(optimization)就是調整分類器的參數,使得損失函數最小的過程。我們通過一個直觀的例子來理解優化過程,損失函數的最小點就是該函數值的最小點,也就是函數的全局最低點,而局部最低點不一定是全局最低點。圖2-6就是全局最低點和局部最低點的區別。

圖2-6 局部最低點和全局最低點

2.3.3 支持向量機

在2.3.2節,我們介紹了感知器學習算法。通過實驗,我們知道了在同樣的訓練數據下,感知器算法由于初始參數的選擇不同或者學習率的不同等原因都會得到不同的分類直線。這些不同的分類直線都能夠將不同類別的數據分開,那么它們之間有沒有優劣之分呢?

支持向量機(support vector machine,SVM)是在特征空間上分類間隔最大的分類器,它與感知器一樣,是對兩個類別進行分類。線性分類器是分類器中的一種,類似地,線性支持向量機也是支持向量機中的一種。若無特殊說明,我們這里說的支持向量機均指的是線性支持向量機。首先假設二分類的目標是-1或者1,有許多條直線可以分割兩類目標,但是我們定義分割兩類目標有最大距離的直線為最佳線性分類。直觀上,我們很容易找到分類間隔最大的分類直線。得到一個超平面,公式如下:

其中,A是斜率向量,x是輸入向量,對于這個公式有很多證明方式,但是,從幾何觀點看,這是二維數據點(x0,y0)到一條直線y=Ax-b的垂直距離

同學們可以動手試試,想象自己拿了一根很粗的粉筆,要畫一條線使得兩類數據被正確分開,同時所畫的線條是最粗的。那么這條最粗的直線就有最大的分類間隔,對應著支持向量機要找的分類直線。如圖2-7所示的直角坐標系,wx-b=0就是最大分類間隔。

圖2-7 最大分類間隔

支持向量是那些能夠定義分類直線的訓練數據,也是那些最難被分類的訓練數據。直觀地說,它們就是對求解分類任務最富有信息的數據。我們來看一個例子,在圖2-8中,箭頭是我們在圖a新增的樣本點;圖b是最大分類間隔的,可以將新增樣本點正確分類;圖c不是最大分類間隔,將新增樣本錯誤分類,因此找到最大間隔可以將樣本有效分類。

圖2-8 最大分類間隔例子

主站蜘蛛池模板: 福建省| 额尔古纳市| 安化县| 兴宁市| 桃园市| 大同市| 嘉兴市| 肇庆市| 靖安县| 岗巴县| 龙川县| 五常市| 西丰县| 克山县| 顺平县| 九龙城区| 南岸区| 咸宁市| 锦屏县| 芒康县| 宽城| 徐水县| 扎赉特旗| 枝江市| 隆安县| 二连浩特市| 扶风县| 洛浦县| 唐山市| 板桥市| 内丘县| 星子县| 曲水县| 海城市| 长汀县| 琼结县| 定安县| 广西| 临桂县| 公主岭市| 新民市|