机器学习、深度学习知识点总结

  • bagging boosting和提升树
  • bagging是通过结合几个模型降低泛化误差,分别训练几个不同的模型,然后让所有的模型表决测试样例的输出。模型平均奏效的原因是不同的模型通常不会在测试集上产生完全相同的误差。从原始样本集中抽取训练集.每轮从原始样本集中使用Bootstraping的方法抽取n个训练样本(在训练集中,有些样本可能被多次抽取到,而有些样本可能一次都没有被抽中).共进行k轮抽取,得到k个训练集.(k个训练集相互独立)

  • Bagging是并行的学习算法,思想很简单,即每一次从原始数据中根据均匀概率分布有放回的抽取和原始数据集一样大小的数据集合。样本点可以出现重复,然后对每一次产生的数据集构造一个分类器,再对分类器进行组合。对于分类问题,将上步得到的k个模型采用投票的方式得到分类结果;对回归问题,计算上述模型的均值作为最后的结果.

  • Boosting是一族可将弱学习器提升为强学习器的算法.Boosting的每一次抽样的样本分布是不一样的,每一次迭代,都是根据上一次迭代的结果,增加被错误分类的样本的权重。使模型在之后的迭代中更加注重难以分类的样本。这是一个不断学习的过程,也是一个不断提升的过程,这就是Boosting思想的本质所在。迭代之后,将每次迭代的基分类器进行集成,那么如何进行样本权重的调整和分类器的集成是我们需要考虑的关键问题。

Bagging和Boosting的区别:

  • 1)样本选择上:Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的. Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化.而权值是根据上一轮的分类结果进行调整.

  • 2)样例权重:Bagging:使用均匀取样,每个样例的权重相等 Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大.

  • 3)预测函数:Bagging:所有预测函数的权重相等. Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重.

  • 4)并行计算:Bagging:各个预测函数可以并行生成 Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果.

Bagging 是 Bootstrap Aggregating 的简称,意思就是再取样 (Bootstrap) 然后在每个样本上训练出来的模型取平均,所以是降低模型的 variance. Bagging 比如 Random Forest 这种先天并行的算法都有这个效果。Boosting 则是迭代算法,每一次迭代都根据上一次迭代的预测结果对样本进行加权,所以随着迭代不断进行,误差会越来越小,所以模型的 bias 会不断降低High variance 是model过于复杂overfit,记住太多细节noise,受outlier影响很大;high bias是underfit,model过于简单,cost function不够好。boosting是把许多弱的分类器组合成一个强的分类器。弱的分类器bias高,而强的分类器bias低,所以说boosting起到了降低bias的作用。variance不是boosting的主要考虑因素。bagging是对许多强(甚至过强)的分类器求平均。在这里,每个单独的分类器的bias都是低的,平均之后bias依然低;而每个单独的分类器都强到可能产生overfitting的程度,也就是variance高,求平均的操作起到的作用就是降低这个variance。Bagging算法的代表:RandomForest随机森林算法的注意点:

  • 在构建决策树的过程中是不需要剪枝的。

  • 整个森林的树的数量和每棵树的特征需要人为进行设定。

  • 构建决策树的时候分裂节点的选择是依据最小基尼系数的。

咱们机器学习升级版的随机森林章节,我用白板写了写这个公式:p = 1 - (1 - 1/N)^N,其意义是:一个样本在一次决策树生成过程中,被选中作为训练样本的概率,当N足够大时,约等于63.2%。简言之,即一个样本被选中的概率是63.2%,根据二项分布的的期望,这意味着大约有63.2%的样本被选中。即有63.2%的样本是不重复的,有36.8%的样本可能没有在本次训练样本集中。随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定。随机森林的随机性体现在每颗树的训练样本是随机的,树中每个节点的分裂属性集合也是随机选择确定的。有了这2个随机的保证,随机森林就不会产生过拟合的现象了。随机森林是用一种随机的方式建立的一个森林,森林是由很多棵决策树组成的,每棵树所分配的训练样本是随机的,树中每个节点的分裂属性集合也是随机选择确定的。

  • 为什么深度学习中的图像分割要先编码后解码

