卷积神经网络(CNN)原理推导阿育王6262016.3.6说明:•先导知识:CNN网络结构、BP网络学习算法•参考文献:NotesonConvolutionalNeuralNetworks典型的CNN网络结构中,包含:卷积层、下采样层、全连接层1.全连接层学习算法•1.1工作信号正向传播•1.2误差信号反向传播全连接层网络结构图2.1工作信号正向传播(1)当前第l层的输出xl:•①先求ul:第l-1层的输出xl-1(第l层的输入)与其对应权值Wl相乘,再加上基bl•②再利用激活函数f(.)得xl:sigmoid或Relu•逐层传播,直至得到最终输出层结果•利用网络输出值与真实值之间的误差,进行反向传播,调整权值。•参数:c表示分类数目,N表示训练样本数tnk表示第n个样本真实值的第k维ynk表示第n个样本输出值的第k维(2)误差•①第n个样本的误差:每类(共c类)误差的和•②总误差:每个样本(共N个)误差的和2.2误差信号反向传播•反向传播回来的误差可以看做是每个神经元的基的灵敏度•灵敏度的意思就是基b变化多少,误差会变化多少•也就是误差对基的变化率,即导数(公式1)(1)反向计算各层灵敏度•①输出层第L层灵敏度:•②全连接层第l层灵敏度(公式2):(2)权值调整•①导数:•②权值更新(公式3):对于每一个权值Wij都有一个特定的学习率ηIj误差E对于第l层权值矩阵Wl的导数第l层的输入(即第l-1层的输出)xl-1第l层的灵敏度向量δl=X2.卷积层学习算法•2.1工作信号正向传播•2.2误差信号反向传播卷积层典型结构图卷积层输入层子采样层典型结构图卷积层子采样层•假定每个卷积层l都会接一个下采样层l+12.1工作信号正向传播(1)当前第l层的第j个输出xlj:•①先从第l-1层的特征图里,选择若干个组成第l层输入特征图集合Mj;•②再利用卷积核Klij分别与输入特征图中的每个map即xl-1i进行卷积,并求和;•③最后加上基blj,使用激活函数f即可。(2)确定需要更新的权值•①基b•②卷积核k•说明:此时需要分别计算误差对它们的变化率和2.2误差信号反向传播(1)计算基的梯度①上采样第l+1层第j个灵敏度map:说明:第l+1层为下采样层,其中一个像素对应的灵敏度δ对应于第l层卷积层的输出map的一块像素(采样窗口大小),因此,上采样使其灵敏度map大小与卷积层的map大小一致•②求第I层第j个灵敏度map(公式2可得):说明:在下采样层map的权值W都取一个相同值β,而且是一个常数。•③第l层灵敏度δl:对第l层中的灵敏度map中所有节点进行求和,由公式1可知,得到基的梯度。(2)计算卷积核的梯度•①对于一个给定的权值,对所有共享该权值的连接对该点求梯度;•②然后对这些梯度进行求和。•说明:是中的在卷积的时候与逐元素相乘的patch•③在matlab中实现代码:(3)利用公式3进行权值调整:•①∆𝒃𝒋=−𝜼𝝏𝑬𝝏𝒃𝒋•②𝚫𝒌𝒊𝒋𝒍=−𝜼𝝏𝑬𝝏𝒌𝒍𝒊𝒋3.子采样层学习算法•3.1工作信号正向传播•3.2误差信号反向传播3.1工作信号正向传播(1)当前第l层的第j个输出xlj:•down(.)表示一个下采样函数。•有N个输入maps,就有N个输出maps,只是每个输出map都变小n*n倍。•每个输出map都对应一个属于自己的乘性基β和一个加性基b。(2)确定需要更新的权值•①加性基b•②乘性基β•说明:此时需要分别计算误差对它们的变化率和3.2误差信号反向传播(1)计算加性基的梯度①计算第I层第j个灵敏度map②加性基的梯度:(2)计算乘性基的梯度①保存正向传播时下采样层的特征map:②乘性基的梯度(3)利用公式3进行权值调整:•①∆𝒃𝒋=−𝜼𝝏𝑬𝝏𝒃𝒋•②𝚫𝜷𝒋=−𝜼𝝏𝑬𝝏𝜷𝒋4.特征图组合•人工选择•网络选择①第l层第j个输出特征图xlj:说明:αij表示在得到第j个输出map的第i个输入map的权值,需要满足约束②处理αij:对变量αij的约束可以通过将变量αij表示为一组无约束的隐含权值cij的softmax函数来加强Softmax函数的导数表示为:其中:克罗内克函数𝜹𝑘𝑖=𝟏𝒌=𝒊𝟎𝒌≠𝒊③误差对于第l层变量αi的导数为:④代价函数关于权值ci的偏导为: