機器學習 梯度下降演算法

2022-08-26 09:24:13 字數 2003 閱讀 3821

梯度下降演算法

什麼是梯度

梯度:梯度的本意是乙個向量,由函式對每個引數的偏導組成,表示某一函式在該點處的方向導數沿著該方向取得最大值,即函式在該點處沿著該方向變化最快,變化率最大。

梯度下降演算法原理

演算法思想:梯度下降是一種非常通用的優化演算法,能夠為大範圍的問題找到最優解。梯度下降的中心思想就是迭代地調整引數從而使損失函式最小化。假設你迷失在山上的迷霧中,你能感覺到的只有你腳下路面的坡度。快速到達山腳的乙個策略就是沿著最陡的方向下坡。這就是梯度下降的做法:通過測量引數向量 θ 相關的損失函式的區域性梯度,並不斷沿著降低梯度的方向調整,直到梯度降為 0 ,達到最小值。

梯度下降公式如下:

對應到每個權重公式為:

其中 η 為學習率,是 0 到 1 之間的值,是個超引數,需要我們自己來確定大小。

演算法原理:

在傳統機器學習中,損失函式通常為凸函式,假設此時只有乙個引數,則損失函式對引數的梯度即損失函式對引數的導數。如果剛開始引數初始在最優解的左邊,

很明顯,這個時候損失函式對引數的導數是小於 0 的,而學習率是乙個 0 到 1 之間的數,此時按照公式更新引數,初始的引數減去乙個小於 0 的數是變大,也就是在座標軸上往右走,即朝著最優解的方向走。同樣的,如果引數初始在最優解的右邊,

此時按照公式更新,引數將會朝左走,即最優解的方向。所以,不管剛開始引數初始在何位置,按著梯度下降公式不斷更新,引數都會朝著最優解的方向走。

梯度下降演算法流程

隨機初始引數;

確定學習率;

求出損失函式對引數梯度;

按照公式更新引數;

重複 3 、 4 直到滿足終止條件(如:損失函式或引數更新變化值小於某個閾值,或者訓練次數達到設定閾值)。

程式設計要求

根據提示,使用 python 實現梯度下降演算法,並損失函式最小值時對應的引數thetatheta會返回給外部**,由外部**來判斷theta是否正確。

測試說明

損失函式為:loss=2*(\theta-3)loss=2∗(θ−3)

最優引數為:3.0

你的答案跟最優引數的誤差低於0.0001才能通關。

import numpy as np

import warnings

warnings.filterwarnings("ignore")

def :gradient_descent(initial_theta,eta=0.05,n_iters=1000,epslion=1e-8):

#   請在此新增實現**   #

#********** begin *********#

theta =initial_theta

i_iter =0

whilei_iter

gradient =2*(theta-3)

last_theta =theta

theta =theta -eta*gradient

if(abs(theta-last_theta)

break

i_iter +=1

returntheta

#********** end **********#

機器學習 梯度下降演算法

梯度下降法是乙個 最優化演算法,通常也稱為最速下降法。最速下降法是求解無約束優化問題最簡單和最古老的方法之一,雖然現在已經不具有實用性,但是許多有效演算法都是以它為基礎進行改進和修正而得到的。最速下降法是用負梯度方向為搜尋方向的,最速下降法越接近目標值,步長越小,前進越慢。可以用於求解非線性方程組。...

機器學習 梯度下降演算法

梯度下降法是乙個最優化演算法,通常也稱為最速下降法。最速下降法是求解無約束優化問題最簡單和最古老的方法之一,雖然現在已經不具有實用性,但是許多有效演算法都是以它為基礎進行改進和修正而得到的。最速下降法是用負梯度方向為搜尋方向的,最速下降法越接近目標值,步長越小,前進越慢。可以用於求解非線性方程組。舉...

機器學習 梯度下降

參照 機器學習 這本書的第4.4.3節。一.解決目標及情景假設 當給定一些資料,輸入x向量已知,輸出y也已知,設計乙個線性函式y h x 去擬合這些資料。既然是線性函式,在此不妨設為h x w0 x0 w1 x1。此時我們遇到的問題就是如何確定w0和w1這兩個引數,即w w0,w1 這個向量。既然是...