1. 多层感知器基础解析:从零理解神经网络核心
第一次接触神经网络时,我盯着那些复杂的数学公式和术语看了整整三天。直到有一天,我决定用Excel手动计算一个最简单的神经网络,才真正理解了它的运作机制。这就是为什么我要用这个只有8个数据点的二维数据集来讲解——因为小到可以手算,却又完整包含了神经网络的所有核心要素。
多层感知器(MLP)本质上是一个数学函数逼近器。想象你面前有一堆散乱的数据点,传统的线性回归只能画一条直线去拟合,而MLP可以画出任意复杂的曲线。这种能力来自于它的三层结构:
- 输入层:负责接收原始数据(比如温度、湿度两个特征)
- 隐藏层:进行非线性变换的核心(通常使用ReLU等激活函数)
- 输出层:生成最终预测结果(比如是否打高尔夫的概率)
关键理解:MLP的"多层"不是指层数越多越好,而是指必须包含至少一个具有非线性激活函数的隐藏层。这是它能解决非线性问题的关键。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 迷你数据集与网络架构设计
2.1 数据集的特殊设计考量
这个8样本的二维数据集看似简单,实则精心设计:
code复制温度 [0,1,1,2,3,3,2,3]
湿度 [0,0,1,0,1,2,3,3]
标签 [1,-1,-1,-1,1,1,1,-1] (1=打高尔夫,-1=不打)
数据特点:
- 特征值范围0-3:避免需要特征缩放
- 样本数量极少:方便手动验证计算
- 非线性可分:无法用直线完美分割两类
我特意保持与SVM教程相同的数据集,方便读者对比不同算法的决策边界形状。
2.2 网络拓扑结构选择
采用的2-3-2-1架构(输入2节点→隐藏层3节点→隐藏层2节点→输出1节点)经过多次实验验证:
- 第一隐藏层3节点:足够捕捉基础非线性模式
- 第二隐藏层2节点:防止过拟合的折中选择
- 输出层1节点:二分类问题的标准配置
实际项目中,建议从类似架构开始,通过验证集性能调整层数和节点数。太简单的网络无法拟合,太复杂的容易过拟合——这就是所谓的偏差-方差权衡。
3. 前向传播的数学拆解
3.1 权重初始化的艺术
初始权重在[-0.5,0.5]随机选择不是随意决定的:
python复制W1 = np.array([[0.3, -0.2, 0.4],
[0.1,
