卷积运算
数学上的卷积
数学上的卷积是一种对两个实变函数的数学运算。公式为 s ( t ) = ∫ x ( a ) w ( t − a ) d a s(t) = \int x(a)w(t - a)\mathbb{d}a s(t)=∫x(a)w(t−a)da
动机
稀疏交互
如上图所示,上半部分为卷积,下半部分为矩阵乘法。显而易见的是由卷积产生的连接是稀疏的,只有三个单元会受到
x
3
x_3
x3的影响。这样就允许网络可以只通过描述稀疏交互的基石来高效地描述多个变量的复杂交互。
从上往下看,一个输出单元
s
3
s_3
s3受到
x
1
,
x
2
,
x
3
x_1,x_2,x_3
x1,x2,x3的影响,这被称为接受域,也可以很好的说明稀疏性。
参数共享
因为一层卷积函数的卷积核只有一个,所以在不同的位置所采用的参数是完全相同的。
等变表示
等变:若
f
(
g
(
x
)
)
=
g
(
f
(
x
)
)
f(g(x)) = g(f(x))
f(g(x))=g(f(x)),则称
f
(
x
)
f(x)
f(x)对于变换
g
g
g具有等变性。
参数共享的特殊形式可以使神经网络具有对平移等变的性质。同时在边缘检测上相较于矩阵运算提升了数万倍效率。
池化
卷积网络的一个典型层包含三层:卷积 → \rightarrow →探测(整流) → \rightarrow →池化
- 池化函数对于少量平移时,具有近似不变性
- 池化综合了全部邻居的反馈,使得池化单元少于探测单元
- 池化可能会使一些利用自顶向下的神经网络结构变得复杂,如玻尔兹曼机和自编码器
无限强的先验
一个无限强的先验需要对一些参数的概率置零并且完全禁止对这些参数赋值,无论数据对这些参数的值给出了多大的支持。
将CNN作为无限强的先验会导致极大的计算浪费,但能更好地帮助我们观测其是如何工作的。
其中一个关键的洞察是卷积和池化可能会导致欠拟合。
基本卷积函数的变体
- 添加步长
- 零填充
- 非共享卷积(局部连接):
- 平铺卷积
- 以下三层分别为局部连接、平铺卷积、普通卷积
结构化输出
卷积神经网络可以输出高位结构化对象,而不仅是一个类别标签。
数据类型
单通道 | 多通道 | |
---|---|---|
1d | 音频波形 | 骨架动画数据 |
2d | 使用傅里叶变换后的音频数据 | 彩色图像数据 |
3d | 提及数据(医学影像) | 彩色视频 |