第十三周学习笔记

第十三周学习笔记

第九章 卷积网络

主要内容

卷积网络(convolutional network) 是用来专门处理类似网格结构数据的神经网络

1.卷积

神经网络中的卷积是互相关函数

S ( i , j ) = ( I K ) ( i , j ) = m n I ( i + m , j + n ) K ( m , n ) S(i,j)=(I*K)(i,j)=\sum_{m}\sum_{n}I(i+m,j+n)K(m,n)

而不像一般的卷积

S ( i , j ) = ( I K ) ( i , j ) = m n I ( m , n ) K ( i m , j n ) S(i,j)=(I*K)(i,j)=\sum_{m}\sum_{n}I(m,n)K(i-m,j-n)

第二种定义卷积的形式使得卷积具有可交换性,但是这个性质似乎也没啥用。

2.动机

卷积运算的三个改进:

  • 稀疏交互:全连接网络中,输入与下层每隐层单元交互,若输入为m维,隐层为n维,算法的时间复杂度为 O ( m × n ) O(m\times n) ,稀疏交互通过限制输入与隐层交互的个数到 k k ,从而有效将时间复杂度降低为 O ( k × n ) O(k\times n) 。同时,多层的稀疏交互使得更深层的神经元也能捕捉到更大范围的信息(想象金字塔)。
  • 参数共享:对于图像中不同位置使用相同的卷积核,就是参数共享的方法。参数共享没有改变前向传播算法的效率(我们仍需要求每个位置的梯度),但是大大减少了参数的存储空间。
  • 等变表示:等变指对于两个映射 f f g g ,满足 f ( g ( x ) ) = g ( f ( x ) ) f(g(x))=g(f(x)) ,易知卷积操作是平移等变的。对于图像的放缩或旋转变换,需要其他的一些机制来保持其等变性。

3.池化

池化使用局部位置的总体统计特征来代替网络在该位置的输出,如最大池化、平均池化等,它的好处在于:

  • 局部平移不变性:当输入做出少量平移时,经过池化函数后的大多数输出并不会发生改变,在我们关心某个特征是否出现而不关心它出现的具体位置,十分有用。
  • 降采样提高网络计算效率:池化层少于探测层,减轻后层的负担。
  • 可以处理变大小的输入。

4.卷积与池化作为一种无限强的先验

强先验参数的熵小,也就是参数的确定性大,弱先验参数熵大,也就是参数的可变性大,卷积神经网络引入了两个强先验:

  • 来自卷积的平移等变性
  • 来自池化的少量平移不变性

值得注意的是

  • 平移等变性和平移不变性的区别:平移等变性是指卷积映射与平移映射的可交换性,平移不变性指的是池化操作对于小的平移操作的不敏感性。
  • 先验的指导性:先验在假设合理的情况下才能达到好的效果,否则会限制模型的学习能力导致欠拟合

5.基本卷积函数的变体

  • 步幅(stride):卷积操作的间隔
  • 填充(pad):在图像边缘填充0防止卷积后图像变小

三种零填充

  • 有效卷积(valid):不填充0,卷积核只允许存在被图像包括的位置
  • 相同卷积(same):填充0,使得卷积前后的图片大小一样
  • 全卷积(full):填充0,使得每个像素点在每个方向恰被访问k次

各种卷积

  • 非共享卷积(unshared convolution):保持稀疏交互,但不使用参数共享,即对于不同位置使用不同的卷积核
  • 平铺卷积(tiled convolution):介于非共享卷积与普通卷积之间,非共享卷积所有卷积核不一样,而平铺卷积中有t个不一样的核,他们相邻并交替进行卷积操作。

6.结构化输出

卷积神经网络可以输出高维结构化对象。

7.数据类型

对于不同宽高的图像,可以依据输入的大小使用不同次卷积核,并且对卷积运算进行相应放缩,来处理可变尺寸的输入。

8.随机或无监督的特征

得到卷积核的三种非监督策略

  • 随机初始化
  • 手动设计
  • 使用无监督标准学习

第十章 序列建模:循环和递归网络

主要内容

循环神经网络(recurrent neural network) 是一类用于处理序列数据的神经网络
重要思想 : 在模型的不同部分共享参数。如果我们在每个时间点都有一个单独的参数,不但不能泛化到训练时没有见过的序列长度,也不能在时间上共享不同序列长度和不同位置的统计强度。

1.展开计算图

展开的两个优点:

  • 变长输入:无论序列的长度,学成的模型始终具有相同的输入大小,因为它逐项输入序列中的每一项,而不是直接在可变的序列整体上操作
  • 参数共享:可以在每个时间步使用相同参数的转移函数 f f

2.循环神经网络

三种设计模式:

  • 每个时间步都有输出,并且隐藏单元之间有循环连接的循环网络
  • 每个时间步产生一个输出,只有当前的输出和下层隐藏单元有循环网络
  • 隐藏单元之间存在循环连接,但读取整个序列后产生单个输出

隐层到隐层的网络不能通过并行化来加速训练,因为每个时间步只能在之前的步骤算完后才能计算,这称为通过时间反向传播(back-propagation through time, BPTT)

隐藏到隐藏与输入到隐藏
第二种网络的表现能力没有第一种强大,因为输出所包含的信息不及隐藏单元,除非它高维且内容丰富,这就要求输出单元捕捉用于预测未来的关于过去的所有信息,而因为输出单元明确地训练成匹配训练集的目标,它们不太能捕捉关于过去输入历史的必要信息,除非用户知道如何描述系统的全部状态,并将它作为训练目标的一部分。

