什么是CNN?
- 卷积层
- 池化层
- 全连接层
- 非线性层,例如:ReLU
- 其他层,例如:RNN
为什么CNN是有意义的?
动机(motivation)
卷积利用了下面4个想法来机器学习系统:
1.稀疏交互
- 稀疏交互的概念:指卷积网络最后的全连接层与输入层之间的“间接连接”是非全连接的,多次卷积可以找出一种合理的连接,使输入图片分成各种“小区域”,这种小区域再成为全连接层的输入
- 稀疏交互的实现:通过使用比输入更小的核(kernel)
- 稀疏交互的作用:只需要存储更少的参数,在计算输出时,需要更少的运算 $O(m \times n) v.s.O(k \times n) $
上图为没有稀疏交互的全连接网络,可以看到计算 h 3 h_3 h3 时需要 x 1 x_1 x1 到 x 6 x_6 x6 的所有值。
上图为有稀疏交互的卷积层,此时 kernel 的大小为3,移动的步长(stride)为1, h 3 h_3 h3 只依赖于 x 2 , x 3 , x 4 x_2, x_3, x_4 x2,x3,x4.
要注意的一点是,CNN的链接是稀疏的,但是随着层数的加深,更深层数的节点将与所有的输入节点相连(如上图所示),也就是说更深层次的节点有着更大的感受野。
- 参数共享
-
在CNN中,参数是相互关联的:应用于一个输入的权重与应用于其他输入的权重值相关联
-
在整个图像中使用相同 kernel,因此不是为每个位置学习一个参数,而是只学习一组参数
-
向前传播的过程没有改变,仍然为 O ( k × n ) O(k \times n) O(k×n)
-
存储的容量提高, k < < m , n k << m, n k<<m,n
3. 等变性(Equivariance) -
卷积的定义:
s ( t ) = ( x ∗ w ) ( t ) = ∫ x ( a ) w ( t − a ) d a s(t) = (x *w)(t) = \int x(a)w(t-a)da s(t)=(x∗w)(t)=∫x(a)w(t−a)da -
在卷积网络中, x x x 相当于输入, w w w 是权值,也就是卷积核, s s s 是特征图
-
离散卷积:
S ( i , j ) = ( I ∗ K ) ( i , j ) = ∑ m ∑ n I ( m , n ) K ( i − m , j − n ) S(i, j) = (I * K)(i, j) = \sum_m \sum_n I(m,n)K(i-m, j-n)