我之前一直沒搞清楚,神經網絡為什么要求導?反向傳播又是什么?于是到現在深究回來……
本質就是擬合一個未知函數。?
高中的數理統計就學過最小二乘法這種回歸方法(? 代表自己的預測y,這個表達要記住),這個有點類似。
假設你有一個線性函數y=ax(下面a用w代替,weigh權重的意思),而目標函數是y=2x,求導(是對loss 損失函數求導!)的目的就是利用導函數中的斜率(預測值比真值大了斜率是正,就要減去變小,反之小了斜率負的,也減去則變大),來調整a的權重。
我們來舉一個特別簡單的例子:只有1個輸入、1個權重、1個輸出的神經網絡,幫你徹底理解:
🧠 神經網絡結構(超簡版)
我們要學的是:
用一個參數
w
去逼近函數y = 2x
我們拿一組訓練數據:
輸入
x = 1
,希望輸出y = 2
我們的模型就是:(損失函數自己定,有能力衡量預測值和真值之間差距的函數就行,這里用的是二階中心矩——方差)
預測值:? = w * x
損失函數:L = (? - y)^2
第一步:前向傳播(計算預測和損失)
假設初始權重
w = 0.5
輸入
x = 1
那么預測值:? = 0.5 × 1 = 0.5
實際標簽:y = 2
損失:L = (0.5 - 2)^2 = 2.25
第二步:反向傳播(計算梯度)
我們要對 損失函數L 對 參數w 求導,看看w
該怎么改。
損失函數展開:
L = (w*x - y)^2
對w求導:
dL/dw = 2 * (w*x - y) * x
代入數字得到具體x的導數(梯度):
dL/dw = 2 * (0.5*1 - 2) * 1 = 2 * (-1.5) = -3
第三步:更新權重(學習)
用最簡單的梯度下降更新公式:(這部分得到的是調整斜率變化的偏移量,是減)
w = w - 學習率 * 梯度
假設學習率 lr = 0.1
:
w = 0.5 - 0.1 * (-3) = 0.5 + 0.3= 0.8
🧪 下一次訓練:
新的權重 w = 0.8
-
預測值變成 ? = 0.8 × 1 = 0.8
-
距離真實值
2
更近了 -
損失變小了!
這就是“通過反向傳播 + 求導”,讓網絡“學到信息”的過程。
? 總結:
步驟 | 做了什么 |
---|---|
前向傳播 | 用當前參數做出預測 |
計算損失 | 看預測錯了多少 |
反向傳播 | 求導,看參數該怎么改 |
更新參數 | 用梯度下降法調整參數 |
這里是最簡單的一個例子,靠著AI輔助生成創作的,權作拋磚引玉。?