模拟神经网络计算过程
我们通过比logistic回归更简单的例子来说明神经网络的基本计算过程:
神经网络计算过程分为两个过程:前向传播和反向传播。
假如我们要计算函数J(a,b,c)=3*(a+b*c)
这里我们应用神经网络的计算特点将函数的计算过程分解成如下的层次:
- 前向传播
如图箭头的过程就是前向传播过程,该过程在这个例子的作用就是计算函数值,将任务分解,分别给交给
不同的单位完成最后完成任务:
(1)通过b,c计算出u=6
(2)通过a,u计算出v=11
(3)通过v计算出函数J=33
这样完成阿前向传播的计算得出函数J的值
- 反向传播
在这里解释一下为什么要有反向传播的过程。神经网络训练过程是基于对损失函数的,优化损失函数,训练完成的标志是
损失函数收敛,即通过对参数的调整使损失达到最小。这里调整参数重新进行前向传播计算。
反向传播过程的计算就是求函数J对于各个参数的偏导数,这里的参数是a,b,c,中间参数是u,v。
下面是对各个参数求偏导数
反向传播计算过程:
(1)计算参数v对于J的偏导数,用于加快计算(2)
(2)计算参数a对于J的偏导数,利用(1)的结果
(3)计算参数u对于J的偏导数,用于加快计算(3)(4)
(4)计算参数b对于J的偏导数,利用(3)的结果
(5)计算参数a对于J的偏导数,利用(3)的结果
特别地:当计算所有偏导数时,即从右向左计算,计算v的偏导数对之后的计算a的偏导数可以用到;
计算u的偏导数,可以帮助计算对比的偏导数,对c的偏导数。提高了计算效率反向传播的结果用于
梯度下降法对参数的更新。
- 总结
神经网络经过一次的前向传播和反向传播,即完成了一次迭代的过程,一次迭代通过梯度下降法更新网络的参数,
优化一次损失函数,我们可以设置通过设置迭代次数来优化它,使损失达到我们满意的程度。更新参数的过程也
就是我们说的学习过程。