日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【数据挖掘】神经网络 后向传播算法 ( 梯度下降过程 | 梯度方向说明 | 梯度下降原理 | 损失函数 | 损失函数求导 | 批量梯度下降法 | 随机梯度下降法 | 小批量梯度下降法 )

發(fā)布時間:2025/6/17 编程问答 42 豆豆

文章目錄

        • I . 梯度下降 Gradient Descent 簡介 ( 梯度下降過程 | 梯度下降方向 )
        • II . 梯度下降 示例說明 ( 單個參數(shù) )
        • III . 梯度下降 示例說明 ( 多個參數(shù) )
        • IV . 梯度下降 總結 ( 定義損失函數(shù) | 損失函數(shù)求導 )
        • V . 梯度下降 方法
        • VI . 批量梯度下降法
        • VII . 隨機梯度下降法
        • VIII . 小批量梯度下降法



I . 梯度下降 Gradient Descent 簡介 ( 梯度下降過程 | 梯度下降方向 )



1 . 后向傳播算法 : 針對每個數(shù)據(jù)樣本 , 從輸入層到輸出層傳播輸入 , 這是向前傳播輸入 , 然后從輸出層向輸入層傳播誤差 , 這是向后傳播誤差 ;


② 權重和偏置更新 : 傳播誤差過程中 , 對神經(jīng)元網(wǎng)絡中 , 單元連接的權重 , 和單元本身的偏置 , 進行更新 ;

③ 單元連接權重增量 : Δwij=(l)ErrjOi\Delta w_{ij} = (l) Err_j O_iΔwij?=(l)Errj?Oi?

③ 單元偏置增量 : Δθj=(l)Errj\Delta \theta_j = (l) Err_jΔθj?=(l)Errj?


2 . 權重和偏置更新要求 : 更新的時候 , 涉及到 權重 和 偏置的增量 , 分別是 Δwij\Delta w_{ij}Δwij?Δθj\Delta \theta_jΔθj? , 這兩個增量值要使損失函數(shù)取最小值 , 并且該最小值越來越小 ;


3 . 權重和偏置更新方向 : 這兩個增量的方向要求是 , 損失函數(shù)不僅要下降 , 并且損失函數(shù)下降的速度越快越好 , 這個損失函數(shù)下降最快的方向 , 就是梯度的反方向 , 梯度通常是對損失函數(shù)進行求導得到的 ;


損失函數(shù) 下降最快的方向 , 是梯度的反方向 ;

梯度通常是對損失函數(shù)進行求導得來的 ;

在某一點求導 , 就是這一點的曲線的切線的方向 ;

這里的方向只有兩個 , 坐標軸正向 ( 從左到右 | 從負數(shù)到正數(shù) | 增加 ) , 坐標軸反向 ( 從右到左 | 從負數(shù)到正數(shù) | 減小 ) ;

4 . 權重和偏置更新步長 : 有了梯度以后 , 對 單元連接權重 和 單元偏置 參數(shù)進行更新時 , 還涉及到學習率 lll , 這個學習率 lll 又叫做超參數(shù) ;



II . 梯度下降 示例說明 ( 單個參數(shù) )



1 . 坐標軸說明 : 下圖是損失函數(shù) f(θ)f(\theta)f(θ) , 橫軸 θ\thetaθ 是指需要更新的 權重 或 偏置 參數(shù) , 縱軸是損失函數(shù) f(θ)f(\theta)f(θ) 的計算結果 ;


2 . 損失函數(shù)最小值 : 取一個合適的 θ\thetaθ 值 , 使損失函數(shù)值 f(θ)f(\theta)f(θ) 大小最小 , 此時是圖中黃色的點對應的 θ^\hat{\theta}θ^ 值 ;


3 . 初始值 : 圖中最左側的值 , 標注為 Radom initial value , 即 隨機初始值 ;


4 . 初始值變化趨勢 : 每次對初始值進行一次變化 , 變化的方向是逐步使損失函數(shù)趨于最小 , 就是圖中初始值開始到最小值的箭頭方向 ;


5 . 梯度下降算法 : 梯度下降算法的目的是為了使損失函數(shù) f(θ)f(\theta)f(θ) 達到最小值 ;


6 . 梯度本質 : 梯度 或 求導 , 本質上是求某一點在曲線上的切線 , 切線的斜率表示的就是導數(shù) ;


7 . 初始值累加方向 : θ\thetaθ 是初始值時 , 切線的斜率是負數(shù) , θ\thetaθ 是向右走 , 每次累加的 Δθ\Delta\thetaΔθ 是正數(shù) , 因此 θ\thetaθ 值需要減去梯度的值 , 相當于加上了一個正數(shù) , 因此說 θ\thetaθ 的方向與斜率是反方向 ( 方向指的是符號的正負號方向 ) , 即與梯度是反向方的 ; 每次累加的 Δθ\Delta\thetaΔθ 就是在 xxx 軸上的兩點之間的距離 ;


8 . 方向說明 ( 重點 ) :


