CNN卷积神经网络的改进(15年最新paper)

CNN卷积神经网络的改进(15年最新paper)

2023年7月17日发(作者:)

CNN卷积神经⽹络的改进(15年最新paper)回归正题,今天要跟⼤家分享的是⼀些 Convolutional Neural Networks(CNN)的⼯作。⼤家都知道,CNN 最早提出时,是以⼀定的⼈眼⽣理结构为基础,然后逐渐定下来了⼀些经典的架构——convolutional 和 pooling 的交替,最后再加上⼏个 fully-connectedlayers ⽤作最后做 prediction 等的输出。然⽽,如果我们能“反思”经典,深⼊剖析这些经典架构中的不同 component 的作⽤,甚⾄去改进它们,有时候可能有更多的发现。所以,今天分享的内容,便是改进 CNN 的⼀些⼯作。Striving For Simplicity:The All Convolutional Net先说⼀篇探究 CNN 中不同 component 的重要性和作⽤的⼯作。这篇⼯作发表于 ICLR 2015,已经有⼀年多的时间了。个⼈觉得它应该受到更⼤的关注。这篇⼯作最⼤的贡献是,把经典架构的 CNN 中的 pooling 层,⽤ stride convolutional 层给替换掉了,也就是去掉了deterministic 层。并且,通过数学公式和实验结果证明,这样的替换是完全不会损伤性能的。⽽加⼊ pooling 层,如果不慎,甚⾄是有伤性能的。具体来看,CNN 中的每次 feature map 表达,都可以看做⼀个 W*H*N 的三维结构。在这个三维结构下,pooling 这种 subsampling 的操作,可以看成是⼀个⽤ p-norm(当 p 趋向于正⽆穷时,就是我们最常见的 max-pooling)当做 activation function 的 convolutional操作。有了这样的解释,⾃然⽽然地,就会提出⼀个问题:那么引⼊这样的 pooling 操作,有什么意义呢?真的有必要么?在过去的⼯作中,⼤家普遍认为,pooling 层有三种可能的功效:(1)提取更 invariant 的 feature;(2)抽取更⼴范围的(global)的 feature——即 spatially dimension reduction;(3)更⽅便优化。这篇作者认为,其中(2)是对 CNN 最重要的。基于此,它们就提出,那么我只要在去掉 pooling 层的同时,保证这种 spatially dimension reduction——是否就可以构造出⼀个 all convolutional net,同时这个 net的效果还不⽐ convolutional + pooling 交替的差?

最后,果然,如他们所料。它们的 all convolutional net 达到了甚⾄有时候超过了 state-of-art,同时他们还发现有时候加⼊ pooling 反⽽不如不加。这篇⼯作的另外⼀个贡献是他们提出了⼀种新的 visualizing CNN 的⽅法,效果更直观更有分辨性。总结来说,这篇⼯作提出的 all convolutional net 可以实现⾃主 downsampling,并且效果不差;其⼆,它不是在说 pooling 不好,我们⼀定要抛弃;⽽是对于minimum necessary ingredients for CNN 进⾏了探究。Network in Network第⼀个要分享的是如何去 replace pooling layer after convolutional layer,接下来要分享的是 replace fully-connected layer on thetop of CNN。这个也是经典的 CNN 架构中的⼀个组成部分。也许这个东西⼤家还不熟悉,但是提到另⼀个词,⼤家就会很熟悉了。那就是,dropout。已经有⾮常多的⼯作,在 CNN 的 fully-connected layer 中,加⼊ dropout,来避免 overfitting。受此启发,后来⼜有了⼀个 sparse convolutional neural networks 的⼯作。然⽽,更具开创性的⼯作是,《Network in Network》这篇,提出了⽤ globalaveraging pooling layer 替代 fully-connected layer.

这样的 global averaging pooling layer 显然,可以把 input/feature map 和 output/category,也就可以达到减少 overfitting 的作⽤(和 dropout ⼀样)。

现在,global average pooling 已经被⽤得很⼴泛,⽐如在《Going Deeper with Convolutions》中,作者指出:

We found that a move from fully connected

layers to average pooling improved the top-1 accuracy by

about 0.6%, however the use of dropout remained essential

even after removing the fully connected layers.

当然它也有它⾃⼰的⼀定弊端,⽐如 convergence 会变慢。但是关于 fully-connected layer 是否⼀定是必须的这个问题,却在被各种⼯作和各种场景探究。⽐如 Google 去年⾮常⽕的 inceptionism 的⼯作中,也放弃了 fully-connected layer,并达到了很好的效果。

