机器学习(二)梯度下降
在上一節(jié)(線性回歸)中介紹,在線性回歸中參數(shù)值θ\thetaθ是不一定可以求出的,但是可以通過梯度下降的方式可求。
在微積分里面,對多元函數(shù)的參數(shù)求偏導(dǎo)數(shù),把求得的各個(gè)參數(shù)的偏導(dǎo)數(shù)以向量的形式寫出來,就是梯度。比如函數(shù)f(x,y)f(x,y)f(x,y), 分別對x,y求偏導(dǎo)數(shù),求得的梯度向量就是(?f?x,?f?y)T(\frac {\partial f}{\partial x},\frac {\partial f}{\partial y})^T(?x?f?,?y?f?)T,簡稱grad f(x,y)或者?f(x,y)\nabla f(x,y)?f(x,y)。對于在點(diǎn)(x0,y0)(x_0,y_0)(x0?,y0?)的具體梯度向量就是(?f?x0,?f?y0)T(\frac {\partial f}{\partial x_0},\frac {\partial f}{\partial y_0})^T(?x0??f?,?y0??f?)T.或者?f(x0,y0)\nabla f(x_0,y_0)?f(x0?,y0?),如果是3個(gè)參數(shù)的向量梯度,就是(?f?x,?f?y,?f?z)T(\frac {\partial f}{\partial x}, \frac {\partial f}{\partial y},\frac{\partial f}{\partial z})^T(?x?f?,?y?f?,?z?f?)T,以此類推。
那么這個(gè)梯度向量求出來有什么意義呢?他的意義從幾何意義上講,就是函數(shù)變化增加最快的地方。具體來說,對于函數(shù)f(x,y)f(x,y)f(x,y),在點(diǎn)(x0,y0)(x_0,y_0)(x0?,y0?),沿著梯度向量的方向就是(?f?x0,?f?y0)T(\frac {\partial f}{\partial x_0},\frac {\partial f}{\partial y_0})^T(?x0??f?,?y0??f?)T的方向是f(x,y)f(x,y)f(x,y)增加最快的地方。或者說,沿著梯度向量的方向,更加容易找到函數(shù)的最大值。反過來說,沿著梯度向量相反的方向,也就是 ?(?f?x0,?f?y0)T-(\frac {\partial f}{\partial x_0},\frac {\partial f}{\partial y_0})^T?(?x0??f?,?y0??f?)T的方向,梯度減少最快,也就是更加容易找到函數(shù)的最小值。
假設(shè)目標(biāo)函數(shù)J(θ0,θ1)=12m∑i=1m(hθ(x(i)?y(i))2)J(\theta_0,\theta_1)=\frac{1}{2m}\sum_{i=1}^m(h_\theta(x^{(i)} - y^{(i)})^2)J(θ0?,θ1?)=2m1?∑i=1m?(hθ?(x(i)?y(i))2)。
為什么要除以樣本個(gè)數(shù)mmm?
假如有1萬個(gè)樣本,那么會得到一個(gè)目標(biāo)函數(shù)J(θ)1J(\theta)_1J(θ)1?,10萬個(gè)樣本,得到一個(gè)目標(biāo)函數(shù)J(θ)2J(\theta)_2J(θ)2?,那么10萬個(gè)樣本的損失值一定比1萬個(gè)樣本的損失值大,但不能說10萬個(gè)樣本的模型不好,因此需要算一個(gè)平均值1m\frac{1}{m}m1?。
我們的目標(biāo)就是要尋找最低點(diǎn),什么樣的參數(shù)能使得目標(biāo)函數(shù)達(dá)到最低點(diǎn)?
當(dāng)開始的時(shí)候,是一個(gè)隨機(jī)點(diǎn):
批量梯度下降GD
在上面的說法中,要綜合考慮所有的樣本,每個(gè)樣本都需要參與計(jì)算,這個(gè)計(jì)算量是非常大的,很難進(jìn)行迭代,雖然很容易得到最優(yōu)解。
?f?θi=?1m∑i=1m(yi?hθ(xi))xji\frac {\partial f}{\partial \theta_i}=-\frac{1}{m}\sum_{i=1}^m(y^i-h_\theta(x^i))x_j^i ?θi??f?=?m1?i=1∑m?(yi?hθ?(xi))xji?
θj′=θj+1m∑i=1m(yi?hθ(xi)xji)\theta_j^\prime=\theta_j+\frac{1}{m}\sum_{i=1}^m(y^i-h_\theta(x^i)x^i_j) θj′?=θj?+m1?i=1∑m?(yi?hθ?(xi)xji?)
隨機(jī)梯度下降SGD
每次找一個(gè)樣本,迭代速度快,但不一定每次都朝著收斂的方向,無法判斷好壞。
θj′=θj+(yi?hθ(xi))xji\theta_j^\prime=\theta_j+(y^i-h_\theta(x^i))x_j^i θj′?=θj?+(yi?hθ?(xi))xji?
小批量梯度下降
每次更新選擇一小部分?jǐn)?shù)據(jù)來算,比較實(shí)用。首先打亂順序,然后每次拿10個(gè)數(shù)據(jù)
θj:=θj?α110∑k=ii+9(hθ(x(k)?y(k)))xj(k)\theta_j :=\theta_j-\alpha\frac{1}{10}\sum_{k=i}^{i+9}(h_\theta(x^{(k)}-y^{(k)}))x_j^{(k)} θj?:=θj??α101?k=i∑i+9?(hθ?(x(k)?y(k)))xj(k)?
總結(jié)
以上是生活随笔為你收集整理的机器学习(二)梯度下降的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三星Galaxy S23 FE北京品鉴会
- 下一篇: 微软正从 Win11 中删除“地图”、“