文章目錄
一、案例引入
二、如何求出正確參數
1. 最速下降法
1)多項式回歸
2)多重回歸
2.?隨機梯度下降法
一、案例引入
以Web廣告和點擊量的關系為例來學習回歸,假設投入的廣告費和點擊量呈現下圖對應關系。
思考:如果花了200元的廣告費,廣告的點擊量會是多少呢?
機器學習就是從給出的數據(訓練數據)中進行學習,當你提供未知數據(200廣告費)后,給出預測值(500左右點擊量)。
實現原理:把圖想象為函數,只要知道通過圖中各點的函數的形式,就能根據廣告費得知點擊量。
定義一次函數的表達式:
? ? ? ??"西塔0,西塔1"? 我們稱之為參數,也就是一次函數的斜率和截距。
將訓練數據中的廣告費代入fθ(x),把得到的點擊量與訓練數據中的點擊量相比較,然后找出使二者的差最小的θ。
假設有n個訓練數據,那么它們的誤差之和可以用這樣的表達式表示。這個表達式稱為目標函數,E(θ)的E是誤差的英語單詞Error的首字母。
對每個訓練數據的誤差取平方之后,全部相加,然后乘以1/2。這么做是為了找到使E(θ)的值最小
的θ。這樣的問題稱為最優化問題。(取平方是為了讓誤差值都大于0,最后乘以1/2是為了讓后面計算微分更方便而加上去的)
二、如何求出正確參數
1. 最速下降法
比如有一個表達式為的二次函數,它的最小值是g(x)=0,出現在 x =1時。
將g(x)展開后取微分:
增減表如下所示:
比如在x=3這一點,為了使g(x)的值變小,我們需要向左移動 x,也就是必須減小x
如果是在另一側的x=?1這一點,為了使g(x)的值變小,我們需要向右移動x,也就是必須增加x
只要向與導數的符號相反的方向移動x,g(x)就會自然而然地沿著最小值的方向前進了
用表達式展示出來:? ? ? ? 這種方法稱為最速下降法或梯度下降法
(A:=B這種寫法,它的意思是通過B來定義A。)
η讀作“伊塔”,稱為學習率的正的常數。根據學習率的大小, 到達最小值的更新次數也會發生變化。換種說法就是收斂速度會不同。
假設η=0.1,從x=3開始
?x := 3?0.1×(2×3?2) =3 ?0.4=2.6
?x := 2.6?0.1×(2×2.6?2)=2.6?0.3=2.3
?x := 2.3?0.1×(2×2.3?2)=2.3?0.2=2.1
?x := 2.1?0.1×(2×2.1?2)=2.1?0.2=1.9
而當η較小時,移動量也變小,更新次數就會增加,值也會不斷朝著收斂的方向而去。
回過頭來看一下上面案例中的目標函數E(θ)
這個目標函數和剛才例子中的g(x)同樣是開口向上的形狀,所以剛才推導的過程也同樣適用于它。不過這個目標函數中包含fθ(x),從表達式(一次函數)中又可以看出,fθ(x)擁有θ0和 θ1兩個參數。也就是說這個目標函數是擁有θ0和θ1的雙變量函數,所以不能用普通的微分,而要用偏微分。如此一來,更新表達式就是這樣的。
E(θ)中有fθ(x),而fθ(x)中又有θ0,所以使用復合函數的微分
? ? ?然后再像這樣階梯性地進行微分? ??
? ? ??
左側最后一行,常數與1/2相抵消了,這就是一開始為什么乘以1/2。
最后得到對θ0求導的表達式:
? ?
同樣對θ1求導得出:
所以參數θ0和θ1的表達式是這樣:
根據這個表達式來更新θ0 和θ1,找到正確的fθ(x),然后輸入任意的廣告費,就可以得到相應的點擊量。這樣我們就能根據廣告費預測點擊量了。
1)多項式回歸
對于一開始在圖中的數據點來說,其實曲線比直線擬合得更好。
把fθ(x)定義為二次函數,就能用它來表示這條曲線了
或者用更大次數的表達式也可以。這樣就能表示更復雜的曲線了
對于要解決的問題,在找出最合適的表達式之前,需要不斷地去嘗試,雖然次數越大擬合得越好,但難免也會出現過擬合的問題。
回到剛才二次函數,最終的參數更新表達式是這樣的:
像這樣增加函數中多項式的次數,然后再使用函數的分析方法被稱為多項式回歸。
2)多重回歸
之前只是根據廣告費來預測點擊量,實際生活中決定點擊量的除了廣告費之外,還有廣告的展示位置和廣告版面的大小等多個要素。
為了讓問題盡可能地簡單,我們只考慮廣告版面的大小,設廣告費為x1、廣告欄的寬為x2、廣告欄的高為x3,那么fθ可以 表示如下:
在分別求目標函數對θ0,··· ,θ3的偏微分,然后更新參數之前,我們先試著簡化表達式的寫法。
把參數θ和變量x看作向量:
把θ轉置之后,計算它與x相乘的結果,也就是:
之前用多項式表示的fθ,可以像這樣用向量來表:
還是設u=E(θ)、v =fθ(x),為了一般化,對第j個參數θj偏微分的表達式
? ? ? ?
? ??
那么第j個參數的更新表達式就是這樣:
像這樣包含了多個變量的回歸稱為多重回歸。
2.?隨機梯度下降法
在引入隨機梯度下降法之前,我們先來看下最速下降法的一些缺點:
1. 計算量大、計算時間長
當訓練數據很多的時候,最速下降法要對所有的訓練數據都重復進行計算。
2.?容易陷入局部最優解
給出稍微復雜一點形狀的函數
用最速下降法來找函數的最小值時,必須先要決定從哪個x開始找起。之前用g(x)說明的時候是從x=3或者x=?1開始的。選用隨機數作為初始值的情況比較多。不過這樣每次初始值都會變,進而導致陷入局部最優解的問題。
假設這張圖中標記的位置就是初始值,從這個點開始找,可以求出最小值
把下圖所示作為初始值位置,沒計算完就會停止。這就是陷入局部最優解。
最速下降法的參數更新表達式:
這個表達式使用了所有訓練數據的誤差,而在隨機梯度下降法中會隨機選擇一個訓練數據,并使用它來更新參數。這個表達式中的k就是被隨機選中的數據索引。
最速下降法更新1次參數的時間,隨機梯度下降法可以更新n次。此外,隨機梯度下降法由于訓練數據是隨機選擇的,更新參數時使用的又是選擇數據時的梯度,所以不容易陷入目標函數的局部最優解。
此外還有隨機選擇m個訓練數據來更新參數的做法,設隨機選擇m個訓練數據的索引的集合為K,那么我們這樣來更新參數:
假設訓練數據有100個,那么在m=10時,創建一個有10個隨機數的索引的集合,例如K={61, 53, 59, 16, 30, 21, 85, 31, 51, 10}。這種做法被稱為小批量(mini-batch)梯度下降法。