所以,关于这点,⼩S 是认为,我们不要光看表⾯的 dropout or global averaging pooling 这些技术,⽽是要去思考它们的共同之处和它们的原理。从它们带给⽹络结构的变化⼊⼿。也许现在来看,最初的结论还是对的,deeper is better,我们暂时要解决的是如何deeper。Spatial Transformer Networks这篇是 NIPS 2015 中,来⾃ Google DeepMind 的⼯作。这篇也被前⼏天 huho larochelle 评选出的 Top 10 arXiv 2015 DeepLearning Papers 收录(另外提⼀下,昨天看到这个评选,发现⼤部分我都写过笔记了,⼤家如果感兴趣,我可以单独整理⼀份,以供⼤家查阅)。回到这篇⼯作上来,它主要是说,尽管 CNN ⼀直号称可以做 spatial invariant feature extraction,但是这种 invariant 是很有局限性的。因为 CNN 的 max-pooling ⾸先只是在⼀个⾮常⼩的、rigid 的范围内(2×2 pixels)进⾏,其次即使是 stacked 以后,也需要⾮常 deep 才可以得到⼤⼀点范围的 invariant feature,三者来说,相⽐ attention 那种只能抽取 relevant 的 feature,我们需要的是更⼴范围的、更 canonical 的 features。为此它们提出了⼀种新的完全 self-contained transformation module,可以加⼊在⽹络中的任何地⽅,灵活⾼效地提取 invariant image features.

具体上,这个 module 就叫做 Spatial Transformers,由三个部分组成: Localization Network, Grid generator 和 Sampler。Localization Network ⾮常灵活,可以认为是⼀个⾮常 general 的进⼀步⽣成 feature map 和 map 对应的 parameter 的⽹络。因此,它不局限于⽤某⼀种特定的 network,但是它要求在 network 最后有⼀层 regression,因为需要将 feature map 的 parameter 输出到下⼀个部分:Grid generator。Grid generator 可以说是 Spatial Transformers 的核⼼,它主要就是⽣成⼀种“蒙版”,⽤于“抠图”(Photoshop 附体……)。Grid generator 定义了 Transformer function,这个 function 的决定了能不能提取好 invariantfeatures。如果是 regular grid,就好像⼀张四四⽅⽅没有倾斜的蒙版,是 affined grid,就可以把蒙版“扭曲”变换,从⽽提取出和这个蒙版“变换”⼀致的特征。在这个⼯作中,只需要六个参数就可以把 cropping, translation, rotation, scale and skew 这⼏种transformation 都涵盖进去,还是很强⼤的;⽽最后的 Sampler 就很好理解了,就是⽤于把“图”抠出来。

这个⼯作有⾮常多的优点:(1)它是 self-contained module,可以加在⽹络中的任何地⽅,加任何数量,不需要改变原⽹络;(2)它是 differentiable 的,所以可以直接进⾏各种 end-to-end 的训练;(3)它这个 differentiable simple and fast,所以不会使得原有⽹络变慢;(4)相⽐于 pooling 和 attention 机制,它抽取出的 invariant features 更 general。Stacked What-Where Auto-encoders这篇⽂章来⾃ NYU,Yann LeCun 组,已投稿到 ICLR 2016。与之前整理过的 improving information flow in Seq2Seq betweenencoder-decoder 类似的是,这篇⽂章主要是改进了基于 CNN 的 encoder-decoder,并⾮常 intuitive 的讨论了不同 regularizer 的区别。架构图可以直接看 Figure 1 的右侧,会⽐较清晰。具体来讲,Stacked What-Where Auto-encoders(SWWAE) 基于前向Convnet 和前向 Deconvnet,并将 max-pooling 的输出称为 “what”,其实就是将 max function 的 content 和 position 传给下⼀层;同时,max-pooling 中的 position/location 信息,也就是 argmax function,作为 “where” 要“横向”传给 decoder。这样,在进⾏ decoder reconstruct 的过程时,则更能基于 where + what 的组合,进⾏ unpooling。

为了能让⽹络利⽤好 what 和 where,⽂章考虑了三种 loss,见公式(1),即传统的 discriminate loss,和新增的 input-levelreconstruction loss for “what” 还有 intermediate-level reconstruction loss for “where”。

如上⽂所说,⽂章的 Section 3 很 intuitive,⾸先说明并解了为什么使⽤的是 soft version 的 max/argmax 去进⾏ ”what“ 和”where“;第⼆,讨论了为何加⼊ reconstruction loss 和这样⼀个 hybird loss function 更好(generalization 和 robustness);第三,说明了 intermediate loss 对于“what”“where”⼀起学习的重要性。

实验结果上来看,这样的 SWWAE 模型 generate 出来的图⽚更清晰,更“⼲净”(clearer and cleaner)。

发布者:admin,转转请注明出处:http://www.yc00.com/web/1689582752a268127.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信