【问题标题】:Reducing Filter Size in Convolutional Neural Network减小卷积神经网络中的滤波器大小
【发布时间】:2017-09-08 23:59:13
【问题描述】:

我正在阅读 Szegedy 等人的 Inception 论文:https://arxiv.org/abs/1512.00567 而且我无法理解它们如何通过用 2 层 3x3 过滤器替换单个 5x5 过滤器来减少计算量(第 3.1 节)。

特别是这段话:

如果我们在不重用计算的情况下天真地滑动网络 在相邻的网格图块之间,我们将增加计算量 成本。滑动这个网络可以用两个 3x3 的卷积来表示 层重用相邻瓦片之间的激活。

我不明白我们如何才能重用这些激活。

【问题讨论】:

    标签: neural-network conv-neural-network convolution


    【解决方案1】:

    所以首先,作者是这样说的:

    这样,我们 最终得到一个网 (9+9) / 计算量减少 25 倍,结果 通过这种分解,相对增益为 28%。

    他是对的:对于一个 5x5 过滤器,您必须使用 25 (5*5) 个单独的权重。对于两个 3x3 过滤器,您必须使用 9 + 9 (3*3 + 3*3) 个单独的权重。 所以使用两个 3x3 过滤器需要更少的参数。 但是,你是对的,这并不意味着它需要更少的计算:乍一看,使用两个 3x3 过滤器需要更多的操作。

    让我们比较给定n*n 输入的两个选项的操作量。演练:

    1. 在给定输入 ((n - filtersize + 1)^2) 上计算 5x5 过滤器的输出尺寸及其相应的操作
    2. 计算第一个 3x3 滤波器的输出维度(公式同上),及其对应的操作
    3. 计算第二个 3x3 滤波器的输出维度及其对应的操作

    让我们从5x5 输入开始:

    1. (5 - 5 + 1)^2 = 1x1. So 1*1*25 operations = 25 operations
    2. (5 - 3 + 1)^2 = 3x3. So 3*3*9  operations = 81 operations
    3. (3 - 3 + 1)^2 = 1x1. So 1*1*9  operations = 9  operations
    So 25 vs 90 operations. Using a single 5x5 filter is best for a 5x5 input.
    

    接下来,6x6 输入:

    1. (6 - 5 + 1)^2 = 2x2. So 2*2*25 operations = 100 operations
    2. (6 - 3 + 1)^2 = 4x4. So 4*4*9  operations = 144 operations
    3. (4 - 3 + 1)^2 = 2x2. So 2*2*9  operations = 36  operations
    So 100 vs 180 operations. Using a single 5x5 filter is best for a 6x6 input.
    

    让我们向前跳一个,8x8 输入:

    1. (8 - 5 + 1)^2 = 4x4. So 4*4*25 operations = 400 operations
    2. (8 - 3 + 1)^2 = 6x6. So 6*6*9  operations = 324 operations
    3. (4 - 3 + 1)^2 = 4x4. So 4*4*9  operations = 144 operations
    So 400 vs 468 operations. Using a single 5x5 filter is best for a 8x8 input.
    

    注意到模式了吗?给定n*n 的输入大小,5x5 过滤器的操作具有以下公式:

    (n - 4)*(n - 4) * 25
    

    对于 3x3 过滤器:

    (n - 2)*(n - 2) * 9 + (n - 4) * (n - 4) * 9
    

    让我们绘制这些:

    它们似乎相交!正如您从上图中可以看到的那样,从n=10 及以后的两个 3x3 过滤器的操作数量似乎更少!

    结论:n=10之后使用两个3x3过滤器似乎是有效的。此外,不管n,与单个 5x5 滤波器相比,两个 3x3 滤波器需要调整的参数更少。


    虽然这篇文章有点奇怪,但出于某种原因,它让人感觉像是使用两个 3x3 过滤器而不是一个 5x5 过滤器“显而易见”:

    此设置明显通过共享减少了参数数量 相邻图块之间的权重。

    看起来很自然 再次利用平移不变性并完全替换 通过两层卷积架构连接组件

    如果我们天真滑动

    【讨论】:

    • 感谢您的回答,对于延迟回复我深表歉意。我实际上弄清楚了它们在论文中的含义:它们对填充输入执行卷积,因此输出映射的大小保持不变(输入和输出都是 NxN)。如果考虑到这一点,计算量会减少 25/18。请使用此信息更新您的答案,我会接受。
    • @MichaelSB 请查看my answer,看看它是否有帮助。我认为它解释了您所指出的观点,这个答案错误地未能解决。
    【解决方案2】:

    我也一直在努力解决这种困惑,似乎每次我都需要重温《盗梦空间》论文。

    比较的正确设置是考虑一个 5x5 形状的玩具示例输入图像。要生成具有 5x5 卷积的 5x5 输出图像,您需要在原始图像的顶部、底部和侧面使用 2 个额外的填充像素来填充原始图像,然后继续进行通常的 5x5 卷积。卷积滤波器有25个权重参数,输出的每个像素都需要输入25项的加权和。

    现在,我们将执行两个阶段,而不是 5x5 过滤器。首先,我们将在原始图像的顶部、底部和侧面额外填充 1 个像素,以使其在每个点都符合标准的 3x3 卷积。

    这会生成一个中间图像,由于填充,形状与输入相同,但其中每个像素是 3x3 卷积的结果(因此每个像素控制 9 个项目的加权和)。

    现在我们将从第一个 3x3 卷积的中间图像开始,对最后阶段的 3x3 卷积再次重复此操作。同样,我们在顶部、底部和侧面填充 1 个像素,输出的每一项都是通过输入的 9 项的加权和来实现的。

    您在问题中提供的图表演示了这如何允许聚合 5x5 卷积的相同空间信息跨度,但只是通过两个 3x3 卷积的一组不同的两个加权和来计算。需要明确的是,计算是不一样的,因为两个 9-d 系数滤波器不必学习与 25-d 系数滤波器相同。它们可能具有不同的权重,但它们可以按顺序跨越与 5x5 卷积相同的原始图像距离。

    最后,我们可以看到,在 5x5 的情况下,每个输出单元需要 25 个乘加运算。在顺序 3x3 情况下,最终输出的每个单元需要先进行 9 次乘加以构成第一个 3x3 卷积的单元,然后再进行 9 次乘加以构成最终输出的单元。

    关于“激活共享”的具体注释是指您只计算一次中间3x3卷积的值。您为每个单元花费 9 个操作,但是一旦创建它们,您只需再花费 9 个操作即可到达最终输出单元。您不会为最终输出的每个单元一遍又一遍地重复创建第一个 3x3 卷积的工作。

    这就是为什么它不计为每个输出单元需要 81 次操作。当你碰到 final 3x3 卷积输出的下一个 (i, j) 位置时,你正在重新使用 intermediate 3x3 卷积的一堆像素,所以你'每次只多做 9 次操作才能得到最终输出。

    5x5 输入的 5x5 填充卷积的操作数为 25 * 25。

    第一个 3x3 填充卷积的操作数为 25 * 9,从那里添加另一个填充 3x3 卷积的成本,因此总体上变为 25 * 9 + 25 * 9 = 25 * 18。

    这就是他们得到 (25 * 25) / (25 * 18) = 25/18 的比率的方式。

    事实上,这也是参数总数的减少。

    我认为关键是原始图表(来自论文和您的问题)做得非常糟糕,表明您将首先支付标准的 3x3 卷积成本来创建整个原始 5x5 的中间像素集输入,包括填充。 然后您将在该中间结果上运行第二个 3x3 卷积(这就是他们所说的重用激活)。

    图片使它看起来像是单独的,对于每个最终输出像素,您将围绕整个 3x3 中间层的所有正确点滑动原始 3x3 卷积,每次计算 9-ops 加权和(总共 81 个 ops) , 然后计算最终的 9-ops 加权和以获得单个像素的输出。然后回到原来的位置,将卷积颠倒 1 个点,然后重复。但这是不正确的,不会“重用”中间卷积层,而是会为最终输出层的每个单元单独重新计算。

    不过,总的来说,我同意这是非常重要且难以思考的。这篇论文确实掩盖了它,并假设读者已经想到了很多上下文。

    【讨论】:

      猜你喜欢
      • 2023-03-16
      • 2017-06-14
      • 1970-01-01
      • 2019-08-30
      • 2019-04-17
      • 1970-01-01
      • 2015-05-21
      • 2021-12-15
      • 1970-01-01
      相关资源
      最近更新 更多