文章目录
- 卷积
- 卷积网络反向传播
- 已知池化层误差,反向求上一层隐藏层误差
- 已知卷积层的误差,推导该层的W, b的梯度
- 注意力机制
- Transformer
- 卷积变体
卷积
卷积神经网络是一个多层的神经网络,每层由多个二维平面组成,每个平面由多个独立神经元组成
卷积神经网络基本组成
:输入层、卷积层、池化层(降维)、全连接层、输出层
卷积运算
:两个步骤1. 矩阵内积乘法(两个矩阵相同位置的元素进行乘法运算,得到一个新的矩阵),2. 将内积乘法的结果进行全加
对于实际的卷积,一方面他需要输入图像,这些图像被称为特征图像,另一方面还需要卷积核。卷积核的值是人为设定的,它是可调节的,在实际的卷积神经网路中,卷积核的值就是网络的参数。对卷积网络进行训练,就是在调节这些卷积核的参数。实际用不到太大的卷积核,常见的卷积核大小为3x3, 5x5, 1x1的
随着网络层数的加深后面一个点就能代表前面一个图像的大部分像素点,当卷积核太大,没几层就把前面全部点给覆盖了,层数不深,丢失信息更多,因此卷积核不会太大
卷积参数
- 卷积核大小(Kernel Size):卷积和大小定义了卷积的视野。2维中常见选择3x3的像素矩阵
- 步长(Stride) : 步长定义遍历图像时卷积核的移动的步长。虽然它的默认值通常为1,但我们可以使用值维2的步长来进行类似于MaxPooling的图像进行采样(可以对图像进行降维)
填充(Padding)
:填充定义如何处理样本的边界。Padding的目的是保持卷积操作的输出尺寸等于输入尺寸,因为如果卷积核大于1,则不加Padding会导致卷积操作的输出尺寸小于输入尺寸,填充了为same-conv, 未填充为valid-conv, 而如果要进行填充使图像的尺寸不变则 p = ( f − 1 ) / 2 p = (f - 1) / 2 p=(f−1)/2
通过解公式 得到padding的大小- 输入和输出通道(Channels): 卷积层通常需要一定数量的输入通道,并计算一定数量的输出通道
假设有nxn的矩阵输入,fxf的卷积核,p的填充padding, 步长s,则输出的矩阵长为为
(
n
+
2
p
−
f
s
+
1
)
∗
(
n
+
2
p
−
f
s
+
1
)
(\frac{n + 2p - f}{s} + 1)*(\frac{n + 2p - f}{s} + 1)
(sn+2p−f+1)∗(sn+2p−f+1)
最终向下取整,意味着卷积核只能在输入图像内部移动,不可以移动出边缘
可训练参数的数量
:
池化操作通常叫做子采样或降采样,通过池化来降低卷积层输出的特征维度,池化一般通过简单的最大值、最小值或平均值操作完成。主要功能有:
- 抑制噪声
- 提升模型的尺度不变性、旋转不变性
- 降低模型计算量
- 防止过拟合
卷积网络反向传播
全连接中的w,b和神经网络中的推导一致,池化层没有w,b参数,所以不用进行w,b梯度的推导
已知池化层误差,反向求上一层隐藏层误差
在前向传播时,池化层我们会用MAX或者Average对输入层进行池化,池化的区域大小已知。现在我们反过来,要从缩小后区域的误差,还原前一层较大区域的误差。这个过程叫做upsample(上采样)。假设我们池化区域大小位2x2。第
l
l
l 层的第
k
k
k 个子矩阵
δ
k
l
\delta_k^l
δkl 为:
首先对其进行扩展进行还原:
如果是MAX,假设我们之前在前向传播时记录的最大值位置分别是左上,右下,右上,左下,则转换后的矩阵为:
如果是Average,则进行平均,转换后的矩阵为:
已知卷积层的误差,推导该层的W, b的梯度
up主讲解
-
求解对应 W W W 的梯度
将这层的输入与链式求导对应的上层矩阵进行对应相乘再相加得到对应位置的w的偏导矩阵 -
求解对应 x x x 的梯度
将这层的输入与链式求导对应的上层矩阵进行卷积(翻转180度
后对应相乘相加)得到对应位置的 x x x 的偏导矩阵
总结:
α
L
α
w
=
c
o
n
v
(
I
n
p
u
t
X
,
L
o
s
s
g
r
a
d
i
e
n
t
α
L
α
O
)
\frac{\alpha L}{\alpha w} = conv (Input X, Loss gradient \frac{\alpha L}{\alpha O})
αwαL=conv(InputX,LossgradientαOαL)
α
L
α
x
=
c
o
n
v
(
L
o
s
s
g
r
a
d
i
e
n
t
α
L
α
O
,
18
0
o
R
O
T
w
)
\ \ \ \ \ \ \frac{\alpha L}{\alpha x} = conv(Lossgradient \frac{\alpha L}{\alpha O}, {180^o ROT\ w})
αxαL=conv(LossgradientαOαL,180oROT w)
卷积神经网络优缺点
优点:
- 共享卷积核,对高维数据处理无压力
- 无需手动选取特征,训练好权重,即得特征
- 分类效果好
缺点:
- 需要调参,需要大样本量,训练最好要gpu
- 物理含义不明确
注意力机制
Transformer
Transformer是一个纯基于注意力机制的结构,并将自注意力机制和多头注意力机制的概念运用到模型中;
由于缺少RNN模型的时序性,Transformer引入了位置编码,在数据上而非模型中添加位置信息;
从而带来的优点:
- 更容易并行化,训练更下高效
- 在处理长序列的任务中表现优秀,可以快速捕捉长距离中的关联信息
注意力机制在判断词在句子中的重要性,我们通过注意力分数来表达某个词在句子中的重要性,分数越高,说明该词对完成该任务的重要性越大。
计算注意力分数时,我们主要参考三个因素:query、key和value
- 查询(Query):指的是查询的范围,自主提示,即主观意识的特征向量
- 键(Key): 指的是被比对的项,非自主提示,即物体的突出特征信息向量
- 值(Value):则是代表物体本身的特征向量,通常和Key成对出现
注意力机制是通过Query与Key的注意力汇聚(给定一个Query,计算Query与Key的相关性,然后根据Query与Key的相关性去找到最合适的Key)实现对Value的注意力权重分配,生成最终的输出结果。
用一个比较直观的例子来说,每次登录视频网站搜索视频时,搜索的内容为query,搜索结果中显示的视频名称为key,它与任务内容相关,并可以引导我们至具体的视频内容(value)
计算注意力分数,即为计算query与key的相似度。常用的计算注意力分数的方式有两种:additive attention和scaled dot-product attention
Transformer结构
Transformer同样是encoder-decoder的结构,只不过这里的“encoder”和“decoder”是由无数个同样结构的encoder层和decoder层堆叠组成。
在进行机器翻译时,encoder解读源语句(被翻译的句子)的信息,并传输给decoder。decoder接收源语句信息后,结合当前输入(目前翻译的情况),预测下一个单词,直到生成完整的句子。
位置编码(Positional Encoding)
卷积变体
-
组卷积
分组卷积,最早在AlexNet中出现,由于当时的硬件资源有限,训练AlexNet时卷积操作不能全部放在同一个GPU处理,因此作者把feature maps分给多个GPU分别进行处理,最后把多个GPU的结果进行融合在AlexNet的Group Convolution当中,特征的通道被平均分到不同组里面,最后再通过两个全连接层来融合特征,这样以来,就只能在最后时刻融合不同组之间的特征,对模型的泛化性是相当不利的。
为了解决这个问题,ShuffleNet在每一次层叠这种Group conv层前,都进行一次channel shuffle(通道打乱),shuffle过的通道被分配到不同组当中。进行完一次group conv之后,再一次channel shuffle, 然后分到下一层组卷积当中,依次循环。
-
可分离卷积
在可分离卷积中,通常将卷积操作拆分成多个步骤
-
膨胀卷积
-
全卷积网络