MLP 多层感知机
深度学习的基础砖块——把神经元一层一层叠起来,就能学会任何复杂规律
01 核心原理(大白话版)
你看一张照片,认出里面是猫。这件事你的大脑怎么做的?视网膜感知光线 → 初级视觉皮层识别边缘 → 更高层识别耳朵、胡须 → 最终得出"是猫"的结论。
MLP 模仿的正是这个过程:一层神经元负责一个抽象层次,信号从低级特征流向高级判断。每一层都在上一层的结果上再做一次"加工",层数越多,能学习的规律越复杂。
信号是怎么流过网络的
把原始数据(图片像素、传感器读数、文字编码……)喂进来,每个输入特征对应一个神经元。
每个神经元把上一层所有输出乘以权重后加总,再套一个激活函数(如 ReLU)引入非线性。这一步可以重复多层。
最后一层输出预测结果。分类任务用 Softmax 输出各类概率,回归任务直接输出数值。
计算预测结果与真实答案的差距(损失),用链式法则从后往前算每个权重对误差的贡献,然后用梯度下降微调——不断重复,网络越来越准。
激活函数是灵魂所在。没有激活函数,无论叠多少层,整个网络等价于一个线性模型,只能画直线。ReLU(负数归零,正数保留)打破线性,让网络有能力拟合任意曲线。
层数越多越好吗?
太浅(1-2 层)
只能学简单规律,对于复杂任务(图像识别、自然语言)能力不够,欠拟合。
太深(不加技巧)
梯度在反向传播时越来越小(梯度消失),靠近输入的层几乎学不到东西。需要残差连接、批归一化等技术来解决。
一步步构建 MLP
从数据到网络训练,逐步搭建。
用两组高斯分布的点代表两个类别,看看数据长什么样。
用 TensorFlow.js 搭两层隐藏层(ReLU)+ Softmax 输出层。
每 3 个 epoch 更新一次决策边界,观察网络如何从"乱猜"到"精准划分"。
02 代码
03 学术性讲解
MLP(多层感知机)是深度学习的基础模型。它由多层神经元组成,每层的神经元与下一层全连接,能够学习非线性关系。
网络结构
MLP 通常包含三类层,本演示模型结构为 2 → 16 → 8 → 2:
- 输入层(2个神经元):对应两个输入特征 x、y,形状
(batch, 2) - 隐藏层1(16个神经元):权重矩阵 W¹ 形状
(2, 16),偏置 b¹ 形状(16,),使用 ReLU 激活,输出(batch, 16) - 隐藏层2(8个神经元):权重矩阵 W² 形状
(16, 8),偏置 b² 形状(8,),使用 ReLU 激活,输出(batch, 8) - 输出层(2个神经元):权重矩阵 W³ 形状
(8, 2),偏置 b³ 形状(2,),经 Softmax 输出两类的概率,形状(batch, 2)
前向传播
数据从输入层流向输出层,每层进行计算:
常用的激活函数有 ReLU、Sigmoid、Tanh。
反向传播
通过链式法则,把损失对每个权重的梯度从输出层向输入层逐层传递:
- ∂L/∂a:损失对激活值的梯度,告诉我们激活值偏高还是偏低
- ∂a/∂z:激活函数的导数(ReLU 的导数:正数为1,负数为0)
- ∂z/∂W:加权求和对权重的导数,就是上一层的激活值
每层算完梯度后,用梯度下降更新权重:W ← W - η × ∂L/∂W,其中 η 是学习率。
神经元激活动画
点击「前向传播」观察信号逐层流动的过程。训练完成后图中权重会自动更新为模型真实学到的值。
如何读这张图: 连线绿色表示正权重,红色表示负权重,线越粗绝对值越大; 节点颜色越亮表示激活值越高(越接近1),越暗表示接近0(ReLU 截断)。
总结
输入+隐藏+输出层
ReLU/Sigmoid/Tanh
反向传播+梯度下降
学习非线性关系