携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第6天,点击查看活动详情
最简单的深度网络称为多层感知机( multilayer perceptron ),通常缩写为MLP。通过在网络中加入一个或多个隐藏层来克服线性模型的限制,使其能处理更普遍的函数关系类型。最简单的方法是将许多全连接层堆叠在一起。 每一层都输出到上面的层,直到生成最后的输出。可以把前层看作表示,把最后一层看作线性预测器。 MLP十分适合处理表格数据,其中行对应样本,列对应特征。
输入层不涉及任何计算,因此使用此网络产生输出只需要实现隐藏层和输出层的计算。 因此,这个多层感知机中的层数为2。 注意,这两个层都是全连接的。 每个输入都会影响隐藏层中的每个神经元, 而隐藏层中的每个神经元又会影响输出层中的每个神经元。
为了发挥多层架构的潜力,还需要一个额外的关键要素: 在仿射变换之后对每个隐藏单元应用非线性的激活函数( activation function ) σ。 激活函数的输出(例如,σ(⋅))被称为活性值( activations ) 。 具有全连接层的多层感知机的参数开销可能会高得令人望而却步。 即使在不改变输入或输出大小的情况下, 可能在参数节约和模型有效性之间进行权衡。
在一对输入上进行基本逻辑操作,多层感知机是通用近似器。理论上, 即使是网络只有一个隐藏层,只要给定足够的神经元和正确的权重, 可以对任意函数建模。但实际中学习该函数是非常困难的。所以尽管一个单隐层网络能学习任何函数,但并不意味着我们应该尝试使用单隐藏层网络来解决所有问题。 事实上,通过使用更深(而不是更广)的网络,我们可以更容易地逼近许多函数。
李沐认为现在(2021年)也没有说SVM效果会比MLP差。只是MLP更好调整。
若直接用MLP处理图片参数量会非常巨大,比如一张1024×1024分辨率的RBG照片,有3×1024×1024=36M(三千六百万)个元素,若全部输入只有100个神经元的单隐藏层MLP,模型参数也会有3.6B(36亿)个(占14GB存储空间)。世界上所有的猫和狗的数量加起来也才15亿。
计算神经网络的输出
首先,回顾下只有一个隐藏层的简单两层神经网络结构:
其中, 表示输入特征, 表示每个神经元的输出, 表示特征的权重,上标表示神经网络的层数(隐藏层为1),下标表示该层的第几个神经元。这是神经网络的符号惯例,下同。
神经网络的计算
关于神经网络是怎么计算的,从我们之前提及的逻辑回归开始,如下图所示。用圆圈表示神经网络的计算单元,逻辑回归的计算有两个步骤,首先按步骤计算出 ,然后在第二步中以sigmoid函数为激活函数计算 (得出 ),一个神经网络只是这样子做了好多次重复计算。
回到两层的神经网络,我们从隐藏层的第一个神经元开始计算,如上图第一个最上面的箭头所指。从上图可以看出,输入与逻辑回归相似,这个神经元的计算与逻辑回归一样分为两步,小圆圈代表了计算的两个步骤。
隐藏层的第二个以及后面两个神经元的计算过程一样,只是注意符号表示不同
向量化计算:向量化的过程是将神经网络中的一层神经元参数纵向堆积起来,例如隐藏层中的 纵向堆积起来变成一个 的矩阵,用符号 表示。另一个看待这个的方法是我们有四个逻辑回归单元,且每一个逻辑回归单元都有相对应的参数——向量 ,把这四个向量堆积在一起,会得出这4×3的矩阵。