3D CNN架构中有个hardwired kernels是什马东西?

回复

深度学习理论smallrock 发起了问题 • 2 人关注 • 0 个回复 • 423 次浏览 • 2016-01-14 20:45 • 来自相关话题

2015_Arxiv_Deep Residual Learning for Image Recognition

论文阅读disheng 发表了文章 • 3 个评论 • 4925 次浏览 • 2016-01-14 18:50 • 来自相关话题

    首先感谢 @辛淼 博士的邀请,末学在这里把阅读《Deep Residual Learning for Image Recognition》一文的心得和大家分享一下,做抛砖引玉之用,希望得到大家的广泛讨论。
    在具体介绍文章思想以前,先来看一下“深度残差学习”(Deep Residual Learning)的赫赫战功:MSRA凭借着这一利器在Imagenet比赛的识别、检测和定位三个任务、以及COCO比赛的检测和分割任务上都获得了第一名,这主要归功于残差学习的这一思想使得学习更深的网络成为可能,从而学习到更好的表达。
    那么什么是深度残差学习呢?
    很久以前人们就已经认识到更深的网络能够产生更好的数据表达,但是如何训练一个很深的网络却一直是一个困扰人们的问题,这主要是由于梯度消失或爆炸以及尺度不均匀的初始化造成的。围绕这一问题,人们提出了ReLU、Xavier、pReLU、batch normalization和path-SGD等一系列方法(详细内容参见社区第二次线下活动刘昕博士讲稿),但是本文作者何恺明等人却发现即使有这些方法,神经网络的训练仍然呈现了degradation的现象。所谓degradation现象,就是随着网络深度的增加,网络的性能反而下降,而且这种性能的下降并不是由前面所说的问题造成的。见图1,56层网络在训练误差和测试误差上都要比20层的网络大。





图1 [图片选自原论文,版权归原作者所有]

    这种现象是不合理的。假如目前有一个可以工作的很好的网络A,这时来了一个比它更深的网络B,只需要让B的前一部分与A完全相同,后一部分只实现一个恒等映射,这样B最起码能获得与A相同的性能,而不至于更差。深度残差学习的思想也由此而产生,既然B后面的部分完成的是恒等映射,何不在训练网络的时候加上这一先验,于是构造网络的时候加入了shortcut连接,即每层的输出不是传统神经网络当中输入的映射,而是映射和输入的叠加,如图2所示。
 




图2 [图片选自原论文,版权归原作者所有]

    这就是深度残差学习的思想,当然在具体实现上还有一些细节,比如输入和输出的维度不同是如何处理的、文中所实现网络何以更深但参数却比VGG要少、网络的设计原则是什么,这些细节请大家阅读论文Sec.3.3,也欢迎大家进行讨论。
    最后谈一点自己关于这篇文章的体会:
    1. 在网络训练过程中,加入先验信息指导非常重要,合理的先验往往会取得非常好的效果。本文中的恒等映射便是一例,这里再举一个例子,Meina Kan老师等人的2014CVPR的Stacked Progressive Auto-Encoders (SPAE) for Face Recognition一文中在用深度神经网络做跨姿态的人脸识别问题时,加入了人脸姿态是渐变的过程这一先验信息,使得网络性能显著提升。
    2. 如果读过《Highway Network》一文,会发现深度残差学习是highway的一个特例,但这并不影响此文的贡献,能把一个很好的idea进行实现,取得不错的性能也是非常不易的。另外,此文在一定程度上给出了highway直观上的解释。
    3. 神经网络的研究,可以分为网络结构和训练机制两大部分,刘昕博士形象地将它们分别比喻为计算机的硬件和软件,现今的计算机软硬件之间的界限日益模糊,正如本文所提出的深度残差学习也是一样,从网络结构方面来理解相当于在传统的CNN之上加上了shortcut连接,从训练机制来理解,本文在训练的过程中加入了恒等映射这一先验信息,相当于提出了一种新的训练机制。
    4. 文中的Sec.4.2实验部分挑战了把极限,设计了一个超大规模(1202层)的网络,使用深度残差学习也可以使网络收敛,但性能不如110层的网络好,主要原因是数据量相对偏少,因此实际应用当中,我们需要在网络的规模与数据量之间综合考量。
    最后,感谢caffe社区给我们提供交流和学习的平台,使我们受益良多。
 
