第五章 误差反向传播
反向传播
计算图的正向传播进行一般的计算。通过计算图的反向传播,可以计算各个节点的导数。
误差反向传播基于链式法则成立的
加法节点
乘法节点
乘法的反向传播需要正向传播时的输入信号值,乘法的反向传播会乘以输入信号的翻转值
例子
激活函数层的反向传播
ReLU层
原理:如果正向传播时的输入x大于0,则反向传播会将上游的值原封不动地传给下游。反过来,如果正向传播时的x小于等于0,则反向传播中传给下游的信号将停在此处。
Relu类有实例变量mask,会把正向传播时的输入x的元素中小于等于0 的地方保存为True,大于0 的元素保存为False。
Sigmoid层
Affine层
神经网络的正向传播中进行的矩阵的乘积运算在几何学领域被称为“仿射变换”。将进行仿射变换的处理实现为“Affine层”。
正向传播时,偏置会被加到每一个数据
Softmax-with-Loss层
Affine层输出得分,softmax层将得分正规化输出概率
y-t刚好为预测值与标签值的差,这不是偶然,交叉熵函数是为了得到这样的结果而设计的
同理:使用“平方和误差”作为“恒等函数”的损失函数,反向传播才能得到(y1 −t1, y2 − t2, y3 − t3)这样“漂亮”的结果。