梯度下降法學習筆記

2021-08-10 23:40:46 字數 2880 閱讀 4606

梯度——表示某一函式在該點處的方向導數沿著該方向取得最大值,即函式在該點處沿著該方向(此梯度的方向)變化最快。對於一元函式y=

f(x)

,其梯度

為∂y∂

x,對於

二元函式

f(x,

y),其

梯度為(

∂f∂x

,∂f∂

y)步長——在梯度下降迭代的過程中,每一步沿梯度負方向前進的長度

損失函式——在單個訓練樣本上的,也就是就算乙個樣本的誤差

代價函式——在整個訓練集上面的,也就是所有樣本的誤差的總和的平均,也就是損失函式的總和的平均

梯度下降法,也就是使函式按照其梯度方向的反方向(也就是下降最快的方向)改變自變數,從而是函式以最快的方向走向最低點,類似於下山,我們在不知道山的全貌的情況下,沿著坡度最陡的方向往下走比較可能最快的走到山底(但也可能是區域性最低處,這跟初始點,每步走的長度等有關)。

梯度下降法有批梯度下降,隨機梯度下降,以及小批量梯度下降

批梯度下降在求梯度時使用了所有的樣本,是一種比較常用的梯度下降法。

批梯度下降過程如下

根據資料的特徵x和標籤y之間的分布情況,假設乙個擬合函式y=

f(x)

,如此處

假設為y

=f(x

)=θ0

+θ1x

1+θ2

x2+.

..++

θnxn

,設x0

=1,則

y=f(

x)=θ

0x0+

θ1x1

+θ2x

2+..

.++θ

nxn,

於是y=

xθ。其

中,x為

m∗n矩

陣,θ為

n∗1向

量,y為

m∗1向

量,m為

樣本數,

n為乙個

樣本的特

徵數求得代價函式為j(

θ)=1

2m(x

θ−y)

t(xθ

−y)

若代價函式j(

θ)小到滿足精度要求,則結束梯度下降演算法,否則繼續第3步

求梯度∂j(

θ)∂θ

=xt(

xθ−y

)m用梯度∂j(

θ)∂θ

來求新的

θ θ=

θ−α∂

j(θ)

∂θ其中,α

為步長,調到第2步

**如下:

# -*- coding: utf-8 -*-

import numpy as np

defd_j

(x, y, theta):

# x表示樣本

# y表示樣本對應的標籤

# theta表示引數

return np.matmul(x.t, (np.matmul(x, theta) - y)) / np.shape(x)[0]

defcost_j

(x, y, theta):

# x表示樣本

# y表示樣本對應的標籤

# theta表示引數

x_theta_red_y = np.matmul(x, theta) - y

return np.matmul(x_theta_red_y.t, x_theta_red_y) / (2 * np.shape(x)[0])

step_size = 0.001

# 步長

max_iters = 10000

# 最大迭代次數

eps = 0.0001

# 精度

deftrain_gadient_descent

(x, y, theta):

cost = 100

cur_iters = 0

while cost > eps and cur_iters < max_iters:

theta = theta - step_size * d_j(x, y, theta)

cur_iters += 1

cost = cost_j(x, y, theta)

return theta

if __name__ == '__main__':

# 輸入的特徵和標籤

x = np.array([[1 ,1, 4], [1 ,2, 5], [1 ,5, 1], [1 ,4, 2]]) # feature

y = np.array([[19], [26], [19], [20]]) # lebal

# 假設的函式為 y=theta0+theta1*x1+theta2*x2

theta = np.array([[0.1],[0.1], [0.1]]) # 初始的theta引數

print(train_gadient_descent(x, y, theta))

隨機梯度下降法,其實和批量梯度下降法原理類似,區別在與求梯度時沒有用所有的m個樣本的資料,而是僅僅選取乙個樣本來求梯度。對應的更新公式是:θi

=θi−

α(hθ

(xj0

,xj1

,...

xjn)

−yj)

xji

批梯度下降法與隨機梯度下降法之間的比較如下:

該方法結合了上面兩種的特點,每次採用小批量的樣本進行迭代計算,是一種比較中庸的方法。

梯度下降法學習總結

梯度下降法是求解無約束優化問題的迭代演算法,每一步要求解目標函式的梯度向量。假設目標函式f x 在實數域上具有一階連續偏導數,無約束最優化問題為 mi nx r nf x 設x 是目標函式極小值點。選取適當的初值x 0 不斷迭代,更新 x 的值,直到梯度收斂 目標函式值收斂 的值收斂。在迭代的每一步...

筆記 梯度下降法

詳解機器學習中的梯度消失 原因及其解決方法 導數 方向導數和梯度 要了解梯度下降演算法是什麼首要知道梯度是什麼,導數和方向導數又是了解梯度的前提。導數導數反映的是函式y f x 在某一點處沿x軸正方向的變化率,如果f x 0,說明f x 的函式值在x點沿x軸正方向是趨於增加的 如果f x 0,說明f...

學習筆記 隨機梯度下降法

神經網路和深度學習 梯度下降法中,目標函式是整個訓練集上的風險函式,這種方式稱為批量梯度下降法 batch gradient descent,bgd 批量梯度下降法在 每次迭代時需要計算每個樣本上損失函式的梯度並求和 當訓練集中的樣本數量n很大時,空間複雜度比較高,每次迭代的計算開銷也很大。真正的優...