損失函數(shù) 下降最快的方向 , 是梯度的反方向 ;

梯度通常是對損失函數(shù)進行求導得來的 ;

在某一點求導 , 就是這一點的曲線的切線的方向 ;

這里的方向只有兩個 , 坐標軸正向 ( 從左到右 | 從負數(shù)到正數(shù) | 增加 ) , 坐標軸反向 ( 從右到左 | 從負數(shù)到正數(shù) | 減小 ) ;


9 . 學習步長 : 由初始值開始迭代 , 對 θ\thetaθ 參數(shù)進行更新 , 最終取得使損失函數(shù)值最小 , 即橫軸坐標軸參數(shù)等于 θ^\hat{\theta}θ^ ; 該步長代表了該操作的效率 , 步長越大 , 速度越快 ;


10 . 梯度下降算法本質 : 對于當前的參數(shù) θ\thetaθ 值 , 計算 f(θ)f(\theta)f(θ) 的梯度 , 即導數(shù) / 斜率 ( 負的 ) , 在梯度的反方向 ( 正數(shù)方向 ) 走一個步長 , 然后繼續(xù)向前傳播輸入 , 再次向后傳播誤差時 , 繼續(xù)計算其 θ\thetaθ 值對應的梯度值 , 迭代 NNN 多次 , 即可得到使損失函數(shù)最小的參數(shù)值 ;

上圖是一個凸函數(shù) , 最小值只有一個 , 比較好分析 , 實際情況是 , 同時存在多個甚至無數(shù)個能使 損失函數(shù) f(θ)f(\theta)f(θ) 取到最小值的 θ\thetaθ 值 ;



III . 梯度下降 示例說明 ( 多個參數(shù) )



1 . 兩個參數(shù)的損失函數(shù) : 下圖是有兩個參數(shù)的情況下的損失函數(shù)情況 ;


2 . 損失函數(shù)示例 :

z=x2+2y2z = x^2 + 2y^2z=x2+2y2


① 分析基礎 : 該損失函數(shù) zzz 有兩個參數(shù) , 該函數(shù)就不能再二維坐標軸中進行分析了 , 需要在三維坐標空間中進行分析 ;

② 坐標軸說明 : zzz 軸是損失函數(shù)值 , xxx 軸是 xxx 參數(shù)的取值 , yyy 軸是 yyy 參數(shù)的取值 ;

③ 梯度下降要求 : 不僅要在 xxx 軸損失函數(shù)下降最快 , yyy 軸損失函數(shù)也要下降最快 ; 如下圖中的藍色箭頭方向 ;


3 . 參數(shù)說明 :


如果有 111 個參數(shù) , 就是在二維空間中進行分析 , 如在 xxx 軸 和 yyy 軸平面上分析 ;

如果有 222 個參數(shù) , 就是在 333 維空間中進行分析 , 如在 xxx , yyy 軸 和 zzz 軸 三維空間上分析 ;

?\vdots?

如果有 nnn 個參數(shù) , 就是在 n+1n + 1n+1 維空間中進行分析 ;

最終的效果可能不是這樣的 , 實際可能會存在很多彎曲波折 , x,yx , yx,y 參數(shù)數(shù)值 , 在各軸上 , 按照鋸齒形狀下降 , 但是大概的趨勢是這樣的 ;



IV . 梯度下降 總結 ( 定義損失函數(shù) | 損失函數(shù)求導 )



1 . 單個參數(shù)的梯度下降算法公式表示 :


θjnew=θjold?α??θjoldJ(θ)\theta^{new}_j = \theta^{old}_j - \alpha \frac{ \partial }{ \partial \theta^{old}_j} J (\theta)θjnew?=θjold??α?θjold???J(θ)


θj\theta_jθj? 表示第 jjj 個參數(shù) ;

θjnew\theta^{new}_jθjnew? 表示新的第 jjj 個參數(shù) ;

θjold\theta^{old}_jθjold? 表示舊的第 jjj 個參數(shù) ;

α\alphaα 指的是學習率 , 或梯度下降的步長 ;


如果是單個參數(shù)值 , 是對 目標函數(shù) / 損失函數(shù) J(θ)J (\theta)J(θ) 關于當前的第 jjj 個參數(shù) θj\theta_jθj? 進行求導 , 只對一個參數(shù)進行求導 ;



2 . 使用矩陣的形式表示多個參數(shù)的梯度下降算法 :


θnew=θold=α?θJ(θ)\theta^{new} = \theta^{old} = \alpha \nabla_\theta J (\theta)θnew=θold=α?θ?J(θ)


θ\thetaθ 表示很多參數(shù)的矩陣 ;

θnew\theta^{new}θnew 表示新的參數(shù)的矩陣 ;

θold\theta^{old}θold 表示舊的參數(shù)矩陣 ;

α\alphaα 指的是學習率 , 或梯度下降的步長 ;


