阅读场景:闲暇
推荐指数:★★★☆☆
Transpose Convolution 转置卷积 本质上就是一个对输入数据进行适当变换(补零/上采样)的普通卷积操作,无非是padding较大时,可以达到上采样的效果
- 转置卷积能将普通卷积中输入到输出的尺寸变换逆反过来。只是复原了形状
- 转置卷积的信息正向传播与普通卷积的误差反向传播所用的矩阵相同
在实际计算过程中,我们要转化为矩阵的乘积的形式,一个转化为Toeplitz matrix 托普利茨矩阵,一个reshape为列矩阵。 Toeplitz矩阵(diagonal-constant matrix),指矩阵中每条自左上至右下的斜线上的元素相同。形如:
对于方阵,Toeplitz方阵可以描述为:任一条平行于主对角线的直线上的元素相同。 举个简单的例子 比如 input= [3,3],Reshape之后,为A=[1,9] B(可以理解为滤波器)=[9,4](Toeplitz matrix) 那么AB=C=[1,4]。Reshape C=[2,2] 所以,通过B卷积,我们从shape=[3,3]变成了shape=[2,2] 反过来。 输入A=[2,2],reshape之后为[1,4] B的转置为,[4,9] 那么AB=C=[1,9],reshape为[3,3] 所以,通过B的转置 - "反卷积",我们从shape=[2,2]得到了shape=[3,3] 也就是 输入feature map A=[3,3]经过了卷积滤波B=[2,2] 输出为 [2,2] ,所以padding=0,stride=1 反卷积则是 输入feature map A=[2,2],经过了反卷积滤波B=[2,2].输出为[3,3].padding=0,stride=1 那么[2,2]的卷积核(滤波器)是怎么转化为[4,9]或者[9,4]的呢? 通过Toeplitz matrix。 如下所示: 在卷积中,我们定义 C 为卷积核,Large 为输入图像,Small 为输出图像。经过卷积(矩阵乘法)后,我们将大图像下采样为小图像。这种矩阵乘法的卷积的实现遵照:C x Large = Small。 下面的例子展示了这种运算的工作方式。它将输入平展为 16×1 的矩阵,并将卷积核转换为一个稀疏矩阵(4×16)。然后,在稀疏矩阵和平展的输入之间使用矩阵乘法。之后,再将所得到的矩阵(4×1)转换为 2×2 的输出。
现在,如果我们在等式的两边都乘上矩阵的转置 CT,并借助「一个矩阵与其转置矩阵的乘法得到一个单位矩阵」这一性质,那么我们就能得到公式 CT x Small = Large,如下图所示。
Deformable Convolution 可变形卷积
- 在模块中增加额外偏移量的空间采样位置和从目标任务中学习到偏移量且不需要额外的监督。
- 这些新的模块可以很容易的取代现有CNNs的普通模块并且利用反向传播进行端到端的训练,产生可变形的卷积神经网络
在输入的feature map中,原始的通过sliding window得到的是绿框,引入可变形卷积后,我们把原来的卷积网路分为两路,共享input feature map,其中上面的一路用
一个额外的conv层来学习offset,得到HW2N的输出offset,其中,2N的意思是有x,y两个方向的偏移,(2N=2kk,卷积核k)得到这个之后,我们对原始卷积的每一个窗口,都不再是原来规整的sliding window(input feature map中的绿框)而是经过平移后的window(input feature map中的篮框),取得数据后计算过程和常规卷积一样,即input feature map和offset共同作为deformable conv层的输入 。不是对kernel学习offset而是对feature的每个位置学习一个offset
Bottleneck layer
- 在计算比较大的卷积层之前对其通道压缩以减少计算量,计算完后,可以再次恢复通道数 (通道减少,层数增加)
Residual
求梯度理解 f(g(x)) vs f(g(x))+x
Dropout
- 看作是集成了大量神经网络的Bagging方法,相同的数据集合训练若干个不同的模型,预期结果取这些模型的平均值或投票得到。原始Bagging中所有模型是相互独立的,这里是不同模型共享参数的。
- 能减少神经元之间复杂的共适应(coadaptation)关系。每个神经元不会对另外一个特定神经元的激活非常敏感,使得网络能学到一些更加泛化的特征。一定程度上的正则化
self attention ~
- 将输入单词转化成嵌入向量(词在高维空间的数值映射);
- 根据嵌入向量得到 Q,K,V
- 为每个向量计算一个score(词向量之间相关度):score=
- 为了梯度的稳定,Transformer使用了score归一化,即除以
- 对score施以softmax激活函数;
- softmax点乘Value值V,得到加权的每个输入向量的评分
- 相加之后得到最终的输出结果求和
Self-Attention向量的内积,其几何意义是,表征两个向量的夹角,表征一个向量在另一个向量上的投影
- VAE (Variational AutoEncodder)
VAE是AE的升级版本,其结构也是由编码器和解码器组成。AE在生成数据时只会模仿而不会创造,无法直接生成任意的新样本,这是因为AE在生成样本时用到的隐向量其实是真实样本的压缩编码,也就是说每一个生成样本都需要有对应的真实样本, AE本身无法直接产生新的隐向量来生成新的样本。作为AE的重要升级,VAE的主要优势在于能够产生新的隐向量z,进而生成有效的新样本。VAE能够生成新样本(即VAE与AE的最大区别)的原因是, VAE在编码过程中加入了一些限制,迫使编码器产生的隐向量的后验分布q(z|x)尽量接近某个特定分布(如正态分布)。VAE训练过程的优化目标包括重构误差和对后验分布q(z|x)的约束这两部分。 VAE编码器的输出不再是隐空间中的向量,而是所属正态分布的均值和标准差,然后再根据均值与标准差来采样出隐向量z。由于采样操作存在随机性,每一个输入图像经过 VAE得到的生成图像不再是唯一的,只要z是从隐空间的正态分布中采样得到的,生成的图像就是有效的。VAE除了考虑重构误差之外,还加入了对隐变量空间的约束目标。
- YOLO9000
用检测数据集和分类数据集进行联合训练。检测数据集相对于分类数据集来说,数据量小、类别少、类别粒度粗且获取困难,因此研究人员考虑使用分类和检测数据集进行联合训练,提高模型的泛化能力。然而一般分类数据集的标签粒度要远小于检测数据集的标签粒度,为了能够联合训练,YOLO9000模型构建了字典树,合并ImageNet的分类数据集标签与COCO的检测数据集标签。