在深度学习笔记(2)——卷积神经网络(Convolutional Neural Network)
中我们介绍了CNN网络的前向传播,这一篇我们介绍CNN的反向传播,讲到反向传播的时候实质就是一大堆求梯度的数学公式,这些公式其实已经在深度学习笔记(1)——神经网络(neural network)
那篇博客中介绍过了,所以这里就不再介绍。
但是传统的神经网络无论是隐层还是激活函数的导数都是可导,可以直接计算出导数函数,然而在CNN网络中存在一些不可导的特殊环节,比如Relu等不可导的激活函数、造成维数变化的池化采样、已经参数共享的卷积环节。NN网络的反向传播本质就是梯度(可能学术中会用残差这个词,本文的梯度可以认为就是残差)传递,所以只要我们搞懂了这些特殊环节的导数计算,那么我们也就理解CNN的反向传播。
Relu函数的导数计算
先从最简单的开始,Relu激活在高等数学上的定义为连续(局部)不可微的函数,它的公式为
Relu(x)={
x,0,