最近花了几天时间对目前常用神经网络模型(backbone),生成对抗GAN,模型压缩,NPL,距离计算,优化器进行了分类整理,用简短的几句话对相关特性进行了总结描述,如有误请指正,方便强化记忆,供学习、选型、面试。详细组件功能介绍请参考其它博文。
没有什么是一张图解决不了的,如果有就再画一张
目录
1 神经网络模型(backbone)
2 生成对抗
3 模型压缩
4 NPL
5 距离计算
6 常用名词
7 优化器
8 强化学习
1.1 Deeper(更深层次的网络)
LeNet-5 卷积始祖,结构:卷积+池化+卷积+池化+卷积+全连接+全连接
AlexNet
创新点:采用ReLU激活函数代替Sigmoid,Dropout
局部相应归一化、扩增数据、分卡训练
ZFNet
卷积可视化始祖
滤波器尺寸更小
VGGNet
结构简洁:5层卷积层,3层全连接层、softmax输出层构成
创新点:小卷积核和多卷积核,VGG使用多个较小卷积核(3x3)
两个3x3相当于一个5x5
LRN层无性能增益
ResNet
创新点:shortcut,分为Basic block和bottle block
一是导数总比原导数加1,解决梯度消失
二是y=f(x)+x式子中引入了恒等映射,解决了深度增加时神经网络退化
第一个卷积层采用7x7的大卷积核,更大的感受野,获取图片更多的初始特征
DenseNet
创新点:密集连接方式,DenseNet提升了梯度的反向传播,使得网络更容易训练
DenseNet网络包包括Dense Block和Transition layer两个基础模块
参数更小且计算更高效(concatenate来实现特征复用,计算量很小)
由于特征复用,分类器使用到了低级特征,需要较大的显存才能运行
1.2 Module(模块化网络)
GoogleNet V1
创新点:Inception 模块化,采用不同大小的卷积核不同尺度的特征融合
加深的基础上进行加宽,稀疏网络结构
采用1x1卷积,一是减少维度来减少参数和计算量,二是修正线性激活,
增加非线性拟合能力(每个1x1后都有ReLU激活函数)
采用辅助分类器:一是为了避免梯度消失,用于向前传导梯度,
二是将中间某一层输出用作分类,起到模型融合作用
用Global Ave Pool取代了FC,防止过拟合作用
GoogleNet V2
借鉴VGG,用两个3x3卷积代替一个5x5卷积
将滤波器大小nxn的卷积分解为1xn和nx1卷积的组合
GoogleNet V3
采用RMSProp优化器
GoogleNet V4
利用残差网络(ResNet)来改进V3
1.3 Faster(更快的网络)
Squeeze Net
创新点:基础单元是Fire Module,多个Fire Module堆叠,
Fire Module又包括两个部分:squeeze layer和Expand layer
多使用1x1的卷积,少使用3x3的卷积(Idea from GoogleNet),减少channel的数量
将降采样后置,即推迟使用Pooling从而增加感受野
MobileNet
MobileNet V1
深度卷积:将卷积拆分为单通道的形式
逐点卷积:即1x1卷积,对深度卷积得到的特征图进行升维
引入宽度α和分辨率缩放因子
MobileNet V2
Linear bottleneck:去掉卷积单元中最后一个ReLU函数
Inverted residual:先升维,卷积,降维
shuffle Net
shuffleNet V1
group convolution(分组卷积):将输入特征图按通道数分组,
用不同的卷积核分别进行卷积
channel shuffle(通道混洗):对分组卷积之后的特征图的排列顺序
进行打乱排列reshape--transpose--flatten
shuffleNet V2
卷积层的输入和输出特征通道数相等时MAC最小,此时模型速度最快
过多group操作会增大MAC,从而使模型速度变慢
模型中的分支数量越少,模型速度越快
尽可能减少element-wise操作
LightCNN 提出了MFM的一种新的特征图融合方法,在特征提取效果和特征提取速率方面取得了很大的进步
1.4 Functional(功能性网络)
检测
x-RCNN
RCNN 1.SS提取RP;2.CNN提取特征;3.SVM分类;4.BB盒回归
Fast RCNN 1.SS提取RP;2.CNN提取特征,加入ROI Pooling层;3.softmax分类;4.多任务损失函数边框回归
Faster RCNN
1.RPN提取RP;2.CNN提取特征,加入ROI Pooling层;3.softmax分类;4.多任务损失函数边框回归
RPN(Region Proposal Network)
1.anchor生成(一个概率值和四个坐标值);
2.框回归,根据IOU初次筛选;
3.NMS(非极大值抑制)再次筛选得到Proposal框
RIO pooling
根据输入image,将region proposal映射到feature map对应位置
将映射后的区域划分为相同大小的sections(sections数量与输出维度相同,根据输出取整)
对每个sections进行max pooling操作
YOLO
YOLO V1
检测变为回归问题
整张图划为7x7,每个格子预测两个目标,输出置信度和坐标位置,
没有使用Region proposal,小目标效果不好
YOLO V2
引入自定义darknet分类网络
引入anchor思想,产生多个boundingboxes先验框
使用k-Means聚类方法来训练boundingboxes
YOLO V3
从v2的darknet-19 到v3 darknet-53
AnchorBoxes数目从v2中的5个提升到v3中的9个
用Logistic分类器替换softmax分类器
增加特征融合
SSD
基于Faster RCNN中的Anchor提出了相似的Prior box,一般是4~6个,在不同尺度的feature map
加入基于特征金字塔,继承将检测转变为回归问题
整张图8x8网格+anchor+FCN,多尺度特征融合,
不同层的feature map 3x3滑动窗感受野不同,作为不同尺度检测
FPN(Feature Pyramid Network)
目标分离:浅层目标简单位置准确,深层目标复杂位置粗略,
浅层特征关注纹理特征,深层网络关注网路本质特征;
将处理过的低层特征Layer2和处理过的高层特征Layer4进行累加,结合bottom-up与top-down,
横向连接(lateral-connection)方法获得较强语义连接
RetinaNet
组成:ResNet-50+PFN
引入focal loss
分割:判断图像每个像素点的类别
Mask RCNN
ResNet+FPN+RPN+RoI
head+FCN+Mask
Coordinates-reg
Category-cls
FCN
全卷积:以卷积代替全连接匹配任意尺寸输入图片
skip Architecture:FCN-32s/16s/8s
Upsampling:反卷积
UNet
前半部分特征提取生成224x224,112x112,56x56,28x28,14x14;后半部分往回上采样+concat
U-net通过通道数的拼接,FCN是通过特征图对应像素值相加融合特征
ENet
包括7个阶段,每个阶段又类似ResNet的bottleneck模块组成,
1-3属于编码阶段,5-7属于解码阶段,4阶段为中间过度
使用了更大的编码结构和更小的解码结构;使用PReLU替代ReLU激活函数,使用空间dropout
2.1 DCGAN(Deep Convolutional GAN)
引入卷积增加生成图片的质量
2.2 WGAN(Wasserstein GAN)
利用Wasserstein-1距离,从目标函数的角度出发来提高模型的表现,在理论上解决了梯度消失问题
2.3 WGAN-GP(gradient penalty)
用正则化的形式表达了对判别器的约束,具有强大的稳定性,几乎不需要调参,训练成功率极高
2.4 LSGAN(least square GAN)
用散度x^2取代了朴素GAN的jensen-Shannon散度,提高了生成数据的质量和多样性
2.5 EBGAN(Energy-base GAN)
对D的架构采用自动编码器的模式
2.6 BEGAN(Boundary Equilibrium GAN)
基于EBGAN通过超参∈[0,1]来放宽均衡点
2.7 CGAN(conditional GAN)
生成指定标签的数据
2.8 InfoGAN
从噪声z中拆分出结构化的隐含编码c的方法,使得生成的过程具有一定的可控性
2.9 Pix2Pix
用于图像翻译领域,训练需要相互配对的图片x与y
2.10 CycleGAN
不需要配对的两个场景的相互映射,实现了图像间的相互转换
2.12 StarGAN
将两两映射变多个领域之间的映射
3.1 模型剪枝
减少head的数量和去除作用较少的层,共享参数
3.2 量化
比如讲float32 降到 int8
3.3 知识蒸馏
目标蒸馏
Hard-Target/Soft-Target
蒸馏温度的高低决定对负标签的关注程度
Matching logits
特征蒸馏
第一阶段隐藏层学习
第二阶段目标学习
3.4 参数共享
如ALBERT 共享了Transforner层
3.5 参数矩阵近似
矩阵的低秩分解
4.1 常见网络
RNN
有多个时刻输入时,网络层次比较深,根据链式法则则更容易出现梯度爆炸
LSTM
输入门、遗忘门、记忆门、输出门
GRU
重置门决定了如何将新的输入信息与前面的记忆相结合,
更新门定义了前面记忆保存到当前时间的量,相比LSTM参数更少
Transform
由于RNN要求输出≤输入;
encode-decode引入中间量C解决,但多个转换为一个存在表达不丰富丢失原信息
多头自注意力机制和规范化层以及一个残差连接
编码:词编码、句子编码、位置编码
Bert
4.2 词汇表征
Word2Vec
CBOW适用于小型数据库,由上下文推出单个词--完型填空
权重矩阵(look up table)
Skim-gram适用于小型语料库,由单个词推出上下文--造句
Doc2Vec
4.3 搜索评价
beam search
是对贪心策略一个改进,就是稍微放宽一些考察的范围K
BLEU
N-gram的匹配度、召回率、惩罚因子
5.1 信息量、熵
信息量的期望就是熵
熵为什么是对数形式
概率越低信息量越大;概率越高信息量越低
多个事件同时发生的概率相乘是多个信息量相加的和
对数函数是上凸的,期望函数也是上凸的
5.2 lipschitz约束
f(x1)-f(x2)≤C|x1-x2|
5.3 交叉熵
KL散度-目标分布熵=交叉熵 (目标熵为常数)
5.4 KL散度(相对熵,信息增益)
两个概率分布P和Q差异的度量
非对称,不满足三角不等式
5.5 JS散度
两个概率分布的相似度
对称的,其取值是0到1
解决没有重叠的两个分布梯度消失问题
5.6 Wasserstein 距离
两个概率分布之间的距离,样本对距离的期望E(x,y)下界
当两个概率重叠非常少,仍然能反映两个分布的远近,
而JS散度在此情况下是常量,KL散度可能无意义
6.1 非对称卷积
每一个nxn的卷积都可以分解为nx1何1xn的两层卷积核
6.2 空洞卷积(Dilated Convolution)
在标准卷积里插入空值以增加感受野,空洞为扩张率-1,应用HDC设计结构
7.1 SGD
缺点:
对所有的参数更新使用同样的learning rate,选择合适的learning rate比较困难
SGD容易收敛到局部最优
7.2 Momentum
优点:下降初期,抑制振荡,从而加快收敛
缺点:下降中后期时,在局部最小值来回震荡的时候
7.3 Adagrad
优点:
前期gt较小的时候,regularizer较大,能够放大梯度
后期gt较大的时候,regularizer较小,能够约束梯度
适合处理稀疏梯度
缺点:
仍依赖于人工设置一个全局学习率
中后期,分母上梯度平方的累加将会越来越大,使梯度趋向于0,使得训练提前结束
7.4 Adadelta
特点:
训练初中期,加速效果不错,很快
训练后期,反复在局部最小值附近抖动
7.5 RMSprop
特点:
其实RMSprop依然依赖于全局学习率
RMSprop算是Adagrad的一种发展,和Adadelta的变体,效果趋于二者之间
适合处理非平稳目标 - 对于RNN效果很好
7.6 Adam
特点:
结合了Adagrad善于处理稀疏梯度和RMSprop善于处理非平稳目标的优点
对内存需求较小
为不同的参数计算不同的自适应学习率
也适用于大多非凸优化 - 适用于大数据集和高维空间
8.1 学习方式
在线学习
Sarsa
离线学习
Q learning
8.2 优化方向
基于概率
Policy Gradients
基于价值
Q learning和Sarsa
基于概率和价值
Actor-Critic
8.3 融合网络
DQN
【参考】
https://www.cnblogs.com/silence-cho/p/11620863.html
https://zhuanlan.zhihu.com/p/22252270
https://mofanpy.com/
码字不易,转载请说明~~