【實戰演練】機器學習系列05-淺談線性迴歸與梯度下降算法

上一篇介紹了機器學習的一些基本概念,其中有感知機與線性迴歸算法的介紹。在介紹中,應該令人最不可思議的就是,爲啥這樣的一堆

y = x1*w1+x2*w2+x3*w3.....+xn*wn,通過機器學習,最終可以擬合出正確的模型呢?

其實機器學習,搭建了人工神經網絡,結合線性迴歸方程與梯度下降算法,通過不停的輸入訓練數據,回顧計算結果,調整計算參數,最終才能達到目標。我們先從基本概念講起:


1、瞎猜方程解

假設現在有y = ax,我們知道x=10的時候,y=35。那麼,怎麼計算常數a呢?我們可以靠瞎猜來嘗試。

a)例如先將a=3,然後代入測試。x*a=10*3=30,而y應該是35,所以明顯a偏小了。

b)因爲a偏小,我們將a變爲4,代入再次測試,x*a=10*4=40,而y是35,所以明顯a偏大了。

c)a=3偏小,a=4偏大,我們拿個a=3.5平均值試試,結果發現x*a=10*3.5=35,y=35,撞中了。

當然現實y可能不是35整,例如是38,那麼a可能要多撞很多次。


2、推廣到多組數據的情況

按照上面的思路,其實只要有足夠的數據(足夠的x、y對應數據),我們是可以撞得出方程解。

例如下面的一堆散點,其實頁可以按照上面那樣撞,把a撞出來。

當然,我們知道2點可以確定一條直線,所以,也可以隨便選2組(x,y),然後求解二元一次方程,得出1條直線。對於不同的2組(x,y),可以求解出N條不同的直線。

1001.jpg


直線可以是這樣

1002.jpg

也可以是這樣

1003.jpg

當然也可以是這樣

1004.jpg

那麼,有沒有什麼評價體系,可以評價上面的所有曲線,那一條對於上面所有的散點,擬合度最佳呢?(即採用這條方程,輸入x計算出來的y,計算出來誤差最小)

最理想的方法,選定了1條方程,對每個x求解對應的y值(假設稱y'),而每個x對應的實際y值,減去y‘,然後對所有的差值進行合計(∑|y-y'|),哪條直線方程的合計差值最小,哪條就是擬合度最高的方程。

而由於y’可能大於或者小於實際值y,所以差值會出現正負,所以使用了絕對值來計算,但是這樣會對實際計算提高難度,因此,一般使用差值的平方進行計算,平方之後都爲正值,就不存在符號的問題了。

將實際值與計算值的差值取平方,然後求和,就是評估擬合度的核心,結果越小越好。(這個就是損失函

1005.jpg

如果把x代入y,則會有如下公式

1006.jpg

值得注意的是,這裏從i到n的x與y,都只是同一個影響因素不同取值而已。如果拿房價來舉例,如果房屋面積拿x來表示,那麼這裏的x1,x2,x3,都只是不同的面積的大小。

但是房價肯定不止面積一個影響因素,肯定還有其他影響因素,例如地段、樓齡、城市、是否帶電梯等,那麼還需要其他種類的x表示,而每個種類的x也有x1,x2~xn的數據,因此,我們按照如下記數。

1007.jpg

推廣到m的情況,則可以記作

1008.jpg

由於這樣記數很複雜,所以可以使用矩陣來進行記數。

1009.jpg

同理,無論有多少種影響因素,核心都是求損失函數最小值


3、損失函數求最小值

1010.jpg

對於損失函數,我們看到是一個關於x的二次方程,所以其實就是一條拋物線。

1011.jpg

在高中數學裏面學過,對f(x)求導(記作f'(x)),求導的結果就是某個x值的點,與曲線相切的直線的斜率。

而我們觀察曲線的圖形,可以看到,當f(x)最小的時候,就是在最低點,而最低點的斜率是等於0的。

因此,如果a與b都知道,其實現在要求f'(x)=0,就是直接利用求導的公式,將關於x的二次方程變爲一次方程,並且結果等於0,就可以解出確定的x值,並且將求得的x值導入f(x)公式後,算出的f(x)值就是整個函數的最小值。這是高中數學裏面出題方式與解題思路。

然而,現在情況有點不同,現在我們的a與b都是未知數,而反而我們手上有很多的x與對應的y的數據。那麼有沒有辦法可以從而求出a與b呢?

答案是否定的。因爲我們手上的數據x,計算出來的y',是不相等的。所以f(x)永遠不可能等於0,並且例如你代入2個確定的x,算出來2個確定的y',然後通過f(x)=0的兩條等式,就算出a與b的確定值,但是代入第三個x,代入計算出來的a、b確定值,再次計算,又發現y與y'不相等了,所以是不能這樣算出確定解的。

那麼,怎樣才能計算出最小值呢,其實與上面思想一樣,那就是求導。這就涉及高等數學的內容,求偏導,以及微積分裏面的“最小二乘法”。

再次看上面的損失函數,其實x,y我們有數據源,所以它們變成了常量,而a與b纔是新的變量,因此,我們需要對a與b分表作爲自變量來求導,這就是求偏導。

經過求導的公式計算,最小二乘法最終是可以把f(x)對a的求導與f(x)對b的求導推導出來一個公式的:

1003.png

1004.png

spacer.gif1002.png

那麼其實a與b,在給予一堆x與y的數據的前提下,是可以計算出相對的確定解的。我們來做個實際一點的習題。

假設廣告費支出x,銷售額爲y,它們對應關係如下。

x24568
y3040605070

求線性歸回方程。

我們按照公式進行計算。

x平均=(2+4+5+6+8)/5=5

y平均=(30+40+60+50+70)/5=50

x求和=25

y求和=250

x平方求和=2*2+4*4+5*5+6*6+8*8=145

x*y求和=2*30+4*40+5*60+6*50+8*70=1380

假設y=ax+b,代入上述最小二乘法公式,a=(1380-125)/(145-125)=6.5,b=50-6.5*5=17.5

那麼擬合的線性迴歸方程就是y=6.5x+17.5

所以根據上面的最小二乘法,只要樣本數量充足,其實是可以算出使損失函數最小的擬合曲線的。


4、神經網絡與後向傳播

人的神經系統是有神經網絡的,通過樹突去感知,通過軸突傳輸神經信號到大腦。

人工智能專家,從這裏得到啓發,開始嘗試模仿人的神經系統,構建機器的人工神經網絡。

10004.png

通過不同的輸入,乘以不同的權重,得出最後的output。

10005.png

10010.png

根據上面最小二乘法的原則,需要f(x)最小,就要對f(x)求導,求f'(x)。注意此時x全都是常量,所有的ω都是變量(可以理解爲ω1就是x,ω2就是y,ω3就是z等,需要分別求偏導),因此對f(x)求導,就是需要對所有ω求偏導。根據數學的高等數學的鏈式法則

10011.png

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