2382 words
12 minutes
05-深度前馈网络
  1. 引言

深度学习是机器学习领域中的一个重要分支,而深度前馈网络(DNN)是深度学习的基础模型之一。本文将介绍深度前馈网络的概念、原理和应用,并提供一个Python示例,以帮助读者更好地理解和应用该技术。

  1. 什么是深度前馈网络

深度前馈网络(Deep Feedforward Network),也被称为前馈神经网络或多层感知器(Multilayer Perceptron,MLP),是深度学习领域中最基本和最经典的模型之一。它是一种具有多个隐藏层的前馈神经网络模型,通过多层非线性变换来学习数据的表示和特征,从而实现各种机器学习任务。

在深度前馈网络中,信息从输入层流向输出层,每一层都通过一系列的权重和偏置来对输入进行线性组合和非线性变换。这些层之间的连接是前向的,即信息只能从前一层传递到后一层,没有反馈连接。这种结构使得深度前馈网络成为一种有向无环图(DAG),并且可以通过简单的前向传播算法计算输出。

深度前馈网络的每个节点被称为神经元,每个神经元接收来自前一层神经元的输入,并通过激活函数进行非线性变换。激活函数的作用是引入非线性因素,使得深度前馈网络能够学习到更复杂的模式和表示。常见的激活函数包括Sigmoid、ReLU、Tanh等。

深度前馈网络的隐藏层可以视为对输入数据进行一系列非线性映射和特征提取的过程。随着隐藏层数的增加,网络可以学习到越来越复杂的表示和抽象特征,从而提高模型的性能和表达能力。这种深层结构使得深度前馈网络能够逐渐构建出对输入数据更加丰富和高级的表示,有助于解决更复杂的机器学习问题。

深度前馈网络的训练通常使用反向传播(Backpropagation)算法,它基于梯度下降的思想,通过计算输出与真实标签之间的误差,并将误差信号沿着网络反向传播,更新网络中的权重和偏置参数。这个过程不断迭代,直到达到一定的收敛条件。

深度前馈网络在许多机器学习任务中取得了巨大的成功,特别是在图像分类、语音识别、自然语言处理等领域。通过大规模数据集的训练,深度前馈网络可以自动地学习到输入数据的高级特征表示,从而实现高性能的模式识别和预测。

总而言之,深度前馈网络是一种基于多层非线性变换的前馈神经网络模型,通过多层的隐藏层逐渐构建复杂的特征表示。它通过反向传播算法进行训练,并在许多机器学习任务中取得了显著的成果。深度前馈网络的发展推动了深度学习的快速发展,并在人工智能领域产生了深远的影响。

  1. 深度前馈网络的原理

3.1 神经元和激活函数

深度前馈网络由神经元构成,每个神经元接收来自上一层神经元的输入,并产生输出。在每个神经元中,输入信号通过一个激活函数进行非线性变换。常用的激活函数包括Sigmoid、ReLU和Tanh等,它们使得深度前馈网络能够学习非线性模式。

3.2 前馈传播

深度前馈网络中的信息传播是单向的,从输入层逐层向前传播,直到输出层生成最终结果。每个神经元的输出作为下一层神经元的输入,这样信息在网络中传递并逐渐被加工和提取特征。

3.3 反向传播和参数更新

深度前馈网络的训练是通过反向传播算法来实现的。该算法使用梯度下降的思想,通过计算输出与真实标签之间的误差,并沿着网络反向传播误差信号,更新网络中的权重和偏置参数。这个过程不断迭代,直到达到一定的收敛条件。

实例

通过学习一个表示来解决 XOR 问题。图上的粗体数字标明了学得的函数必须在每个点输出的值。(左) 直接应用于原始输入的线性模型不能实现 XOR 函数。当 x 1 = 0 时,模型的输出必须随着 x 2 的增大而增大。当 x 1 = 1 时,模型的输出必须随着 x 2 的增大而减小。线性模型必须对x 2 使用固定的系数 w 2 。因此,线性模型不能使用 x 1 的值来改变 x 2 的系数,从而不能解决这个问题。(右) 在由神经网络提取的特征表示的变换空间中,线性模型现在可以解决这个问题了。在我们的示例解决方案中,输出必须为 1 的两个点折叠到了特征空间中的单个点。换句话说,非线性特征将 x = [1,0] ⊤ 和 x = [0,1] ⊤ 都映射到了特征空间中的单个点 h = [1,0]

⊤ 。线性模型现在可以将函数描述为 h 1 增大和 h 2 减小。在该示例中,学习特征空间的动机仅仅是使得模型的能力更大,使得它可以拟合训练集。在更现实的应用中,学习的表示也可以帮助模型泛化。

3.4 基于梯度的学习

神经网络中的非线性导致它的大部分代价函数变得非凸,对于非凸的损失函数,梯度下降算法不能保证收敛到全局最优,因此神经网络模型中的参数初始化是非常重要的,通常会将所有的权重初始化为一个较小的随机数,并且将偏置初始化为0或者较小的正值。同其他机器学习算法一样,基于梯度的学习方法,需要设计代价函数,选择模型输出的表示方法。这里介绍神经网络中关于它们的一些设计方法。

3.4.1 代价函数

同其他机器学习模型一样,大多数情况下,神经网络的参数模型定义一个分布,并且使用最大似然原理,用训练数据和模型预测间的交叉熵作为损失函数。有时候我们不需要预测 y 的完整概率分布,而是仅仅预测在给定 x 的条件下 y 的统计量。这个时候我们会使用一些专门的损失函数来进行模型的评估。

3.4.1.1 使用最大似然学习条件分布

大多数现代神经网络使用极大似然原理,也就是说模型的损失函数和训练数据和模型分布间的交叉熵等价。它表示为:

由于神经网络的特殊结构,导致神经网络必须注意的是损失函数的梯度必须有足够大的预测性,这样才能很好的指导算法的学习。很多输出单元都会包含一个指数函数,当变量取绝对值非常大的负值时函数会变得饱和(函数变得很“平”),函数梯度变得很小,而负的对数似然能够抵消输出单元中的指数效果。

3.4.1.2 学习条件统计量

我们有时只需要学习给定 x 的某个条件统计量,不需要学习一个完整的概率分布

这是需要使用变分法(calculus of variations),通过学习到一个函数,这个函数能够计算给定 x 时 y 的均值和中位数。目前我们给出学习给定 x 时的 y 均值和中位数的优化问题:

预测y的均值 通过优化问题

得到

要求这个函数处在我们要优化的类里。换句话说,如果我们能够用无穷多的、来源 于真实的数据生成分布的样本进行训练,最小化均方误差代价函数将得到一个函数, 它可以用来对每个 x 的值预测出 y 的均值。 不同的代价函数给出不同的统计量。第二个使用变分法得到的结果是

将得到一个函数可以对每个 x 预测 y 取值的中位数,只要这个函数在我们要优化的 函数族里。这个代价函数通常被称为 平均绝对误差(mean absolute error)。

3.4.2 输出单元

从前文可知,通过极大似然的交叉熵损失函数,与我们选择的输出模型相关。本节讨论输出单元的选择,我们假定本节输出单元对前馈网络提供的一组定义为 h = f(x; θ) 的隐藏特征进行变换来完成整个网络的任务。

05-深度前馈网络
https://yinheee.pages.dev/posts/笔记/深度学习/05-深度前馈网络/
Author
Yinheee
Published at
2024-03-28