人工智能-深度学习笔记3 神经网络的前向传播和反向传播计算

在上两篇的学习笔记中,学习了数据集的表示和处理、激活函数的选取、代价函数的设计技巧和梯度下降的过程,那么神经网络在下降的计算过程是怎样的呢?下面将以目前流行的计算图的方式,展示一个神经网络的计算,是如何按照前向或反向传播过程组织起来的。

1、计算图(Computation Graph)的计算

尝试计算函数J,J是由三个变量a,b,c组成的函数,这个函数是3(a+bc) 。计算这个函数走三个步骤,首先计算 b 乘以 c,把它储存在变量u中,u=bc; 然后计算v=a+u;最后输出J=3v,这就是要计算的函数J。可以把这三步画成如上的计算图,先画三个变量a,b,c,第一步就是计算u=bc,在这周围放个矩形框,它的输入是b,c,接着第二步v=a+u,最后一步J=3v。

举个例子: a=5,b=3,c=2 ,u=bc就是6,就是5+6=11。J是3倍的v ,因此即3×(5+3×2)。如果把它算出来,实际上得到33就是J的值。 当有不同的或者一些特殊的输出变量时,例如本例中的J和逻辑回归中想优化的代价函数J,因此计算图用来处理这些计算会很方便。从这个小例子中可以看出,通过一个从左向右的过程,你可以计算出J的值。

为了计算导数,从右到左(红色箭头,和蓝色箭头的过程相反)的过程是用于计算导数最自然的方式。计算图组织计算的形式是用蓝色箭头从左到右的计算,下面看看如何进行反向红色箭头(也就是从右到左)的导数计算

 

2、计算图的导数计算

先来张计算图的计算:

假设要计算dJ/dv,那要怎么算呢?

其实dJ/dv和上一篇的学习笔记中的导数描述如出一辙,看 如上图的增量三角的描述。它的斜率是3。在反向传播算法中,如果想计算最后输出变量的导数,使用最关心的变量对v的导数,那么就做完了一步反向传播,在这个流程图中是一个反向步。

dJ/da是多少呢?换句话说,如果我们提高a的数值,对J的数值有什么影响?

在变量a=5时,让它增加到5.001,那么对v的影响就是a+u,之前v=11,现在变成11.001,从上图看到现在J就变成33.003了,所以如果让a增加0.001,J增加0.003。如果把这个5换成某个新值,那么a的改变量就会传播到流程图的最右端,所以J的增量是3乘以a的增量,意味着这个导数是3。要解释这个计算过程,其中一种方式是:如果改变了a,那么也会改变v,通过改变v,也会改变J。所以J值的净变化量就是:当提升这个值(0.001),当把a值提高一点点,这就是J的变化量(0.003)。

首先a增加了,v也会增加,v增加多少呢?这取决于dv/da,然后v的变化导致J也在增加,所以这在微积分里实际上叫链式法则,如果a影响到v,v影响到J,那么当让a变大时,J的变化量就是当改变a时,v的变化量乘以改变v时J的变化量,在微积分里这就叫链式法则

数学描述这个计算:dJ/da=(dJ/dv)*(dv/da),所以这个乘积就是3×1,实际上dJ/da=3。(至于dv/da这个偏导大家自行解算哈)。

上图完成部分的反向传播算法dJ/da,这里约定dJ/da简述da,dJ/dv简述dv。这个新的符号约定,就是当编程实现反向传播时,通常会有一个最终输出值是要关心的,最终的输出变量,真正想要关心或者说优化的。那接下来按照以上的这个套路算算其余的导数/反向传播过程。

du=dJ/du=(dJ/dv)*(dv/du)=3×1:

db=dJ/db=(dJ/dv)*(dv/du)*(du/db)=3×1×2:(例子中c=2)

dc=dJ/dc=(dJ/dv)*(dv/du)*(du/dc)=3×1×3:(例子中b=3)

 

可以说,一个神经网络的计算,都是按照前向或反向传播过程组织的。首先计算出一个新的网络的输出(前向过程),紧接着进行一个反向传输操作。所以这是一个计算流程图,就是正向或者说从左到右的计算来计算成本函数J或是可能需要优化的函数,然后反向从右到左计算导数。如果熟悉了微积分或链式法则,就知道需要做什么才能编写代码,实现逻辑回归模型中的导数计算。

下一篇的学习笔记便是编写代码,通过逻辑回归的实现来表达下此篇以及前两篇中有关数据集如何表示和处理、选用的激活函数成本函数和此篇的前向传播和反向传播的过程,梯度下降又是如何起作用的。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值