一凡辱, ? 梯度下降算法摘要
步長就是a,也叫學習速率拧簸。偏導數(shù)就是梯度寺旺,下降最快的方向
合適的學習速率α應該是每一次迭代過后组去,代價函數(shù)J(θ)都應該減小鞍陨,但是學習速率α如果太小的話又會使梯度下降收斂的特別慢。
學習速率的選擇从隆,可以嘗試0.001诚撵、0.01、0.1键闺、1寿烟。選擇一個最大的學習速率,然后選擇一個比它小一點點的學習率辛燥,通常能夠找到最合適的學習速率來解決我們的問題筛武。
二,理論說明
在微積分里面挎塌,對多元函數(shù)的參數(shù)求?偏導數(shù)徘六,把求得的各個參數(shù)的偏導數(shù)以向量的形式寫出來,就是梯度榴都。比如函數(shù)f(x,y), 分別對x,y求偏導數(shù)硕噩,求得的梯度向量就是(?f/?x,??f/?y)T,簡稱grad f(x,y)或者▽f(x,y)。對于在點(x0,y0)的具體梯度向量就是(?f/?x0,??f/?y0)T.或者▽f(x0,y0)缭贡,如果是3個參數(shù)的向量梯度,就是(?f/?x,??f/?y辉懒,?f/?z)T,以此類推阳惹。
那么這個梯度向量求出來有什么意義呢?他的意義從幾何意義上講眶俩,就是函數(shù)變化增加最快的地方莹汤。具體來說,對于函數(shù)f(x,y),在點(x0,y0)颠印,沿著梯度向量的方向就是(?f/?x0,??f/?y0)T的方向是f(x,y)增加最快的地方纲岭。或者說线罕,沿著梯度向量的方向止潮,更加容易找到函數(shù)的最大值。反過來說钞楼,沿著梯度向量相反的方向喇闸,也就是-(?f/?x0,??f/?y0)T的方向,梯度減少最快,也就是更加容易找到函數(shù)的最小值燃乍。
梯度下降法大家族(BGD唆樊,SGD,MBGD)
A.批量梯度下降法(Batch Gradient Descent)
批量梯度下降法刻蟹,是梯度下降法最常用的形式逗旁,具體做法也就是在更新參數(shù)時使用所有的樣本來進行更新,這個方法對應于前面3.3.1的線性回歸的梯度下降算法舆瘪,也就是說3.3.1的梯度下降算法就是批量梯度下降法片效。
θi=θi?α∑j=0m(hθ(x(j)0,x(j)1,...x(j)n)?yj)x(j)iθi=θi?α∑j=0m(hθ(x0(j),x1(j),...xn(j))?yj)xi(j)
由于我們有m個樣本,這里求梯度的時候就用了所有m個樣本的梯度數(shù)據(jù)介陶。
B.隨機梯度下降法(Stochastic Gradient Descent)
隨機梯度下降法堤舒,其實和批量梯度下降法原理類似,區(qū)別在與求梯度時沒有用所有的m個樣本的數(shù)據(jù)哺呜,而是僅僅選取一個樣本j來求梯度舌缤。對應的更新公式是:
?θi=θi?α(hθ(x(j)0,x(j)1,...x(j)n)?yj)x(j)iθi=θi?α(hθ(x0(j),x1(j),...xn(j))?yj)xi(j)
隨機梯度下降法,和4.1的批量梯度下降法是兩個極端某残,一個采用所有數(shù)據(jù)來梯度下降国撵,一個用一個樣本來梯度下降。
訓練速度很快, 不能很快的收斂到局部最優(yōu)解玻墅。
C. 小批量梯度下降法(Mini-batch Gradient Descent)
小批量梯度下降法是批量梯度下降法和隨機梯度下降法的折衷介牙,也就是對于m個樣本,我們采用x個樣子來迭代澳厢,1<x<m环础。一般可以取x=10,當然根據(jù)樣本的數(shù)據(jù)剩拢,可以調(diào)整這個x的值线得。對應的更新公式是:
θi=θi?α∑j=tt+x?1(hθ(x(j)0,x(j)1,...x(j)n)?yj)x(j)iθi=θi?α∑j=tt+x?1(hθ(x0(j),x1(j),...xn(j))?yj)xi(j)
三,python代碼
TBD
步驟如下:
step0: 給定W ,b初始值徐伐,W0,b0W0,b0,
step1: 隨機選取一個樣本 (xn,yn)(xn,yn)贯钩,
step2: 將樣本和Wt?1,bt?1Wt?1,bt?1代入 y^n=ft?1(xn)=Wt?1xn+bt?1y^n=ft?1(xn)=Wt?1xn+bt?1確定y^ny^n,
step3: 求得Wt=Wt?1+α(y^n?yn)xnWt=Wt?1+α(y^n?yn)xn,
step4: 求得bt=yn?Wtxnbt=yn?Wtxn,
循環(huán)迭代1-4步,使得MSEloss的值小于某個值退出循環(huán)办素。