相关文章:
神经网络中常用的激活函数
神经网络(系统性学习一):入门篇
多层感知机(MLP)
多层感知机(MLP)是一种经典的前馈神经网络(Feedforward Neural Network),通常用于解决分类、回归、监督学习任务。它由一个输入层、一个或多个隐藏层和一个输出层组成。
网络结构
-
输入层:接收数据输入,特征维度等于数据的特征数。
-
隐藏层:一个或多个隐藏层,每层包含若干个神经元,负责提取数据的特征。
-
输出层:根据任务(分类或回归)输出最终的结果。
主要参数
-
权重(Weights):连接各层神经元的参数,决定信号的强弱。
-
偏置:为每个神经元添加额外的灵活性。
-
超参数:学习率、隐藏层数、每个隐藏层的神经元数等
特别强调:每个神经元之间的权重和偏置绝大多数时候不相同!!!
核心步骤
以隐藏层只有一层为例。
(一)初始化权重和偏置
初始化权重和偏置矩阵。即对每个神经元之间的权重和偏置随机设定一个初始值。
1.1 避免对称性问题
如果所有权重都初始化为相同的值(比如都为0),反向传播计算的梯度对所有权重的更新将是完全相同的。这会导致所有神经元学习到相同的特征,从而失去模型的表达能力。
1.2 权重的初始化
权重的初始化影响网络的输入和输出值的分布。如果初始化值过大,可能导致激活函数的输出进入饱和区(如Sigmoid激活函数趋近于0或1),使得梯度变得极小,网络难以训练(梯度消失问题)。如果初始化值过小,网络学习速度会很慢。
权重可以初始化为均值为0的小随机值。
常见方法包括:
-
均匀分布:随机生成值在 [−a,a] 区间内。
-
正态分布:随机生成值符合 。
1.3 偏置的作用
偏置的初始化相对简单,通常设为零或一个小的随机值即可。它的作用是为神经元提供一个额外的自由度,允许模型学习非零输出。
(二)选择损失函数、激活函数
对于分类问题,常用交叉熵损失函数,对于回归问题,常用均方误差损失函数。以MSE损失函数为例,我们假定损失函数为L:
其中, 是预测值, 是真实标签。
激活函数的选择参考文章:常见的激活函数
(三)前向传播
1、从输入层到隐藏层
假设输入层的神经元为 ,隐藏层的神经元为 (隐藏层有 k 个神经元)。输入到第 j 个隐藏层神经元 hj 的计算公式如下:
其中:
-
是第 j 个隐藏层神经元与第 i 个输入神经元之间的权重。
-
xi 是输入层第 i 个神经元的输入值。
-
bj 是第 j 个隐藏层神经元的偏置。
经过激活函数 ,得到隐藏层神经元的输出:
2、从隐藏层到输出层
隐藏层的输出 将作为输入传递到输出层的神经元。假设输出层有 m 个神经元,输出层的第 个神经元的计算公式为:
其中:
-
是第 个输出层神经元与第 i 个隐藏层神经元之间的权重。
-
是隐藏层第 i 个神经元的输出值。
-
是第 个输出层神经元的偏置。
同样,经过激活函数(通常是Softmax或Sigmoid)后,得到输出层的输出:
反向传播与权重更新
(四)误差计算与反向传播
训练MLP时,使用反向传播算法来更新网络中的权重和偏置。反向传播算法基于链式法则计算损失函数对每个权重和偏置的梯度,然后使用梯度下降法(默认使用全批量梯度下降)来更新参数。
假设损失函数为 L,权重为 w,偏置为 b,则每个权重和偏置的更新规则为:
其中 η 是学习率, 和 是损失函数关于权重和偏置的偏导数。
(五)迭代过程
重复步骤三和步骤四,不断迭代更新权重和偏置。
终止条件:达到最大迭代次数、损失收敛、目标性能达标等。
注:整个过程只以一个隐藏层为例,如果有多个隐藏层,从隐藏层到隐藏层之间的传递也是类似的。也是以上一层的输出作为该层的输入,并通过激活函数将该层输入转化为该层的输出;其次就是注意每个神经元之间的权重和偏置不一样。
MLP优缺点总结
MLP 是一种通用的神经网络模型,广泛用于分类、回归、特征提取和强化学习等任务。尽管它的能力和表现已经被更复杂的模型(如卷积神经网络 CNN 和循环神经网络 RNN)在某些领域超越,但由于其简单性和强大的非线性拟合能力,MLP仍然是很多基础任务和小型数据集问题中的首选模型。同时,它常常作为其他复杂模型中的子模块,为解决复杂问题提供基础支持。
# 若对大噶有帮助的话,希望点个赞支持一下叭!