神经网络(系统性学习三):多层感知机(MLP)

相关文章:

神经网络中常用的激活函数

神经网络(系统性学习一):入门篇

神经网络(系统性学习二):单层神经网络(感知机)


多层感知机(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仍然是很多基础任务和小型数据集问题中的首选模型。同时,它常常作为其他复杂模型中的子模块,为解决复杂问题提供基础支持。

若对大噶有帮助的话,希望点个赞支持一下叭!

相关推荐
小洛~·~6 小时前
《深度学习入门:基于Python的理论与实现》第四章神经网络的学习—上篇(损失函数登场)
python·深度学习·神经网络
Conan х7 小时前
第1 篇:你好,时间序列!—— 开启时间数据探索之旅
人工智能·python·神经网络·机器学习·信息可视化
侦探已死4889 小时前
Python 网络编程:TCP 与 UDP 协议详解及实战代码
网络·python·udp·学习笔记·tcp
人工智能那些事儿10 小时前
PyTorch入门:从零开始搭建你的第一个神经网络
人工智能·pytorch·深度学习·神经网络·机器学习·计算机视觉·自然语言处理
joekl10 小时前
深度学习神经网络全连接笔记day1
笔记·深度学习·神经网络
liruiqiang0511 小时前
神经网络优化 - 小批量梯度下降之批量大小的选择
人工智能·深度学习·神经网络·机器学习·梯度下降
RockLiu@80511 小时前
ECA 注意力机制:让你的卷积神经网络更上一层楼
人工智能·神经网络·cnn
沅_Yuan13 小时前
基于超启发鲸鱼优化算法的混合神经网络多输入单输出回归预测模型 HHWOA-CNN-LSTM-Attention
神经网络·matlab·回归·cnn·lstm·鲸鱼优化算法·hhwoa
Francek Chen13 小时前
【现代深度学习技术】循环神经网络05:循环神经网络的从零开始实现
人工智能·pytorch·rnn·深度学习·神经网络
人工智能那些事儿13 小时前
神经网络:从基础到应用,开启智能时代的大门
java·人工智能·python·深度学习·神经网络·算法·机器学习