欧盟,NASA相关脑计划没有取得进展之前神经计算之路只能在生态计算和行为模拟来实现吗?
我也不知道路在何方!
https://github.com/rasmusbergpalm/DeepLearnToolbox
Dropout是指在模型训练时随机让网络某些隐含层节点的权重不工作,不工作的那些节点可以暂时认为不是网络结构的一部分,但是它的权重得保留下来(只是暂时不更新而已),因为下次样本输入时它可能又得工作了(有点抽象,具体实现看后面的实验部分)。
按照hinton的文章,他使用Dropout时训练阶段和测试阶段做了如下操作:
在样本的训练阶段,在没有采用pre-training的网络时(Dropout当然可以结合pre-training一起使用),hintion并不是像通常那样对权值采用L2范数惩罚,而是对每个隐含节点的权值L2范数设置一个上限bound,当训练过程中如果该节点不满足bound约束,则用该bound值对权值进行一个规范化操作(即同时除以该L2范数值),说是这样可以让权值更新初始的时候有个大的学习率供衰减,并且可以搜索更多的权值空间(没理解)。
在模型的测试阶段,使用”mean network(均值网络)”来得到隐含层的输出,其实就是在网络前向传播到输出层前时隐含层节点的输出值都要减半(如果dropout的比例为50%),其理由文章说了一些,可以去查看(没理解)。
关于Dropout,文章中没有给出任何数学解释,Hintion的直观解释和理由如下:
1. 由于每次用输入网络的样本进行权值更新时,隐含节点都是以一定概率随机出现,因此不能保证每2个隐含节点每次都同时出现,这样权值的更新不再依赖于有固定关系隐含节点的共同作用,阻止了某些特征仅仅在其它特定特征下才有效果的情况。
2. 可以将dropout看作是模型平均的一种。对于每次输入到网络中的样本(可能是一个样本,也可能是一个batch的样本),其对应的网络结构都是不同的,但所有的这些不同的网络结构又同时share隐含节点的权值。这样不同的样本就对应不同的模型,是bagging的一种极端情况。个人感觉这个解释稍微靠谱些,和bagging,boosting理论有点像,但又不完全相同。
3. native bayes是dropout的一个特例。Native bayes有个错误的前提,即假设各个特征之间相互独立,这样在训练样本比较少的情况下,单独对每个特征进行学习,测试时将所有的特征都相乘,且在实际应用时效果还不错。而Droput每次不是训练一个特征,而是一部分隐含层特征。
4. 还有一个比较有意思的解释是,Dropout类似于性别在生物进化中的角色,物种为了使适应不断变化的环境,性别的出现有效的阻止了过拟合,即避免环境改变时物种可能面临的灭亡。
文章最后当然是show了一大把的实验来说明dropout可以阻止过拟合。这些实验都是些常见的benchmark,比如Mnist, Timit, Reuters, CIFAR-10, ImageNet.
代码在test_example_NN.m上修改得到
这里我只用了个简单的单个隐含层神经网络,隐含层节点的个数为100,所以输入层-隐含层-输出层节点依次为784-100-10. 为了使本例子简单话,没用对权值w进行规则化,采用mini-batch训练,每个mini-batch样本大小为100,迭代20次。权值采用随机初始化
实验期间参考的原文博客:http://blog.csdn.net/dark_scope/article/details/9421061
参考文献地址:http://ufldl.stanford.edu/tutorial/
http://deeplearning.net/
http://cilvr.nyu.edu/doku.php?id=courses:deeplearning2014:start 2014年闫乐坤课程
http://info.usherbrooke.ca/hlarochelle/cours/ift725_A2013/contenu.html
http://learning.cs.toronto.edu:40292/index.shtml?section=people
https://mila.umontreal.ca/mila/equipe/
理论视频:http://list.youku.com/albumlist/show?id=21508721&ascending=1&page=1
http://6.869.csail.mit.edu/fa13/schedule.html
http://blog.sina.com.cn/s/blog_4cccd8d301012pw5.html
交互式图像分割代码。
http://vision.csd.uwo.ca/code/
graphcut优化代码。
cvpr相关数据库下载:
http://research.microsoft.com/en-us/um/people/jckrumm/WallFlower/TestImages.htm
微软研究院牛人Wallflower Paper的论文中用到的目标检测等测试图片
http://archive.ics.uci.edu/ml/
UCI数据库列表下载,最常用的机器学习数据库列表。
http://www.cs.rochester.edu/~rmessing/uradl/
人体行为识别通过关键点的跟踪视频数据库,Rochester university的
http://www.research.ibm.com/peoplevision/performanceevaluation.html
IBM人体视觉研究中心,有视频监控等非常多的测试视频。
http://www.cvpapers.com/datasets.html
该网站上列出了常见的cvpr研究的数据库。
http://www.cs.washington.edu/rgbd-dataset/index.html
RGB-D Object Dataset.做目标识别的。
工具和code下载:
http://lear.inrialpes.fr/people/dorko/downloads.html
6种常见的图像特征点检测子,linux下环境运行。不过只提供了二进制文件,不提供源码。
http://www.cs.ubc.ca/~pcarbo/objrecls/index.html#code
ssmcmc的matlab代码,是Learning to recognize objects with little supervision这一系列文章用的源码,属于目标识别方面的研究。
http://www.robots.ox.ac.uk/~timork/
仿射无关尺度特征点检测算子源码,还有些其它算子的源码或二进制文件。
http://www.vision.ee.ethz.ch/~bleibe/code/ism.html
隐式形状模型(ISM)项目主页,作者Bastian Leibe提供了linux下运行的二进制文件。
http://www.di.ens.fr/~laptev/download.html#stip
Ivan Laptev牛人主页中的STIP特征点检测code,但是也只是有二进制文件,无源码。该特征点在行为识别中该特征点非常有名。
http://ai.stanford.edu/~quocle/
斯坦福大学Quoc V.Le主页,上有它2011年行为识别文章的代码。卷积神经网络代码:http://blog.csdn.net/susu_love/article/details/53486351
https://github.com/rasmusbergpalm/DeepLearnToolbox
http://blog.csdn.net/joshuaxx316/article/details/52514978论文笔记 网络减枝http://blog.csdn.net/sunbaigui/article/details/50906002
残差网络解读与优势:http://blog.csdn.net/yaoxingfu72/article/details/50764087