堂前燕
计算机 / AI · 高中 · 神经网络 · 机器学习 · 反向传播 · 分类 · 特征工程

神经网络分类器

2D 点分两类 —— 切换数据形状,调整输入特征、隐藏层数、激活函数,亲眼看决策边界怎么从乱权重长出来。

三件事在你手上

这个演示有三个旋钮,对应深度学习里三种解决”学不会”的办法

  1. 特征工程(左下的 chip 列表)—— 给网络喂更聪明的输入
  2. 网络容量(隐藏层数 × 每层神经元数)—— 让网络更”深”或更”宽”
  3. 激活函数(tanh / ReLU / sigmoid)—— 改变神经元的非线性形状

网络结构

多层感知机(MLP)的一个隐藏层做的事:

hj=ϕ(iwjixi+bj)h_j = \phi\left(\sum_i w_{ji}\, x_i + b_j\right)

φ 是激活函数。最后一层用 sigmoid,把任意实数压到 (0, 1) 当概率,用二元交叉熵当损失:

L=ylogy^(1y)log(1y^)L = -\,y \log \hat y - (1-y) \log(1-\hat y)

试这几个组合

数据推荐组合为什么
同心圆2 输入 + 1 层 × 6 + tanh加 X₁²、X₂² 直接秒杀
XOR2 输入 + 2 层 × 4单层难;加 X₁X₂ 一个特征就线性可分
螺旋全部特征勾上 + 3 层 × 8 + ReLU几乎所有 demo 的”硬骨头”
线性可分2 输入 + 1 层 × 21 个神经元都够

试着只用 X₁、X₂ 学螺旋 —— 几千轮也学不像。勾上 X₁X₂sin X₁、sin X₂,损失立刻掉下去。

为什么”特征”能换”层数”

数学上:

深网络特征工程+浅网络\text{深网络} \approx \text{特征工程} + \text{浅网络}

一个深网络的前几层其实在做自动特征提取 —— 自己学出 X₁²、X₁X₂ 这类组合。如果你直接把这些组合喂进去,浅网络也能做得很好。

经典机器学习时代(2012 年前),人们手工设计 SIFT、HOG 这样的特征。深度学习的革命就是:把特征学习也交给网络,省去人工。但代价是要更深的网络 + 更多数据

tanh / ReLU / sigmoid 选哪个

  • tanh:输出 [-1, 1],平滑可导,老牌选手
  • ReLU:x > 0 时是直线、x < 0 时 0,非平滑但算得快、不饱和,2010 年后接管深度学习
  • sigmoid:输出 (0, 1),梯度容易消失,一般只用在输出层

切到螺旋数据,看 ReLU 比 tanh 学得更快、决策边界更”锐利”(直线段拼接而成)。

训练 = 梯度下降

  1. 前向传播:把数据点喂进去,算出预测值
  2. 算损失:交叉熵
  3. 反向传播:链式法则把误差传回每个权重
  4. 更新:沿损失下降方向走一小步(学习率 lr 控制步长)

重复几百到几万次,网络就”学会”了。学习率太大容易震荡发散,太小学得慢 —— 调到 0.1 上下通常稳。

一些非显然的现象

  • 过参数化也能泛化:你会发现,10 个神经元和 30 个神经元,都能学到同心圆,且都不过拟合。这是深度学习理论里至今没完全解释的”双重下降”现象的前奏。
  • 初始化敏感:点”重置权重”几次,看初始值如何决定最终收敛到怎样的边界 —— 有时候直接卡在局部最优。
  • 容量不足:1 个隐藏神经元学螺旋,怎么调都不行 —— 网络根本表达不出这种形状。

现实的延伸

这个几百参数的玩具和真实深度学习的差异:

  • 更深:几十到几千层(ResNet、Transformer)
  • 更宽:每层几千到几万神经元
  • 更多技巧:批归一化、Dropout、残差连接、Adam 优化器
  • 更多数据:训练样本从这里的 160 个 → 互联网级别 10¹² token

核心循环不变:前向算预测、反向算梯度、更新参数。这就是机器学习的全部。