输入“/”快速插入内容

深度学习(1)核心概念

作者:Tim Dettmers
发表于:2015 年 11 月 3 日
这篇文章是我将为 Parallel Forall 撰写的系列文章中的第一篇,该系列文章旨在为 深度学习 提供一个直观而温和的介绍。它涵盖了最重要的深度学习概念,旨在提供对每个概念的理解,而不是其数学和理论细节。虽然数学术语有时是必要的,并且可以进一步理解,但这些文章尽可能使用类比和图像来提供易于理解的信息,包括对深度学习领域的直观概述。
我以术语表的风格编写了这个系列,因此它也可以作为深入学习概念的参考。
第一部分 主要介绍深度学习的主要概念。
第二部分 提供历史背景,并深入研究用于深度学习培训的培训程序、算法和实用技巧。
第三部分 涵盖了序列学习,包括递归神经网络、 LSTMs 和用于神经机器翻译的编解码器系统。
第四部分 涵盖强化学习
核心概念
机器学习
机器学习中,我们( 1 )获取一些数据,( 2 )根据这些数据训练一个模型,( 3 )使用训练的模型对新数据进行预测。 训练 一个模型的过程可以看作是一个学习过程,在这个过程中,模型一步一步地暴露在新的、不熟悉的数据中。在每一步中,模型都会做出预测,并得到关于其生成的预测有多精确的反馈。这种反馈是根据某种度量(例如距正确解的距离)提供的误差,用于校正预测中的误差。
学习过程通常是参数空间中来回的游戏:如果你调整模型的一个参数以获得正确的预测,那么模型可能会因此得到之前正确的预测错误。训练一个具有良好预测性能的模型可能需要多次迭代。这个迭代的预测和调整过程一直持续到模型的预测不再改善为止。
特征工程
特征工程是从数据中提取有用模式的艺术,这将使 机器学习 模型更容易区分类。例如,你可以用绿色像素和蓝色像素的数量作为一个指标,来判断某张图片中是陆地动物还是水生动物。这个特性对机器学习模型很有帮助,因为它限制了要进行良好分类所需考虑的类的数量。
当你想在大多数预测任务中获得好的结果时,特征工程是最重要的技能。然而,由于不同的数据集和不同的数据类型需要不同的特征工程方法,因此很难学习和掌握。艺术不仅仅是一门粗糙的科学,更是一门科学。可用于一个数据集的特征通常不适用于其他数据集(例如,下一个图像数据集仅包含陆地动物)。特征工程的难度和所涉及的工作量是寻找能够学习特征的算法的主要原因,即自动生成特征的算法。
虽然许多任务可以通过特征学习(如对象和语音识别)实现自动化,但特征工程仍然是 在困难的任务中最有效的方法 (就像 Kaggle 机器学习竞赛中的大多数任务一样)。
特征学习
特征学习算法可以找到对区分类很重要的共同模式,并自动提取它们以用于分类或回归过程。特征学习可以被认为是由算法自动完成的 特征工程 。在深度学习中,卷积层特别擅长于在图像中找到好的特征到下一层,从而形成一个非线性特征的层次结构,这些特征的复杂性不断增加(例如,斑点、边缘 – >鼻子、眼睛、脸颊 – >面部)。最后一层使用所有这些生成的特征进行分类或回归(卷积网络中的最后一层本质上是多项式 逻辑回归 )。
图 1 :从深度学习算法中学习的层次特征。每个特征都可以看作是一个过滤器,它过滤输入图像的特征(鼻子)。如果找到了特征,负责的单元会产生大量的激活,这些激活可以被后面的分类器阶段提取出来,作为类存在的良好指示器。图片由 Honglak Lee 和同事( 2011 年)发表在“用卷积深信念网络进行分层表征的无监督学习”。
图 1 显示了由深度学习算法生成的特性,该算法可以生成易于解释的特性。这很不寻常。特征通常很难解释,尤其是在像 循环神经网络LSTM 这样的深层网络或非常深的卷积网络中。
深度学习
在分层 特征学习 中,我们提取多层非线性特征并将其传递给一个分类器,该分类器将所有特征组合起来进行预测。我们感兴趣的是将这些非常深层次的非线性特征叠加起来,因为我们无法从几层中学习复杂的特性。从数学上可以看出,对于图像来说,单个图层的最佳特征是边缘和斑点,因为它们包含了我们可以从单个非线性变换中提取的大部分信息。为了生成包含更多信息的特征,我们不能直接对输入进行操作,但是我们需要再次转换我们的第一个特征(边缘和斑点),以获得包含更多信息的更复杂的特征,以区分类。
有研究表明,人脑做的是完全相同的事情:在视觉皮层接收信息的第一层神经元对特定的边缘和斑点很敏感,而视觉管道下游的大脑区域则对更复杂的结构(如脸部)敏感。
虽然分层特征学习在领域深度学习存在之前就被使用了,但是这些架构面临着诸如消失 梯度 问题,其中梯度变得太小,无法为非常深的层提供学习信号,因此,与浅层学习算法(如支持向量机)相比,这些体系结构的性能较差。
“深度学习”一词源于新的方法和策略,这些方法和策略旨在通过克服梯度消失的问题来生成这些深层的非线性特征层次,以便我们可以训练具有数十层非线性层次特征的体系结构。在 2010 年早期,有研究表明,结合 GPUs 和 激活函数 提供更好的梯度流,足以在没有重大困难的情况下训练深层结构。从这里开始,人们对深入学习的兴趣与日俱增。
深度学习不仅与学习深度非线性层次特征有关,还与学习检测序列数据中非常长的非线性时间依赖性有关。虽然大多数其他处理顺序数据的算法只有最后 10 个时间步的内存, 长短时记忆 循环神经网络 (由 Sepp Hochreiter 和 J ü rgen-Schmidhuber 在 1997 年发明)允许网络收集过去几百个时间步的活动,从而做出准确的预测。虽然 LSTM 网络在过去 10 年中大多被忽视,但自 2013 年以来, LSTM 网络的使用量迅速增长,与卷积网络一起构成了深度学习的两大成功案例之一。
基本概念
对数几率回归
回归分析估计统计输入变量之间的关系,以便预测结果变量。 Logistic 回归是一种回归模型,它使用输入变量来预测一个分类结果变量,该变量可以采用一组有限的类值,例如“ cancer ”/“ no cancer ”,或者图像类别,如“ bird ”/“ car ”/“ dog ”/“ cat ”/“ horse ”。
Logistic 回归将 Logistic sigmoid 函数(见图 2 )应用于加权输入值,以预测输入数据属于哪两类(或者在多项式 Logistic 回归的情况下,是多个类别中的哪一个)。
图 2 : logistic sigmoid 函数
$ latex f ( x )=\ frac { 1 }{ 1 + e ^{ -x }}}$图像源
Logistic 回归类似于非线性 感知器 或没有隐藏层神经网络。与其他基本模型的主要区别在于,如果输入变量的某些统计特性成立, logistic 回归易于解释且可靠。如果这些统计特性成立,我们可以用很少的输入数据生成一个非常可靠的模型。这使得 logistic 回归对于缺乏数据的领域很有价值,比如医学和社会科学领域, logistic 回归用于分析和解释实验结果。因为它简单、快速,所以它也适用于非常大的数据集。
在深度学习中,用于分类的神经网络的最后一层通常可以解释为逻辑回归。在这种情况下,我们可以将深度学习算法视为多个特征学习阶段,然后将其特征传递到 logistic 回归中,对输入进行分类。
人工神经网络
人工神经网络( 1 )获取一些输入数据,( 2 )通过计算输入的加权和来转换这些输入数据,( 3 )将一个非线性函数应用于此转换以计算中间状态。上面的三个步骤构成了所谓的 ,而转换函数通常被称为 单元 。通常称为特征的中间状态被用作另一层的输入。
通过重复这些步骤,人工神经网络学习多层非线性特征,然后将这些非线性特征组合到最后一层来创建预测。