《深度学习》——阅读笔记

第七章——深度学习中的正则化

7.8:提前终止

  • 什么时候需要“提前终止”?
    提前终止需要验证集。在训练中若出现下图7.3中,训练误差随着时间的推移逐渐降低但验证集的误差再次上升时,在验证集误差最小时就很可能得到了一个很好的模型。此时提前终止能够减少训练时间《深度学习》——阅读笔记_第1张图片
  • 启示:分类不需要提前终止,分割实验需要设置提前终止。
  • 如何实现提前终止?书本上有伪代码,但是自己是实现有一定难度,还是去网上百度快。
  1. 如何选择提前终止的标准:https://www.datalearner.com/blog/1051537860479157
  2. 代码实现:https://discuss.pytorch.org/t/early-stopping-in-pytorch/18800

第八章——深度模型中的优化

8.5 自适应学习率算法

损失通常高度敏感于参数空间中的某些方向,而不敏感于其他。
如果我们相信方向敏感度在某种程度是轴对齐的,那么每个参数设置不同的学习率,在整个学习过程中自动适应这些学习率是有道理的。

8.5.1 AdaGrad

  • 原理
    独立地适应所有模型参数的学习率。具有损失最大偏导地参数有一个快速下降地学习率,具有小偏导的参数再学习率上有相对较小的下降。
  • 优点
    在参数空间中更为平缓的倾斜方向会取得更大的进步
  • 缺点
    从训练开始时积累梯度平方会导致有效学习率过早和过量的减小。

8.5.2 RMSProp

  • 原理
    使用指数衰减平均以丢弃遥远过去的历史,使其能够在找到凸碗状结构后快速收敛,它就像一个初始化于该碗状结构的AdaGrad算法实例。
  • 优点
    规避了AdaGrad的缺点。

8.5.3 Adam

  • 原理
    看不懂
  • 优点
    通常被认为对超参数的选择相当鲁棒。

8.5.4 选择正确的优化算法

并没有标准说如何选择,选择哪个似乎主要取决于使用者对算法的熟悉程度,以便调节超参数。(想哭,一个都不熟悉)

