从神经元到多层感知机¶
深度学习的最小计算单元是人工神经元;把它们叠成层、再叠成网络,就得到多层感知机(MLP)。
一个神经元¶
输入 \(\mathbf{x} = (x_1,\ldots,x_n)\),权重 \(\mathbf{w}\),偏置 \(b\),激活函数 \(\phi\):
\[
z = \mathbf{w}^\top \mathbf{x} + b, \qquad
a = \phi(z)
\]
- 仿射变换:加权求和 + 偏置。
- 非线性激活:否则多层叠加仍等价于一层线性。
一层:向量化¶
\[
\mathbf{z} = W\mathbf{x} + \mathbf{b}, \qquad
\mathbf{a} = \phi(\mathbf{z})
\]
对一批样本 \(X \in \mathbb{R}^{B \times n}\):
\[
A = \phi(XW^\top + \mathbf{b})
\]
多层感知机(MLP)¶
x → Linear → Act → Linear → Act → … → Linear → ŷ
隐藏层维度、层数是超参数;过宽过深可能过拟合,需要正则或更多数据。
参数量怎么算¶
一层 Linear(in, out) 约:
\[
\text{params} = in \times out + out
\]
代码对应¶
import torch.nn as nn
model = nn.Sequential(
nn.Linear(784, 256),
nn.ReLU(),
nn.Linear(256, 10),
)