- CNN
卷积相对于全连接卷积神经网络的优势之一,就在于其权值共享大大减少了参数量
借用全连接网络到卷积神经网络逐步推导(组图无公式)中的一张图:
由于全连接层只能接收一维向量,因此对于输入为M x N的图像,需要先展平为一维的(MxN) x 1
因此若得到的特征图feature map大小为P x Q(对应的一维向量为(PxQ) x 1),则map中每个元素需要MxN个权重,分别于输入图对应做加和,于是最后需要M x N x P x Q个参数权重
而在卷积神经网络中,借用全连接网络 VS 卷积网络中的动态图
若卷积核为[[1, 0, 1], [0, 1, 0], [1, 0, 1]]则该卷积核将作用于整张image,生成一张对应的feature map,卷积核的数量,则决定了最后特征图的深度(通道数)
此时,若原image大小为M x N x K1 单个卷积核大小为F x F x K1,共K2个卷积核,则总共需要F x F x K1 x K2个参数,这里的四个参数一般(远)小于上述MNPQ,大大减小了计算量
之所以在卷积神经网络可以用到权值共享,则是考虑到对于一张图像的某个像素点,其往往具有局部相关性,即与其相邻的像素点相关性较大,越远相关性越小,这样通过一步步增加网络深度,也能慢慢学到图像的全局特征
- RNN
而在RNN中,权值共享则显得很简单,借用Recurrent Neural Networks Tutorial, Part 2 – Implementing a RNN with Python, Numpy and Theano中的图:
可以看到这里无论是W、U、V在每个时间步上都是同一个,因此若说CNN是空间上的权值共享,那么RNN就是时间步上的共享
对于每个时间步的输出Ot,若其误差为Et,则反向传播时
∂
E
t
∂
W
=
∑
k
=
0
t
∂
E
k
∂
W
\frac{\partial {E_t} }{\partial{W}}=\sum_{k=0}^{t}{\frac{\partial {E_k} }{\partial{W}}}
∂W∂Et=∑k=0t∂W∂Ek
之所以在RNN中需要用参数共享,一方面跟CNN一样,是为了减少参数量
另一方面,由于原始RNN是变长的,因此若不共享,每个W都不同,那么需要设置多少个W就无法提前知晓了,实现上困难
此外,参数共享在一定程度上可以对文本处理中的每个单元实现“相对公平”,虽然这不一定是好事,后续LSTM以及attention的提出则打破了这种公平。