实验上的启示

  • 结合算法的优缺点和目前loss震荡的情况来看,至少不能选AdaGrad;
  • 实验中已经结合Adam最好和学习率衰减,方法与该文章的类似:Pytorch中的学习率衰减方法: https://www.jianshu.com/p/9643cba47655
    ( 此文章说到:Adam和学习率衰减结合一起:https://www.cnblogs.com/wuliytTaotao/p/11101652.html#adam-%E6%9B%B4%E6%96%B0%E5%8F%82%E6%95%B0)
  • 可以修改学习率的衰减系数,而不是修改初始学习率。

第九章——卷积神经网络

发现自己的理解有一些不对,所以计划都大概看一下,对于重要的几节还是需要重点看。先将看的做个笔记,后面看了会在补上。

目录

第九章主要介绍卷积网络提供的各种工具

  1. 卷积运算
  2. 神经网络中使用卷积运算的动机
  3. 池化
  4. 卷积与池化作为一种无限强的先验
  5. 基本卷积函数的变体
  6. 结构化输出
  7. 数据类型
  8. 高效的卷积算法
  9. 随机或无监督的特征
  10. 卷积网络的神经科学基础

9.2 神经网络中使用卷积运算的动机

传统的神经网络也可以学习特征,那么为什么要设计卷积运算呢?卷积主要应用在序列(一维)、图像(二维)等网格状的数据分析中,因为其有下面三个特点:

  • 稀疏交互(sparse interactions):全连接神经网络中输入层和输出层的每个神经元都相互连接,而卷积神经网络中输出层的神经元和输入层的部分神经元连接。这样做的好处是学习局部的特征。
  • 参数共享(parameter sharing):每个局部的权重参数都是共享的。这样做的好处提取每个局部相同的特征,同时是大大减小了参数量。
  • 平移等变性(equivariance):如果一个函数满足输入改变,输出也以相同的方式改变这一性质,则这个函数是等变的。这样的好处是能够捕获到图像的平移变换,对于语义分割等精细的任务来说,像素点的位置是很重要的。
    《深度学习》——阅读笔记_第2张图片
    注:[1]参数共享是实现平移等变性的一个条件。[2]卷积对平移变换天然等变,但是对图像的缩放、旋转却不是。点云同理,所以[PointNet]对旋转不变性特意提出了[T-Net]。当然,这也是从图像中引入的。

9.3 池化

池化带来了局部平移不变性。

  • 什么是平移的不变性?
    当我们对输入进行少量平移时,经过池化函数后的大多数输出并不会发生改变。
  • 什么时候需要考虑平移不变性?
    当我们关心某个特征是否出现而不关心它出现的具体位置时(例如,我们要判断一张图像中是否包含人脸及分类任务时)

9.4 卷积和池化作为一种无限强的先

什么是先验?

  • 先验概率分布(或先验):一个模型参数的概率分布,它刻画了我们在看到数据之前认为什么样的模型时合理的信念。
  • 先验的强弱:取决于先验中概率密度的集中程度,比如,弱的先验方差比较大,参数的概率分布比较不集中,强的先验概率分布方法比较小,概率分布比较集中。
  • 无限强的先验:对参数的概率置零,完全禁止对参数赋值。

卷积作为一种无限强的先验

把卷积网络类比成全连接网络,但对于这个全连接网络的权重有一个无限强的先验,有两个要求:

  • 参数共享:隐藏单元的权重必须和它的邻居权重相同。
  • 该层学到的函数只包含局部连接关系:除了那些在隐藏单元的小的空间连续的接受域内的权重以外,其余的权重都为零。

池化作为一种无限强的先验

  • 每一个单元都具有对少量平移的不变性

卷积和池化的使用

卷积和池化可能导致欠拟合。与任何其他先验类似,卷积和池化只有当先验的假设合理且正确时才有用:

  • 对于卷积来说,当涉及到对输入中相隔较远的信息进行合并时,那么卷积所利用的先验可能就不正确(参见论文[Non-local network])。
  • 对于池化来说,当任务依赖于保存精确的空间信息,那么在所有的特征上使用池化将会增加训练误差。一些网络结构,为了平衡平移不变性和欠拟合问题,提出在一些通道上使用池化而在另一些通道上不使用。

一个完整的卷积网络需要哪几个模块?

卷积神经网络(CNN)由输入层、卷积层、激活函数、池化层、全连接层组成,即INPUT(输入层)-CONV(卷积层)-RELU(激活函数)-POOL(池化层)-FC(全连接层)

  • 卷积层:学习局部特征
  • 激活函数:做非线性变换
  • 池化层:对输入的特征图进行压缩,一方面使特征图变小,简化网络计算复杂度;一方面进行特征压缩,提取主要特征
  • 全连接层:连接所有的特征,将输出值按照任务需求送给分类器(如softmax分类器)

第十一章——实践方法论

11.1 性能度量Performance metric

性能度量可以度量准确率、错误率等等。有些情况下需要权衡多个度量指标,比如:
精度、召回率;
精度、覆盖(比如,若我们只处理密集的点云,那么精度会很高,但是覆盖会很低)

11.2 默认的基准模型

如果问题属于“AI-完全’’ 类的,如对象识别、语音识别、机器翻译等等,那么项目开始于一个合适的深度学习模型,效果会比较好。
概括了一些调参技巧,正则化方法(BN,dropout,提前终止)

11.3 决定是否收集更多数据

  • 满足以下两个条件时,选择收集更多数据:
  1. 训练集上的结果可接受,测试集上的结果差的多;
  2. 收集数据的代价可接受(比如,拥有很多用户的大公司);

当测试集结果相比训练集差得多,但是难以收集到数据时(比如,医疗应用),代替策略是:降低模型大小或是改进正则化(调整超参数,如权重衰减系数,或是加入正则化策略,如Dropout)。

11.4 选择超参数

11.4.1 手动调整超参数

  • 调整学习率
    学习率可能是最重要的超参数。相比其它超参数,它以一种更复杂的方式控制模型的有效容量——当学习率适合优化问题时,模型的有效容量最高,此时学习率时正确的,既不是特别大也不是特别小。学习率关于训练误差具有U形曲线,如图11.1所示。
    《深度学习》——阅读笔记_第3张图片

  • 调整除学习率以外的参数

    调整学习率外的其他参数时,需要同时监测训练误差和测试误差,以判断模型是否过拟合或欠拟合,然后适当调整其容量。

    如果欠拟合(即训练集错误率大于目标错误率),那么只能增加模型容量(如,添加更多的网络层或隐藏单元);如果欠拟合(即,测试集错误率大于目标错误率),则我们可以减少有效的模型容量(如,正则化)。

大部分超参数可以推理其是否增加或减少模型容量来设置。部分实例如表11.1所示。
《深度学习》——阅读笔记_第4张图片

11.5 调试策略

  • 可视化结果。直接可视化最终的分割结果,查看结果是否合理,以此检测模型是否大致合理。
  • 可视化最差的样本。可视化miou最差的那一类分割结果。
  • 根据训练集和测试集判断模型是欠拟合还是过拟合(若训练集和测试集的预处理方式相同,测试时的模型加载正确的话)
  • 监控激活函数值和梯度的直方图:看不懂

你可能感兴趣的:(计算机视觉,笔记)