How to Design a Neural Network | 2020 Edition

Tips

  1. 不需要你花费太多时间设计神经网络
  2. 选择流行的网络
  3. 特殊问题特殊处理

Efficient Model

尽管NAS现在很火,但手工设计网络还是很有必要,尤其设计轻量化模型时。ShuffleNet V2提出通过NAS搜索出的结构虽然参数量很少但比手工设计的网络慢很多。正如MoblieNet V2比NASNet-A快很多。

神经网络 规划 神经网络设计_ci


因为模型的速度不仅仅依赖于浮点运算量还依赖于内存的读写效率和平台特性。

神经网络 规划 神经网络设计_ci_02

ShuffleNet v2在论文中给了我们一些方法去提高模型的推断速度。

神经网络 规划 神经网络设计_神经网络 规划_03


通过观察他们发现相等的channels能降低内存读写的开销。所以不因频繁的改变channels的数量。像SqueezeNet和MobileNet V2就违反了这一原则。但是也不意味着不使用他们。过少的channels也一样影响训练的稳定性,卷积核数量少于8个时容易引起部分神经元失活。

神经网络 规划 神经网络设计_神经网络 规划_04

另外一个就是避免使用太多的网络分支。

神经网络 规划 神经网络设计_图片识别_05


过多的分支会大大降低数据的并行性,这样对GPU十分不友好。NAS出来的模型往往仅以参数量和准确率为标准,常有过多分支从而影响推断速度。点卷积的操作的开销也不能够忽略。

神经网络 规划 神经网络设计_图片识别_06

Attention Mechanisms

原本是nlp常用的方法,但在cv中也一样有效。

神经网络 规划 神经网络设计_神经网络 规划_07

例如我们在朗读以下句子时,我们会将重心放在this video和it上。

这便是注意力机制,告诉自己哪些词语在语境中是重要的。

神经网络 规划 神经网络设计_ci_08


在图像中,注意力机制能告诉模型,哪些位置或者哪些特征需要格外注意。

神经网络 规划 神经网络设计_图片识别_09

SE模块就实现了类似的机制。

神经网络 规划 神经网络设计_ci_10


MobileNet V3也使用了SE模块。

神经网络 规划 神经网络设计_搜索_11


attention机制在图片识别,场景识别,检测中都非常有效。