怎么判断是不是网图看Residual vs Leverage图

数学建模方法详解--三十四种常用算法,sift算法详解,kmp算法详解,钢筋算法与实例详解,fp growth算法详解,aes算法详解,数学建模算法与应用,vibe算法详解,3d建模算法,linux常用命令详解

真实世界的数据由于测量误差、错误记录等原因,经常存在一些偏离其它大部分样本的特异值这些特异值,常常会对数据分析造成很大的干扰所以,如何在保留数據信息的基础上辨别和剔除特异值,往往成为数据处理的第一步如果是通过模型来进行分析,同样需要了解数据中的特异值是否会影響模型的准确性

很多研究在提及特异值时只检查了离群值,然而离群值就是特异值的全部吗并不是。本文将介绍几种特异值以及常用嘚辨别方法我们将看到,离群值不一定对回归分析造成很大的影响引起回归偏差的数据点(强影响点)也并不一定就是离群值。

所以在數据分析时,我们需要综合考虑不同种类的特异值:离群值、高杠杆点以及强影响点

文中案例分析用到的数据集为R软件ISLR包中的Carseats数据,包括了400家商店某品牌儿童安全座椅的销售数据变量包括销量(Sales,单位为千个)、广告宣传(Advertising单位为千美元)以及定价(Price,单位为千美元)等

假设某销售经理希望通过这个数据集,判断销量是否与宣传和定价相关那么,自变量就是宣传和定价因变量为该儿童座椅的销量。(后文中图下方若未特殊指明均表明是用上述数据集,简称儿童座椅数据

因变量的特异值即离群值常常通过箱式图或学生化残差识别。

  • 方法一:箱式图(box-plot)

大部分统计分析软件的箱式图绘制模块都自带辨别离群值的功能以R软件为例,在箱式图中会以“°”标示离群值,即以下样本点:

- 大于箱子上边缘+/)

加载中请稍候......

(1).如果只是单纯地把卷积层和池化層进行堆叠造成的问题就会有梯度消失和梯度爆炸,梯度消失是指当在某一层进行BP的时候误差为一个小于零的数,那不断相乘就会趨近于零。梯度爆炸则是指某一层的开始误差都是大于1的数直接相乘就会导致梯度爆炸。这种情况的处理方法就是对数据进行标准化处悝和bn标准化处理特征图
(2).退化问题就是本来训练到20层已经达到了99%,但是30层训练之后的正确率反而小于99%resnet通过残差结构(就是那条捷径)解决了退化问题,使之层数增加准确率是一直增加。所以它可以一直堆叠层数从而提高识别准确率。

首先需要明确几个概念残差层是指Conv_2,Conv_3這种包含多个残差结构的组合然后残差结构是指下图中单个residual结构
(2) 途中画方框的地方是这两种残差结构的input的channel都是256,各自所需要的参数个数

(1) 首先,带有虚线的残差结构只在ResNet18,34中的Conv_34,5的第一个残差结构出现,和ResNet50.101.152中的每一残差层的第一个残差结构出现
(3) 除了ResNet18,34中的Conv_2层之外,其余类型嘚残差层都是虚线残差结构+实现残差结构的组合并且一般第一个残差结构是虚线,然后接下去的都是实线残差结构而虚线的残差结构昰用来改变input的shape和channels的,实现是保持虚线改变之后的shape和channels直到输出到下一个Conv

dropout只适合用于全连接层的失活,而BN更适用于卷积层得出的特征图且降低过拟合的效果更佳。

对input的image进行normalization使之符合特定的正态分布能够加速网络的收敛同理也可对学习过程中产生的feature map进行标准化处理。BN就是使嘚每一个feature map的每一个值都满足均值为0方差为1的分布律。下面对下图中的参数进行一下解释

μB:一批特征图中所有同一个通道的数值均值,输入有多少个channel就有多少个μ
方差(字母不会打。):一批特征图中所有同一个通道的数值方差
xi:对每一个特征图中的每一个维度中的數值进行正值化后的数值

因为如果只是通过xi来得出的只是一个均值为零方差为1的分布,有时候不一定是最好的分布所以要在下面设置┅个线性变换通过深度学习确定两个参数α和β,从而找到一个加速收敛效果最佳的分布

2)batch size尽可能设置大点,设置小后表现可能很糟糕设置嘚越大求的均值和方差越接近整个训练集的均值和方差。

3)建议将bn层放在卷积层(Conv)和激活层(例如Relu)之间且卷积层不要使用偏置bias,因为沒有用参考下图推理,即使使用了偏置bias求出的结果也是一样的


预训练模型,一般使用pytorch官网预训练的模型上面有下载链接。

(2) 数据集预處理(也叫数据增强)

1)优化器算法原理步骤

1.计算目标函数关于当前参数的梯度
2.根据历史梯度计算一阶动量和二阶动量
3.计算当前时刻的下降梯度
4.根据下降梯度进行更新

2)各种优化器及其发展过程

个时刻的梯度向量和的平均值),SGD最大的缺点是下降速度慢而且可能会在沟壑的两边歭续震荡,停留在一个局部最优点加入动量可以抑制这个震荡,能够加速收敛

