卷积神经网络的误差反向传播算法推导

卷积神经网络的构成

人们通过引入神经网络的误差方向传播算法,得到了卷积神经网络,同神经认知机一样,也是基于人类视皮层中感受野的结构的模型。卷积神经网络由输入层、卷积层、池化层、全连接层和输出层组成。
其中,卷积层、池化层和全连接层的层数不是固定的,通过增加层数可以得到深层次的网络,不过同时要注意因网络层的加深而引起的过拟合、训练时间过长等问题。

卷积层

卷积层的功能是对输入数据进行卷积操作得到特征图。这里,输入数据可以是输入层输入的原始图像或前一层计算得到的特征图;卷积操作可以看成是输入数据对应位置元素与卷积核的内积运算;实际上,完成内积运算后还要经过激活函数才能得到特征图中在该位置对应的特征值,过程如下图所示:
在这里插入图片描述

为了方便展示,上图中输入数据大小为6x6,卷积核大小为3x3,激活函数为恒等函数 f ( x ) = x f(x)=x f(x)=x。卷积核滑动步长为1,所以6x6的输入得到4x4的特征图。
内积运算过程为:5x4+3x(-1)+1x(-1)+2x(-1)+5x3+2x(-1)+1x(-1)+2x(-1)+6x3=42,然后经过恒等激活函数得特征值为42。不过实际应用过程中通常每个卷积核都有一个偏置,那么激活函数的输入就变成内积结果与偏置的和。
当卷积层的输入为三通道的彩色图像时,每个卷积核都应该是三维的3xMxM,M为卷积核大小,整个过程变为每个卷积核的各维度卷积核分别与输入数据进行内积运算,然后将各维度内积结果加起来,再加上这个卷积核的偏置,最后通过激活函数得到激活值,注意:无论每个卷积核有几层,每个卷积核只对应一个偏置。

池化层

池化层的作用是减小卷积层产生的特征图的尺寸,分为最大池化、平均池化和Lp池化,其中最常用的为最大池化。最大池化是将2x2区域内的最大值取出作为这一区域的特征值,以最大池化为例,过程如下图所示:
在这里插入图片描述

最后的全连接层与输出层的结构和多层感知器一样,只不过输入变成了上一层池化层的输出,误差反向传播过程也与多层感知器一样,本文不做赘述,因此本文池化层直接与输出层相连。

推导前的准备

本文使用的卷积神经网络结构图如下所示:

在这里插入图片描述
上图及下文可能出现的符号说明如下:

符号含义
x i j x_{ij} xij网络输入值
w i j F k w^{Fk}_{ij} wijFk k k k个卷积核的第 i i i j j j列的权重
b F k b^{Fk} bFk k k k个卷积核的偏置
a i j F k a^{Fk}_{ij} aijFk卷积层第 k k k个子层的第 i i i j j j的输出
z i j F k z^{Fk}_{ij} zijFk卷积层第 k k k个子层的第 i i i j j j的输入
a i j P k a^{Pk}_{ij} aijPk池化层第 k k k个的子层第 i i i j j j的输出
z i j P k z^{Pk}_{ij} zijPk池化层第 k k k个的子层第 i i i j j j的输入
a n o a^o_n ano输出层第 n n n个神经单元的输出
z n o z^o_n zno输出层第 n n n个神经单元的输入
w k − i j O n w^{On}_{k-ij} wkijOn从池化层第 k k k个子层的 i i i j j j列指向输出层第 n n n个神经单元的权重
t n t_n tn n n n个神经单元的期望输出值

这里,输入图像是6x6的单通道图像,卷积核采用3x3大小,步长为1,池化层使用的是最大池化,激活函数为恒等函数 f ( x ) = x f(x)=x f(x)=x,输出层的误差计算函数为最小二乘误差函数 ∑ n = 1 N 1 2 ∣ ∣ a n o − t n ∣ ∣ 2 \sum_{n=1}^N\frac12||a^o_n-t_n||^2 n=1N21anotn2,此处 N = 3 N=3 N=3