降采样是手段不是目的:

  • 降低显存和计算量,图小了显存也小,计算量也小;

  • 增大感受野,使用同样3x3的卷积能在更大的图像范围上进行特征提取。大感受野对分割很重要,小感受野做不了多分类分割,而且分割出来很粗糙

  • 多出几条不同程度额下采样分支,可以方便进行多尺度特征的融合。多级语义融合会让分类更加准确。

降采样的理论意义,它可以增加对输入图像的一些小扰动的鲁棒性,比如图像平移,旋转等,减少过拟合的风险,降低运算量,和增加感受野的大小。

  • 全局平均池化average pooling和全局最大池化max pooling的区别
  • 最大池化保留了纹理特征

  • 平均池化保留整体的数据特征

  • 全局平均池化有定位的作用

最大池化提取边缘等“最重要”的特征,而平均池化提取的特征更加smoothly。对于图像数据,你可以看到差异。虽然两者都是出于同样的原因使用,但我认为max pooling更适合提取极端功能。平均池有时不能提取好的特征,因为它将全部计入并计算出平均值,这对于对象检测类型任务可能不好用但使用平均池化的一个动机是每个空间位置具有用于期望特征的检测器,并且通过平均每个空间位置,其行为类似于平均输入图像的不同平移的预测(有点像数据增加)。Resnet不是采用传统的完全连通层进行CNN分类,而是直接从最后一个mlp转换层输出特征图的空间平均值,作为通过全局平均合并层的类别置信度,然后将得到的矢量输入到 softmax层。相比之下,Global average更有意义且可解释,因为它强制实现了feature和类别之间的对应关系,这可以通过使用网络的更强大的本地建模来实现。此外,完全连接的层易于过拟合并且严重依赖于 dropout 正则化,而全局平均池化本身就是起到了正则化作用,其本身防止整体结构的过拟合

  • 全连接的作用,与1×1卷积层的关系

在实际使用中,全连接层可由卷积操作实现:对前层是全连接的全连接层可以转化为卷积核为1x1的卷积;而前层是卷积层的全连接层可以转化为卷积核为hxw的全局卷积,h和w分别为前层卷积结果的高和宽使用 global average pooling 全局平均池化来代替卷积

  • 全连接层(fully connected layers,FC)在整个卷积神经网络中起到“分类器”的作用。如果说卷积层、池化层和激活函数层等操作是将原始数据映射到隐层特征空间的话,全连接层则起到将学到的“分布式特征表示”映射到样本标记空间的作用。在实际使用中,全连接层可由卷积操作实现:对前层是全连接的全连接层可以转化为卷积核为1x1的卷积;而前层是卷积层的全连接层可以转化为卷积核为hxw的全局卷积,h和w分别为前层卷积结果的高和宽

那么,1*1卷积的主要作用有以下几点:

  • 降维( dimension reductionality )。比如,一张500x500且厚度depth为100的图片在20个filter上做1*1的卷积,那么结果的大小为500*500*20

  • 加入非线性。卷积层之后经过激励层,1*1的卷积在前一层的学习表示上添加了非线性激励( non-linear activation ),提升网络的表达能力,但是也可以这样说:使之由单纯的线性变换,变为复杂的feature map之间的线性组合,从而实现特征的高度抽象过程。这一过程视为由线性变换为非线性,提高抽象程度。而非加入激活函数的作用。

  • 个人应该是降维或者升维来减小参数个数和增加网络深度,以及跨通道的特征聚合

  • 可以代替全连接层

  • concat 与 add(sum)的区别
  • concat改成sum确实会好很多,这两个都是特征融合,到底有什么本质区别呢?我用的时候也没什么原则就是两个都试一下(其实更喜欢用sum,毕竟更省显存)。

  • 我之前做过类似ASP的实验,金字塔型空洞卷积融合,最后实验结果sum比concat要好一些,但是原因不知道怎么解释

  • 我看过一些论文是concat比sum好的,可能这跟数据集等具体情况有关吧

  • 不同的特征 sum 了,有什么意义呢,这些特征又损失了吧;如果直接 concat,让后面的网络学习,应该更好啊,用到的特征更多了

  • SSD怎么改动变成FasterRCNN

