chap9 现代循环神经网络(1) GRU

关注一个序列

  • 不是每个观察值都同等重要
  • 想只记住相关的观察需要
    • 能遗忘的机制:重置门
    • 能关注的机制:更新门
阅读全文

chap8 循环神经网络(4) RNN

在上一小节中,我们介绍了 nn 元语法模型,其中单词 xtx_t 在时间步 tt 的条件概率仅取决于前面 n1n-1 个单词。如果我们想将时间步 t(n1)t-(n-1) 之前的单词的可能产生的影响合并到 xtx_t 上就需要增加 nn,然而模型参数的数量也会随之呈指数增长,因为词表 V\mathcal{V} 需要存储 Vn|\mathcal{V}|^n 个数字,因此与其将 P(xtxt1,,xtn+1)P(x_t \mid x_{t-1}, \ldots, x_{t-n+1}) 模型化,不如使用隐变量模型:

阅读全文

chap8 循环神经网络(1) 语言模型

卷积神经网络可以有效地处理空间信息,循环神经网络(recurrent neural network, RNN)这种设计可以更好地处理序列信息。 循环神经网络通过引入状态变量存储过去的信息和当前的输入,从而可以确定当前的输出。

许多使用循环网络的例子都是基于文本数据的,因此我们将在本章中重点介绍语言模型。 在对序列数据进行更详细的回顾之后,我们将介绍文本预处理的实用技术。 然后,我们将讨论语言模型的基本概念,并将此讨论作为循环神经网络设计的灵感。 最后,我们描述了循环神经网络的梯度计算方法,以探讨训练此类网络时可能遇到的问题。

阅读全文

chap6(5) 池化层

本节将介绍 池化(pooling)层,它具有双重目的:降低卷积层对位置的敏感性,同时降低对空间降采样表示的敏感性。

阅读全文

chap6 卷积神经网络(4) 多输入多输出通道

虽然我们在 第(1)小节中描述了构成每个图像的多个通道和多层卷积层。例如彩色图像具有标准的 RGB 通道来指示红、绿和蓝。

但是到目前为止,我们仅展示了单个输入和单个输出通道的简化例子。这使得我们可以将输入、卷积核和输出看作二维张量。

当我们添加通道时,我们的输入和隐藏的表示都变成了三维张量。

例如,每个RGB输入图像具有 3×h×w3\times h\times w 的形状。我们将这个大小为 33 的轴称为 通道(channel) 维度。在本节中,我们将更深入地研究具有多输入和多输出通道的卷积核。

阅读全文

chap6 卷积神经网络(3) 填充和步幅

假设输入形状为 nh×nwn_h\times n_w,卷积核形状为 kh×kwk_h\times k_w,那么输出形状将是 (nhkh+1)×(nwkw+1)(n_h-k_h+1) \times (n_w-k_w+1)
因此,卷积的输出形状取决于输入形状和卷积核的形状。

还有什么因素会影响输出的大小呢?本节我们将介绍 填充(padding)和 步幅 (stride)。

假设以下情景:
有时,在应用了连续的卷积之后,我们最终得到的输出远小于输入大小。这是由于卷积核的宽度和高度通常大于 11 所导致的。比如,一个 240×240240 \times 240 像素的图像,经过 10105×55 \times 5 的卷积后,将减少到 200×200200 \times 200 像素。如此一来,原始图像的边界丢失了许多有用信息。 而填充*** 是解决此问题最有效的方法。
有时,我们可能希望
大幅降低图像的宽度和高度
*。例如,如果我们发现原始的输入分辨率十分冗余。 ***步幅 ***则可以在这类情况下提供帮助。

本章代码复现

阅读全文

chap6 卷积神经网络(1)

本章教材地址, 本章课程视频

在前面的章节中,我们遇到过图像数据。 这种数据的每个样本都由一个二维像素网格组成, 每个像素可能是一个或者多个数值,取决于是黑白还是彩色图像。 到目前为止,我们处理这类结构丰富的数据的方式还不够有效。 我们仅仅通过将图像数据展平成一维向量而忽略了每个图像的空间结构信息,再将数据送入一个全连接的多层感知机中。 因为这些网络特征元素的顺序是不变的,因此最优的结果是利用先验知识,即利用相近像素之间的相互关联性,从图像数据中学习得到有效的模型。

本章介绍的卷积神经网络(convolutional neural network,CNN)是一类强大的、为处理图像数据而设计的神经网络。 基于卷积神经网络结构的模型在计算机视觉领域中已经占主导地位,当今几乎所有的图像识别、对象检测或语义分割相关的学术竞赛和商业应用都以这种方法为基础。

阅读全文

chap5 深度学习计算

本章教材地址, 本章课程视频

到目前为止,我们已经介绍了一些基本的机器学习概念,并慢慢介绍了功能齐全的深度学习模型。在上一章中,我们从零开始实现了多层感知机的每个组件,然后展示了如何利用高级API轻松地实现相同的模型。为了易于学习,我们调用了深度学习库,但是跳过了它们工作的细节。在本章中,我们开始深入探索深度学习计算的关键组件,即模型构建、参数访问与初始化、设计自定义层和块、将模型读写到磁盘,以及利用GPU实现显著的加速。这些知识将使你从基础用户变为高级用户。虽然本章不介绍任何新的模型或数据集,但后面的高级模型章节在很大程度上依赖于本章的知识。

本章没有介绍新的概念,教材中的代码复现在 这里,欢迎指正!

chap4 多层感知机(3)

数值稳定性和模型初始化

到目前为止,我们实现的每个模型都是根据某个预先指定的分布来初始化模型的参数。直到现在,我们认为初始化方案是理所当然的,忽略了如何做出这些选择的细节。你甚至可能会觉得,初始化方案的选择并不是特别重要。相反,初始化方案的选择在神经网络学习中起着非常重要的作用它对保持数值稳定性至关重要

此外,这些选择可以与非线性激活函数的选择以有趣的方式结合在一起。我们选择哪个函数以及如何初始化参数可以决定优化算法收敛的速度有多快。糟糕选择可能会导致我们在训练时遇到梯度爆炸或梯度消失。在本节中,我们将更详细地探讨这些主题,并讨论一些有用的启发式方法。你会发现这些启发式方法在你的整个深度学习生涯中都很有用。

阅读全文