最近deep learning大火,不仅仅受到学术界的关注,更在工业界受到大家的追捧。在很多重要的评测中,DL都取得了state of the art的效果。尤其是在语音识别方面,DL使得错误率下降了大约30%,取得了显著的进步,现在如果哪个做语音识别的公司没用DL,都不好意思打招呼了,相信后续这种状况还会延伸到图像和自然语言处理等其它领域。

   deep learning本身算是machine learning的一个分支,简单可以理解为neural network的发展。大约二三十年前,neural network曾经是ML领域特别火热的一个方向,但是后来确慢慢淡出了,原因包括以下几个方面:
  1,比较容易过训练,参数比较难tune;
  2,训练速度比较慢,在层次比较少(小于等于3)的情况下效果并不比其它方法更优;
所以中间有大约20多年的时间,神经网络被关注很少,这段时间基本上是svm和boosting算法的天下。但是,一个痴心的老先生hinton,他坚持了下来,并最终(和其它人一起bengio、yann.lecun等)提成了一个实际可行的deep learning框架。
 
  deep learning与传统的神经网络之间有相同的地方也有很多不同。
  二者的相同在于deep learning采用了神经网络相似的分层结构,系统由包括输入层、隐层(多层)、输出层组成的多层网络,只有相邻层节点之间有连接,同一层以及跨层节点之间相互无连接,每一层可以看作是一个logistic regression模型;这种分层结构,是比较接近人类大脑的结构的。
而为了克服神经网络训练中的问题,DL采用了与神经网络很不同的训练机制。传统神经网络中,采用的是back propagation的方式进行,简单来讲就是采用迭代的算法来训练整个网络,随机设定初值,计算当前网络的输出,然后根据当前输出和label之间的差去改变前面各层的参数,直到收敛(整体是一个梯度下降法)。而deep learning整体上是一个layer-wise的训练机制。这样做的原因是因为,如果采用back propagation的机制,对于一个deep network(7层以上),残差传播到最前面的层已经变得太小,出现所谓的gradient diffusion。
 
  deep learning训练过程具体如下:
 
  1,采用无标定数据(有标定数据也可)分层训练各层参数,这一步可以看作是一个无监督训练过程,是和传统神经网络区别最大的部分(这个过程可以看作是feature learning过程):
  具体的,先用无标定数据训练第一层,训练时可以采用auto-encoder来学习第一层的参数(这一层可以看作是得到一个使得输出和输入差别最小的三层神经网络的隐层),由于模型capacity的限制以及稀疏性约束,使得得到的模型能够学习到数据本身的结构,从而得到比输入更具有表示能力的特征;在学习得到第n-1层后,将n-1层的输出作为第n层的输入,训练第n层,由此分别得到各层的参数;
  这里面需要重点理解auto-encoder以及sparse的机制的原理和作用。
 
  2,基于第一步得到的各层参数进一步fine-tune整个多层模型的参数,这一步是一个有监督训练过程;第一步类似神经网络的随机初始化初值过程,由于DL的第一步不是随机初始化,而是通过学习输入数据的结构得到的,因而这个初值更接近全局最优,从而能够取得更好的效果;所以deep learning效果好很大程度上归功于第一步的feature learning过程。
 
  总之,deep learning能够得到更好地表示数据的feature,同时由于模型的层次、参数很多,capacity足够,因此,模型有能力表示大规模数据,所以对于图像、语音这种特征不明显(需要手工设计且很多没有直观物理含义)的问题,能够在大规模训练数据上取得更好的效果。此外,从模式识别特征和分类器的角度,deep learning框架将feature和分类器结合到一个框架中,用数据去学习feature,在使用中减少了手工设计feature的巨大工作量(这是目前工业界工程师付出努力最多的方面),因此,不仅仅效果可以更好,而且,使用起来也有很多方便之处,因此,是十分值得关注的一套框架,每个做ML的人都应该关注了解一下。
 
  当然,deep learning本身也不是完美的,也不是解决世间任何ML问题的利器,不应该被放大到一个无所不能的程度。
 
  所以,应该make a deep understanding on deep learning,使其为我所用。
 
  推荐比较好的学习资料:
  1,stanford deep learning tutorial: http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial;
  2,综述:Bengio's Learning Deep Architectures for AI, http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf;
  3, andrew ng's talk video: http://techtalks.tv/talks/machine-learning-and-ai-via-brain-simulations/57862/;
  4,cvpr 2012 tutorial:
  http://cs.nyu.edu/~fergus/tutorials/deep_learning_cvpr12/tutorial_p2_nnets_ranzato_short.pdf
  比较浅显的从LR,Neoral network,convolutional neural network介绍到sparse encoder;
 

