• 神经网络的基础结构
  • 神经网络的层次性
  • 激活与特征提取

多层感知机,也称为MLP模型,是一种层次网络,包括了三个部分,输入层,输出层,和中间层/隐藏层;每一层都由特定个数的节点(又可称为神经元)构成。

每一个节点上的非线性函数称为激活函数,如果缺少了激活函数,神经网络无论有多少层都失去了意义,都只能描述线性关系。

最基础的MPL是只有一个隐藏层的全链接神经网络,这是最基本的神经网络架构类型。

有两个隐藏层的MLP

在深度学习中,神经网络的结构通常包括输入层、隐藏层和输出层。其中,输入层的节点数需要与数据形状匹配,隐藏层的节点数需要根据实验和调整找到最佳的节点数,输出层的节点数通常根据任务的要求来定义。此外,激活函数也是神经网络中的重要组成部分,常见的有Sigmoid、ReLU、Tanh、Softmax等。以下是神经网络的主要结构和构造方法:

输入层 输入层的节点数需要与数据形状(维度数量)匹配,否则模型将无法接收正确形状的输入数据。对于每个输入样本,它的特征数量就对应着输入层的节点数。例如,对于图像识别问题,输入层节点数通常等于图像的分辨率乘以通道数。如果图像分辨率为28x28像素,通道数为3(RGB),则输入层的节点数为2352。对于文本处理问题,词嵌入模型通常只需要低维的输入层节点,而词袋模型或one-hot模型就需要词个数那么多的维度/节点数了;
隐藏层 中间层的节点数是根据训练数据和模型的复杂度来确定的,这需要进行实验和调整以找到最佳的节点数。一种常见的方法是通过交叉验证来确定中间层的节点数。交叉验证是将数据集分成若干份,其中一部分作为验证集用于验证模型的性能,其他部分作为训练集用于训练模型。然后,多次进行模型训练和验证,并记录模型在验证集上的性能,最终选择最佳的中间层节点数。
输出层 输出层的节点数通常根据任务的要求来定义。输出层节点数表示了模型最终需要输出的目标数量,例如分类问题可能需要输出不同类别的概率或标签,回归问题可能需要输出具体的数值等。
激活函数 它属于非线性函数,作用于神经元的输出,在神经网络中起到对输入信号进行加工、调整和压缩的作用,将神经元的输出值进行过滤或归一化,使之更符合网络后层的处理需求。常见的有 Sigmoid、ReLU、Tanh、 Softmax等。

深度神经网络的优势在于其层次性,通过多个计算层次、非线性的变换将输入信号逐步转化成更加高级、抽象和有效的特征。

这一结构的神奇之处在于,像很多经典的公式那样(傅里叶级数、泰勒展开…),只要隐藏层节点数足够多,就可近似任何连续函数;而这种多层的神经网络,就称之为深度神经网络。为什么深度神经网络对对数据有着极强的表征能力呢?层次性是自然界的基本法则,从微观粒子到整个宇宙,我们周围的世界就是由不同的层次构建起来的。在生物体内,不同细胞有着不同的分工,下一个环节的细胞响应并加工上一个环节细胞的信号/分泌物;以视觉系统为例,图像信号从进入眼睛开始,需要经历6-8层信息处理过程,才能在大脑皮层形成对画面的认知和理解;

这种层次性的意义在于,下一层不必重复处理上一层的信息,可以提高效率,同时关注更高级的信息,通过叠加层次能够实现能力的跃迁,而非堆叠;当我们忽略信息或知识之间的这种层次性时,由于高层次到低层次信息牵一发而动全身的复杂性,学习难度将会大幅提高;然而,虽然听起来只是增加层次,但是在Hinton提出分层预训练的方法之前,实现多层神经网络的学习一直是非常困难的问题,这也是为什么近十几年深度神经网络才开始大放异彩的原因。

除了多层次的特点,区别于传统机器学习模型的还有神经元的激活函数机制,这使得深度神经网络有了自动提取数据特征的能力;如果没有非线性的激活表达,那多么深的网络也形如一层;为什么激活函数有这么大的作用呢?这种非线性变换和生物大脑中神经元的激活状态具有类似性质,在生物神经元中,当神经元接收到足够多的输入信号时,才会处于兴奋状态,输出脉冲,相当于一种阈值判定机制。类似地,在深度神经网络中,激活函数也可以看作是一种阈值判断机制,只有当神经元的输入信号超过一定阈值时,才会输出非零的值。

这种 ”多层感知机+激活函数” 的结构带来的适应性优势–能够捕捉到数据之间更为复杂和高级的关系,让深度学习网络能够适应各种数据场景;因此能够在图像识别、自然语言处理、语音识别等领域中得到更好效果。

当然,由于深度学习提取特征的过程相当黑盒,通常从一个随机数开始,经过BP算法不断更新到更优。应用神经网络时,我们需要注意到最后网络参数的生成是由一定的网络超参数(人为设计)和BP反向传播算法根据输入的数据不断调优而形成的,因此神经网络除了部分超参数,很大程度是是完全黑箱的模型训练过程。这一过程一般是通过实现神经网络层次结构中不同层之间的参数学习来完成的,因此提取出的特征是由网络学得到的数据中本身就存在的抽象特征,而非用户自定义的。

尽管如此,可以通过调整神经网络的各层超参数和结构,来对特征提取的过程进行一定的定制和优化。例如,在卷积神经网络中,我们可以调整卷积核的数量、大小和步长等超参数,以及采用不同的卷积核形状、激活函数和池化方式等来定制网络的特征提取能力。此外,还可以使用迁移学习等方法,将已经训练好的神经网络模型迁移到自己的任务上,从而实现定制化的特征提取。

总结一下,深度神经网络能够通过多个计算层次、非线性的变换将输入信号逐步转化成更加高级、抽象和有效的特征;并通过梯度下降优化算法根据反馈来不断更新各层权重和偏置,从而得到更优的特征表示。