董震:北京理工大学在读博士生,研究兴趣为模式识别、机器学习和计算机视觉。 查看全部
    首先感谢 @辛淼 博士的邀请,末学在这里把阅读《Deep Residual Learning for Image Recognition》一文的心得和大家分享一下,做抛砖引玉之用,希望得到大家的广泛讨论。
    在具体介绍文章思想以前,先来看一下“深度残差学习”(Deep Residual Learning)的赫赫战功:MSRA凭借着这一利器在Imagenet比赛的识别、检测和定位三个任务、以及COCO比赛的检测和分割任务上都获得了第一名,这主要归功于残差学习的这一思想使得学习更深的网络成为可能,从而学习到更好的表达。
    那么什么是深度残差学习呢?
    很久以前人们就已经认识到更深的网络能够产生更好的数据表达,但是如何训练一个很深的网络却一直是一个困扰人们的问题,这主要是由于梯度消失或爆炸以及尺度不均匀的初始化造成的。围绕这一问题,人们提出了ReLU、Xavier、pReLU、batch normalization和path-SGD等一系列方法(详细内容参见社区第二次线下活动刘昕博士讲稿),但是本文作者何恺明等人却发现即使有这些方法,神经网络的训练仍然呈现了degradation的现象。所谓degradation现象,就是随着网络深度的增加,网络的性能反而下降,而且这种性能的下降并不是由前面所说的问题造成的。见图1,56层网络在训练误差和测试误差上都要比20层的网络大。

fig1.JPG

图1 [图片选自原论文,版权归原作者所有]

    这种现象是不合理的。假如目前有一个可以工作的很好的网络A,这时来了一个比它更深的网络B,只需要让B的前一部分与A完全相同,后一部分只实现一个恒等映射,这样B最起码能获得与A相同的性能,而不至于更差。深度残差学习的思想也由此而产生,既然B后面的部分完成的是恒等映射,何不在训练网络的时候加上这一先验,于是构造网络的时候加入了shortcut连接,即每层的输出不是传统神经网络当中输入的映射,而是映射和输入的叠加,如图2所示。
 
111111.jpg

图2 [图片选自原论文,版权归原作者所有]

    这就是深度残差学习的思想,当然在具体实现上还有一些细节,比如输入和输出的维度不同是如何处理的、文中所实现网络何以更深但参数却比VGG要少、网络的设计原则是什么,这些细节请大家阅读论文Sec.3.3,也欢迎大家进行讨论。
    最后谈一点自己关于这篇文章的体会:
    1. 在网络训练过程中,加入先验信息指导非常重要,合理的先验往往会取得非常好的效果。本文中的恒等映射便是一例,这里再举一个例子,Meina Kan老师等人的2014CVPR的Stacked Progressive Auto-Encoders (SPAE) for Face Recognition一文中在用深度神经网络做跨姿态的人脸识别问题时,加入了人脸姿态是渐变的过程这一先验信息,使得网络性能显著提升。
    2. 如果读过《Highway Network》一文,会发现深度残差学习是highway的一个特例,但这并不影响此文的贡献,能把一个很好的idea进行实现,取得不错的性能也是非常不易的。另外,此文在一定程度上给出了highway直观上的解释。
    3. 神经网络的研究,可以分为网络结构和训练机制两大部分,刘昕博士形象地将它们分别比喻为计算机的硬件和软件,现今的计算机软硬件之间的界限日益模糊,正如本文所提出的深度残差学习也是一样,从网络结构方面来理解相当于在传统的CNN之上加上了shortcut连接,从训练机制来理解,本文在训练的过程中加入了恒等映射这一先验信息,相当于提出了一种新的训练机制。
    4. 文中的Sec.4.2实验部分挑战了把极限,设计了一个超大规模(1202层)的网络,使用深度残差学习也可以使网络收敛,但性能不如110层的网络好,主要原因是数据量相对偏少,因此实际应用当中,我们需要在网络的规模与数据量之间综合考量。
    最后,感谢caffe社区给我们提供交流和学习的平台,使我们受益良多。
 
