梯度下降學習總結

2022-08-31 18:09:13 字數 1653 閱讀 8888

在機器學習過程中,經常使用梯度下降方法求解損失函式的最小值。梯度的值為函式在某一點,沿著各向量方向的偏導數。沿著梯度相反的方向,函式減小最快,更容易找到函式的最小值。

函式的表示式為$h_\theta(x)=x\theta$,損失函式的表示式為$j(\theta)=\sum_^m(h_\theta(x_i)-y_i)^2$,其矩陣表示式為$j(\theta)=\frac(x\theta-y)^t(x\theta-y)$,損失函式對於$\theta$向量的偏導數為$\fracj(\theta)=x^t(x\theta-y)$。

全部樣本算權重

1 h = sigmoid(datamatrix *weights)

2 error = labelmat -h

3 weight = weight + alpah * error * datamatrix.transpose()

乙個樣本算權重

1 h = sigmoid(sum(datamatrix[i] *weights))

2 error = classlabel[i] -h

3 weight = weight + alpha * error * datamatrix[i]

h是sigmoid函式的值,error是算出來的值與label之間的誤差,然後使用alpha係數、誤差、輸入更新權重的值。

此方法沒有使用梯度的計算值,而是使用alpha、error、輸入值,更新權重。

理論推導使用解析梯度,在工程計算中,常使用數值梯度進行計算。

假設函式表示為$h_\theta(x_1,x_2,...,x_n)=\theta_0+\theta_1 x_1+...+\theta_n x_n$,其中$\theta_i(i=0,1,2,...,n)$為模型引數,$x_i(i=0,1,2,...,n)$為每個樣本的n個特徵值。這裡增加乙個特徵$x_0 = 1$,即可表示為$h_\theta(x_0,x_1,...,x_n)=\sum_^m\theta_ix_i$,對於上面的函式,損失函式如下。

$$j(\theta_0,\theta_1,...,\theta_n)=\frac\sum_^m(h_\theta(x_0^,x_1^,...,x_n^)-y_i)^2$$

主要引數為$\theta_0,\theta_1,...,\theta_n$,演算法終止距離$\epsilon$以及步長$\alpha$。

1)確定梯度

確定當前位置的損失函式的梯度,對於$\theta_i$,其梯度表示式為$\fracj(\theta_0,\theta_1,...,\theta_n)$

2)步長乘以梯度

用步長乘以損失函式的梯度,得到當前位置下降的距離,即

$\alpha\fracj(\theta_0,\theta_1,...,\theta_n)$,為梯度下降中的關鍵一步

3)檢查終止條件

確定是否所有$\theta_i$梯度下降的距離都小於$\epsilon$,如果小於$\epsilon$則演算法終止,當前所有$\theta_i(i=0,1,...,n)$即為最張結果,否則進行第4步。

4)更新引數

更新所有$\theta$,對於$\theta_i$,其更新方式為$\theta_i=\theta_i-\alpha\fracj(\theta_0,\theta_1,...,\theta_n)$

梯度下降法學習總結

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

梯度下降 隨機梯度下降 批梯度下降

下面的h x 是要擬合的函式,j 損失函式,theta是引數,要迭代求解的值,theta求解出來了那最終要擬合的函式h 就出來了。其中m是訓練集的記錄條數,j是引數的個數。梯度下降法流程 1 先對 隨機賦值,可以是乙個全零的向量。2 改變 的值,使j 按梯度下降的方向減少。以上式為例 1 對於我們的...

梯度下降 隨機梯度下降和批量梯度下降

對比梯度下降和隨機梯度下降和批量梯度下降 之前看的知識比較零散,沒有乙個系統的解釋說明,看了一些網上的博主的分析,總結了一下自己的理解。例子這裡我參照其他博主的例子做了一些修改,首先是梯度下降 coding utf 8 import random this is a sample to simula...