证明宽卷积具有交换性, 即公式(5.13).
要证明宽卷积具有交换性,我们需要证明等宽卷积在满足一定条件下对输入矩阵和滤波器的交换不变。
假设输入矩阵为X∈,滤波器为W∈
,等宽卷积的输出矩阵为Y∈
。
根据等宽卷积的定义,我们有:
M′=M,N′=N
现在,我们将输入矩阵和滤波器进行交换,即X′=W,W′=X。
将交换后的矩阵代入等宽卷积的定义,我们有:
M′′=U,N′′=V.(1)
根据等宽卷积的定义,输出矩阵的大小仍然是′M′′×N′′,即M′′=M′,N′′=N′。将式(1)代入 M′′=M′,N′′=N′,我们得到:
U=M′,V=N′.(2)
由于等宽卷积的定义是对输入矩阵和滤波器进行交换的,我们可以得到等式Y=Y′,即等宽卷积的输出矩阵与交换后的输入矩阵和滤波器进行等宽卷积的输出矩阵相等。
综上所述,我们可以得出结论:宽卷积具有交换性,即等宽卷积在满足一定条件下对输入矩阵和滤波器的交换不变。
对于一个输入为100 × 100 × 256的特征映射组, 使用3 × 3的卷积核, 输出为100 × 100 × 256的特征映射组的卷积层, 求其时间和空间复杂度.
时间复杂度:
每个输出位置需要使用3 * 3的卷积核与输入的窗口进行卷积操作,因此需要进行9次乘加操作。
对于每个输出位置,需要操作256个通道。
对于每个输出位置,需要计算100 * 100个位置。
总的时间复杂度为:9 *256 * 256* 100 * 100
空间复杂度:
输入特征映射组大小为100 * 100 * 256。
输出特征映射组大小为100 * 100 * 256。
卷积核大小为3 * 3,没有其他额外的空间消耗。
不考虑其他中间变量的空间,总的空间复杂度为输入特征映射组和输出特征映射组的空间开销100 * 100 * 256+9*256*256。
如果引入一个1 × 1卷积核, 先得到100 × 100 × 64的特征映射, 再进行3 × 3的卷积, 得到100 × 100 × 256的特征映射组, 求其时间和空间复杂度.
对于先进行1 × 1卷积得到100 × 100 × 64的特征映射:
时间复杂度:
每个输出位置需要使用1 × 1的卷积核与输入的窗口进行卷积操作,因此需要进行1次乘加操作。
对于每个输出位置,需要操作256个通道。
对于每个输出位置,需要计算100 × 100个位置。
总的时间复杂度为:1 × 256 × 100 × 100
空间复杂度:
输入特征映射组大小为100 × 100 × 256。
输出特征映射组大小为100 × 100 × 64。
卷积核大小为1 × 1,没有增加额外的空间消耗。
不考虑其他中间变量的空间,总的空间复杂度为输入特征映射组和输出特征映射组的空间开销。
对于再进行3 × 3卷积得到100 × 100 × 256的特征映射:
时间复杂度:
每个输出位置需要使用3 × 3的卷积核与输入的窗口进行卷积操作,因此需要进行9次乘加操作。
对于每个输出位置,需要操作64个通道。
对于每个输出位置,需要计算100 × 100个位置。
总的时间复杂度为:1638400000
空间复杂度:
输入特征映射大小为100 × 100 × 64。
输出特征映射大小为100 × 100 × 256。
不考虑其他中间变量的空间,总的空间复杂度3353840。
对于一个二维卷积, 输入为3 × 3, 卷积核大小为2 × 2, 试将卷积操作重写为仿射变换的形式. 参见公式(5.45) .
对于一个二维卷积,输入为3 × 3,卷积核大小为2 × 2,可以将卷积操作重写为仿射变换的形式。
输入为3 × 3的矩阵,卷积核大小为2 × 2的矩阵,我们可以将输入矩阵展开为一个9维的输入向量X:
X = [x1, x2, x3, x4, x5, x6, x7, x8, x9]
然后,我们将卷积核展开成一个权重矩阵W。根据卷积核大小为2 × 2,我们可以将卷积核展开为一个4维的权重向量W:
W = [w1, w2, w3, w4]
接下来,我们可以将卷积操作重写为仿射变换的形式。仿射变换可以表示为矩阵乘法的形式:
Z = XW^T
其中,Z为输出向量,X为输入向量,W为权重矩阵,^T表示W的转置。
在这个例子中,对于输入矩阵X和权重矩阵W,我们可以进行如下的仿射变换来得到输出向量Z:
Z = XW^T
= [x1, x2, x3, x4, x5, x6, x7, x8, x9] * [[w1, w3], [w2, w4]]
= [x1 * w1 + x2 * w2, x1 * w3 + x2 * w4, x2 * w1 + x3 * w2, x2 * w3 + x3 * w4, x4 * w1 + x5 * w2, x4 * w3 + x5 * w4, x5 * w1 + x6 * w2, x5 * w3 + x6 * w4, x7 * w1 + x8 * w2, x7 * w3 + x8 * w4, x8 * w1 + x9 * w2, x8 * w3 + x9 * w4]
最终得到的向量Z就表示了卷积操作的结果。
通过将二维卷积操作重写为仿射变换的形式,我们可以使用矩阵乘法来进行计算,从而加速运算和优化算法。
忽略激活函数, 分析卷积网络中卷积层的前向计算和反向传播(公式(5.39)) 是一种转置关系.
在卷积神经网络中,卷积层的前向计算和反向传播确实存在一种转置关系。让我们来详细解释一下。
假设有一个具有nc个通道(即卷积核的数量)的卷积层。对于某个给定的输入张量X∈,其中nh是输入图像的高度,nw是输入图像的宽度。此处,X表示输入特征图。
进行卷积操作时,卷积核与输入特征图进行遍历,计算每个位置的卷积结果。假设卷积核的大小为kh*kw*nc,其中kh是卷积核的高度,kw是卷积核的宽度。
前向计算中,卷积操作通过将输入特征图与卷积核进行逐点相乘,并将结果求和得到新的特征图。可以使用卷积的展开形式表示为:
其中Yi,j,u表示输出特征图中位置(i,j)上通道u的值,Wp,q,r,u是卷积核在位置(p,q)上通道r到通道u的连接权重。
反向传播计算主要关注对参数(即卷积核权重)的梯度求解。根据反向传播算法的链式法则,可以定义卷积层的反向传播操作为:
其中表示损失函数L对输入特征图X中位置(i,j)上通道r的梯度。
由上述公式可以看出,在反向传播中,卷积核的权重在计算梯度时与前向计算中的卷积核权重是按位置(高、宽、通道)进行转置关系的。因为激活函数的引入会增加非线性,使得转置关系不再简单。
在前向计算中,卷积操作是通过卷积核与输入特征映射之间的点乘来实现的。而在反向传播过程中,需要计算输入特征映射和卷积核的梯度,这是通过使用链式法则来计算的,并且不涉及简单的转置关系。
积层的反向传播公式应该是:
dX = dZ * rot180(W)
dW = rot180(X) * dZ
其中,rot180表示对卷积核进行180度旋转操作。这意味着在计算梯度时,卷积核需要进行翻转操作,在前面的“卷积”博客里,提到了翻转产生卷积的由来。
需要强调的是,上述公式仍然忽略了非线性激活函数的影响。
在空洞卷积中, 当卷积核大小为𝐾, 膨胀率为𝐷时, 如何设置零填充𝑃的值以使得卷积为等宽卷积 .
对于空洞卷积中的等宽卷积,零填充的值P可以通过以下公式计算:
P = [(K-1) * (D-1)] / 2
其中,P表示零填充的值,K表示卷积核的大小,D表示膨胀率。
要理解等宽卷积的原理,需要先了解空洞卷积的概念。在传统的卷积操作中,卷积核的每个元素与输入特征映射中的相应元素进行卷积,从而计算出输出特征映射中的一个元素。而在空洞卷积中,卷积核的每个元素之间都插入了一定数量的零。
具体来说,对于膨胀率为D的空洞卷积,卷积核中的每个元素与输入特征映射中以D间隔的元素进行卷积。这样可以增大卷积核的感受野,在保持相同卷积核尺寸的情况下,获得更多的输入特征的信息。
然而,由于卷积核在插入零的过程中,有效的计算区域变小了。为了保持输出特征映射的尺寸与输入特征映射相同,需要进行零填充。零填充的值P决定了在输入特征映射周围添加了多少行和列的零。
上述公式可以保证等宽卷积,即输入特征映射和输出特征映射的尺寸保持一致。在进行等宽卷积时,输入特征映射中的每个元素都有相同数量的与之对应的卷积核元素进行有效计算,并且输出特征映射的尺寸与输入特征映射相同。
这样,通过适当设置零填充的值P,可以在空洞卷积中实现等宽卷积,同时利用膨胀率增大卷积核的感受野,从而更好地获得原值信息。