一个大网络比几个小网络快吗?

人工智能 深度学习 卷积神经网络
2021-10-19 04:37:33

我的问题的基础是,在 MNIST 上表现出色的 CNN 远小于在 ImageNet 上表现出色的 CNN。显然,随着潜在目标类别数量的增加以及图像复杂性(背景、照明等)的增加,网络需要变得更深更宽,以便能够充分捕捉数据集中的所有变化。然而,大型网络的缺点是它们在推理和反向传播方面都变得慢得多。

假设您想构建一个在您家门前的安全摄像头上运行的网络。你真的有兴趣告诉它什么时候看到一个人,或者你车道上的一辆车,或者一辆送货卡车等。假设你总共有 20 个你关心的类(也许你想知道小型货车、皮卡和很快)。

你收集了一个包含大量漂亮、干净数据的数据集。它有一天中很多时间的镜头,有很多班级内的变化和所有班级之间的巨大平衡。最后,假设您希望该网络以最大可能的帧速率运行(我知道安全摄像头不需要这样做,但也许您正在运行在一个小型处理器上或您想要执行的其他一些原因速度真的很高)。

在计算上,将您的网络拆分成更小的专业网络有什么优势吗?一种可能性是拥有一个早晨、一个下午/晚上和一个夜间网络,然后您运行与一天中的时间相对应的网络。每个都可以检测到所有 20 个类别(尽管您可以进一步拆分并使其成为一个车辆,一个人,等等)。您的另一个选择是共享基础层(类似于使用 VGGNet 层进行迁移学习)。然后,您将这些基础层的输出馈送到几个小型网络,每个网络都像上面那样专门化。最后,您还可以只拥有一个在所有条件下运行的大型网络。

问题:除了构建它们之外,有没有办法知道其中哪些会更快?

在我的脑海中,感觉就像共享基础层然后发散将与具有最多附加参数的“子网络”一样慢。单独网络的类似逻辑,除了您通过共享基础层节省了大量计算。不过,总体而言,似乎一个网络可能是理想的。有没有沿着这些方向进行的研究/实验?

1个回答

在此之前,您需要了解神经网络的分层可解释性。每一层都由一些比其前一层复杂得多的模式“激活”激活(在纹理等方面)。网络越深,它可以计算的功能就越复杂。因此你不能用几个浅层的网络来替换一个更深的网络。我建议你浏览一下https://arxiv.org/abs/1310.6343,在本文中证明了没有 t/2 层网络可以捕获 t 层网络的分布。