什么是神经网络
从生物大脑到数学函数 —— 一场跨越 80 年的模仿游戏
🧬 生物神经元
人脑约有 860 亿个神经元,每个神经元通过树突接收信号,当电信号累积超过阈值时,沿轴突「放电」,通过突触把信号传给下游成千上万个神经元。
- 树突 —— 接收输入
- 细胞体 —— 整合信号
- 轴突 / 突触 —— 传递输出
🤖 人工神经元
1943 年,McCulloch 和 Pitts 把这个过程抽象成数学:输入加权求和、加上偏置、过一遍「开关」函数。一颗人造神经元就此诞生。
- 输入 x —— 模仿树突
- 权重 w、偏置 b —— 模仿突触强度
- 激活函数 σ —— 模仿放电阈值
💡 一句话理解
神经网络 = 一个参数极多的巨型复合函数。所谓「训练」,就是用数据不断调整这些参数(权重),让这个函数的输出越来越接近我们想要的答案。
数学上有一个深刻的结论 —— 通用逼近定理(Universal Approximation Theorem):只要隐藏层神经元足够多,一个含非线性激活的前馈网络可以以任意精度逼近任何连续函数。这就是神经网络「无所不能」的理论根基。
📜 八十年浮沉史 (点击节点查看)
神经元 Neuron
一切的起点:加权求和 + 非线性激活
⚙️ 它只做两件事
第一步:把所有输入按权重加起来,再加一个偏置 b(偏置决定神经元「多容易被激活」)。
第二步:把结果丢进激活函数 σ,做非线性变换后输出。没有这一步,再多层网络也等价于一层线性变换——非线性是神经网络的灵魂。
🔬 3D 神经元模型 拖动旋转
🎛️ 亲手调一个神经元
拖动滑块改变输入、权重和偏置,实时观察输出如何变化。试试让所有权重为 0 会发生什么?
网络结构 Architecture
单层只能画直线,多层才能画出世界
🏗️ 三层分工
- 输入层 —— 不做计算,只负责接收数据(一张 28×28 的图片就是 784 个输入)
- 隐藏层 —— 特征提取器。浅层学边缘、纹理,中层学形状部件,深层学概念
- 输出层 —— 给出答案:回归输出数值,分类输出概率
相邻层之间全连接:权重 + 偏置
🛠️ 网络构建器 拖动旋转 · 点击「发射信号」
深度 vs 宽度
加深(更多层)比加宽(每层更多人)通常更高效:深度带来层次化的特征抽象,用指数级更少的参数表达同样的函数。
全连接层
每个神经元都和上一层所有神经元相连,也叫 Dense 层。表达力强但参数爆炸,是现代网络的基础积木。
过深也有代价
层数太多会遭遇梯度消失、训练困难。ResNet 用「残差连接」抄近道,才让上百层的网络训得动。
前向传播 Forward Propagation
信号从输入流向输出 —— 一步步跟着数字走
▶ 跟着信号走一遍(2 → 3 → 1 网络)
🧮 向量化的优雅
实际计算中,我们从不一个个神经元算,而是把整个网络写成矩阵乘法 —— 这正是 GPU 擅长的事:
X 的一列是一个样本,整个数据集一次矩阵乘搞定。前向传播 = 一连串「矩阵乘 + 加偏置 + 激活」。
激活函数 Activation Functions
没有非线性,就没有深度学习
📈 函数对比台
为什么必须非线性?
线性函数的复合仍是线性:W₃(W₂(W₁x)) = (W₃W₂W₁)x。堆一万层也等价于一层。激活函数打破线性,网络才能拟合曲线、螺旋、任意形状。
Sigmoid 的衰落
两端导数趋近 0(饱和区),深层网络里梯度一路相乘越乘越小,几层之后梯度「消失」了。这就是 2012 年前深度学习停滞的核心原因之一。
ReLU 的统治
f(x)=max(0,x)。正区间导数恒为 1,梯度畅通;计算只需一次比较。简单、粗暴、有效 —— 现代网络的默认选择。
损失函数 Loss Function
给「错误」标价 —— 网络的指南针
📏 均方误差 MSE 回归常用
预测值与真实值差的平方的平均。误差越大,惩罚呈平方级增长。
🎯 交叉熵 Cross-Entropy 分类常用
预测概率离真相越远,损失爆炸式增长:真实类别概率从 0.9 掉到 0.1,损失从 0.1 飙到 2.3。
🎚️ 亲手感受交叉熵 真实标签 y = 1
🧭 为什么损失函数是指南针?
训练的全部目标就是最小化损失函数。它把「模型好不好」翻译成「一个数字」,有了数字就能求导,有了导数就知道每个参数该往哪调。选错损失函数,就像用温度计测体重 —— 方向从一开始就错了。
反向传播 Backpropagation
追责大会:每个参数都要为错误负责
🔗 链式法则 —— 一切的引擎
损失 C 离深处的权重 w 隔着千山万水,但链式法则像多米诺骨牌一样,把「责任」一层层传回去:每个局部梯度相乘,就是总梯度。
⚡ 梯度回流演示 点击按钮,看梯度从输出流回输入
📉 梯度消失演示 Sigmoid 深层连乘的灾难
假设每层梯度幅度约 0.25(Sigmoid 导数最大值),则第一层收到的梯度 ≈ 0.25n-1
梯度下降 Gradient Descent
蒙眼下山:每一步都朝最陡的方向走
⛰️ 3D 损失曲面 —— 看小球如何找到谷底
选择不同的学习率,观察小球的行为差异。学习率是深度学习中最重要的超参数。
θ ← θ − η·∇J
梯度 ∇J 指向损失上升最快的方向,所以反着走。η(学习率)决定步子大小:太小走不动,太大直接飞过谷底来回震荡甚至发散。
局部最优与鞍点
曲面里到处都是小坑(局部最优)和马鞍(鞍点)。高维空间里鞍点远比局部最优多 —— 动量、随机性就是翻坑越狱的工具。
优化器进化史
SGD → Momentum(惯性冲下坡)→ AdaGrad(陡坡小步)→ RMSProp → Adam(动量+自适应步长,当代默认)。思想一脉相承:让每一步更聪明。
训练实验室 Playground
前面所有知识在此合体 —— 亲手训练一个真正的神经网络
💡 实验建议:① 用 1 层 3 个神经元试试 XOR —— 感受欠拟合;② 螺旋数据集 + Sigmoid —— 看梯度消失多折磨人;③ 同配置换 ReLU —— 感受差距。
网络家族 Architectures Zoo
同一套思想,长出不同的物种
🔍 卷积演示 —— CNN 如何「看」世界
一个 3×3 卷积核在图像上滑动,每个位置做加权求和。换不同的核,看它提取出什么特征。点击「播放」看滑动过程。
输入图像
卷积核
输出特征图
数学推导 The Math
硬核时间:反向传播四大方程完整推导
🎯 设定
L 层网络,第 l 层有 nl 个神经元。W[l] 是权重矩阵,b[l] 偏置,z[l] = W[l]a[l−1] + b[l],a[l] = σ(z[l]),损失 C。
📌 核心定义:误差项 δ
① 输出层误差(BP1)
⊙ 是逐元素乘法。若用 Sigmoid + 交叉熵,神奇化简为 δ[L] = a[L] − y(预测减真相)。
② 误差逐层回传(BP2)
后一层的责任按连接强度分摊回前一层,再乘以本层激活函数的导数 —— 链式法则的矩阵形态。
③ 偏置梯度(BP3)
④ 权重梯度(BP4)
权重的梯度 = 它连接的「下游责任」×「上游激活」。输入不活跃的神经元学不到东西 —— 这就是死 ReLU 的数学解释。
🔄 一次训练的完整循环
术语表 Glossary
24 个高频黑话,一次扫盲
学习路径 Roadmap
从这里出发,通往深度学习
小测验 Quiz
学完了?来验收一下