神经网络Neural|神经网络Neural Networks
人工神经网络是由大量处理单元互联组成的非线性、自适应信息处理系统,试图通过模拟大脑神经网络处理、记忆信息的方式进行信息处理。神经元
文章图片
image.png 这个“神经元”是一个以及截距为输入值的运算单元,其输出为,其中函数被称为“激活函数”。在本教程中,我们选用sigmoid函数作为激活函数 :
神经网络模型 所谓神经网络就是将许多个单一“神经元”联结在一起,这样,一个“神经元”的输出就可以是另一个“神经元”的输入。例如,下图就是一个简单的神经网络:
文章图片
image.png 我们使用表示从层的 个神经元到层的个神经元的链接上的权重。使用表示在层第个神经元的偏置,中间量,使用表示层第个神经元的激活值。
层的第个神经元的激活值就和层的激活值通过方程关联起来了。
对方程 就可以写成下面这种美妙而简洁的向量形式了
反向传播 反向传播的目标是计算代价函数分别关于和的偏导数和。反向传播其实是对权重和偏置变化影响代价函数过程的理解。最终极的含义其实就是计算偏导数和。
但是为了计算这些值,我们首先引入一个中间量,,这个我们称为在层第个神经元上的误差。
对于层的第个神经元,当输入进来时,对神经元的带权输入增加很小的变化,使得神经元输出由变成。这个变化会向网络后面的层进行传播,最终导致整个代价产生的改变。所以这里有一种启发式的认识,是神经元的误差的度量。
按照上面的描述,我们定义层的第个神经元上的误差为:
输出层误差的方程 输出层误差的方程,: 每个元素定义如下:
第一个项表示代价随着输出激活值的变化而变化的速度。第二项刻画了在处激活函数变化的速度。
使用下一层的误差来表示当前层的误差 使用下一层的误差来表示当前层的误差 :特别地,
其中是层权重矩阵的转置。假设我们知道层的误差。当我们应用转置的权重矩阵,我们可以凭直觉地把它看作是在沿着网络反向移动误差,给了我们度量在 层输出的误差方法。然后,我们进行 Hadamard 乘积运算。这会让误差通过层的激活函数反向传递回来并给出在第层的带权输入的误差。
证明:
我们想要以的形式重写。应用链式法则
文章图片
为了对最后一行的第一项求值,注意:
做微分,我们得到
代入上式即有:
代价函数关于网络中任意偏置的改变率 代价函数关于网络中任意偏置的改变率: 就是
这其实是,误差 和偏导数值 完全一致。
代价函数关于任何一个权重的改变率 代价函数关于任何一个权重的改变率: 特别地,
反向传播算法描述
- 输入: 为输入层设置对应的激活值
- 前向传播: 对每个计算相应的 和
- 输出层误差: 计算向量
- 反向误差传播: 对每个 ,计算
- 输出: 代价函数的梯度由和得出
推荐阅读
- 前沿论文|论文精读(Neural Architecture Search without Training)
- 通过人工大脑刺激来检测神经网络中的后门
- 深度学习|深度学习笔记总结
- python深度学习实现自编码器Autoencoder神经网络异常检测心电图ECG时间序列
- pytorch之卷积神经网络和leNet
- 2018-11-05|2018-11-05 logistics回归的局限性--神经网络的提出
- 神经网络绘图工具汇总
- CNN-卷积神经网络简单入门(1)
- 深度学习|yolov5目标检测神经网络——损失函数计算原理
- 用深层神经网络解释大脑的运作