但第二种网络更容易计算,第二种方法利用训练集提供的输出的理想值,不必计算出上一时刻输出即可进行下一步,使得网络实现并行,这种由输出到反馈的模型称为导师驱动过程,但测试时需要用网络的输出作为下个隐藏单元的输入,这可能导致网络性能突变。

3.双向RNN

t时刻的状态同时依赖于之前和之后的序列

4.基于编码-解码的序列到序列架构

变长到变长的映射,应用于语音识别、机器翻译等。

5.深度循环网络

可以在循环网络中的下部分引入深度

  • 输入到隐藏
  • 隐藏到隐藏
  • 隐藏到输出

6.递归神经网络

递归神经网络被构造为深的树状结构,应用于输入是数据结构的神经网络。

7.长期依赖的挑战

为了存储记忆并对小扰动具有鲁棒性,RNN必须进入参数空间中的梯度消失区域。而长期依赖的梯度值很小,随着依赖跨度增大,就越来越难以捕获。

8.处理长期依赖的方法

  • 回声状态网络
  • 渗透单元和其他多时间尺度的策略
  • 长短期记忆和其他门控RNN
    • LSTM ,引入自循环的巧妙构思,以产生梯度长时间持续流动的路径
    • GRU,在LSTM的基础上使用单个门控单元同事控制遗忘因子和更新状态单元

9.优化长期依赖

截断梯度——解决梯度爆炸
  • 在参数更新之前,逐元素截断梯度
  • 在参数更新之前,截断梯度的范数

出现梯度为Nan的情况,可以使用随机步骤跳出数值不稳定的点。

引导信息流的正则化——解决梯度消失

添加正则化项,使得函数学习过程中维持各层的梯度幅度

10.外显记忆

神经网络除了通过记忆隐性知识来达到更好表现,也可以通过记忆一些事实来提升,这些事实可能无法从训练样本中总结出来(成为网络的隐性知识),但却包含在解决问题所需的知识中。

第十一章 实践方法论

主要内容

实验设计流程:

  • 确定目标——使用什么样的误差度量,并为此误差度量指定目标值。这些目标和误差度量取决于该应用旨在解决的问题
  • 尽快建立一个端到端的工作流程,包括估计合适的性能度量
  • 搭建系统,并确定性能瓶颈。检查哪个部分的性能差于预期,以及是否因为过拟合、欠拟合,或者数据或软件缺陷造成的
  • 根据具体观察反复地进行增量式的改动,如收集新数据、调整超参数或改进算法。

1.性能度量

学术界:根据先前公布的基准结果来估计预期错误率
工业界:错误率必须是安全的、具有成本效益的、吸引消费者的
预期错误率指导了设计

一些度量

  • 精度(Precision)
  • 召回率(Recall)
  • F分数(F-score)
  • PR曲线
  • AUR

2.默认的基准模型

  • 逻辑回归
  • 全连接前馈网络
  • 门控网络
  • 衰减学习率或动量的SGD算法,Adam
  • 当优化出现问题时,应立刻使用批标准化
  • 除非训练集包括大量样本,否则一开始就应该包含温和的正则化或提前终止策略
  • 复现模型

3.决定是否收集更多数据

度量训练集表现
在训练集表现不佳
增加模型容量
调整超参数
都无效
问题可能源自数据集质量
在训练集表现可接受
度量测试集性能
表现好
结束
表现不好
收集数据
正则化
改进算法

在决定收集更多数据时,可以根据训练集规模和泛化误差曲线的走势来确定还需要收集多少数据。

4.选择超参数

  • 手动选择——调整模型的有效容量来匹配任务的复杂性,需要对超参数的了解
  • 自动选择——需要大量计算资源

模型的有效容量

  • 模型的表示容量
  • 学习算法成功最小化训练模型代价函数的能力
  • 代价函数和训练过程正则化模型的成都

最重要的超参数(可能?):学习率

最暴力的解决方法:不断提高模型容量和训练集大小

自动选择

  • 网格搜索,对超参数的笛卡尔积进行搜索,通常使用对数尺度进行网格搜索,如{0.1,0.01,0.001,…},重复的网格搜索有更好的效果,也就是先在大尺度上搜索,逐步缩小搜索尺度,获得最佳的参数组合。缺点是搜索时间是参数数目的指数级大小。
  • 随机搜索,为每个超参数定义边缘分布(伯努利分布、范畴分布、对数尺度上的均匀分布),通过采样得到超参数组合进行搜索。选择合适的边缘分布使得我们不需要离散化超参数,并且简单易实现,也避免了网格搜索中,可能的对不重要的超参数重复无意义的搜索。

超参数优化是一个单独被研究的领域。

5.调试策略

  • 可视化计算模型的行为
  • 可视化最严重的错误
  • 根据训练和测试误差检测软件
  • 拟合小的数据集
  • 比较反向传播和数值导数
  • 监控激活函数值和梯度的直方图

自动求导

Autograd
在第六章的启发下实现了动态的自动求导数据结构,并在Logistic回归和线性回归上做了测试。

猜你喜欢

转载自blog.csdn.net/luo3300612/article/details/83545139
今日推荐