深度学习

已完成

深度学习是一种高级的机器学习形式,它尝试模拟人类大脑的学习方式。 深度学习的关键是创建一个人工神经网络,它通过使用数学函数模拟生物神经元中的电化学活动,如下所示。

生物神经网络 人工神经网络
Diagram of a natural neural network. Diagram of an artificial neural network.
神经元会因电化学刺激而触发反应。 触发时,信号会传递给连接的神经元。 每个神经元都是一个函数,它会处理一个输入值 (x) 和一个权重 (w)。 该函数会包装在确定是否传递输出的激活函数中。

人工神经网络由多神经元组成,它们实质上定义了深度嵌套函数。 此体系结构是该技术被称为深度学习的原因,它生成的模型通常被称为深度神经网络 (DNN)。 可以将深度神经网络用于多种机器学习问题,包括回归和分类,以及更专业的自然语言处理和计算机视觉模型。

与本模块中讨论的其他机器学习技术一样,深度学习涉及将训练数据拟合到一个函数中,该函数可以根据一个或多个特征 (x) 的值预测标签 (y)。 该函数 (f(x)) 是嵌套函数的外层,其中神经网络的每一层会封装对 x 以及与它们关联的权重 (w) 值进行操作的函数。 用于训练模型的算法涉及以迭代方式将训练数据中的特征值 (x) 通过层向前馈送,以计算 ŷ 的输出值,验证模型以评估计算的 ŷ 值与已知的 y 值相差多少(从而量化模型中的误差或损失级别),然后修改权重 (w) 以减少损失。 训练的模型包括最终的权重值,这些值可生成最准确的预测。

示例 - 使用深度学习进行分类

为了更好地了解深度神经网络模型的工作原理,让我们来探讨一个示例,其中神经网络被用于定义企鹅物种的分类模型。

Diagram of a neural network used to classify a penguin species.

特征数据 (x) 包括企鹅的一些度量值。 具体来说,这些测量值包括:

  • 企鹅鸟喙的长度。
  • 企鹅鸟喙的深度。
  • 企鹅的鳍状肢的长度。
  • 企鹅的体重。

在这种情况下,x 是具有四个值的向量,或者从数学角度上来说,x=[x1,x2,x3,x4]

我们要预测的标签 (y) 是企鹅的物种,它可能是以下三个物种之一:

  • 阿德利企鹅
  • 白眉企鹅
  • 帽带企鹅

这是分类问题的一个例子,在此过程中,机器学习模型必须预测观察对象最可能属于哪一类。 分类模型通过预测由每个类的概率组成的标签来实现此目的。 换言之,y 是三个概率值的向量,每个可能的类都具有一个概率值:[P(y=0|x), P(y=1|x), P(y=2|x)]

使用此网络推断预测的企鹅类的过程是:

  1. 企鹅观察的特征向量被馈送到神经网络的输入层,在该层中,每个 x 值有一个神经元。 在此示例中,下面的 x 向量用作输入:[37.3, 16.8, 19.2, 30.0]
  2. 第一层神经元的每个函数会通过组合 x 值和 w 权重来计算加权总和,并将其传递给激活函数,该函数会确定它是否满足要传递到下一层的阈值。
  3. 层中的每个神经元都连接到下一层中的所有神经元(该体系结构有时被称为完全连接的网络),因此每个层的结果会通过网络向前馈送,直到它们到达输出层。
  4. 输出层会生成值的向量。在这种情况下,使用 softmax 或类似函数计算三类企鹅的概率分布。 在此示例中,输出向量为:[0.2, 0.7, 0.1]
  5. 向量元素表示类 0、1、2 的概率。 第二个值是最高的,因此模型预测企鹅的种类为 1 (Gentoo)。

神经网络如何学习?

神经网络中的权重对于它如何计算标签的预测值至关重要。 在训练过程中,模型会学习将产生最准确的预测的权重。 让我们更详细地探讨一下训练过程,从而了解此学习是如何进行的。

Diagram of a neural network being trained, evaluated, and optimized.

  1. 定义训练和验证数据集,并将训练特征馈送到输入层。
  2. 网络每一层的神经元应用其权重(它们最初随机分配)并通过网络馈送数据。
  3. 输出层生成一个矢量,其中包含 ŷ 的计算值。 例如,企鹅类预测的输出可能是 [0.3. 0.1. 0.6]
  4. 损失函数用于将预测的 ŷ 值与已知的 y 值进行比较,并聚合差异(这被称为损失)。 例如,如果在上一步中返回输出的事例的已知类是 Chinstrap,则 y 值应为 [0.0, 0.0, 1.0]。 此值与 ŷ 向量之间的绝对差值为 [0.3, 0.1, 0.4]。 实际上,损失函数会计算多个事例的聚合方差,并将其汇总为单个损失值。
  5. 由于整个网络本质上是一个大型嵌套函数,因此优化函数可以使用微分计算来评估网络中每个权重对损失的影响,并确定如何调整它们(增加或减少)以减少整体损失量。 特定的优化技术可能会有所不同,但通常会涉及梯度下降法,即每个权重都会增加或减少,以最小化损失。
  6. 权重的更改会回传到网络中的各个层,并替换以前使用的值。
  7. 此过程会在多次迭代(称为“时期”)中重复,直到将损失降到最低且模型能够在可接受的准确范围内进行预测。

注意

虽然可以更轻松地想成训练数据中的每个事例通过网络进行传递,一次传递一个,但实际上,数据会被批处理成矩阵并使用线性代数计算进行处理。 因此,神经网络训练最好在具有针对向量和矩阵操作进行了优化的图形处理单元 (GPU) 的计算机上执行。