返回介绍

数学基础

统计学习

深度学习

工具

Scala

四、应用

发布于 2023-07-17 23:38:25 字数 5139 浏览 0 评论 0 收藏 0

4.1 逐像素输出

  1. 卷积神经网络不仅可以输出分类任务的标签或者回归任务的实数值,还可以输出高维的结构化对象。如:图片上每个像素属于各个类别的概率。这允许模型标记图像中的每个像素,并绘制单个物体的精确轮廓。

    这种结构化对象用张量表示。如:张量 $ MathJax-Element-342 $ ,其中 $ MathJax-Element-343 $ 是网络的输入像素 $ MathJax-Element-344 $ 属于类 $ MathJax-Element-345 $ 的概率。

  2. 对图像进行逐个像素标记的一种策略是:先产生图像标记的一个原始猜测;然后使用相邻像素之间的校验来修正该原始猜测;重复上述修正步骤直到收敛。

    如下图所示:输入图像张量 $ MathJax-Element-354 $ , 输出每个像素的类别张量 $ MathJax-Element-347 $ 。

    • 该网络并不是一次性输出结果 $ MathJax-Element-348 $ ,而是使用前一轮的输出 $ MathJax-Element-349 $ 来改善结果 $ MathJax-Element-350 $ 。

    • 每一步对 $ MathJax-Element-351 $ 执行卷积的卷积核都是张量 $ MathJax-Element-362 $ 。

    • 每一步产生的 $ MathJax-Element-360 $ 都需要两个输入:

      • 一个输入是通过对图像 $ MathJax-Element-354 $ 采用核 $ MathJax-Element-362 $ 来卷积。

      • 一个输入是通过对前一个输出 $ MathJax-Element-356 $ 采用核 $ MathJax-Element-363 $ 进行卷积。

        第一次产生 $ MathJax-Element-358 $ 时,这一项为零,因为还没有前一次输入。

    • 张量 $ MathJax-Element-359 $ 用于产生从 $ MathJax-Element-360 $ 到 $ MathJax-Element-361 $ 的输出。

  3. 每一次重复修正相当于再一次执行同样的卷积(卷积核为 $ MathJax-Element-362 $ )。

    很多个这样的卷积组成了一个深层网络,该网络的最后几层之间存在跨层的权值连接(连接权重为 $ MathJax-Element-363 $ )。

    这种跨层的权值连接构成了反馈,因此这种深层网络形成了一个特殊的循环神经网络。

  4. 一旦对每个像素都进行了一次预测,就可以用各种方法来进一步处理这些预测的结果。

    常规思路是:假设大片相连的像素对应于相同的标签。

4.2 可变输入类型

  1. 卷积神经网络使用的数据通常包含多个通道:每个通道都是时间/空间上一个点的某个角度的观测量。

    同一个点,观测的角度不同,就产生了不同的通道。如:

    • 三维的单通道:立体成像的数据。每个点代表了三维空间的一个点。

      • 三维:空间的三个维度。
      • 单通道:数据通道。
    • 三维的多通道:彩色视频数据。时间维度+二维空间(图像)+色彩通道(红绿蓝三通道)

      • 三维:时间维度(一维)+ 图像维度(二维)。
      • 多通道:色彩通道(红绿蓝三通道)。
  2. 卷积神经网络还可以处理具有变化的空间尺度的输入。如:输入图片的尺寸可能各不相同。

    • 这种不同尺寸大小的输入,无法使用传统的基于矩阵乘法的神经网络来表示。

      因为不同样本的输入的维度可能不同,所以权重矩阵的形状无法确定。

    • 卷积神经网络可以处理这种情况:根据输入图片尺寸的大小,核会被自动的的使用不同次数。

      • 如果要求网络的输出尺寸和输入尺寸是一样的(如:为每个输入像素分配类别标签),则无需做额外的工作。
      • 如果要求网络的输出尺寸是固定的(如:为整个图像分配一个类别标签),此时需要插入一个池化层:池化区域的大小要和输入的大小成比例,从而保持固定数量的池化输出。
  3. 卷积能处理可变大小的输入,但这种“可变”必须是因为同一个事物在同一个角度下的、不同数量的观察不同导致的。

    如:时间角度下的、数量上的不同观察导致时间维度可变,空间角度下的、数量上的不同观察导致空间维度可变。

    这种可变并不包括特征数量(即:多少个观察角度)的可变。

    如:某个样本具有 “年龄、学历、性别”特征,另一个样本只具有“年龄、学历”特征。则卷积对于这种类型的数据集无能为力。

4.3 高效的卷积算法

  1. 设计更快的卷积、或者近似卷积而不降低模型准确率的方法是一个活跃的研究领域。

    甚至仅提高前向传播效率的技术也是有用的。因为在商业环境中,通常对模型的推断有性能要求或者限制。

