梯度下降是First-Order Optimization
若考虑Second-Order,与二阶导数的相关量(曲率,物理中的法向加速度)
广义相对论:在引力场中,时空的性质是由物体的“质量”分布决定的,物体“质量”的分布状况使时空性质变得不均匀,引起了时空的弯曲。因为一个物体有质量就会对时空造成弯曲,而你可以认为有了速度,有质量的物体变得更重了,时空弯曲的曲率就更大了。
二阶优化能更快收敛:牛顿法中,找一阶导数=0的位置,需要对一阶导数再求导,再迭代优化
\
但是海森的逆矩阵计算复杂,一般不用;
而使用BGFS(Quasi-Newton拟牛顿法,更新海森矩阵而O(n2)而不求逆运算O(n3)),L-BGFS(Limited memory BGFS,不储存完整的海森矩阵的逆)
推导:
参数量小,计算量小,更好的非线性表示能力
卷积核Conv weights: D filters, each K * K * C
拉成 D * (K^2 * C) 的矩阵(行向量)
Feature map: H * W * C
拉成(K^2 * C) * N(列向量)
矩阵点乘:D * N results reshape to output tensor
卷积核向量 * 感受野向量
卷积理论:两个函数的卷积=两个函数傅里叶变换之后逐元素乘积
傅里叶变换:任何信号都可以由多个不同频率不同幅度的正弦信号累加而成,实现时域信号向频域信号的转换
卷积核可以看作是滤波器(低通模糊图像,高通提取边缘),提取图像不同频率的特征
图像看作二维信号,频域中高频的地方是像素明暗变化剧烈的地方
时域卷积=频域相乘:
针对不同场景别随便迁移,预训练模型:特征抽取作为特定任务的Backbone
差异小的数据集 | 差异大的数据集 | |
---|---|---|
数据量小 | 改动线性分类层 | trouble |
数据量大 | 多往前训练几层 | 往前训练更多层 |
How transferable are features in deep nerual networks? NIPS 14
ImageNet classification with deep convolutional Neural Networks Krizhevsky et al. 2012
Visualizing and Understanding Convolutional Networks Zeiler and Fergus 2013
Very Deep Convolutional Networks for Large-Scale Image Recognition Simonyan and Zisserman 2014
Going Deeper with Convolutions (Inception V1)
非常好的一篇文章
启发:Network in network: 1 卷积,Global Average Pooling 取代全连接层;以及《Provable Bounds for Learning some deep representations》 用稀疏分散的网络取代以前庞大密集臃肿的网络
Related Work中首先提到启发来源,池化层虽然丢失空间像素精确,但是可以用来做定位和目标检测
《Overfeat: Integrated recognition, localization and detection using convolutional networks》
《Robust object recognition with cortex-like mechanisms》处理多尺度的输入(不同尺度的卷积核),类似Inception 模块
接着,提到了目标检测:《 Rich feature hierarchies for accurate object detection and semantic segmentation》首先找出候选区域,再对每个候选区域使用CNN来识别类别。
Motivation and high level considerations:增加深度和宽度,Inception 模块在利用现有模型的基础上,又实现了稀疏性减少计算;如果作为RCNN的基模型,对于定位和目标检测都很有用处
Architectural Details:设计思想是用密集模块来近似出局部最优稀疏结构;越靠近前面的层越提取局部信息,越靠近后面越提取大范围信息,所以嵌入到两层之间的Inception模块大的小的感受野都需要有;
使用1卷积的理由:受到embedding用低维dense向量代替高维稀疏向量启发,同时希望降维后向量能够不要那么密集压缩便于计算处理,采用1卷积,既可以降维又可以减少计算;
various scales visual information simultaneously processed and then aggregated
GoogLeNet:GAP代替全连接层好处一,便于fine-tune迁移学习,好处二,提升了0.6%的Top-1准确度;浅层特征其实也有了一定的区分度,所以作者在4a和4b后面添加辅助分类器,计算两个辅助Loss,测试阶段去除辅助分类器。
L = L 最 后 + 0.3 L 辅 1 + 0.3 L 辅 2 L=L_{最后} + 0.3 L_{辅1} + 0.3 L_{辅2} L=L最后+0.3L辅1+0.3L辅2
Training Methodology: asynchronous stochastic gradient descent 异步随机梯度下降(因为数据并行输入);
调参玄学:dropout和learning rate,数据增强:裁剪为原图的8%-100%, 长宽比例调节至3/4-4/3之间,光度变换(Some improvements on deep convolutional neural network based image classification),等概率使用bilinear, area, nearest neighbor and cubic插值方法。
用于分类任务:一张图裁剪并镜像成144个patch输入,对144个softmax结果取平均得到预测类别;采用7个模型训练好的模型进行集成;比base降低了3.45%的Top5 Error
用于物体检测任务:如果算法给出的框分类正确且与正确标签的框的交并比(jaccard index)大于0.5则预测正确,同一类别的所有分类结果可以统计Confusion Matrix,算法评估使用mAP(每个类别不同阈值下PR曲线围成的面积=AP,不同类别的平均AP=mAP);
使用《Segmentation as selective search for object recognition.》Selective search 方法,使用《Scalable object detection using deep neural networks》multi-box predications 减少无用的候选框
没有使用框回归和,之间对候选框分类
使用Inception模型作为分类器
Rethinking the Inception Architecture for Computer Vision(Inception V2 V3)
Introduction 中提到的前沿应用
General Design Principles
Facterizing Convolutions with Large Filter Size
Auxiliary Classifiers
V1认为辅助分类器让浅层也学习到特征,辅助分类器能在浅层注入梯度,防止梯度消失;
这篇文章认为辅助分类器不能帮助模型更快收敛;辅助分类器只是起到了正则化的作用,所以这篇文章改为BN和Dropout来做正则化
Efficient Grid Size Reduction
原本方法:先池化再卷积违反原则一(过度降维浅层丢失信息),先升维再池化(计算量增加)都很expensive
高效下采样:
池化和卷积并行的Inception模块 ;加深——两条路径做卷积(卷积分解),一条路径做池化,再沿channel摞在一起
扩展滤波器组:加宽——用在模型的最深处,符合原则二:相互独立的特征越多,区分度越大,在最后分类层之前生成高维稀疏特征
Inception-V2
正则化之——标签平滑(LSR,Label Smooth Regulerzation)
因为交叉熵损失的原因,让label更趋近于softmax之后的分布(0.33,0.9,0.33,0.33),而不是独热编码(0,1,0,0)
防止过拟合:如果按照独热编码,网络就会尽可能让softmax之后的数为(0.0001,0.99999,0.00001,0.0000)那么在前一层得到的值就变成了(0.0001,正无穷,0.00001,0.00001)过于偏向正确标签
Hiton “When Does Label Smoothing Help?”
知识蒸馏(KD):通过引入teacher(复杂模型),诱导student(简单模型)的训练;
- 与GoogleNet的关系:
FITNETS:Hints for Thin Deep Nets【ICLR2015】
deep是DNN主要的功效来源,之前的工作都是用较浅的网络作为student net,这篇文章的主题是如何mimic一个更深但是比较小的网络。
使用的方法直觉上来讲也是直接的:既然网络很深直接训练会很困难,那就通过在中间层加入loss的方法,通过学习teacher中间层feature map来transfer中间层表达的知识,文章中把这个方法叫做Hint-based Training。(Inception V1 采用了该方法)
Knowledge Distillation in Generations: More Tolerant Teachers Educate Better Students【AAAI2019】
硬标签会导致模型产生过拟合现象,soft label对于模型的泛化能力有所帮助
常用的标签处理策略:label smoothing regularization(lsr)**(Inception V2 采用了该方法)**和confidence penalty(CP)两种方法,但其缺点是考虑了所有的类。本文提出了一个更合理的方法,没有计算所有类的额外损失,而是挑选了几个具有最高置信度分数的类。
teacher的loss中加入一个约束:min置信度Top1的标签的和其余K-1个标签平均值之间的gap
训练student的时候,用teacher 的soft label 和 hard label 融合
论文中实验在CIFAR-100和ILSVRC2012分类数据集上**涨点3%~8%**不等
Very Deep networks using residual connections He et.al 2015
An Analysis of Deep Nerual Network Models for Practical Applications 2017
Squeeze-and-Excitation Networks (SENet)
Squeeze Net: AlexNet-level Accuracy With 50✖ Fewer Parameters and < 0.5Mb Model Size
FractalNet: Ultra-Deep Neural Networks without Residuals Larsson et al. 2017
Densely Connected Convolutional Networks huang et al. 2017
MobileNets: Efficient Convolutional Neural Networks for Mobile Applications Howard et al.2017
Meta-learning: Learning to learn network architectures
Neural Architecture Search with Reinforcement Learning (NAS)
输入:当前输入,短期记忆,长期记忆
输出:当前输出,短期记忆,长期记忆
长期记忆乘以一个sigmoid的结果(遗忘一些东西);加上sigmodi的结果和tanh的结果(加上一些记忆)
短期记忆:(短期记忆+当前输入)乘上第一套权重,经过simoid遗忘门,供给一个0-1之间的遗忘系数给长期记忆;(短期记忆+当前输入)乘上第二套权重,经过一个sigmoid,(短期记忆+当前输入)乘上第三套权重经过一个tanh,以上两者相乘,给长期记忆供给一些新的记忆;
新的短期记忆(当前记忆单元的输出值):(短期记忆+当前输入)乘上第四套权重经过一个sigmoid,长期记忆经过一个tanh,以上两者相乘得到新的短期记忆,同时共给下一层和作为当前层的输出。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z4j3h96a-1602579943887)(cs213n课程笔记 .assets/image-20200910200440937.png)]
与ResNet对比,长期记忆乘上一个0.x值,加上新的记忆,给到下一层的长期记忆,不论如何都会有值
Res模块:当前输入乘上一套权重,ReLU之后,加上当前输出,给到下一层
Gated Recurrent Unit
Learning phrase representations using RNN encoder-decoder for statistical machine translation, 2014
输入图片,经过CNN得到特征向量,输入到RNN第一个hidden unit
测试时,输入图片和
RNN Architectures: Neural Achitectures Search
Zoph and Le, " Neural Achitectures Search with reinforence learning" ICLR 2017
Sequence --> LSTM(Encoder) --> LSTM(Decoder) --> Sequence
Sutskever et al. “Sequence to Sequence Learning with Neural Networks” NIPS 2014
用于机器翻译任务
机器翻译中的Attention机制
Bahdanau et al. “Neural machine translation by jointly learning to align and translation” ICLR 2015
Decoder 的每一个 timestep 都乘上一个系数 (Context Vector)
Image Captioning 中的Attention机制
Xu et al. “Neural Image Caption Generation with Visual Attention” ICMK 2015
每个卷积核对应一个Attention weights,与原始卷积叠加得到Decoder 的每一个 timestep 都乘上的系数(Context Vector)
X, Attedn, Y
"Show, attend, and tell"(Xu et al, /CML 2015)
Look at image, attend to image regions, produce question
"Ask, attend, and answer"(Xu and Saenko, ECCV 2016)
"Show, ask, attend, and answer"(Kazemi and Elqursh, 2017)
Read text of question, attend to image regions, produce answer
"Listen, attend, and spell"(Chan et al, ICASSP 2016)
Process raw audio, attend to audio regions while producing text
"Listen, attend, and walk"(Mei et al, AAA/ 2016)
Process text, attend to text regions, output navigation commands
Attention Layer 的种类还挺多:Attention Layer, Self-Attention Layer, Masked Self-Attention Layer, Multihead Self-Attention Layer
属于回归问题,Loss一般是L2
评价指标:mAP
单目标检测
label : (x, y, width, heigh)
多目标检测
根据目标数量不同,不同图片的label维度不同;一般首先选框,再用CNN判断类别
Region-Based CNN
选大概2000个框,分别CNN,判断各个框类别,选择一个候选框子集(top-K,对背景或者类别设置阈值,保留满足threshold的框)
对于原图,用一个backbone模型的前半部分得到Image features(使用全卷积以使得到的低维feature map中目标的相对位置和原图一致)–> crop (低维feature map中的crop 操作 fast)–> resize features --> per-region network (backbone 模型的后半部分) --> category and box transform per region
Region propals computed by heuristic “Selective Search” algorithm on CPU. So let’s learn them with a CNN instead!
Insert Region Proposal Network (RPN) from features
联合训练4种Loss
人体姿态估计: label(14 个关节点的坐标(x,y))
label(每个像素点对应一个类别)
全卷积网络(一般先降维,再升维)
Attach a branch for mask prediction , 先多目标检测选框,再在框中做分割
Raw Videos: long, high FPS
Training: Train model to classify short clips with low FPS
Testing: Test model on different clips and then average predictions
Early Fusion VS Late Fusion VS 3D CNN
Simoyan and Zisserman “Two-stream convolutional networks for action recognition in videos”, NIPS 2014
Zisserman 大佬团队的
原图+光流(Optical Flow)图,early fusion, 分别使用convNets
Donahue et al. “Long-term recurrent convolutional networks for visual recognition and description”, CVPR 2015
先用对每一帧用CNN提取,再用RNN串连 Feature Map,Good at long sequences
**Problem:**RNN计算费时不能并行
Ballas et al. “Delving Deepper into Convolutional Networks for Learning Video Representations” ICLR 2016
Wang et al. “Non-local neural networks” CVPR 2018
Carreira and Zisserman “Quo Vadis, Action Recognition? A New Model and the Kinetics Dataset” CVPR 2017
这二作不是VGG的二作嘛?
Feichtenhofer et al. “Deep Insights into Convolutional Networks for Video Recognition” IJCV 2019
Zisserman 这次是四作
添加一个term 鼓励平滑的光流,惩罚过快过慢的光流
可视化了Fast Motion 和 Slow Motion
Feichtenhofer et al. “SlowFast Networks for Video Recognition” ICCV 2019
Slow pathway: 选用low frame rate片段,经过大Channel,小Time 卷积
Fast pathway:同一个片段,但是使用high frame rate,经过小Channel,大TIme 卷积;Slow path的Channel x 1/8,TIme x 8,则两条路径的prediction维度相同
可以看到最后一层,Slowpath输出 C x T (2048 x 4),Fastpath输出 C x T (256 x 32) 维度相同
Chao et al, “Rethinking the Faster R-CNN Architecture for Temporal Action Localization” CVPR 2018
Gu et al, “AVA: A Video Dataset of Spatio-temporally Localized Atomic Visual Actions” CVPR 2018