秒速赛车:想入门设计卷积神经网络?这

2018-03-22 23:36| 发布者: | 查看: |

  秒速赛车开奖这篇文章可以作为一个设计指南,为特定分类任务的 CNN 设计提供指导。作者围绕准确率、速度、内存消耗三个指标的权衡,从网络类型、架构设计、数据处理和迁移学习等方面介绍了 CNN 设计过程中使用的方法。

  你想开始做图像分类,但是无从着手。应该使用哪个预训练网络?如何修改网络以使其满足需求?你的网络应该包含 20 层还是 100 层?哪些是最快的、最准确的?这些是你为图像分类选择最好的 CNN 时会遇到的众多问题。

  当选择 CNN 来进行图像分类时,有 3 个非常主要的指标需要去优化:准确率、速度和内存消耗。在这些指标上的性能取决于你所选择的 CNN 以及对它所做的任何修改。不同的网络(如 VGG、Inception 以及 ResNet 等)在这些指标上有不同的权衡。此外,你还可以修改这些网络结构,例如通过削减某些层、增加某些层、在网络内部使用扩张卷积,或者不同的网络训练技巧。

  这篇文章可以作为一个设计指南,为特定的分类任务的 CNN 设计提供指导。尤其是,我们会聚焦在 3 个主要指标上:准确率、速度和内存消耗。我们会研究很多不同的分类 CNN,并探索它们在这 3 个指标方面对应的属性。我们还会研究对这些基本 CNN 可能做出的修改,以及这些修改会怎样影响这些指标。最后,我们会研究如何为特定图像分类任务最优地设计 CNN。

  在网络类型和这 3 个指标上有着明确的权衡。首先,你肯定会希望使用 Inception 或者 ResNet 类型的设计。它们比 VGGNet 和 AlexNet 更新,而且在速度和准确率之间提供了更好选择的权衡(正如你在上图中看到的)。斯坦福大学的 Justin Johnson 对其中的一部分做了很棒的基准测试()。

  对 CNN 一般设计的最新进展已经提出了一些非常棒的可选择方法,它们能够在没有太多的准确率损失的情况下加速 CNN 的运行,并减少内存消耗。所有的这些方法都可以很容易地集成在上述的任何一类卷积神经网络中。

  MobileNets()使用深度分离的卷积来极大地减少运算和内存的消耗,同时仅牺牲 1% 到 5% 的准确率,准确率的牺牲程度取决于你想要获得的计算节约。

  XNOR-Net()使用二进制卷积,也就是说,卷积运算只涉及两个可能的数值:0 或者 1。通过这种设计,网络可以具有较高程度的稀疏性,易于被压缩而不消耗太多内存。

  ShuffleNet()使用点组卷积和通道随机化来极大地减少计算代价,同时还能维持比 MobileNets 高的准确率。事实上,它们可以在超过 10 倍的运算速度下达到早期最先进的分类 CNN 的准确率。

  Network Pruning()是为了减少运行时间和内存消耗而删除 CNN 的部分权重的技术,而且有希望不降低准确率。为了保持准确率,被删除的部分应该对最终结果没有大的影响。链接中的论文展示了使用 ResNets 可以轻易地做到这一点。

  这个比较容易:通常增加更多地层会提升准确率,同时会牺牲一些速度和内存。然而,我们已经意识到的是这种权衡受制于边际效应,也就是说,我们增加的层越多,通过增加每一层而带来的准确率提升将越少。

  关于激活函数,最近有很多争议。然而,很好的一个经验法则就是从 ReLU 开始。使用 ReLU 通常会在开始的时立即得到一些好的结果。不像 ELU、PReLU 或者 LeakyReLU 一样还需要一些繁琐的调整。当你确定你的设计使用 ReLU 能够达到不错的效果,那你就可以调整其它的部分,并调整它们的参数,以尝试对准确率做最后的提升。

  你也许认为使用更大的卷积核总会导致最高的准确率,同时还会损失速度和内存。然而,情况并不总是如。

<
>
相关文章
 
QQ在线咨询
售前咨询热线
400-800-8888
售后服务热线
400-800-8888
返回顶部