?θJ(θ)\nabla_\theta J (\theta)?θ?J(θ) 表示梯度的反向方 , 這是對 目標函數(shù) / 損失函數(shù) J(θ)J (\theta)J(θ) 關于 θ\thetaθ 進行求導 , 注意 θ\thetaθ 是很多參數(shù)組成的矩陣 , 需要對每個參數(shù)進行求導 , 即偏導 , 然后將這些偏導整合起來 ;



3 . 梯度下降算法實現(xiàn) :


① 定義損失函數(shù) : 先定義損失函數(shù) , 一般是誤差平方和 ;

② 求參數(shù)增量 : 對損失函數(shù)進行求導 , 使用導數(shù) 乘以 學習率 ( 步長 ) , 得到一個 參數(shù)增量 , 這里的參數(shù)指的是 權值 和 偏置 ;

③ 偽代碼實現(xiàn) :

//迭代循環(huán)執(zhí)行下面的代碼 , 每循環(huán)一次 , 梯度下降一次 , 損失函數(shù)的值就會變小一次 while true : //對損失函數(shù)進行求導 , 也就是評估梯度 , J 代表損失函數(shù) , theta 代表參數(shù)值 // 本質是 對損失函數(shù) J 關于 theta 求導theta_gradient = evaluate_gradient ( J , corpus , theta )//左側的 theta 是新的 theta , 右側的 theta 是舊的 theta // alpha 是學習率 , 也是梯度的步長 , theta_gradient 是損失函數(shù)導數(shù)theta = theta - alpha * theta_gradient

V . 梯度下降 方法



1 . 常用的梯度下降方法 :


① 批量梯度下降法 : Batch Gradient Descent ;

② 隨機梯度下降法 : Stochastic Gradient Descent ;

③ 小批量梯度下降法 : Mini-batch Gradient Descent ; 介于上述兩者之間 ;



VI . 批量梯度下降法



批量梯度下降法 : 梯度下降的最常用方法 , 反向傳播誤差時 , 使用誤差更新參數(shù)時 , 參考所有樣本的誤差更新 權值 和 偏置參數(shù) , 如果有 nnn 個樣本 , 每次迭代時 , 將這 nnn 個樣本全部處理一遍 , 每次迭代都要使用所有的樣本進行參數(shù)更新 ; 公式如下 :


θ′=θ?α∑j=1n(hθ(x0(j),x1(j),?,xn(j))?yj)xi(j)\theta' = \theta - \alpha \sum_{j=1}^n( h_\theta ( x_0^{(j)}, x_1^{(j)}, \cdots , x_n^{(j)} ) - y_j) x_i^{(j)}θ=θ?αj=1n?(hθ?(x0(j)?,x1(j)?,?,xn(j)?)?yj?)xi(j)?


樣本個數(shù) : nnn 代表樣本個數(shù) ;

梯度計算 : 此處計算梯度 , 使用了所有的樣本的梯度數(shù)據(jù) ;



VII . 隨機梯度下降法



隨機梯度下降法 : 求梯度的時候 , 隨機選擇一個樣本進行 , 使用該樣本的誤差更新參數(shù) ; 公式如下 , 相對于批量梯度下降法的公式只是刪除了 總和 符號 , 不再累加所有的樣本誤差數(shù)據(jù) ;


θ′=θ?α(hθ(x0(j),x1(j),?,xn(j))?yj)xi(j)\theta' = \theta - \alpha ( h_\theta ( x_0^{(j)}, x_1^{(j)}, \cdots , x_n^{(j)} ) - y_j) x_i^{(j)}θ=θ?α(hθ?(x0(j)?,x1(j)?,?,xn(j)?)?yj?)xi(j)?



VIII . 小批量梯度下降法



小批量梯度下降法 :


① 方法引入 : 上述的批量梯度下降法 , 使用所有的樣本 , 訓練時間很長 , 但是預測準確度很高 ; 隨機梯度下降法 , 訓練速度很快 , 準確度無法保證 ; 這里引入一種介于上述兩個方法之間的一種方法 , 即小批量梯度下降方法 ;

② 參數(shù)更新方式 : 數(shù)據(jù)集有 nnn 個樣本 , 采用其中的 mmm 個樣本的子數(shù)據(jù)集 進行迭代更新參數(shù) ;

③ 公式 :

θ′=θ?α∑j=1m(hθ(x0(j),x1(j),?,xn(j))?yj)xi(j)\theta' = \theta - \alpha \sum_{j=1}^m( h_\theta ( x_0^{(j)}, x_1^{(j)}, \cdots , x_n^{(j)} ) - y_j) x_i^{(j)}θ=θ?αj=1m?(hθ?(x0(j)?,x1(j)?,?,xn(j)?)?yj?)xi(j)?

注意上述 求和的是 子數(shù)據(jù)集的 111mmm 索引 ;

總結

以上是生活随笔為你收集整理的【数据挖掘】神经网络 后向传播算法 ( 梯度下降过程 | 梯度方向说明 | 梯度下降原理 | 损失函数 | 损失函数求导 | 批量梯度下降法 | 随机梯度下降法 | 小批量梯度下降法 )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。