gradient descent 梯度下降演算法

2021-06-25 19:01:52 字數 1690 閱讀 9291

今天給大家介紹乙個machine learning中非常基礎又非常重要的演算法:gradient descent 梯度下降演算法。其實在寫這篇文章之前,我前面的文章中就有提到gradient descent,它實在是太「氾濫」了,幾乎到處都能看到它的身影。那麼,它到底是什麼?能幹什麼?它是一種優化演算法,在machine learning中經常用來優化目標函式,那什麼是目標函式?目標函式根據問題的不同而不同,大家可以看我的另外兩篇文章,裡面就用到在gradient descent優化目標函式,大家可以看看裡面的目標函式是什麼,這兩篇文章是bp神經網路和推薦系統之矩陣分解。

這裡就給大家舉個稍微簡單一點的例子,假設有一堆男生女生的身高體重資料(training set),假

是身高體重資料,x1是身高,x2是體重,y是類標號,y=1表示這條資料是男生的,y=-1表示這條資料是女生的。我們希望能學習出乙個

函式f(x),

使得f(x)能夠盡可能準確地描述這些資料,如果能求出這個f(x),那麼任給乙個身高體重,就能**出這人是男生還是女生。

那麼f(x)長什麼樣?它的形式需要我們來指定,gradient descent只幫我們訓練出其中的引數。為了方便講解,我設f(x)為下面的形式,也就是乙個線性的函式(一般來說,非線性的要比線性的函式的擬合能力要強,這裡暫不討論線性與非線性的問題):

我們希望f(x)能夠盡可能準確地描述training set中的樣本,那麼如何衡量它描述得準確不準確?那就要定義誤差,而定義誤差就要和類標號聯絡起來,因為我們的類標號是y=1表示這條資料是男生的,y=-1表示這條資料是女生的,因此我們希望f(x)對男生的資料輸出的值盡量接近1,對女生的資料輸出的值盡量接近-1。於是就能計算誤差了,對於

男生的資料,誤差就是f(x)算出來的值與1的差距,

對於女生的資料,誤差就是f(x)算出來的值與-1的差距,注意這裡的差距,大於或小於都是差距。於是對於乙個training set,總的誤差函式(cost function)可以定義如下:

xi是第i的樣本,yi是第i個樣本對應的類標號,在這裡就是1或者-1,因為大於或小於類標號都是誤差,而誤差是非負的,因此加個平方就可以達到這個效果。但是為什麼前面有個1/2呢?回想,梯度下降,那肯定要用到梯度,而求梯度是不是要求導呢?那個1/2可以在後面求導的時候把平方的那個2給消掉,方便後續計算。

好了,現在有了cost function,那麼我們下一步的目標就是,求出一最優的引數,使得cost最小,也就是求當

,梯度所指的方向就是函式增長最快的方向,也就是說,如果我們沿著梯度的方向調整引數(注意在cost function中,自變數是引數

接下來讓引數沿著梯度方向走,也就是每個分量沿著對應的梯度反方向的分量走,因此引數在每次迭代的更新規則如下:

其中經過多次迭代之後,我們就得到了

Gradient Descent學習筆記

今日網課初步學習了 gradient descent,特此把筆記記下,以後有空看看。同專業的發現不要抄我作業 tat 定義出損失函式loss function,若該函式可微分,則可以使用梯度下降法。設變數為x 損失函式為l x 為了找到損失函式的最小值 即目標的最優解 通過任意取乙個初始值,然後根據...

梯度下降(Gradient Descent)

1.特徵 沿負梯度方向迭代更新下一次的搜尋方向 2.用於 優化問題中逼近極值點 3.基本形式 theta j theta j alpha cdot frac 4.步長 alpha 學習速率 alpha 太小,收斂慢 alpha 太大,可能不收斂。5.缺點 靠近極值點收斂速度減慢 導數減小 可能之字形...

梯度下降法 gradient descent

也稱為最速下降法 steepest descent 用來求解無約束的最優化問題,有約束的最優化問題使用拉格朗日乘子法 lagrangian multiplier method 梯度下降法是迭代演算法,每一步需要求解目標函式的梯度向量。目標函式f x 已知f x 可導且有極小值,求解無約束條件下f x...