参数共享或权重复制是深度学习中经常被忽视的领域。但是理解这个简单的概念有助于更广泛地理解卷积神经网络的内部结构。卷积神经网络(CNN)能够使通过网络输入的图像对仿射变换具有不变性。此功能提供了识别偏移图案以及识别倾斜或轻微扭曲图像的能力。由于CNN架构的三个主要属性,引入了仿射不变性的这些特征。LocalreceptivefieldWeightsharing(parametersharing)空间采样在本文中,我们将探讨权重共享,看看它们的用途及其在CNN架构中的优势。本文面向所有级别的机器学习人员,或者更具体地说是深度学习人员。简介让我们首先在脑海中演示CNN中的卷积层。.CNN中的卷积层(conv层)包含一组单元,也可称为神经元。conv层还在层内包含多个过滤器,这是一个预定义的超参数。一层内过滤器的数量表示由conv层创建的激活/特征映射的输出量的深度维度,作为下一层的输入。每个过滤器都有一个设置的宽度和高度,对应于层内单个单元的局部感受野。应用于输入数据的过滤器会产生卷积层的输出,即特征图。在CNN的训练阶段,可以学习到filters中的权重值。卷积层的输出维度有一个深度分量,如果我们对输出的每一段进行分割,我们将得到一个二维平面特征图。在单个2D平面上使用的过滤器包含一个权重,该权重在同一平面上使用的所有过滤器之间共享。这样做的好处是我们从输入数据的另一部分到输入数据的另一部分保持相同的特征检测器。卷积层的输出是一组特征图,其中每个特征图都是单元内固定权重参数与输入数据进行卷积运算的结果。卷积神经网络层的一个基本特征是它的特征映射反映了对通过输入层馈送的输入图像所做的任何仿射变换。因此,对输入数据应用任何偏移、倾斜或方向,特征图将提供一个输出,该输出将根据输入数据所经历的量进行偏移、倾斜或定向。将理论付诸实践本节的目的是揭示卷积神经网络中发生的权重共享的好处。我们将在两种流行的CNN架构(LeNet和AlexNet)的第一个卷积层中导出具有不同权重共享和权重共享的可训练权重的数量。下面是要采取的步骤:1.得到conv层的输出宽度(输入尺寸的宽度-滤波器尺寸+(2*Padding)/stride)+1=卷积层的输出宽度计算conv层的神经元/Numberofunits在不使用权重共享的情况下计算训练参数的数量(包括偏差)使用权重共享计算训练参数的数量(包括偏差)以获得卷积层内的训练参数/权重的数量。AlexNetconv层输出宽度:=((227-11)/4)+1=55(conv层输出宽度)conv层神经元/单元数=输出高度*输出宽度*特征图数量=55*55*96(转换输出)=290,400个训练参数或权重在conv层的单位(没有权重共享)=290,400*((11*11*3)+1bias)=??105,415,600使用权训练参数或权重的数量forvaluesharing=96*((11*11*3)+1bias)=??34944LeNetconv层的输出宽度:=(((28–5)/1)+1=24(conv层输出宽度)conv层中的神经元/单元数量=输出高度*输出宽度*特征图数量=24*24*6(转换后的输出)=3,456conv层中训练参数或权重的数量(未使用权重共享)=3456*((5*5*1)+1bias)=??89,856使用权重共享的训练参数或权重的数量=6*((5*5*1)+1bias)=156总结很明显,有参数共享我们可以减少con中的权重数量v层。参数共享用于网络中的所有转换层。参数共享减少训练时间;更新数量的直接好处。重申一下,参数共享发生在一个特征图是从卷积层中一个平面中一个单元的输入数据和一个滤波器的卷积结果生成的时候。本层平面内的所有Units共享相同的权重;因此得名权重/参数共享。
