深度学习基础知识(2)反向传播算法

来源:互联网 发布:mac如何免费翻墙 编辑:程序博客网 时间:2024/06/02 02:00

版权声明:本文系转载,已获得作者授权

原文网址:http://blog.csdn.net/l691899397/article/details/52223998

作者:佳寧


1、损失函数

  损失函数在统计学中是一种衡量损失和误差程度的函数,它一般包括损失项(loss term)和正则项(regularization term)。


   损失项

   损失项比较常见的有平方损失,常用在回归问题;

以及对数损失函数,常用在分类问题。

 正则项

 加入正则项目的是减小权重的幅度,防止过度拟合。常用的有L1-regularization和L2-regularization。

 关于损失函数发现一篇文章讲的比较详细,看一下能比较详细的了解损失函数:点击打开链接


2、BackPropagation算法

     BackPropagation算法是多层神经网络的训练中举足轻重的算法,简单的理解,它就是复合函数的链式法则。由于后面我的网络中会用到对数损失函数,所以在这里我们使用平方损失函数。对于单个样例,其平方损失函数为:

   对于给定一个包含m个样例的数据集,我们可以定义整体代价函数为:


和直线的拟合类似,深度学习也有一个目标函数,通过这个目标函数我们可以知道参数为何值时对我们来说才是一组“好”的参数,这个函数就是前边提到的损失函数。训练的过程就是通过每一次迭代对网络中参数进行更新,来使损失函数的值达到最小(下图中α为学习率)。


虽然一般损失函数都是非凸的,含有局部最小值,但实际使用中一般都不会下降到局部最小值。


3、利用BackPropagation算法计算偏导数


由上一节可知,我们只需求出每一层的

 和 

即可完成该层的权值和偏置的更新。
BP算法的整体思路如下:对于每个给定的训练样本,首先进行前向计算,计算出网络中每一层的激活值和网络的输出。对于最后一层(输出层),我们可以直接计算出网络的输出值与已经给出的标签值(label)直接的差距,我们将这个值定义为残差δ。对于输出层之前的隐藏层L,我们将根据L+1层各节点的加权平均值来计算第L层的残差。


 插入一些我个人对BP算法的一点比较容易理解的解释(如有错误请指出):在反向传播过程中,若第x层的a节点通过权值W对x+1层的b节点有贡献,则在反向传播过程中,梯度通过权值W从b节点传播回a节点。不管下面的公式推导,还是后面的卷积神经网络,在反向传播的过程中,都是遵循这样的一个规律


 反向传播的具体步骤如下:

        (1)根据输入,计算出每一层的激活值。

        (2)对于输出层,我们使用如下公式计算每个单元的残差:


 (3)对于输出层之前的每一层,按照如下公式计算每一层的残差:



 (4)由残差计算每一层的偏导数:



(5)最后,使用偏导数更新权值和偏置。

阅读全文
0 0
原创粉丝点击