跳转至

从神经元到多层感知机

深度学习的最小计算单元是人工神经元;把它们叠成层、再叠成网络,就得到多层感知机(MLP)。

一个神经元

输入 \(\mathbf{x} = (x_1,\ldots,x_n)\),权重 \(\mathbf{w}\),偏置 \(b\),激活函数 \(\phi\):

\[ z = \mathbf{w}^\top \mathbf{x} + b, \qquad a = \phi(z) \]
  1. 仿射变换:加权求和 + 偏置。
  2. 非线性激活:否则多层叠加仍等价于一层线性。

一层:向量化

\[ \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),
)