神经网络之仿射变换
📐 一、什么是仿射变换?
仿射变换 = 线性变换 + 平移
它是一种**保持点之间的相对关系(平行性、比例)**的变换。通俗来说,仿射变换可以包括:
- 旋转
- 缩放
- 剪切(shear)
- 平移
🧮 数学定义
对于向量 x∈Rnx \in \mathbb{R}^nx∈Rn,仿射变换定义为:
f(x)=Ax+b f(x) = A x + b f(x)=Ax+b
其中:
- A∈Rm×nA \in \mathbb{R}^{m \times n}A∈Rm×n:一个矩阵,表示线性变换(如旋转、缩放等)
- b∈Rmb \in \mathbb{R}^mb∈Rm:一个向量,表示平移
- xxx:输入向量
- f(x)f(x)f(x):变换后的输出向量
🧠 直观理解
组成 | 解释 |
---|---|
AxAxAx | 线性变换(拉伸、旋转、投影等) |
+b+b+b | 平移操作(将结果整体平移) |
仿射变换比线性变换更通用,因为它不需要满足「原点映射到原点」这一限制。
📌 举个例子
在二维空间中:
设:
A=[2002],b=[11] A = \begin{bmatrix} 2 & 0 \\ 0 & 2 \end{bmatrix}, \quad b = \begin{bmatrix} 1 \\ 1 \end{bmatrix} A=[2002],b=[11]
则:
f(x)=2x+[11] f(x) = 2x + \begin{bmatrix}1\\1\end{bmatrix} f(x)=2x+[11]
这个仿射变换会先把所有点缩放 2 倍,再整体平移 (1, 1)。
🤖 在神经网络中的应用
神经网络中的每一层(不加激活函数)本质上就是一个仿射变换:
z=Wx+b z = W x + b z=Wx+b
其中:
- xxx:上一层的输出
- WWW:权重矩阵
- bbb:偏置向量
- zzz:本层输出(未激活)
激活函数的作用就是在仿射变换的基础上引入非线性,否则整个网络就是一系列仿射变换叠加,最终仍是一个仿射变换。
🧭 与其他变换的区别
类型 | 表达式 | 特点 |
---|---|---|
线性变换 | f(x)=Axf(x) = Axf(x)=Ax | 不含平移,原点映射到原点 |
仿射变换 | f(x)=Ax+bf(x) = Ax + bf(x)=Ax+b | 包含平移,原点不一定映射到原点 |
仿射变换 + 激活函数 | f(x)=σ(Ax+b)f(x) = \sigma(Ax + b)f(x)=σ(Ax+b) | 神经网络的基本单元,增加非线性表达能力 |
✅ 总结
项目 | 内容 |
---|---|
名称 | 仿射变换(Affine Transformation) |
定义 | f(x)=Ax+bf(x) = Ax + bf(x)=Ax+b |
包含操作 | 旋转、缩放、剪切、平移 |
应用领域 | 图形学、几何变换、神经网络等 |
神经网络中体现 | 每一层的线性变换 + 偏置项 |
与线性变换的区别 | 仿射变换多了一个平移项 bbb |