自适应学习率的优化算法

AdaGrad:上面的固定学习率优化算法并沒有考虑到不同的权重参数对学习率的要求不同,可能一些权重经过大量的训练之后就只需要进行微小的细调就可以了而一些权重参数鈳能还需要进行较大的学习变化,那怎么判断是不是网图判断那些参数已经训练过很多次不用再进行大调呢这时候就需要引入二阶动量(该维度上,迄今为止所有梯度值的平方和)更新越频繁,二阶动量就越大对应学习率就应该越小,反之从而进行自适应调整学习率。
AdaDelta / RMSProp:不累积全部历史梯度而只关注过去一段时间窗口的下降梯度。避免了二阶动量持续累积、导致训练过程提前结束的问题

总的来说,SGD就是随机选取一个mini batch的数据然后求出这个mini batch的损失函数的梯度然后用这个梯度去更新总的权重矩阵

(具体解释可以看这个参考链接,最重偠就是sgd就是引入了一个randomness使之能较快跳出"困局")

SGD走的路径比较曲折(震荡),就是花的时间比较长尤其是batch比较小的情况下。

Adam等自适应学習率算法对于稀疏数据具有优势且收敛速度很快;但精调参数的SGD(+Momentum)往往能够取得更好的最终结果。

(1) 首先各大算法孰优孰劣并无定论。如果是刚入门优先考虑SGD+Nesterov Momentum或者Adam。
(2) 选择你熟悉的算法——这样你可以更加熟练地利用你的经验进行调参
(3) 充分了解你的数据——如果模型昰非常稀疏的,那么优先考虑自适应学习率的算法
(4) 根据你的需求来选择——在模型设计实验过程中,要快速验证新模型的效果可以先鼡Adam进行快速实验优化;在模型上线或者结果发布前,可以用精调的SGD进行模型的极致优化
(5) 先用小数据集进行实验。有论文研究指出随机梯度下降算法的收敛速度和数据集的大小的关系不大。.因此可以先用一个具有代表性的小数据集进行实验测试一下最好的优化算法,并通过参数搜索来寻找最优的训练参数
(6) 考虑不同算法的组合。先用Adam进行快速下降而后再换到SGD进行充分的调优。切换策略可以参考本文介紹的方法数据集一定要充分的打散(shuffle)。这样在使用自适应学习率算法的时候可以避免某些特征集中出现,而导致的有时学习过度、囿时学习不足使得下降方向出现偏差的问题。
(7) 训练过程中持续监控训练数据和验证数据上的目标函数值以及精度或者AUC等指标的变化情况对训练数据的监控是要保证模型进行了充分的训练——下降方向正确,且学习率足够高;对验证数据的监控是为了避免出现过拟合
(8) 制萣一个合适的学习率衰减策略。可以使用定期衰减策略比如每过多少个epoch就衰减一次;或者利用精度或者AUC等性能指标来监控,当测试集上嘚指标不变或者下跌时就降低学习率。

(4) 深度学习中的超参数

momentum:动量sgd收敛速度较慢,加上动量可以加大收敛速度和更有效避开鞍点。一個小的trick是当刚开始训练的时候,把动量设小或者直接就置为0,然后慢慢增大冲量有时候效果比较好。
weight decay: 权重衰减也就是正则项的前媔的一个系数。

正则项的定义:就在原损失函数后面加上一个值这个值等于所有的权重的平方和除以2n再乘以一个系数,那个系数就是weight decay
(1)使用正则项既不是为了提高收敛精确度也不是为了提高收敛速度,其最终目的是防止过拟合所以weight decay的作用是调节模型复杂度对损失函數的影响,若weight decay很大则复杂的模型损失函数的值也就大。
(2)如果过拟合调大这个参数;如果欠拟合,调小这个参数
正则项防止过拟匼的原理
(1)首先L2正则项具有降低w的作用,从模型的复杂度上解释:较小的权值w从某种意义上说,表示网络的复杂度较低对数据的擬合更好(这个法则也叫做奥卡姆剃刀),而在实际应用中也验证了这一点,L2正则化的效果往往好于未经正则化的效果
(2)从数学方媔的解释:过拟合的时候,拟合函数的系数往往非常大为什么?如下图所示过拟合,就是拟合函数需要顾忌每一个点最终形成的拟匼函数波动很大。在某些很小的区间里函数值的变化很剧烈。这就意味着函数在某些小区间里的导数值(绝对值)非常大由于自变量徝可大可小,所以只有系数足够大才能保证导数值很大。而正则化是通过约束参数的范数使其不要太大所以可以在一定程度上减少过擬合情况。

learning rate:学习率决定了权值更新的速度。设置得太大会使结果超过最优值太小会使下降速度过慢。一个有效平衡训练时间和收敛精喥的方法就是学习率衰减

专门用于解决batch size规模大于单个gpu内存的情况。

(6) 输出网络中的参数的方法


最后要特别感谢陈博士的耐心指点和高老师指导明确了我的学习方向让我少走了很多弯路。

我要回帖

更多关于 怎么判断是不是网图 的文章

 

随机推荐