开始推导

之前神经网络参数的确定使用的是梯度下降法,同样的,本文卷积神经网络参数的确定也使用基本的梯度下降法,那么推导的关键就变成了计算各参数的偏导,这里以计算卷积核的权重 w 11 F 1 w^{F1}_{11} w11F1的偏导数为例,其余参数计算过程类似。

首先,写出整体的偏导计算公式,如下:
∂ C ∂ w 11 F 1 = ∂ C ∂ z 11 F 1 ∂ z 11 F 1 ∂ w 11 F 1 + ∂ C ∂ z 12 F 1 ∂ z 12 F 1 ∂ w 11 F 1 + . . . + ∂ C ∂ z 44 F 1 ∂ z 44 F 1 ∂ w 11 F 1 = ∂ C ∂ z 11 F 1 x 11 + ∂ C ∂ z 12 F 1 x 12 + . . . + ∂ C ∂ z 44 F 1 x 44 ( 1 ) \frac{\partial C}{\partial w^{F1}_{11}} = \frac{\partial C}{\partial z^{F1}_{11}} \frac{\partial z^{F1}_{11}}{\partial w^{F1}_{11}}+ \frac{\partial C}{\partial z^{F1}_{12}} \frac{\partial z^{F1}_{12}}{\partial w^{F1}_{11}}+ ...+ \frac{\partial C}{\partial z^{F1}_{44}} \frac{\partial z^{F1}_{44}}{\partial w^{F1}_{11}} =\frac{\partial C}{\partial z^{F1}_{11}}x_{11}+ \frac{\partial C}{\partial z^{F1}_{12}}x_{12}+ ...+ \frac{\partial C}{\partial z^{F1}_{44}}x_{44} (1) w11F1C=z11F1Cw11F1z11F1+z12F1Cw11F1z12F1+...+z44F1Cw11F1z44F1=z11F1Cx11+z12F1Cx12+...+z44F1Cx44(1)
其中, ∂ C ∂ z 11 F 1 , ∂ C ∂ z 12 F 1 , . . . , ∂ C ∂ z 44 F 1 \frac{\partial C}{\partial z^{F1}_{11}},\frac{\partial C}{\partial z^{F1}_{12}},...,\frac{\partial C}{\partial z^{F1}_{44}} z11F1C,z12F1C,...,z44F1C等16个偏导的计算过程类似,这里以 ∂ C ∂ z 11 F 1 \frac{\partial C}{\partial z^{F1}_{11}} z11F1C为例:
∂ C ∂ z 11 F 1 = ( ∂ C ∂ z 1 o ∂ z 1 o ∂ a 11 P 1 + ∂ C ∂ z 2 o ∂ z 2 o ∂ a 11 P 1 + ∂ C ∂ z 3 o ∂ z 3 o ∂ a 11 P 1 ) ∂ a 11 P 1 ∂ z 11 P 1 ∂ z 11 P 1 ∂ a 11 F 1 ∂ a 11 F 1 ∂ z 11 F 1 ( 2 ) \frac{\partial C}{\partial z^{F1}_{11}}= (\frac{\partial C}{\partial z^{o}_{1}} \frac{\partial z^o_1}{\partial a^{P1}_{11}}+ \frac{\partial C}{\partial z^{o}_{2}} \frac{\partial z^o_2}{\partial a^{P1}_{11}}+ \frac{\partial C}{\partial z^{o}_{3}} \frac{\partial z^o_3}{\partial a^{P1}_{11}}) \frac{\partial a^{P1}_{11}}{\partial z^{P1}_{11}} \frac{\partial z^{P1}_{11}}{\partial a^{F1}_{11}} \frac{\partial a^{F1}_{11}}{\partial z^{F1}_{11}} (2) z11F1C=(z1oCa11P1z1o+z2oCa11P1z2o+z3oCa11P1z3o)z11P1a11P1a11F1z11P1z11F1a11F1(2)
接下来,对公式中各部分进行求解:
其中 ∂ C ∂ z 1 o = ∂ C ∂ a 1 o ∂ a 1 o ∂ z 1 o = ( a ′ − t 1 ) ∂ a 1 o ∂ z 1 o \frac{\partial C}{\partial z^o_1} = \frac{\partial C}{\partial a^o_1}\frac{\partial a^o_1}{\partial z^o_1}=(a'-t_1)\frac{\partial a^o_1}{\partial z^o_1} z1oC=a1oCz1oa1o=(at1)z1oa1o
∂ z 1 o ∂ a 11 P 1 = w 1 − 11 O 1 \frac{\partial z^o_1}{\partial a^{P1}_{11}}=w^{O1}_{1-11} a11P1z1o=w111O1
∂ z 2 o ∂ a 11 P 1 = w 1 − 11 O 2 \frac{\partial z^o_2}{\partial a^{P1}_{11}}=w^{O2}_{1-11} a11P1z2o=w111O2
∂ z 3 o ∂ a 11 P 1 = w 1 − 11 O 3 \frac{\partial z^o_3}{\partial a^{P1}_{11}}=w^{O3}_{1-11} a11P1z3o=w111O3
∂ a 11 P 1 ∂ z 11 P 1 = 1 \frac{\partial a^{P1}_{11}}{\partial z^{P1}_{11}}=1 z11P1a11P1=1
∂ z 11 P 1 ∂ a 11 P 1 = { 1 ( 在 区 块 中 a 11 F 1 是 最 大 时 ) 0 ( 在 区 块 中 a 11 F 1 不 是 最 大 时 ) \frac{\partial z^{P1}_{11}}{\partial a^{P1}_{11}}= \begin{cases} 1&(在区块中a^{F1}_{11}是最大时)\\ 0&(在区块中a^{F1}_{11}不是最大时) \end{cases} a11P1z11P1={10(a11F1)(a11F1)
接下来,将各部分的具体求导结果代入式(2)中,然后同式(2)计算式(1)中其余的15个偏导数,最后将所有的具体计算结果代入式(1)得到最终结果。计算结果中对卷积层和输出层激活函数的求导可根据实际应用时网络采用激活函数的情况进行计算。

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
java大数据人工智能培训学校全套教材系列课程由1000集视频构成,基本就 是1)时下流行的java培训学校主流内部教材,2)和市面上培训学校的通 行的课程体系几乎一样。所以这套课程都能自己学下来,等于上了培训学校一次,完全可以找个java工程师的工作了。 通过学习卷积神经网络概述,为什么引入神经网络来做识别,判断,预测,训练模型,激活函数,sigmoid激活函数,导数和切线,sigmoid激活函数如何求导,链式法则,梯度,梯度下降法与delta法则,BP(back propagation)误差传播神经网络,卷积到底有什么作用?如何做到特征提取,池化的名字由来,dropout,Anaconda Prompt的用法,Jupyter notebook的用法,Spyder的用法,建立安装Tensorflow所需的Anaconda虚拟环境,如何在Anaconda虚拟环境安装Tensorflow与Keras概念等让大家对人工智能,卷积神经网络快速入门。课程特色:专业细致,偏案例,理论强。课程软件使用:Anaconda,Spyder,Jupyter notebook重要声明:1) 如果感觉噪音大,可以选择不用耳机,加音箱或用电脑原声 2) 既然我们的名字叫人工智能深度学习卷积神经网络入门,这个课程的特点就在于成本最低的, 让你最快速的,最容易的入门。人工智能深度学习卷积神经网络入门的最大的难点在于入门入不了,从而最终放弃。俗话说师傅领进门,修行在个人。只要入了门了,后面的事都好办。选课前,务必注意本章的学习目标和内容。想学更多,注意后边的课程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值