深度学习(deep learning)的更多相关文章

  1. 【深度学习Deep Learning】资料大全

    最近在学深度学习相关的东西,在网上搜集到了一些不错的资料,现在汇总一下: Free Online Books  by Yoshua Bengio, Ian Goodfellow and Aaron C ...

  2. 机器学习(Machine Learning)&深度学习(Deep Learning)资料【转】

    转自:机器学习(Machine Learning)&深度学习(Deep Learning)资料 <Brief History of Machine Learning> 介绍:这是一 ...

  3. (转) 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-01-FAQ

    特别棒的一篇文章,仍不住转一下,留着以后需要时阅读 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-01-FAQ

  4. 机器学习——深度学习(Deep Learning)

    Deep Learning是机器学习中一个非常接近AI的领域,其动机在于建立.模拟人脑进行分析学习的神经网络,近期研究了机器学习中一些深度学习的相关知识,本文给出一些非常实用的资料和心得. Key W ...

  5. 机器学习(Machine Learning)&深度学习(Deep Learning)资料(Chapter 2)

    ##机器学习(Machine Learning)&深度学习(Deep Learning)资料(Chapter 2)---#####注:机器学习资料[篇目一](https://github.co ...

  6. 【重磅干货整理】机器学习(Machine Learning)与深度学习(Deep Learning)资料汇总

    [重磅干货整理]机器学习(Machine Learning)与深度学习(Deep Learning)资料汇总 .

  7. 转:浅谈深度学习(Deep Learning)的基本思想和方法

    浅谈深度学习(Deep Learning)的基本思想和方法  参考:http://blog.csdn.net/xianlingmao/article/details/8478562 深度学习(Deep ...

  8. (转)深度学习(Deep Learning, DL)的相关资料总结

    from:http://blog.sciencenet.cn/blog-830496-679604.html 深度学习(Deep Learning,DL)的相关资料总结 有人认为DL是人工智能的一场革 ...

  9. (转)机器学习——深度学习(Deep Learning)

    from:http://blog.csdn.net/abcjennifer/article/details/7826917 Deep Learning是机器学习中一个非常接近AI的领域,其动机在于建立 ...

  10. 机器学习(Machine Learning)&amp;深度学习(Deep Learning)资料

    机器学习(Machine Learning)&深度学习(Deep Learning)资料 機器學習.深度學習方面不錯的資料,轉載. 原作:https://github.com/ty4z2008 ...

随机推荐

  1. (ios) nsnotification总结

    1  文本输入,键盘显示时,view向上,键盘隐藏时,view向下 1.1 注册键盘显示,关闭通知,并实现主界面上下变动 [[NSNotificationCenter defaultCenter] a ...

  2. SQLServer中给表增加组合唯一约束

    将两个或者多个字段一起约束成一个唯一约束 alter table 表名 add constraint 约束名 unique (列名1,列名2)

  3. SQL SERVER 并发【2015.12.16】

    并发控制模型   1.悲观并发控制: A.默认冲突存在,当前进程通过获取当前数据的锁阻止其他进程的访问. B.读与写之间是相互阻塞. 2.乐观并发控制: A.使用行版本控制保持数据被操作前的状态. B ...

  4. Attribute 用法

    public class Program { //定制特性也可以应用在其他定制特性上, //应用AttributeUsage,来控制如何应用新定义的特性 [AttributeUsage(Attribu ...

  5. oracle存储过程、函数、序列、包

    一. 存储过程 1. 语法 create or replace procedure procedureName(seqName varchar2) is /*声明变量*/ n ); cursor cu ...

  6. C++之STL

    5.子类模板访问基类模板在子类模板中访问那些在基类模板中声明且依赖于模板参数的符号,应该在它前面加上作用域限定符"::" 或者显示使用this指针否则,编译器将试图在全局域中寻找该 ...

  7. x01.Game.CubeRun: XACT3 播放声音

    1.使用 Xact3 工具 在 DXSDK 安装目录 => Uilities => bin => x86 里,运行 Xact3.exe 程序,新建波形库(Wave Bank).声音库 ...

  8. Idea15/16 配置Tomcat

    1:我这里使用的是Eclipse创建的项目,导出后导入到Idea中使用 2:Idea导入Eclipse项目 3:Idea项目配置(默认快捷键CTRL+SHIT+ALT+S) 3.1 Project 项 ...

  9. 聚合及UML表示

     聚合聚合是一种特别类型的关联,用于描述“总体到局部”的关系. 聚合分成: 基本聚合与合成聚合   基本聚合: 基本聚合一般也简称为聚合(Aggregation).在基本的聚合关系中, 部分类(B)  ...

  10. poj 2104 K-th Number(可持久线段树)

    K-th Number 持久化:http://www.cnblogs.com/tedzhao/archive/2008/11/12/1332112.html 结构:http://www.docin.c ...