深度学习

已完成

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

生物神经网络 人工神经网络
自然神经网络图。 人工神经网络示意图。
神经元在响应电化学刺激时激发。 触发时,信号将传递给连接的神经元。 每个神经元都是对输入值(x)和 权重w)进行作的函数。 该函数包装在 激活 函数中,用于确定是否传递输出。

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

与本模块中讨论的其他机器学习技术一样,深度学习涉及到将训练数据拟合到可以根据一个或多个特征(x)的值预测标签(y)的函数。 函数(f(x))是一个嵌套函数的外层,其中神经网络的每一层都封装了对x及其关联的权重(w)值进行操作的函数。 用于训练模型的算法涉及迭代地将训练数据中的特征值(x)喂入层中,以计算 ŷ 的输出值,验证模型以评估计算的 ŷ 值和已知 y 值的距离(以量化模型中的误差程度或 损失),然后修改权重(w)以减少损失。 训练的模型包括最终的权重值,这些值导致最准确的预测。

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

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

用于对企鹅物种进行分类的神经网络示意图。

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

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

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

我们试图预测的标签(y)是企鹅的物种,有三种可能的物种可能是:

  • Adelie
  • 白眉企鹅
  • 帽带企鹅

这是分类问题的一个示例,其中机器学习模型必须预测观察对象所属的最可能类。 分类模型通过预测由每个类的概率组成的标签来实现此目的。 换句话说,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 (根图)。

神经网络如何学习?

神经网络中的权重是计算标签预测值的方式的核心。 在训练过程中,模型会学习将产生最准确的预测的权重。 让我们更详细地探讨训练过程,以了解此学习的发生方式。

展示神经网络训练、评估和优化过程的图示。

  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)的计算机上执行。