前馈神经网络(FFNN)
欢迎Star我的Machine Learning Blog:https://github.com/purepisces/Wenqing-Machine_Learning_Blog。
定义:
前馈神经网络包括多个层次:输入层、一个或多个隐藏层和输出层。在FFNN中,数据单向流动——直接从输入到输出,没有循环。当使用多个隐藏层时,神经网络被称为“深度神经网络”,从而引入了“深度学习”的领域。
前馈过程:
给定已知的输入向量
和网络中的权重,我们可以计算输出向量
。
基本结构:
-
输入层:
- 神经元的数量通常对应于输入数据的大小。
- 例如:对于28x28像素的图像(如MNIST数据集中的图像),输入层有28×28=784个神经元,每个像素一个。
- 神经元的数量通常对应于输入数据的大小。
-
隐藏层:
- 神经元的数量和隐藏层的数量是可以调整的超参数。它们与输入或输出的大小没有直接关系,而是基于模型性能、问题复杂度和过拟合的风险来选择的。
- 第一个隐藏层中的每个神经元都有来自输入层所有神经元的权重和一个独特的偏差。
-
输出层:
- 神经元的数量取决于所需的输出格式或分类类别。
- 二元分类:单个神经元表示正类的概率。
- 多类分类:神经元与类别数量匹配。例如,数字识别任务将有10个输出神经元。
注意:输出层的神经元数量通常与输入层不同。每层可以有不同数量的神经元,表明其“大小”或容量。
神经元的复杂性:
理解权重和偏差
- 权重(通常表示为
或
):这些是应用于输入值的乘数,代表神经元之间连接的重要性。
- 偏差(通常表示为
或
):这是一个加到输入的加权和上的偏移量。从概念上讲,它类似于线性回归方程中的截距。
神经元内部:两步转换
每个神经元的输出是通过首先取其输入的加权和,加上偏差项,然后通过激活函数进行非线性变换得到的:
- 线性组合:神经网络中的每个神经元通过权重和偏差与其前一层进行交互。输入通过权重缩放,求和,然后通过偏差进行偏移。
- 公式:
- 公式:
- 非线性激活:线性和
通过激活函数进行非线性变换,使网络能够学习复杂模式。
-
常见函数:ReLU、Sigmoid、Tanh、Softmax
-
神经元输出:通过激活函数 $f$ 处理结果
后,我们获得神经元的输出,表示为
。数学上表示为:
-
重要性:通过跨层级级联这些转换,神经网络可以表示高度复杂的函数。训练调整神经元的权重和偏差,优化它们以减少预测输出和实际数据之间的差异,通常使用梯度下降等优化算法。
参数计数
全连接网络:这些是每个神经元与后续层中的每个其他神经元连接的网络。卷积神经网络(CNN)是一种FFNN,但在CNN中,我们只有一些权重是非零的,大多数是零,这意味着每个神经元只与前一层中的少数其他神经元连接。这是一种特殊情况。
对于第一个隐藏层:
- 权重:第一个隐藏层中的每个神经元都与输入层中的每个神经元(或输入特征)相连。因此,如果输入层中有
n
个神经元,第一个隐藏层中的一个神经元将有n
个与之相关的权重。 - 偏差:第一个隐藏层中的每个神经元也有其独特的偏差来调整其输出。
对于相邻层: 考虑网络中的两个相邻层:
-
第
层有
个神经元
-
第
层有
个神经元
-
假设
层中的每个神经元都与$L-1$层中的每个神经元相连
总参数(权重+偏差):
(因为每个
层中的神经元都获得不同的偏差)