欢迎光临散文网 会员登陆 & 注册

Deep learning - Neural Network & Deep learning .04

2023-07-27 15:44 作者:Cy-se7en  | 我要投稿

2 Basics of Neural Network programming

2.7 Computation graph

正向传播(forward pass) 前向计算 (forward propagation) 来计算损失函数,代价函数及优化J

反向传播(backward pass) 后向计算(back propagation) 来计算梯度or微分

计算图解释为什么使用正向传播和反向传播的组织形式

2.8 Derivatives with a computation graph

反向传播:如果你想要计算最终输出变量对于v的导数,而这也是你通常最关心的变量,这就是一步反向传播

在微积分中叫做链式法则,即a影响v,v影响J  dJ/da = dJ/dv * dv/da

FinalOutputVar最终输出变量

d(FinalOutputVar) / dvar 在编码中使用dvar表示,对于各种中间量使用dv表示dJ/dv、da表示dJ/da

在编码中du代表dJ/du,db代表dJ/db,dc代表dJ/dc

计算导数最有效率的方式就是按红色箭头从右向左,即反向传播,先计算对v的导数, 然后计算J对a的导数和J对u的导数,然后计算J对b的导数和J对c的导数

2.9 Logistic Regression gradient descent

a是逻辑回归的输出 y是真实值

在逻辑回归中,我们要做的就是修改参数w和b,来减少损失函数L(a,y)

向前传播的步骤中, 演示了单个样本如何计算损失函数

在单个训练样本情况下实现逻辑回归的梯度

此部分为计算过程,需要微积分基础

我们要计算损失函数L(a,y)的导数,反向传播时,需要先计算出损失函数L(a,y)对于a的导数,编码中使用da代表dL(a,y)/da,可以通过微积分得出来,就是对损失函数二元交叉熵进行求导,得出da=-y/a+(1-y)/(1-a),就可以计算出da的值;然后就可以算出来dz=dL(a,y)/dz,根据微积分的链式法则dz=dL/da*da/dz,可得dz=a-y,其中da/dz是sigmoid函数,求导可用自身表示即a(1-a);然后计算w1=dL(a,y)/dw1=x1*dz,w2=dL(a,y)/dw2=x2*dz,db=dz;然后就可以使用梯度下降进行循环更新,w1:=w1-a*dw1,w2:=w2-adw2,b:=b-a*db


Deep learning - Neural Network & Deep learning .04的评论 (共 条)

分享到微博请遵守国家法律