深度学习之平均梯度计算及梯度更新
介绍
在训练时,我们需要提供许多样本,在同一特征值和偏置下,我们需要对这些样本依次求损失率和梯度,然后求出在此特征值和偏置下的平均损失率和平均梯度,用于梯度下降算法的更新。
平均梯度计算
计算参数的梯度为:d(w1)i,d(w2)i,d(b)i,提供了n个样本,求最终的dw1,dw2,db,如何去设计一个算法计算?使用伪代码
需要用到的概念
1.线性回归计算
用到的公式为:WTXi+b
2.逻辑回归计算
3.损失率计算
4.逻辑回归函数的求导
开始编写代码
有了上述的概念,我们可以进行伪代码的编写,我们的思路是:求出线性回归z
->通过线性回归z求出逻辑回归σ(z)
->通过逻辑回归计算损失率
->求出逻辑回归函数σ关于线性回归函数的导数dz
->通过得到的dz分别与dw1,dw2,db求偏导数
->将每次的损失率,dw1,dw2,db累加,求出平均损失率和平均梯度
有了思路之后我们可以着手编写代码了,以至于编写时产生混乱。
//首先,我们初始化
J=0,dw1=0,dw2=0,b=0
//这里我们使用循环去对每个样本做运算
for i in n:
//计算当次线性回归
zi = WT * xi + b
//计算逻辑回归,计算预测值
ji = sigmoid(zi)
//计算总损失率,这里ji代表逻辑回归的预测值,yi代表结果值
J+= -[yi*log(ji)+(1-yi)*log(1-ji)]
//计算梯度的总和,由于我们讲梯度是偏导,这里涉及复合函数偏导
//针对损失率对w1,w2,b求偏导,那么我们首先要计算j(w1,w2,b)关于zi的导数
//首先求出逻辑回归关于线性回归的导数
dzi = ji(1-ji)
//使用复合函数求偏导,求出偏导数并累加
dw1 += x1i * dzi
dw2 += x2i * dzi
db += b * dzi
//计算平均值
//损失率平均值
j /= n
//梯度平均值
dw1 /= n
dw2 /= n
db /= n
梯度更新
还是下面这张图片,我们上面的平均梯度计算就是下图的蓝色区域。
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 XZRO
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果