SSD是直接分类,而FasterRcnn是先判断是否为背景再进行分类。一个是直接细分类,一个是先粗分类再细分类。

  • 偏差、方差
  • 泛化误差可以分解成偏差的平方+方差+噪声

  • 偏差度量了学习算法的期望预测和真实结果的偏离程度,刻画了学习算法本身的拟合能力

  • 方差度量了同样大小的训练集的变动所导致的学习性能的变化,刻画了数据 扰动所造成的干扰

  • 噪声表达了当前任务上学习任何算法所能达到的期望泛化误差下界,刻画了问题本身的难度。

  • 偏差和方差一般称为bias和variance,一般训练误差越强,偏差越小,方差越大,泛化误差在中间会有一个最小值。

  • 如果偏差较大,方差较小,此时为欠拟合,而偏差较小,方差较大为过拟合。

  • 为什么会梯度爆炸,如何防止?

多层神经网络通常存在像悬崖一样的结构,这是由于几个较大的权重相乘导致的。遇到斜率很大的悬崖结构,梯度更新会很大程序地改变参数值,通常会完全跳过这类悬崖的结构。花书P177.

  • 精确率和召回率以及PR曲线

精确率是指分类正确的正样本个数占分类器判定为正样本的样本个数的比例。召回率是指分类正确的正样本个数占真正的正样本个数的比例。Precision值Recall值是既矛盾又统一的两个指标,为了提高Precision值,分类器需要尽量在“更有把握”时才把样本预测为正样本,但此时往往会因为过于保守而漏掉很多“没有把握”的正样本,导致Recall值很低。如何权衡这两个值,所以出现了PR曲线、ROC曲线以及F1 score等更多的标准来进行判断。

  • 空洞卷积

空洞卷积一般都伴有padding,如果dilation=6,那么padding也等于6。通过空洞卷积后的卷积特征图的大小不变,但是这个卷积的感受野比普通同等大小的卷积大。不过通道数是可以改变的。

  • 在DeepLabv3+中,最后的ASPP层,通过一个1x1卷积和3个3x3的空洞卷积,再concat上一个经过全局平均池化后双线性采样到同等维度的特征图。

但是要注意,由于空洞卷积本身不会增大运算量,但是后续的分辨率没有减小,后面的计算量就间接变大了。

  • 训练过程中出现过拟合现象怎么办?
  • 深度学习-通用模型调试技巧

  • 如何根据训练/验证损失曲线诊断我们的CNN

  • 关于训练神经网路的诸多技巧Tricks(完全总结版)

  • 深度学习中数据集很小是一种什么样的体验

如果模型的实际容量比较大,那么可以说模型可以完全学习到整个数据集,会发生过拟合。这时候再添加新的数据进去,模型的性能会进一步提升,说明模型还没有被撑死。期望风险是模型关于联合分布的期望损失,经验风险是模型关于训练数据集的平均损失。根据大树定律,当样本容量N趋于无穷时,经验风险趋于期望风险。但是当样本的容量比较小的的时候,经验风险最小化学习的效果未必就会很好,会产生“过拟合”的现象。结构风险最小化是为了防止过拟合而提出的策略。

  • 正则化

在Pytorch中只能在optim中设置weight_decay,目前只支持L2正则,而且这个正则是针对模型中所有的参数,不论是w还是b,也包括BN中的W和b。

BN层和L2正则化一起有什么后果

就是因为 batch norm 过后, weight 影响没那么重了,所以 l2 weight decay 的效果就不明显了。证明了L2正则化与归一化相结合时没有正则化效应。相反,正则化会影响权重的范围,从而影响有效学习率。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值