出处: Michael Nielsen的《Neural Network and Deep Learning》,本节译者:哈工大SCIR本科生 王宇轩。
目录
1、使用神经网络识别手写数字
2、反向传播算法是如何工作的
- 热身:一个基于矩阵的快速计算神经网络输出的方法
- 关于损失函数的两个假设
- Hadamard积
- 反向传播背后的四个基本等式
- 四个基本等式的证明(选读)
- 反向传播算法
- 什么时候反向传播算法高效
- 反向传播算法再理解
3、改进神经网络的学习方法
4、神经网络能够计算任意函数的视觉证明
5、为什么深度神经网络的训练是困难的
6、深度学习
反向传播算法的目标是计算代价函数C对神经网络中出现的所有权重w和偏置b的偏导数∂C/∂w和∂C/∂b。为了使反向传播工作,我们需要对代价函数的结构做两个主要假设。在进行假设之前,在脑海中有一个代价函数的实例是很有用的。我们将会使用上一章讲到的平方代价函数作为例子。上一章的平方代价函数具有以下形式:
其中n是训练样本总数;求和符号表示对每个独立训练样本x求和;y=y(x)是对应的希望输出;L是神经网络层数;aL=aL(x)是输入为x时激活函数的输出向量。
那么,为了能够使用反向传播算法,我们需要对代价函数C进行怎样的假设呢?第一条假设是代价函数能够被写成 的形式,其中Cx是每个独立训练样本x的代价函数。在代价函数为平方代价函数的情况下,一个训练样本的代价是 。该假设对于本书中涉及到的其它所有代价函数都成立。
我们需要上述假设的原因是,反向传播实际上是对单个训练数据计算偏导数∂Cx/∂w和∂Cx/∂b。然后通过对所有训练样本求平均值获得∂C/∂w和∂C/∂b。事实上,有了这个假设,我们可以认为训练样本x是固定的,然后把代价Cx去掉下标表示为C。最终我们会重新把x加回公式,但目前为了简便我们将它隐去。 我们对代价函数做的第二条假设是它可以写成关于神经网络输出结果的函数:
平方代价函数满足该要求,因为单一训练样本x的二次代价可以表示为:
这是一个关于输出激活值的函数。显然,该代价函数也依赖于期望的输出y,所以你可能疑惑为什么我们不把代价视为关于y的函数。记住,输入的训练样本x是固定的,因此期望的输出y也是固定的。需要注意,我们不能通过改变权值或偏置来修改它,换句话说,它不是神经网络所学习的东西。所以把C视为只关于输出aL的函数是有道理的。在该函数中y只是帮助定义函数的参数。
下一节我们将介绍“Handmard积,s⊙t”
本文来源于哈工大SCIR
哈尔滨工业大学社会计算与信息检索研究中心