1. 程式人生 > >斯坦福大學公開課機器學習:Neural Networks,representation: non-linear hypotheses(為什麽需要做非線性分類器)

斯坦福大學公開課機器學習:Neural Networks,representation: non-linear hypotheses(為什麽需要做非線性分類器)

繼續 例子 產生 成本 log repr 概率 .cn 成了

技術分享

如上圖所示,如果用邏輯回歸來解決這個問題,首先需要構造一個包含很多非線性項的邏輯回歸函數g(x)。這裏g仍是s型函數(即技術分享 )。我們能讓函數包含很多像這的多項式,當多項式足夠多時,那麽你也許能夠得到可以分開正樣本和負樣本的分界線,如圖下粉紅色分界線所示:

技術分享

當只有兩項時,比如x1、x2,這種方法能夠得到不錯的效果,因為你可以把x1和x2的所有組合都包含到多項式中,但是對於許多復雜的機器學習問題涉及的項往往多於兩項,以房屋為例,影響房屋價格因素有房子大小、臥室數量、樓層、房齡等等。假設現在要處理的是關於住房的分類問題,則不再是一個回歸問題。假設你對一棟房子的多方面特點都有所了解,你想預測房子在未來半年內能被賣出去的概率,這是一個分類問題,我們可以想出有很多特征向量對於不同的房子的影響。

技術分享

對於這類問題,如果要包含所有的二次項,即使只包含二項式或多項式的計算, 最終的多項式也可能有很多項,比如x1^2, x1x2,x1x3,x1x4,直到x1x100, 還有x2^2, x2x3……,因此,即使只考慮二階項,也就是說,兩個項的乘積,x1乘以x1,等等類似於此的項,那麽,在n=100的情況下,最終也有5000個二次項。而且漸漸地,隨著特征個數n的增加,二次項的個數大約以n^2的量級增長,其中,n是原始項的個數,即我們之前說過的x1到x100這些項,事實上二次項的個數大約是(n^2)/2, 因此要包含所有的二次項是很困難的, 所以這可能不是一個好的做法, 而且由於項數過多, 最後的結果很有可能是過擬合的。此外,在處理這麽多項時,也存在運算量過大的問題,當然,你也可以試試只包含上邊這些二次項的子集。例如,我們只考慮,x1^2,x2^2,x3^2……x100^2, 這樣就可以將二次項的數量大幅度減少, 減少到只有100個二次項, 但是由於忽略了太多相關項, 在處理類似第一張圖的數據時,不可能得到理想的結果。實際上,如果只考慮x1的平方到x100的平方這一百個二次項,那麽你可能會擬合出一些特別的假設,比如可能擬合出一個橢圓的形狀,但是肯定不能擬合出像第一張圖這個數據集的分界線。所以5000個二次項看起來已經很多了,而現在假設包括三次項或者三階項例如x1x2x3,(x1^2)x2,x10x11x17……類似的三次項有很多很多。事實上,三次項的個數是以n^3的量級增加,當n=100時,可以計算出來,最後能得到,大概17000個三次項,所以當初始特征個數n增大時,這些高階多項式項數將以幾何級數遞增,特征空間也隨之急劇膨脹, 當特征個數n很大時, 如果找出附加項來建立一些分類器, 這並不是一個好做法, 對於許多實際的機器學習問題,特征個數n是很大的。以下是一個例子:

關於計算機視覺中的一個問題,假設你想要使用機器學習算法來訓練一個分類器,使它檢測一個圖像來判斷圖像是否為一輛汽車。很多人可能會好奇,這對計算機視覺來說有什麽難的。當我們自己看這幅圖像時,裏面有什麽是一目了然的事情,你肯定會很奇怪,為什麽學習算法竟可能會不知道圖像是什麽。為了解答這個問題,我們取出這幅圖片中的一小部分,將其放大,比如圖下這個紅色方框內的部分。

技術分享

結果表明當人眼看到一輛汽車時,計算機實際上看到的卻是一個數據矩陣或像這種格網,如下圖所示:

技術分享

它們表示了像素強度值,告訴我們圖像中每個像素的亮度值。因此,對於計算機視覺來說,問題就變成了根據這個像素點亮度矩陣,來告訴我們這些數值代表一個汽車門把手。具體而言,當用機器學習算法構造一個汽車識別器時,我們要想出一個帶標簽的樣本集,其中一些樣本是各類汽車,另一部分樣本是其他任何東西,如下圖所示:

技術分享

將這個樣本集輸入給學習算法,以訓練出一個分類器,訓練完畢後,輸入一幅新的圖片讓分類器判定“這是什麽東西?”。理想情況下,分類器能識別出這是一輛汽車。為了理解引入非線性分類器的必要性,我們從學習算法的訓練樣本中,挑出一些汽車圖片和一些非汽車圖片。從其中每幅圖片中挑出一組像素點,像素點1、像素點2的位置如圖下所示,在坐標系中標出這幅汽車的位置。在某一點上,車的位置取決於像素點1和像素點2的亮度。

技術分享

用同樣的方法標出其他圖片中汽車的位置,然後我們再舉一個關於汽車的不同的例子,觀察這兩個相同的像素位置,圖下橘黃色小車中像素1有一個像素強度,像素2也有一個不同的像素強度,所以在這幅圖中它們兩個處於不同的位置。我們繼續畫上兩個非汽車樣本(負號表示的樣本),然後我們繼續在坐標系中畫上更多的新樣本,用‘‘+"表示汽車圖片,用“-”表示非汽車圖片。

技術分享

我們將發現汽車樣本和非汽車樣本,分布在坐標系中的不同區域。我們現在需要一個非線性分類器,盡量分開這兩類樣本。這個分類問題中特征空間的維數是多少?假設我們用50*50像素的圖片,但這依然是2500個像素點,因此我們的特征向量的元素數量N = 2500。特征向量X包含了所有像素點的亮度值,左邊是像素點1的亮度,右邊是像素點2的亮度。如此類推,直到最後一個像素點的亮度,對於典型的計算機圖片表示方法,如果存儲的是每個像素點的灰度值(色彩的強烈程度),那麽每個元素的值應該在0到255之間。因此,這個問題中n=2500,但是這只是使用灰度圖片的情況。如果我們用的是RGB彩色圖像,每個像素點包含紅、綠、藍三個子像素,那麽n=7500。因此,如果我們非要通過包含所有的二次項來解決這個非線性問題,那麽下面式子中的所有條件xi*xj,連同開始的2500像素,總共大約有300萬個。這數字大得有點離譜了,對於每個樣本來說,要發現並表示所有這300萬個項,這計算成本太高了。

技術分享

因此,只是簡單的增加二次項或者三次項之類的邏輯回歸算法,並不是一個解決復雜非線性問題的好辦法。因為當n很大時,將會產生非常多的特征項。因此神經網絡在解決復雜的非線性分類問題上被證明是是一種好得多的算法,即使你輸入特征空間或輸入的特征維數n很大也能輕松搞定。

斯坦福大學公開課機器學習:Neural Networks,representation: non-linear hypotheses(為什麽需要做非線性分類器)