4.3.1 傅里叶变换

  1. 卷积等效于:使用傅里叶变换将输入和核都转换到频域,然后在频域将输入和核进行逐点相乘,最后把相乘的结果使用傅里叶逆变换转换回时域。

    对于某些规模的问题,这种算法可能比直接计算离散卷积效率更高。

4.3.2 可分离卷积

  1. 对于一个 $ MathJax-Element-374 $ 维的核矩阵,如果可以表示成 $ MathJax-Element-374 $ 个一维向量的外积时,称该核是可分离的。

    这里的外积不同于代数意义上的叉乘,而是:

    $ \mathbf{\vec a}\otimes \mathbf{\vec b}= \begin{bmatrix}a_1\\ a_2 \\ \vdots\\ a_M\end{bmatrix}\otimes\begin{bmatrix}b_1 \\ b_2 \\ \vdots\\ b_N\end{bmatrix}=\begin{bmatrix}a_1b_1&a_1b_2&\cdots&a_1b_N\\ a_2b1&a_2b_2&\cdots&a_2b_N\\ \vdots&\vdots&\ddots&\vdots\\ a_Mb_1&a_Mb_2&\cdots&a_Mb_N\end{bmatrix} $
  2. 当核 $ MathJax-Element-368 $ 是可分离时,假设有: $ MathJax-Element-367 $ 。

    • 直接使用 $ MathJax-Element-368 $ 进行卷积运算是非常低效的。它等价于连续的对 $ MathJax-Element-374 $ 个一维向量 $ MathJax-Element-375 $ 执行卷积。

      由于 $ MathJax-Element-371 $ ,因此直接计算卷积需要 $ MathJax-Element-373 $ 个参数,需要 $ MathJax-Element-373 $ 的运行时间和存储空间。

    • 如果使用可分离卷积,则只需要连续的对 $ MathJax-Element-374 $ 个一维向量 $ MathJax-Element-375 $ 执行卷积。

      此时需要 $ MathJax-Element-377 $ 个参数,只需要 $ MathJax-Element-377 $ 的运行时间和存储空间。

    • 但遗憾的是:并不是每个核都是可分离的。

4.4 非监督的特征

  1. 通常卷积神经网络训练中代价最高的是学习卷积核,而输出层的学习代价相对较低。

    • 因为卷积核的输入单元相对较多,而且卷积神经网络中可能需要学习多个卷积核。
    • 经过了若干个池化层之后,输出层的输入单元的数量要小的多。
  2. 每个卷积核都可以提取某个特征,因此学习卷积核就是要学习特征。

  3. 降低卷积神经网络训练成本的方法是:使用那些非监督方式训练得到特征。

  4. 有三种基本策略来避免监督训练而得到特征:

    • 简单地随机初始化特征。
    • 人工设计特征。如:人工设计一个检测图像边缘的卷积核。
    • 用无监督训练来学习特征。

4.5.1 随机初始化特征

  1. 随机初始化特征经常在卷积网络中表现的出乎意料的好。

  2. 随机初始化特征训练卷积神经网络的步骤是:

    • 给出多个随机权重,生成一组候选的卷积核(这些卷积核可以是不同尺寸的)。

    • 仅仅训练输出层来评估这一组候选卷积核的性能,挑选表现最好的那个卷积核。

      训练过程中,卷积核的权重固定,不会被调整。

    • 使用表现最好的那个卷积核的结构和权重,并重新训练整个网络。

      训练过程中,卷积核的权重会被调整。

4.5.2 无监督学习特征

  1. 使用无监督学习特征来训练卷积神经网络时,允许其结构与输出层相分离。

    其步骤是:

    • 使用无监督学习特征。
    • 提取训练集的全部特征,构建一个新的训练集。
    • 将这个新的训练集作为输出层的输入,训练一个简单的神经网络(可能只有一个输出层,也可能添加一层隐层)。
  2. 无监督学习特征可以使用一些特殊的方法来学习,它不需要在每个梯度步骤中都完整的前向和反向传播。

    如:逐层贪心预训练。逐层贪心预训练的经典模型是卷积深度信念网络。

  3. 使用无监督学习特征来训练卷积神经网络时,训练过程中可以完全不使用卷积。

    通过该方法可以训练非常大的模型,并且只在前向传播期间产生高计算成本(反向传播阶段计算成本较低,因为大量的参数并不参与训练)。

  4. 当前大多数卷积神经网络以纯粹有监督的方式训练,因为计算能力比以前大幅度提升。

    有监督的方式训练的预测能力更强。

  5. 无监督学习特征的优点难以说清:

    • 使用无监督学习特征可以提供一些相对于监督训练的正则化。
    • 使用无监督学习特征可以训练更大的网络结构,因为它的学习方式减少了计算成本。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文