Advertisement

神经网络中的梯度下降——Gradient Descent

阅读量:

1 什么是梯度下降

梯度下降可以对神经网络中的成本函数(cost)进行反向传播,通过不断迭代,更新权值w、b,找到损失函数最低点,最终使我们的模型达到更优的效果。

成本函数有几种,不具体介绍,简单记为J,这里对模型进行输入X,lpha是模型训练后得到结果,y是标准答案,模型训练的目的是使输出的结果lpha更接近标准答案y,即要找到损失函数J的最低点。下面是交叉熵(cross entropy)成本函数, 不具体介绍

2 梯度下降为什么能找到最低点

见链接。

3 具体过程

这是一个浅层神经网络

单个神经元

公式化后

再加1层后

前向传播

z1=w1*X+b1

a1=σ1(z1)

z2=w2*a1+b2

a2=σ(z2)

其中,X、b是1维列向量,w是2维矩阵,对应的输出a1、a2也是1维列向量,a2也是模型输出,σ是激活函数,为了计算我们假设σ为sigmoid(细节见往期)

[(https://ad.itadn.com/c/weblog/blog-img/images/2025-05-31/YtcrgpTzJ0Ob3QjiMGlCKI7aXHso.png)( "")

反向传播

rac{artial J}{artial a2}=rac{1-y}{1-a2}-rac{y}{a2}
rac{artial a2}{artial z2}=a2
rac{artial z2}{artial w2}=a1
rac{artial z2}{artial b2}=1
rac{artial z2}{artial a1}=w2
rac{artial a1}{artial z1}=a1
rac{artial z1}{artial w1}=X
rac{artial z1}{artial b1}=1
rac{artial J}{artial w2} =rac{artial J}{artial a2}rac{artial a2}{artial z2}rac{artial z2}{artial w2} =*a1 =dw2
rac{artial J}{artial b2} =rac{artial J}{artial a2}rac{artial a2}{artial z2}rac{artial z2}{artial b2} =a2-y =db2
rac{artial J}{artial w1} =rac{artial J}{artial a2}rac{artial a2}{artial z2}rac{artial z2}{artial a1} rac{artial a1}{artial z1}rac{artial z1}{artial w1} =w2a1**X =dw1
rac{artial J}{artial b1} =rac{artial J}{artial a2}rac{artial a2}{artial z2}rac{artial z2}{artial a1} rac{artial a1}{artial z1}rac{artial z1}{artial b1} =w2a1* =db1

更新权值

w=w-lpha *dw
b=b-lpha *db

反向传播重点就是链式求导原则,其实我感觉就是复合函数求偏导,理解不难,但在实际代码实现时,要注意各个参数的维度,这里涉及矩阵乘法。

全部评论 (0)

还没有任何评论哟~