多层感知机(MLP)——有时也称为人工神经网络(ANN)或前馈神经网络(FNN)——是深度学习中最基础、最强大的架构之一。其灵活的设计和卓越的性能使其成为解决各领域各种问题的首选算法。
此外,MLP是所有现代深度学习架构的核心构建块——无论是CNN、RNN、LSTM还是Transformer。所有这些模型都可以被认为是MLP的专门版本,它们通过在其之上添加结构和约束来处理不同的问题。
在本文中,我们将深入探索MLP的迷人世界。我们将探讨其开发背后的动机、架构、工作原理、局限性以及现代替代方案。本文的目标是帮助你建立强大的直觉和概念基础,而不会让你陷入繁重的数学知识中。
概括地讲,我们将在本文探讨如下内容:
多层感知机(MLP)本质上是感知器的扩展,而感知器是第一个神经网络。因此,在深入研究MLP之前,必须对感知器的架构和工作原理有深入的了解。
不过别担心,我已经帮你搞定了!我写了一篇专门的博客,详细解释了感知器,包括它的核心组件、功能和局限性:
深度学习专题:感知器解析——构建模块、工作原理和局限性
(了解感知器是什么、它的组成部分、直觉、如何训练以及它的局限性,为……铺平了道路。)
阅读此博客将为你提供坚实的基础,并使你更容易理解如何构建MLP来处理复杂问题。
1958年,一位名叫弗兰克·罗森布拉特(Frank Rosenblatt)的研究人员受人脑神经元功能启发,开发了一个数学模型。这是一个革命性的发展,因为它使我们能够在机器中模拟人脑的智能,并标志着构建智能机器的第一步。该模型被命名为“感知器”。
图片来源:Arion Das
感知器具有简单的架构(如上图所示):
20世纪80年代中期,多层感知机(MLP)作为感知器的扩展被引入,其设计初衷是为了克服感知器的缺点。为了将感知器转变为更强大的多层感知机(MLP),研究人员通过解决其局限性引入了以下关键增强功能:
感知器的简单架构只能产生单一的线性决策边界,限制了其捕捉复杂非线性模式的能力。
为了克服这一限制,研究人员开始另辟蹊径:与其依赖单一的直线决策边界,不如生成多个线性边界,并将它们智能地组合起来,形成一个平滑的曲面决策面,结果会怎样呢?这种曲面边界能够捕捉非线性数据的本质,解决简单感知器无法解决的问题。
步骤1:为了实现这个想法,研究人员首先将多个感知器堆叠在一起,以创建多个线性边界。例如,对于仅包含两个输入特征的数据集,他们使用两个感知器而不是一个。每个感知器都形成自己的线性决策边界——每个边界捕捉数据集的不同方面,如下图所示:
图片来源:汤姆·阿尔康
步骤2:下一个挑战是如何将这些单独的边界合并成一个弯曲的边界?这个问题通过添加另一个感知器来解决,该感知器将前两个感知器的输出作为其输入。
但由于线性函数的线性组合仍然是线性的,我们必须首先将非线性激活函数(例如Sigmoid、ReLU或tanh)应用于这些感知器的输出。
经过这种转换后,下一层感知器可以组合它们的信息来产生合并的输出,从而产生更复杂的决策边界,准确捕捉数据中的底层模式(如下图所示的弯曲边界)。
图片来源:汤姆·阿尔康
这种堆叠设计后来被称为多层感知机(MLP)。顾名思义,MLP通过将多个感知器排列成多层来扩展基本感知器,其中每层的输出成为下一层的输入。低级感知器充当特征提取器,学习不同的线性边界,而高级感知器则将这些输出整合起来,形成可以模拟复杂非线性关系的曲线决策边界。
原始感知器的另一个主要限制是其对二分类问题的适用性有限。由于它依赖阶跃函数作为激活函数,因此只能将数据分成两类。
研究人员很快意识到,为输出层选择合适的激活函数可以使MLP解决各种各样的任务,例如用于二元分类的S型激活、用于多类分类的SoftMax或用于回归的线性激活。
原始感知器的另一个关键限制是,它每次训练时都会创建不同的决策方案。这是因为它从随机权重开始,而它查看训练样本的顺序会影响它调整权重的方式。此外,没有明确的方法来衡量它找到的边界是否真的是最佳边界。它只能知道每个点是否被正确分类,但无法评估分离的整体质量。
通过定义一个损失函数来量化预测误差,以衡量网络的整体性能,解决了这一限制。然后,网络使用梯度下降等优化器,逐步调整所有权重,以减少误差。通过这种方式,网络能够持续找到最佳的决策边界,从而使MLP能够更可靠地捕捉数据中的底层模式。
MLP架构——构建模块
图片来源:AIML.com
激活函数的演变,结合分层架构和损失函数的优化,将单层感知器转变为多层感知机——一种能够捕捉非线性模式并解决分类和回归问题的模型。最终的MLP架构的核心组件包括:
输入层
输入层充当原始数据的入口。此层不执行任何计算,只是将数据馈送到网络。例如,在信用卡欺诈检测系统中,交易金额、地点和时间等特征通过此层输入模型。
隐藏单元
堆叠在输入层和输出层之间的感知器被称为隐藏单元、节点或神经元。每个隐藏单元都是一个感知器,包含两个关键组件,用于执行两个主要操作:
隐藏层(一个或多个)
堆叠多个隐藏单元后形成的层称为隐藏层,它们位于输入层和输出层之间。隐藏层是真正的游戏规则改变者,因为它们负责处理MLP中的所有处理。它们使网络能够超越简单的线性数据模式,学习数据中高度复杂的非线性模式。
输出层
输出层是MLP架构的最后一层。它由感知器组成,这些感知器将最后一个隐藏层的结果组合起来,产生最终的预测。该层中的每个感知器还包含两个关键组件:
请注意,在计算MLP系统的层数时,我们仅包含隐藏层和输出层。输入层不计算在内,因为它不执行任何计算,它只是将数据输入网络。例如,如果一个模型有一个隐藏层和一个输出层,则无论每层有多少个神经元,它都被称为2层MLP。
在感知器中,每个输入都会乘以一个权重,该权重表示该输入对最终预测的重要性。较大的权重会使输入更具影响力,而较小的权重或负权重则会降低甚至抵消其影响。此外,每个感知器还有一个偏置项,通过移动决策边界来提高模型的灵活性。
多层感知机(MLP)本质上是多层堆叠的感知器的集合。网络中的每个感知器都有各自的权重和偏差。与单个感知器一样,这些权重和偏差无需手动设置,而是由网络在训练过程中学习而来。由于这些值会在整个训练过程中更新,因此它们统称为可训练参数。
MLP架构中可训练参数的总数是通过对网络中所有感知器的权重和偏差进行求和来计算的——计算每一层的权重和偏差并将它们相加。
对于单个感知器,权重的数量等于输入的数量,因为每个输入都有由感知器分配的权重。此外,每个感知器都附加一个偏差,以增加决策边界的灵活性。
示例:具有两个输入的感知器有3个可训练参数——2个权重和1个偏差。
对于MLP网络中的每一层
在具有多个感知器的层中,可训练参数取决于该层的输入数量和该层中感知器的数量。
对于整个MLP网络
网络中总的可训练参数是通过对所有层的参数求和得到的:
例子
考虑一个具有2个输入、1个带有2个节点的隐藏层和1个带有1个节点的输出层的MLP。
MLP的工作原理
为了理解多层感知机(MLP)的内部功能,我们需要将其分为两个关键方面:
示例设置:学生入学预测
让我们考虑一个简单的二元分类任务,根据两个输入(CGPA和IQ)预测学生是否会被安置,我们选择的MLP架构是:
前向传播:MLP如何进行预测
图片来源:AIML.com
以下内容将描述数据如何流经网络以产生最终的预测(如上图所示):
步骤1:输入进入网络
网络通过输入层接收输入。在我们的示例中,输入为:x₁= CGPA & x₂= IQ。
步骤2:输入层到隐藏层
然后,输入(x₁和x₂)被传递到隐藏层的每个神经元。每个神经元接受这些输入,应用其自身的重要性权重并计算加权和:
一旦每个神经元都有了综合分数,它就会通过激活函数将这些输出转换为引入非线性。
两个隐藏神经元独立形成两个“决策边界”(z₁和z₂),并根据输入的组合方式生成两个输出(a₁和a₂)。
步骤3:隐藏层到输出层
隐藏层神经元(a₁和a₂)的输出成为输出层神经元的输入。输出层神经元计算这些输入的加权和,然后应用S型激活函数产生最终输出。
步骤4:最终预测
输出层给出的最终输出是最终预测,在这种情况下是一个概率(0到1),因为我们使用了S型激活函数,它将任何实数转换为0到1之间的值。
总而言之,在正向传播过程中,输入逐层流经网络。每个神经元应用其权重和激活函数来转换数据,并将结果传递到下一层。这个循序渐进的过程使网络能够组合和解释输入,最终以概率形式生成最终预测——这说明了MLP如何进行决策。
图片来源:AIML.com
训练多层感知机(MLP)的目标是找到其可训练参数(权重和偏差)的最优值,以使模型的预测尽可能接近实际结果。该过程可以分为以下步骤:
步骤1:随机参数初始化和前向传播
训练从为所有权重和偏差分配随机值开始。这些初始值允许网络通过前向传播生成预测,其中输入使用当前参数和激活函数逐层转换。
步骤2:将预测与实际结果进行比较
一旦生成预测,网络就会通过将预测值与真实值进行比较来计算损失(或预测误差)。损失函数量化了预测与实际结果的偏差。
步骤3:测量每个参数对预测误差的贡献
网络分析每个权重和偏差对损失的影响程度。利用梯度(损失函数相对于每个参数的斜率),网络确定减少误差所需的调整方向和幅度。
步骤4:更新参数
优化器(例如梯度下降)会根据确定的方向略微调整权重和偏差。此更新旨在降低损失,逐步改善网络的预测。
步骤5:迭代多个时期
从正向传播到损失计算,再到反向传播,最后到参数更新,这个循环会在许多训练样本和多个迭代周期中重复进行。随着每次迭代,网络逐渐学习数据中的潜在模式,并持续训练直至模型收敛。
总而言之,前向传播是关于进行预测,而反向传播是关于从错误中学习。理解这个循环可以让你更清晰地理解MLP的训练,并为探索高级神经网络奠定基础。
MLP的分层架构具有以下主要优势,使其成为解决实际挑战的可靠选择:
虽然MLP功能强大,但它们也存在一些局限性。在决定MLP是否适合特定问题时,了解这些局限性至关重要。以下是使用MLP时经常遇到的一些关键限制:
现在,我们已经探讨了MLP的优缺点,那么最大的问题是:你真的应该用它来解决你的问题吗?在投入时间构建和训练MLP之前,一些简单的经验法则可以帮助你判断它是否是合适的工具。
如果出现以下情况,请使用MLP:
如果出现以下情况,请避免使用MLP:
简而言之,当你拥有庞大、复杂、非线性的数据集,并且准确性比可解释性更重要时,MLP会大放异彩。但当数据规模较小、关系简单,或者可解释性和效率更重要时,更简单或更专业的模型通常会表现得更好。
总之,MLP弥合了简单感知器与现代深度学习之间的差距,使我们能够建模复杂的非线性关系。然而,MLP并非没有缺点,尤其是与更高级的模型相比时。因此,关键在于了解MLP何时是合适的工具,以及何时应该超越它们。构建这个基础不仅有助于实际应用,还能让我们更容易理解更高级的神经网络。