董震:北京理工大学在读博士生,研究兴趣为模式识别、机器学习和计算机视觉。

Layer.hpp中的问题

Caffe开发使用孙琳钧 回复了问题 • 4 人关注 • 2 个回复 • 822 次浏览 • 2016-01-13 17:08 • 来自相关话题

imfilter和conv2的区别

综合问题孙琳钧 回复了问题 • 2 人关注 • 1 个回复 • 521 次浏览 • 2016-01-13 00:17 • 来自相关话题

windows 7 spp-net selective_search 出错

目标识别王斌_ICT 回复了问题 • 3 人关注 • 1 个回复 • 571 次浏览 • 2016-01-12 14:55 • 来自相关话题

caffe.proto里面的几个message: SoftmaxParrameter, LossParameter

Caffe开发使用zeakey 回复了问题 • 3 人关注 • 2 个回复 • 909 次浏览 • 2016-01-12 13:44 • 来自相关话题

如何将自己的数据集转换为标准的VOC数据集格式?

Caffe开发使用wait_alone 回复了问题 • 13 人关注 • 2 个回复 • 1311 次浏览 • 2016-01-12 12:37 • 来自相关话题

weight_decay参数是什么意思?

综合问题阅微草堂 回复了问题 • 4 人关注 • 1 个回复 • 913 次浏览 • 2016-01-12 10:09 • 来自相关话题

oversample参数设置

综合问题徐国智_受限的玻尔兹曼 回复了问题 • 3 人关注 • 1 个回复 • 635 次浏览 • 2016-01-12 09:31 • 来自相关话题

进行finetune得到新的caffemodel后,怎么拿test集来测试呢?

Caffe开发使用李扬 回复了问题 • 2 人关注 • 1 个回复 • 883 次浏览 • 2016-01-11 12:21 • 来自相关话题

caffe里面的误差的反向传播怎么实现来的?

Caffe开发使用王蒙蒙 回复了问题 • 29 人关注 • 4 个回复 • 3346 次浏览 • 2016-01-10 15:55 • 来自相关话题

LSTM的使用

深度学习应用辛淼 回复了问题 • 3 人关注 • 1 个回复 • 731 次浏览 • 2016-01-10 15:04 • 来自相关话题

深度学习模型有好多种,最值得学的有哪几个?

深度学习理论星空下的巫师 回复了问题 • 2 人关注 • 1 个回复 • 629 次浏览 • 2016-01-08 21:59 • 来自相关话题

cnn在视频动作中的应用,进展

深度学习应用辛淼 回复了问题 • 4 人关注 • 1 个回复 • 675 次浏览 • 2016-01-08 10:49 • 来自相关话题

关于训练一层神经网络的问题

Caffe开发使用cjwdeq 回复了问题 • 5 人关注 • 2 个回复 • 618 次浏览 • 2016-01-08 09:47 • 来自相关话题

有没有详细的中文Caffe文档?

Caffe开发使用cjwdeq 回复了问题 • 3 人关注 • 2 个回复 • 1217 次浏览 • 2016-01-08 09:29 • 来自相关话题

Check failed: error == cudaSuccess (2 vs. 0) out of memory

Caffe开发使用shuokay 回复了问题 • 4 人关注 • 5 个回复 • 1924 次浏览 • 2016-01-07 19:47 • 来自相关话题

有关triplet网络训练的一个问题

综合问题孙琳钧 回复了问题 • 4 人关注 • 1 个回复 • 920 次浏览 • 2016-01-06 15:58 • 来自相关话题

使用*.deb的方法智能安装cuda7.5后需要编译吗

Caffe开发使用李扬 回复了问题 • 3 人关注 • 2 个回复 • 621 次浏览 • 2016-01-06 12:57 • 来自相关话题

caffe在训练数据时,图像的尺寸不是方形,如何修改输入的尺寸大小

深度学习应用李扬 回复了问题 • 9 人关注 • 5 个回复 • 1549 次浏览 • 2016-01-06 10:49 • 来自相关话题