上一篇介紹了機器學習的一些基本概念,其中有感知機與線性迴歸算法的介紹。在介紹中,應該使人最難以想象的就是,爲啥這樣的一堆算法
y = x1*w1+x2*w2+x3*w3.....+xn*wn,經過機器學習,最終能夠擬合出正確的模型呢?網絡
其實機器學習,搭建了人工神經網絡,結合線性迴歸方程與梯度降低算法,經過不停的輸入訓練數據,回顧計算結果,調整計算參數,最終才能達到目標。咱們先從基本概念講起:機器學習
一、瞎猜方程解ide
假設如今有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可能要多撞不少次。spa
二、推廣到多組數據的狀況3d
按照上面的思路,其實只要有足夠的數據(足夠的x、y對應數據),咱們是能夠撞得出方程解。
例以下面的一堆散點,其實頁能夠按照上面那樣撞,把a撞出來。
固然,咱們知道2點能夠肯定一條直線,因此,也能夠隨便選2組(x,y),而後求解二元一次方程,得出1條直線。對於不一樣的2組(x,y),能夠求解出N條不一樣的直線。
直線能夠是這樣
也能夠是這樣
固然也能夠是這樣
那麼,有沒有什麼評價體系,能夠評價上面的全部曲線,那一條對於上面全部的散點,擬合度最佳呢?(即採用這條方程,輸入x計算出來的y,計算出來偏差最小)
最理想的方法,選定了1條方程,對每一個x求解對應的y值(假設稱y'),而每一個x對應的實際y值,減去y‘,而後對全部的差值進行合計(∑|y-y'|),哪條直線方程的合計差值最小,哪條就是擬合度最高的方程。
而因爲y’可能大於或者小於實際值y,因此差值會出現正負,因此使用了絕對值來計算,可是這樣會對實際計算提升難度,所以,通常使用差值的平方進行計算,平方以後都爲正值,就不存在符號的問題了。
將實際值與計算值的差值取平方,而後求和,就是評估擬合度的核心,結果越小越好。(這個就是損失函數)
若是把x代入y,則會有以下公式
值得注意的是,這裏從i到n的x與y,都只是同一個影響因素的不一樣取值而已。若是拿房價來舉例,若是房屋面積拿x來表示,那麼這裏的x1,x2,x3,都只是不一樣的面積的大小。
可是房價確定不止面積一個影響因素,確定還有其餘影響因素,例如地段、樓齡、城市、是否帶電梯等,那麼還須要其餘種類的x表示,而每一個種類的x也有x1,x2~xn的數據,所以,咱們按照以下記數。
推廣到m的狀況,則能夠記做
因爲這樣記數很複雜,因此可使用矩陣來進行記數。
同理,不管有多少種影響因素,核心都是求損失函數的最小值。
三、損失函數求最小值
對於損失函數,咱們看到是一個關於x的二次方程,因此其實就是一條拋物線。
在高中數學裏面學過,對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的求導推導出來一個公式的:
那麼其實a與b,在給予一堆x與y的數據的前提下,是能夠計算出相對的肯定解的。咱們來作個實際一點的習題。
假設廣告費支出x,銷售額爲y,它們對應關係以下。
x | 2 | 4 | 5 | 6 | 8 |
y | 30 | 40 | 60 | 50 | 70 |
求線性歸回方程。
咱們按照公式進行計算。
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
因此根據上面的最小二乘法,只要樣本數量充足,實際上是能夠算出使損失函數最小的擬合曲線的。
四、神經網絡與後向傳播
人的神經系統是有神經網絡的,經過樹突去感知,經過軸突傳輸神經信號到大腦。
人工智能專家,從這裏獲得啓發,開始嘗試模仿人的神經系統,構建機器的人工神經網絡。
經過不一樣的輸入,乘以不一樣的權重,得出最後的output。
根據上面最小二乘法的原則,須要f(x)最小,就要對f(x)求導,求f'(x)。注意此時x全都是常量,全部的ω都是變量(能夠理解爲ω1就是x,ω2就是y,ω3就是z等,須要分別求偏導),所以對f(x)求導,就是須要對全部ω求偏導。根據數學的高等數學的鏈式法則:
而