CNN中的权值共享理解

来源:互联网 发布:人工智能的利弊英语 编辑:程序博客网 时间:2024/04/30 00:18

基本名词对应:

Feature Map : 特征图,特征映射
Weight:权值,权重

权值共享

CNN是权重共享,减少了参数的数量。这个有必要再对比研究一下。
一般神经网络层与层之间的连接是,每个神经元与上一层的全部神经元相连,这些连接线的权重独立于其他的神经元,所以假设上一层是m个神经元,当前层是n个神经元,那么共有m×n个连接,也就有m×n个权重。权重矩阵就是m×n形状。

一般用权重矩阵W表示,每一行是一个神经元与上一层所有神经元相连接的权重的值

而在CNN里的权重共享是如何具体操作的呢?

需要理清的概念是,每个层都是一个展平的结构。原始图像是二维的,用在输入层的输入向量是一整条的。

卷积层存的是什么?

不是我最初理解的存的是多个卷积核的展开值,而是卷积计算的结果。具体下面会说到。

再理清一下卷积计算,我们知道是拿卷积核与卷积核的感受野里的像素进行卷积计算,

卷积层里存的是什么数值?卷积后的结果?还是权重?但我们知道权重是单独建立的矩阵,是待学习调优的对象,卷积层的值要再往后传,存的必须是像素处理后相关的值。

问题还是存在:卷积层个数与卷积核个数的关系是什么?

每层有多个Feature Map,每个Feature Map通过一种卷积滤波器提取输入的一种特征。每个Feature Map有多个神经元。

比如给定一个输入是32x32像素的图片,Feature Map大小是28x28的神经元阵列,每个神经元对应的值如何计算得来呢?按照卷积计算,比如5x5的卷积核,需要25个参数,也就是权重,在28x28的特征映射 | Feature Map里每个神经元都用这25个参数去进行卷积计算,这样就是所谓的权值共享。

那这个卷积层有多少参数呢?我们看一个Feature Map里每个神经元用的都是一样的5x5的卷积核,按照stride的值往前移动,每一步卷积结果对应一个神经元的值。所以,虽然权值相同,但是每一步下感受野对应的像素值是不同的,得到的结果自然也不同。

参数数量如何计算?单个特征映射里,用的权重一样,卷积核有25个参数,加上每个神经元有一个偏置bias参数,所以共26个参数,也就是一个Feature Map里有26个参数。这个隐层有6个特征映射,所以本隐层有26 * 6 = 156个训练参数。

该隐层与输入层有多少连接呢?也很简单,我们看到一个神经元与5x5的像素值相连,共25个连接,注意到bias也是作为一个输入值,所以一个神经元有26个连接。接着看特征樱花色层有多少神经元就可以了,28x28是一个特征映射的神经元阵列,共有6个特征映射,所以得出:26 * 6 * 28 * 28 = 122304个连接。

28x28是怎么得来的?实际上假定的是padding为0,stride为1,就是开始直接把5x5的卷积核放在图像的左上角,5x5的二维矩阵的左上角对应图像的左上角,往右移动,一次一个像素,32 - 5 + 1 = 28,向下移动也是一样。

原创粉丝点击