* 评价指标
* 混淆矩阵(Confusion Matrix)
* 混淆矩阵的每一列代表了预测类别 ,每一列的总数表示预测为该类别的数据的数目;每一行代表了数据的真实归属类别 ,每一行的数据总数表示该类别的数据实例的数目。
* TP、FP、TN、FN
* 其中pn代表预测标签,tf代表的正误
* Recall召回率 = TP/TP+FN(所有实际为正)
* Precision精确率 = TP/TP+FP(所有预测为正)
* TPR真正率 = TP/TP+FN
* FPR假正率 = FP/FP+TN
* F1 值
* 精确率和召回率的调和均值
* [图片上传失败...(image-df7438-1552196291065)]
* Precision-Recall曲线
* 改变识别阈值,使得系统依次能够识别前K张图片,阈值的变化同时会导致Precision与Recall值发生变化,从而得到曲线
* Average-Precision平均精度:AP为PR曲线的面积
* mAP:多类别的曲线下平均面积
* ROC曲线
* 用不同的阀值,统计出一组不同阀值下的TPR(真阳率)和FPR(假阳率)的关系。y-x曲线
* 曲线绘制:
* 根据每个测试样本属于正样本的概率值从大到小排序;
* 从高到低,依次将“Score”值作为阈值threshold,当测试样本属于正样本的概率大于或等于这个threshold时,我们认为它为正样本,否则为负样本;
* 每次选取一个不同的threshold,我们就可以得到一组FPR和TPR,即ROC曲线上的一点。
* 当我们将threshold设置为1和0时,分别可以得到ROC曲线上的(0,0)和(1,1)两个点。将这些(FPR,TPR)对连接起来,就得到了ROC曲线。当threshold取值越多,ROC曲线越平滑。
* AUC曲线:为ROC曲线下的面积。AUC越接近于1,分类器性能越好。
* IOU:A∩B / A∪B
* NMS
* Non-Maximum Suppression非极大值抑制,是一种去重手段
* 根据score矩阵和region的坐标信息,从中找到置信度比较高的bounding box。对于有重叠在一起的预测框,只保留得分最高的那个。
* NMS计算出每一个bounding box的面积,然后根据score进行排序,把score最大的bounding box作为队列中首个要比较的对象;
* 计算其余bounding box与当前最大score与box的IoU,去除IoU大于设定的阈值的bounding box,保留小的IoU得预测框;
* 然后重复上面的过程,直至候选bounding box为空。
* 最终,检测了bounding box的过程中有两个阈值,一个就是IoU,另一个是在过程之后,从候选的bounding box中剔除score小于阈值的bounding box。需要注意的是:Non-Maximum Suppression一次处理一个类别,如果有N个类别,Non-Maximum Suppression就需要执行N次。
* Fps、FLOPS:每秒处理图像的帧数;每秒浮点运算次数、每秒峰值速度。
* GOPS:10亿次/每秒是衡量处理器计算能力的指标单位
* 经典神经网络
* Inception :扩展网络宽度
* v1
* inception block:通过concat操作,将经过不同kernel尺度的feature map进行concat,增加网络对尺度的适应性、增加网络的宽度,提高了网络内部资源的利用率。
* global average pooling:代替了全连接层,可以减少参数量,保留显著特征,降低特征维度。
* v2
* 提出BN层,减少Internal Covariate Shift,将每一次一个batch中的数据分布控制在均值为0,方差为1。
* v3
* 卷积核分解:使用两个3x3卷积核代替5x5卷积核,三个3x3卷积核代替7x7卷积核,减少参数量,加快计算。(两个3x3与一个5x5作用是一样的,其感受野都是5)
* 将nxn卷积核分解为1xn和nx1卷积核
* 减少feature map的size,增加channel数
* v4
* 引入残差结构。基于inception v4的网络实验发现在不引入残差结构的基础上也能达到和inception-resnet-v2结构相似的结果。
* ResNet:扩展网络的深度,增强流动性
* 残差结构,主要解决两个问题
* 梯度消失
* 随着网络深度增加,性能没有提升反而有所下降
* 本来要学习H(x),现在转换为F(x)+x,二者效果相同,但是优化难度下降,并且因为多了一个x,使得求导时总有1,避免了梯度消失问题。
* ResNext:扩展cardinality(基数)
* 采用了VGG堆叠思想和Inception的split-transform-merge思想,在不增加参数复杂度的前提下提高准确率。得到上一次feature map后,假设cardinality=32,则取32组1x1卷积核,每组4个,分别进行卷积,得到32组feature map,然后再分别进行3x3卷积,最后再通过1x1卷积把通道数还原回来
* 总结为:即feature map被复制为基数cardinality=32份,复制后使用1x1的卷积核先降维至4,经过一个3x3的卷积核后,再使用1x1卷积核升维回256,然后对32个基数的分支进行contact。或使用组卷积,采用32个group,每个group的输入输出的通道数都是4,总通道数为128,不需contact,直接恢复为256通道即可。
* DenseNet:全连接,增强流动性
* 主要思想是添加一个denseblock,将每一层都与后面的层连接起来,如果一个网络中有L层,那么会有L(L+1)/2个连接。
* bottleneck layer和translation layer:增加了1x1的卷积核来减少feature map数量。
* DenseNet的一个优点是网络更窄,参数更少,很大一部分原因得益于这种dense block的设计,后面有提到在dense block中每个卷积层的输出feature map的数量都很小(小于100),而不是像其他网络一样动不动就几百上千的宽度。同时这种连接方式使得特征和梯度的传递更加有效,网络也就更加容易训练。原文的一句话非常喜欢:Each layer has direct access to the gradients from the loss function and the original input signal, leading to an implicit deep supervision.直接解释了为什么这个网络的效果会很好。前面提到过梯度消失问题在网络深度越深的时候越容易出现,原因就是输入信息和梯度信息在很多层之间传递导致的,而现在这种dense connection相当于每一层都直接连接input和loss,因此就可以减轻梯度消失现象,这样更深网络不是问题。另外作者还观察到这种dense connection有正则化的效果,因此对于过拟合有一定的抑制作用,博主认为是因为参数减少了(后面会介绍为什么参数会减少),所以过拟合现象减轻。
* SENet:squeeze挤压和excitation激励,相当于在channel上的attention
* 挤压,即通过全局平均池化,将shape为[H, W, C]的feature map变为[1, 1, C]。
* 激励,首先通过一个全连接层进行降维,然后经过relu激活函数。即δ(W1z),再经过全连接进行升维,然后通过sigmoid进行权重激活。
* 目标检测系列网络
* RCNN系列
* RCNN
* 流程
* 使用Selective Search提取大约2000个候选区域(proposal);
* 对每个候选区域的图像进行拉伸形变,使之成为固定大小的正方形图像,并将该图像输入到CNN中提取特征;
* 使用线性的SVM对提取的特征进行分类。
* 选择性搜索(Selective Search)
* [https://zhuanlan.zhihu.com/p/27467369](https://zhuanlan.zhihu.com/p/27467369)
* 使用一种过分割手段,将图像分割成小区
* 查看现有小区域,合并可能性最高的两个区域。重复直到整张图像合并成一个区域位置
* 输出所有曾经存在过的区域,所谓候选区域
* 优先合并以下四种区域:
* - 颜色(颜色直方图)相近的
* - 纹理(梯度直方图)相近的
* - 合并后总面积小的
* - 合并后,总面积在其BBOX中所占比例大的
* 第三条,保证合并操作的尺度较为均匀,避免一个大区域陆续“吃掉”其他小区域。
* 第四条,保证合并后形状规则。
* Fast RCNN
* Fast RCNN方法解决了RCNN方法三个问题
* 问题一:测试时速度慢
* RCNN一张图像内候选框之间大量重叠,提取特征操作冗余。
* 本文将整张图像归一化后直接送入深度网络。在邻接时,才加入候选框信息,在末尾的少数几层处理每个候选框。
* 问题二:训练时速度慢
* 在训练时,本文先将一张图像送入网络,紧接着送入从这幅图像上提取出的候选区域。这些候选区域的前几层特征不需要再重复计算。
* 问题三:训练所需空间大
* RCNN中独立的分类器和回归器需要大量特征作为训练样本。
* 本文把类别判断和位置精调统一用深度网络实现,不再需要额外存储。
* ROI pooling
* 根据输入image,将ROI映射到feature map对应位置;
* 将映射后的区域划分为相同大小的sections(sections数量与输出的维度相同);
* 对每个sections进行max pooling操作;
* Faster RCNN
* faster RCNN可以简单地看做“区域生成网络+fast RCNN“的系统,用区域生成网络代替fast RCNN中的Selective Search方法。本篇论文着重解决了这个系统中的三个问题:
* 1\. 如何设计区域生成网络
* 2\. 如何训练区域生成网络
* 3\. 如何让区域生成网络和fast RCNN网络共享特征提取网络
* 算法流程
* 把整张图片送入CNN,进行特征提取;
* 在最后一层卷积feature map上生成region proposal(通过RPN),每张图片大约300个建议窗口;
* 通过RoI pooling层(其实是单层的SPP layer)使得每个建议窗口生成固定大小的feature map;
* 继续经过两个全连接层(FC)得到特征向量。特征向量经由各自的FC层,得到两个输出向量。第一个是分类,使用softmax,第二个是每一类的bounding box回归。利用SoftMax Loss和Smooth L1 Loss对分类概率和边框回归(Bounding Box Regression)联合训练。
* YOLO系列
* 采用单个卷积神经网络来预测多个bounding boxes和类别概率,主要优点有:速度快,背景预测的错误率低,对泛化信息的学习能力更强。YOLO的准确率没有最好的检测系统准确率高。YOLO可以快速识别图像中的目标,但是准确定位目标(特别是小目标)有点困难。
* YOLO
* [https://www.cnblogs.com/fariver/p/7446921.html](https://www.cnblogs.com/fariver/p/7446921.html)
* YOLO将全图划分为S*S的格子,每个格子负责中心在该格子的目标检测,采用一次性预测所有格子所含目标的bbox、定位置信度以及所有类别概率向量来将问题一次性解决(one-shot)。
* 网络的输出结果为一个张量,维度为S∗S∗(B∗5+C)
* 其中,S为划分网格数,B为每个网格负责目标个数,C为类别个数。该表达式含义为:
* (1) 每个小格会对应B个边界框,边界框的宽高范围为全图,表示以该小格为中心寻找物体的边界框位置。
* (2) 每个边界框对应一个分值,代表该处是否有物体及定位准确度:
* (3) 每个小格会对应C个概率值,找出最大概率对应的类别P(Class|object)P(Class|object),并认为小格中包含该物体或者该物体的一部分。
* Loss = λcoord* 坐标预测误差(1) + 含object的box confidence预测误差 (2)+ λnoobjλnoobj* 不含object的box confidence预测误差(3) + 每个格子中类别预测误差(4)
* YOLO V2
* [https://blog.csdn.net/jesse_mx/article/details/53925356](https://blog.csdn.net/jesse_mx/article/details/53925356)
* 2.1 BatchNorm
* 2.2 预训练尺寸
* yolov1也在Image-Net预训练模型上进行fine-tune,但是预训练时网络入口为224 x 224,而fine-tune时为448 x 448,这会带来预训练网络与实际训练网络识别图像尺寸的不兼容。yolov2直接使用448 x 448的网络入口进行预训练,然后在检测任务上进行训练,效果得到3.7%的提升。
* 2.3 更细网络划分
* yolov2为了提升小物体检测效果,减少网络中pooling层数目,使最终特征图尺寸更大,如输入为416 x 416,则输出为13 x 13 x 125,其中13 x 13为最终特征图,即原图分格的个数,125为每个格子中的边界框构成(5 x (classes + 5))。需要注意的是,特征图尺寸取决于原图尺寸,但特征图尺寸必须为奇数,以此保存中间有一个位置能看到原图中心处的目标。
* 2.4 全卷积网络
* 为了使网络能够接受多种尺寸的输入图像,yolov2除去了v1网络结构中的全连层,因为全连接层必须要求输入输出固定长度特征向量。将整个网络变成一个全卷积网络,能够对多种尺寸输入进行检测。同时,全卷积网络相对于全连接层能够更好的保留目标的空间位置信息。
* 2.5 新基础网络
* 作者所使用darknet-19作为基础预训练网络(共19个卷积层),能在保持高精度的情况下快速运算。而SSD使用的VGG-16作为基础网络,VGG-16虽然精度与darknet-19相当,但运算速度慢。关于darknet-19基础网络速度
* 2.6 anchor机制
* yolov2为了提高精度与召回率,使用Faster-RCNN中的anchor机制。以下为我对anchor机制使用的理解:在每个网格设置k个参考anchor,训练以GT anchor作为基准计算分类与回归损失。测试时直接在每个格子上预测k个anchor box,每个anchor box为相对于参考anchor的offset与w,h的refine。这样把原来每个格子中边界框位置的全图回归(yolov1)转换为对参考anchor位置的精修(yolov2)。
* 至于每个格子中设置多少个anchor(即k等于几),作者使用了k-means算法离线对voc及coco数据集中目标的形状及尺度进行了计算。发现当k = 5时并且选取固定5比例值的时,anchors形状及尺度最接近voc与coco中目标的形状,并且k也不能太大,否则模型太复杂,计算量很大。
* 2.7 Direct location prediction(直接位置预测)
* 这个公式没有任何限制,使得无论在什么位置进行预测,任何anchor boxes可以在图像中任意一点结束(我的理解是,txtx 没有数值限定,可能会出现anchor检测很远的目标box的情况,效率比较低。正确做法应该是每一个anchor只负责检测周围正负一个单位以内的目标box)。模型随机初始化后,需要花很长一段时间才能稳定预测敏感的物体位置。
* 在此,作者就没有采用预测直接的offset的方法,而使用了预测相对于grid cell的坐标位置的办法,作者又把ground truth限制在了0到1之间,利用logistic回归函数来进行这一限制。
* 2.8 Fine-Grained Features(细粒度特征)
* 为了使用网络能够更好检测小物体,作者使用了resnet跳级层结构,网络末端的高级特征层与前一层或者前几层的低级细粒度特征结合起来,增加网络对小物体的检测效果,使用该方法能够将mAP提高1%。
* 2.9 Multi-Scale Training(多尺寸训练)
* yolov2网络结构为全卷积网络FCN,可以适于不同尺寸图片作为输入,但要满足模型在测试时能够对多尺度输入图像都有很好效果,作者训练过程中每10个epoch都会对网络进行新的输入尺寸的训练。需要注意的是,因为全卷积网络总共对输入图像进行了5次下采样(步长为2的卷积或者池化层), 所以最终特征图为原图的1/32。所以在训练或者测试时,网络输入必须为32的位数。并且最终特征图尺寸即为原图划分网络的方式。
* YOLO V3
* SSD系列
* [https://zhuanlan.zhihu.com/p/33544892](https://zhuanlan.zhihu.com/p/33544892)
* SSD
* (1)采用多尺度特征图用于检测
* 所谓多尺度采用大小不同的特征图,CNN网络一般前面的特征图比较大,后面会逐渐采用stride=2的卷积或者pool来降低特征图大小,这正如图3所示,一个比较大的特征图和一个比较小的特征图,它们都用来做检测。这样做的好处是比较大的特征图来用来检测相对较小的目标,而小的特征图负责检测大目标,如图4所示,8x8的特征图可以划分更多的单元,但是其每个单元的先验框尺度比较小。
* (2)采用卷积进行检测
* 与Yolo最后采用全连接层不同,SSD直接采用卷积对不同的特征图来进行提取检测结果。对于形状为 的特征图,只需要采用 这样比较小的卷积核得到检测值。
* (3)设置先验框
* 在Yolo中,每个单元预测多个边界框,但是其都是相对这个单元本身(正方块),但是真实目标的形状是多变的,Yolo需要在训练过程中自适应目标的形状。而SSD借鉴了Faster R-CNN中anchor的理念,每个单元设置尺度或者长宽比不同的先验框,预测的边界框(bounding boxes)是以这些先验框为基准的,在一定程度上减少训练难度。一般情况下,每个单元会设置多个先验框,其尺度和长宽比存在差异,如图5所示,可以看到每个单元使用了4个不同的先验框,图片中猫和狗分别采用最适合它们形状的先验框来进行训练,后面会详细讲解训练过程中的先验框匹配原则。
* SSD V2
* 图像分割网络
* FCN 全卷积神经网络
* 将传统CNN中的全连接层转化成一个个的卷积层。
* 在传统的CNN结构中,前5层是卷积层,第6层和第7层分别是一个长度为4096的一维向量,第8层是长度为1000的一维向量,分别对应1000个类别的概率。FCN将这3层表示为卷积层,卷积核的大小(通道数,宽,高)分别为(4096,1,1)、(4096,1,1)、(1000,1,1)。所有的层都是卷积层,故称为全卷积网络。
* 改进方法,引入条件随机场CRF
* 上采样与反卷积
* [https://blog.csdn.net/a_a_ron/article/details/79181108](https://blog.csdn.net/a_a_ron/article/details/79181108)
* [https://www.cnblogs.com/cvtoEyes/p/8513958.html](https://www.cnblogs.com/cvtoEyes/p/8513958.html)
* 实现对于每个像素点类别的预测,需要上采样,FCN中的上采样需要通过反卷积来完成
* 轻量型网络
* [https://blog.csdn.net/liuxiao214/article/details/81875251](https://blog.csdn.net/liuxiao214/article/details/81875251)
* Xception
* Shufflenet
* Moblienet
* Squeezenet
* 生成对抗系列网络
* DCGAN
* NLP系列网络
* RNN
* LSTM
* SuperResolution系列网络
* [https://zhuanlan.zhihu.com/p/31664818](https://zhuanlan.zhihu.com/p/31664818)
* SRCNN
* SRCNN首先使用双三次(bicubic)插值将低分辨率图像放大成目标尺寸,接着通过三层卷积网络拟合非线性映射,最后输出高分辨率图像结果。本文中,作者将三层卷积的结构解释成三个步骤:图像块的提取和特征表示,特征非线性映射和最终的重建。
* VDSR
* [图片上传失败...(image-94bc2-1552196291066)]
* VDSR将插值后得到的变成目标尺寸的低分辨率图像作为网络的输入,再将这个图像与网络学到的残差相加得到最终的网络的输出。VDSR主要有4点贡献。
* 1.加深了网络结构(20层),使得越深的网络层拥有更大的感受野。文章选取3×3的卷积核,深度为D的网络拥有(2D+1)×(2D+1)的感受野。
* 2.采用残差学习,残差图像比较稀疏,大部分值都为0或者比较小,因此收敛速度快。VDSR还应用了自适应梯度裁剪(Adjustable Gradient Clipping),将梯度限制在某一范围,也能够加快收敛过程。
* 3.VDSR在每次卷积前都对图像进行补0操作,这样保证了所有的特征图和最终的输出图像在尺寸上都保持一致,解决了图像通过逐步卷积会越来越小的问题。文中说实验证明补0操作对边界像素的预测结果也能够得到提升。
* 4.VDSR将不同倍数的图像混合在一起训练,这样训练出来的一个模型就可以解决不同倍数的超分辨率问题。
* LapSRN
* [图片上传失败...(image-8beced-1552196291066)]
* LapSRN的结构可以看成有多级,每一级完成一次2倍的上采样操作,要实现8倍的上采样就需要有三级。在每一级中,先通过一些级联的卷积层提取特征,接着通过一个反卷积层将提取出的特征的尺寸上采样2倍。反卷积层后连有两个卷积层,一个卷积层的作用是继续提取特征,另外一个卷积层的作用是预测出这一级的残差。输入图像在每一级也经过一个反卷积层使尺寸上采样2倍,再与对应级的残差相加,就能重构出这一级的上采样结果。
* 通过逐步上采样,一级一级预测残差的方式,在做高倍上采样时,也能得到中间低倍上采样结果的输出。由于尺寸是逐步放大,不是所有的操作都在大尺寸特征上进行,因此速度比较快。LapSRN设计了损失函数来训练网络,对每一级的结果都进行监督,因此取得了不错的结果。
* SRdensenet/SRGAN
* EDSR
* EDSR最有意义的模型性能提升是去除掉了SRResNet多余的模块,从而可以扩大模型的尺寸来提升结果质量。
- 图像库相似度搜索
- 1、哈希
- 2、三种深度学习的方法
- 3、sift特征
- 4、很全的综述文章!!建议看
- 5、一些论文
- 6、深度学习应用
* 小 / 零样本学习
* Attention机制
* 理解attention机制 [https://blog.csdn.net/yideqianfenzhiyi/article/details/79422857](https://blog.csdn.net/yideqianfenzhiyi/article/details/79422857)
* 1)学习权重分布:输入数据或特征图上的不同部分对应的专注度不同:
* - 这个加权可以是保留所有分量均做加权(即soft attention);也可以是在分布中以某种采样策略选取部分分量(即hard attention),此时常用RL来做。
* - 这个加权可以作用在原图上,也就是《Recurrent Model of Visual Attention》(RAM)和《Multiple Object Recognition with Visual Attention》(DRAM);也可以作用在特征图上,如后续的好多文章(例如image caption中的《 Show, Attend and Tell: Neural Image Caption Generation with Visual Attention》)。
* - 这个加权可以作用在空间尺度上,给不同空间区域加权;也可以作用在channel尺度上,给不同通道特征加权;甚至特征图上每个元素加权。
* - 这个加权还可以作用在不同时刻历史特征上,如Machine Translation。
* 2) 任务聚焦/解耦:通过将任务分解,设计不同的网络结构(或分支)专注于不同的子任务,重新分配网络的学习能力,从而降低原始任务的难度,使网络更加容易训练。
* -Mask R-CNN。将segment branch的损失函数由softmax loss换成了binary sigmoid loss。即是,将分类和分割任务进行解耦,当box branch已经分好类时,segment branch 就不用再关注类别,只需要关注分割,从而使网络更加容易训练。也就是说,生成狗mask的那部分网络连接(卷积核)只需要聚焦于狗类的样本,然后将属于狗的像素目标凸显出来出来,训练其他类别时不会对这些连接权重进行更新。
* -Fully Convolutional Network with Task Partitioning for Inshore Ship Detection in Optical Remote Sensing Images。训练中,使用Attention Map对浅层网络的loss进行引导,只反传在粗的船头/船尾位置上的loss,其他地方的loss不反传。相当于,深层的网络能得到一个船头/船尾的大概位置,然后浅层网络只需要关注这些大概位置,然后预测出精细的位置,图像中的其他部分(如船身、海洋和陆地)都不关注,从而降低了学习的难度。
* Attention 详解公示及相关模型 [https://zhuanlan.zhihu.com/p/31547842](https://zhuanlan.zhihu.com/p/31547842)
* Loss损失函数
* softmax Loss
* cross cronty
* Center Loss
* Triple Loss
* 最优化方法(需要手推一遍)
* [http://www.cnblogs.com/maybe2030/p/4751804.html](http://www.cnblogs.com/maybe2030/p/4751804.html)
##* 梯度下降
* 梯度下降法的优化思想是用当前位置负梯度方向作为搜索方向,因为该方向为当前位置的最快下降方向,所以也被称为是”最速下降法“。最速下降法越接近目标值,步长越小,前进越慢。
* 梯度下降法的缺点:
* 靠近极小值时收敛速度减慢,如下图所示;
* 直线搜索时可能会产生一些问题;
* 可能会“之字形”地下降。
* 批量梯度下降法(Batch Gradient Descent,BGD)
* 最小化所有训练样本的损失函数,使得最终求解的是全局的最优解,即求解的参数是使得风险函数最小,但是对于大规模样本问题效率低下。
* 随机梯度下降(Stochastic Gradient Descent,SGD)
* 最小化每条样本的损失函数,虽然不是每次迭代得到的损失函数都向着全局最优方向, 但是大的整体的方向是向全局最优解的,最终的结果往往是在全局最优解附近,适用于大规模训练样本情况
* 两者的关系可以这样理解:随机梯度下降方法以损失很小的一部分精确度和增加一定数量的迭代次数为代价,换取了总体的优化效率的提升。增加的迭代次数远远小于样本的数量。
* 牛顿法
* 梯度下降法只用到了梯度信息,即目标函数的一阶导数信息,而牛顿法则用到了二阶导数信息。
* 优点:二阶收敛,收敛速度快;
* 缺点:牛顿法是一种迭代算法,每一步都需要求解目标函数的Hessian矩阵的逆矩阵,计算比较复杂。
* 从本质上去看,牛顿法是二阶收敛,梯度下降是一阶收敛,所以牛顿法就更快。如果更通俗地说的话,比如你想找一条最短的路径走到一个盆地的最底部,梯度下降法每次只从你当前所处位置选一个坡度最大的方向走一步,牛顿法在选择方向时,不仅会考虑坡度是否够大,还会考虑你走了一步之后,坡度是否会变得更大。所以,可以说牛顿法比梯度下降法看得更远一点,能更快地走到最底部。(牛顿法目光更加长远,所以少走弯路;相对而言,梯度下降法只考虑了局部的最优,没有全局思想。)
* 根据wiki上的解释,从几何上说,牛顿法就是用一个二次曲面去拟合你当前所处位置的局部曲面,而梯度下降法是用一个平面去拟合当前的局部曲面,通常情况下,二次曲面的拟合会比平面更好,所以牛顿法选择的下降路径会更符合真实的最优下降路径。
* 拟牛顿法
* 拟牛顿法的本质思想是改善牛顿法每次需要求解复杂的Hessian矩阵的逆矩阵的缺陷,它使用正定矩阵来近似Hessian矩阵的逆,从而简化了运算的复杂度。
* 拟牛顿法和最速下降法一样只要求每一步迭代时知道目标函数的梯度。通过测量梯度的变化,构造一个目标函数的模型使之足以产生超线性收敛性。这类方法大大优于最速下降法,尤其对于困难的问题。
* 共轭梯度法
* 共轭梯度法是介于最速下降法与牛顿法之间的一个方法,它仅需利用一阶导数信息,但克服了最速下降法收敛慢的缺点,又避免了牛顿法需要存储和计算Hesse矩阵并求逆的缺点,共轭梯度法不仅是解决大型线性方程组最有用的方法之一,也是解大型非线性最优化最有效的算法之一。
* 启发式优化方法
* [http://www.cnblogs.com/maybe2030/p/4665837.html](http://www.cnblogs.com/maybe2030/p/4665837.html)
* 启发式方法指人在解决问题时所采取的一种根据经验规则进行发现的方法。其特点是在解决问题时,利用过去的经验,选择已经行之有效的方法,而不是系统地、以确定的步骤去寻求答案。启发式优化方法种类繁多,包括经典的模拟退火方法、遗传算法、蚁群算法以及粒子群算法等等。
* 还有一种特殊的优化算法被称之多目标优化算法,它主要针对同时优化多个目标(两个及两个以上)的优化问题,这方面比较经典的算法有NSGAII算法、MOEA/D算法以及人工免疫算法等。
* 机器学习常用的几种优化方法
* SGD
* Momentum
* Nesterov Momentum
* Adagrad
* RMS Prop
* Adam
* 既然有这么多方法,为什么很多论文里面还是用的SGD?需要注意的是,其他的方法在计算性能和收敛方面确实优秀很多,有的甚至不用认为干涉,它会自适应的调整参数,但是,在良好的调参情况下,SGD收敛到的最优解一般是最好的
* 激活函数
* 正则化
* Tricks
* 伪标签(Pseudo-Labelling):针对训练集和测试集不同分布的问题
* 一种半监督机器学习技术
* [http://www.atyun.com/8381.html](http://www.atyun.com/8381.html)
* Label Smoothing Regularization_LSR:针对过拟合问题
* [https://www.zhihu.com/question/61971817](https://www.zhihu.com/question/61971817)
* [https://www.cnblogs.com/zyrb/p/9699168.html](https://www.cnblogs.com/zyrb/p/9699168.html)