本文将详细介绍一下全连接神经网络,也常被称为多层感知机 或 DenseNet。
全连接神经网络 是深度学习中最基本、也是最经典的神经网络结构之一。它的核心思想是:网络中的每一层的每一个神经元,都与下一层的每一个神经元相连接。
你可以把它想象成一个巨大的、错综复杂的网络,信息从输入层开始,经过层层传递和变换,最终得到输出结果。
一个典型的FCN主要由以下三部分组成:
功能:接收原始数据。
特点:该层的神经元数量由输入数据的特征维度决定。例如,一张28x28像素的灰度手写数字图像,会被展平成一个包含784个元素的向量,那么输入层就需要784个神经元。
功能:这是神经网络的“大脑”,负责对输入数据进行复杂的非线性变换和特征提取。一个FCN可以有一个或多个隐藏层,层数和每层的神经元数量是需要人为设定的超参数。
“全连接”的体现:第N层的每一个神经元,都与第N+1层的每一个神经元有连接。每一个连接上都有一个权重,这是网络需要学习的关键参数。
功能:产生最终的预测结果。
特点:该层的神经元数量由任务类型决定。
1、二分类问题:通常使用1个神经元(通过Sigmoid函数输出0-1之间的概率)。
2、多分类问题:神经元数量等于类别数(通过Softmax函数输出每个类别的概率)。
3、回归问题:通常使用1个或多个神经元(例如,预测房价、气温等连续值)。
数据在网络中从输入层流向输出层的过程称为前向传播。具体来说,对于第 l 层中的某个神经元 j,其计算过程如下:
1、加权求和:接收来自前一层(l-1层)所有神经元的输出 ( x_i ),并与对应的权重 ( w_{ji} ) 相乘后求和,再加上一个偏置项 ( b_j )。
2、激活函数:将加权求和的结果 ( z_j ) 输入到一个激活函数 ( f ) 中。
激活函数的作用至关重要,它为网络引入了非线性。如果没有激活函数,无论网络有多少层,最终都等价于一个线性模型,无法学习复杂的模式。常用的激活函数有:
1、Sigmoid
2、Tanh
3、ReLU - 目前最常用,因为它能有效缓解梯度消失问题。
网络的学习过程就是不断调整所有连接的权重(W) 和偏置(b),使得网络的预测输出尽可能接近真实值。
这个过程通过反向传播算法实现,其核心步骤是:
1、计算损失:通过损失函数 计算网络预测值与真实标签之间的误差。例如,交叉熵损失(用于分类)或均方误差(用于回归)。
2、反向传播误差:将损失从输出层开始,反向传播回网络中的每一层。这个过程中会计算损失函数对于每个权重和偏置的梯度(即导数),它指明了参数调整的方向和幅度。
3、更新参数:使用优化器(如梯度下降法及其变种:SGD, Adam等)根据计算出的梯度来更新所有的权重和偏置。
不断重复 前向传播 -> 计算损失 -> 反向传播 -> 更新参数 这个过程,直到模型收敛(即损失不再显著下降)。
1、结构简单直观:易于理解和实现,是学习深度学习的入门模型。
2、强大的函数逼近能力:理论上,只要隐藏层足够宽或足够深,FCN可以以任意精度逼近任何连续函数(万能近似定理)。
3、通用性强:可用于分类、回归等多种任务。
1、参数量巨大:由于是全连接,参数数量会随着层数和神经元数量的增加而急剧膨胀。例如,一个1000个神经元的层连接到另一个1000个神经元的层,就需要100万个权重!这会导致:
2、计算成本高,训练慢。
3、容易过拟合,需要较强的正则化(如Dropout)。
4、忽略了空间信息:对于图像、语音等具有空间或时序结构的数据,FCN需要将输入数据展平成一维向量,这破坏了原始数据中的空间拓扑关系。例如,在图像中,相邻像素之间的关系非常重要,但FCN无法有效利用这种局部相关性。
正是由于上述局限性,FCN在处理图像、语音等数据时,很大程度上已经被更专用的网络结构所取代,例如:
1、卷积神经网络(CNN):专门处理图像,利用卷积核高效提取局部特征,参数共享大大减少了参数量。
2、循环神经网络(RNN):专门处理序列数据,如文本、语音。
然而,FCN并不过时,它仍然在以下场景中扮演着重要角色:
1、CNN/RNN的末端:在CNN提取完图像特征,或RNN处理完序列信息后,通常会接上1-2个全连接层来进行最终的分类或回归。例如,在经典的AlexNet、VGG中,最后的分类器就是全连接层。
2、处理表格数据:对于传统的结构化数据(如Excel表格),FCN仍然是非常有效的模型。
3、强化学习:在某些强化学习算法中,价值网络或策略网络也常使用FCN。
全连接神经网络是深度学习的基石。它通过全连接结构和非线性激活函数,具备了强大的表示能力。其学习过程依赖于反向传播算法。虽然它在处理图像、语音等复杂数据时存在参数量大和忽略空间结构的缺点,但其核心思想是所有深度网络的基础,并且在混合模型中(如CNN+FCN)继续发挥着不可替代的作用。理解FCN是理解更复杂神经网络架构的第一步。