从训练有素的 CNN 中消除不太相关的过滤器是否有用?

人工智能 深度学习 卷积神经网络 张量流 卷积
2021-10-27 16:50:42

想象一下,我有一个准确率很高的 TensorFlow CNN 模型,但过滤器可能太多了:

  • 有没有办法确定哪些过滤器对输出的影响更大?我认为这应该是可能的。至少,如果过滤器 A 有一个 0,它只乘以过滤器 B 的输出,那么过滤器 B 与过滤器 A 无关。特别是,我在考虑 2d 数据,其中 1 维与时间相关,并且其他相关的功能(如 one-hot char)。

  • 有没有办法从经过训练的模型中消除不太相关的过滤器,并保持模型的其余部分完好无损?

  • 它有用还是有更好的方法?

1个回答

注意:所有观察和结果均来自论文The Lottery Ticket Hypothesis: Finding Sparse, Trainable Neural Networks

一一回答您的问题:

  • 是的,有一些方法可以确定哪些过滤器对输出的影响更大。这是一种非常幼稚的方式,但在实践中效果很好。权重小的过滤器对输出的影响较小(根据经验证据),这基本上意味着权重位于切换区域的神经元,即~0在 ReLu 和 ~11(比方说)对最终产出的影响较小。
  • 是的,仅仅消除这些较低权重的过滤器就消除了这些过滤器引入的不必要的噪音和优柔寡断,并且令人惊讶地使模型表现得更好(根据经验观察)。
  • 这个概念是一个相对较旧的范式,但通过消除上述论文中不必要的权重的简单方法带来了新的转折,从而赢得了 ICLR 2019 的最佳论文奖。

TL;DR:消除不必要的权重使模型比原始模型表现更好。

这里还有TensorFlow 代码。