|
参数共享或权重复制是一个经常在深度学习中被忽略的领域。但是,理解这个简单的概念有助于更广泛地理解卷积神经网络的内部。卷积神经网络(CNN)可以在执行仿射转换时通过网络不变式提供图像。此功能提供了识别偏移模式,识别倾斜或略微扭曲的图像的能力。
由于CNN体系结构的三个主要特性,引入了仿射不变性的这些特征。
1。感觉的当地区域
1。重量共享(参数共享)
1。空间采样
在本文中,我们将探索分享体重共享并了解其在CNN体系结构中的用途及其优势。本文适用于机器学习的各个级别或更具体的深度学习。
介绍
让我们首先在CNN中展示一个卷积层。 。
CNN中的卷积层(Cons层)包含一组也可以称为神经元的单元。
Conv层还包括该层中的几个过滤器,这是预定义的超参数。
一层中的过滤器数表示由Conv层创建的激活/特征映射输出的深度维度作为下一层的输入。
每个滤镜都有一个设定的宽度和高度,对应于图层中单个单元的本地接收场。作用在输入数据上的过滤器生成卷积层的输出,即特征图。
在CNN的训练阶段,可以学习过滤器中的重量值。卷积层的输出维度具有深度分量。如果我们将输出的每个段分割,我们将获得二维平面的特征图。在单个二维平面上使用的过滤器包含在同一平面上使用的所有过滤器中共有的重量。
这样做的优点是,我们将相同的特征检测器保留在输入数据的另一部分与输入数据的另一部分。
卷积层的输出是一组特征图,其中每个特征映射是单元内固定权重参数与输入数据之间的卷积操作的结果。
卷积神经网络层的基本特征是其特征图反映了对输入图像的任何仿射变换,这些变换是通过输入层输入的。
因此,将根据所需的输入数据的量,将提供输入数据的任何偏移,倾斜或方向。
将理论付诸实践
本节的目的是揭示卷积神经网络中体重共享的好处。
我们将在两个流行的CNN体系结构(LENET和)的第一卷积层中得出可训练的权重共享和重量分享的数量。
这是要采取的步骤:·
1。获取Conv层的输出宽度
·(输入尺寸的宽度 - 滤波器尺寸 +(2 *)/步幅)+1 =卷积层的输出宽度
1。计算Conv层中神经元/单元的数量
1。计算训练参数的数量(包括偏差),而无需使用重量共享
1。计算使用重量共享的训练参数的数量(包括偏差)
下表描述了Lenet CNN体系结构的信息,该信息将用于得出卷积层中训练参数/权重的数量。
1。旋转层的输出宽度:=((227-11)/4) +1 = 55(Conv Layer的输出宽度)
1。conv层中的神经元/单位数量=输出高度 *输出宽度 *特征映射= 55 * 55 * 96(转换输出)= 290,400单位
1。训练参数或重量中的重量(无重量共享)=*((11* 11* 3) + 1偏差)= 105,415,600
1。使用权重共享的训练参数或权重= 96 *(((11 * 11 * 3) + 1偏差)= 34944
Lenet
1。旋转层的输出宽度:=((((28-5)/1)+1 = 24(Conv Layer的输出宽度)
1。conv层中的神经元/单元数量=输出高度 *输出宽度 *特征映射的数量= 24 * 24 * 6(转换输出)= 3,456单位
1。训练参数或权重(无重量共享)= 3456 *((5 * 5 * 1) + 1偏差)= 89,856
1。使用权重共享的训练参数或权重= 6 *((5 * 5 * 1) + 1偏差)= 156
总结
显然,通过参数共享,我们可以减少Conv层中的权重数量。
参数共享用于网络中的所有层。
参数共享减少培训时间;这是减少在反向传播过程中必须执行的重量更新数量的直接好处。
要重申,在基于卷积层中平面中某个单元的卷积结果和某个单元的输入数据之间生成特征图时,就会发生参数共享。该层平面中的所有细胞具有相同的重量;因此,它称为重量/参数共享。 |
|