【深度学习介绍系列】——前言

来源:互联网 发布:matlab 遍历矩阵 编辑:程序博客网 时间:2024/06/04 19:16

主要介绍机器学习的基础知识(线性回归,逻辑回归,贝叶斯,支持向量机,马尔科夫等),自编码网络,深度置信网络,卷积神经网络,递归神经网络,深度强化学习。这些基本覆盖了机器学习和深度学习的主要算法。


首先介绍下机器学习与深度学习:

机器学习(Machine Learning)是一门专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能的学科。

机器学习在图像识别、语音识别、自然语言理解、天气预测、基因表达、内容推荐等等得以应用。目前我们通过机器学习去解决这些问题的思路都是这样的(以视觉感知为例子):

从开始的通过传感器(例如CMOS)来获得数据。然后经过预处理、特征提取、特征选择,再到推理、预测或者识别。最后一个部分,也就是机器学习的部分,绝大部分的工作是在这方面做的,也存在很多的paper和研究。而中间的三部分,概括起来就是特征表达。良好的特征表达,对最终算法的准确性起了非常关键的作用,而且系统主要的计算和测试工作都耗在这一大部分。但,这块实际中一般都是人工完成的。靠人工提取特征。

2006年,加拿大多伦多大学教授、机器学习领域的泰斗Geoffrey Hinton和他的学生RuslanSalakhutdinov在《科学》上发表了一篇文章,开启了深度学习在学术界和工业界的浪潮。这篇文章有两个主要观点:1)多隐层的人工神经网络具有优异的特征学习能力,学习得到的特征对数据有更本质的刻画,从而有利于可视化或分类;2)深度神经网络在训练上的难度,可以通过“逐层初始化”(layer-wise pre-training)来有效克服,在这篇文章中,逐层初始化是通过无监督学习实现的。

当前多数分类、回归等学习方法为浅层结构算法,其局限性在于有限样本和计算单元情况下对复杂函数的表示能力有限,针对复杂分类问题其泛化能力受到一定制约。深度学习可通过学习一种深层非线性网络结构,实现复杂函数逼近,表征输入数据分布式表示,并展现了强大的从少数样本集中学习数据集本质特征的能力。(多层的好处是可以用较少的参数表示复杂的函数)

深度学习的实质,是通过构建具有很多隐层的机器学习模型和海量的训练数据,来学习更有用的特征,从而最终提升分类或预测的准确性。因此,“深度模型”是手段,“特征学习”是目的。区别于传统的浅层学习,深度学习的不同在于:1)强调了模型结构的深度,通常有5层、6层,甚至10多层的隐层节点;2)明确突出了特征学习的重要性,也就是说,通过逐层特征变换,将样本在原空间的特征表示变换到一个新特征空间,从而使分类或预测更加容易。与人工规则构造特征的方法相比,利用大数据来学习特征,更能够刻画数据的丰富内在信息。

(引用自http://blog.csdn.net/zouxy09/article/details/8775360)


人脸识别的大概流程:


面部特征定位——>几何校正——>光度校正——>特征提取——>分类

下面用图来大概说明下一般的浅层学习和深度学习的区别:其实深度学习就是把一般浅层学习中人工选取特征和预处理的部分用机器学习代替了。如红色的框所示,深度学习包括特征提取和分类,是一个END-TO-END系统。


学习资料推荐:

深度学习系列:

深度学习 - 我爱智能 - 博客频道 - CSDN.NET
http://blog.csdn.net/on2way/article/category/5920197

Deep Learning - 随笔分类 - tornadomeet - 博客园
http://www.cnblogs.com/tornadomeet/category/497607.html

Deep Learning(深度学习)学习笔记整理

如果你是刚入门的小白,建议收藏这位大神的系列文章,这一系列基本山涵盖了深度学习的所有基本东西,所以相对来说也是比较综述性质的,很多的细节是你需要有一点了解的才能看得懂。可能第一遍下去看不懂,或者只能懂很浅显的一部分,但是不要紧,建议每隔一段时间看一看这个大综述,每一次你都会有不同的收获的。

如果觉得光看别人写的很难理解,网络上相关的视频也是很多的,比如说复旦大学 
吴立德教授的

《深度学习课程》

讲的很浅显易懂,观看他的教学视频会对深度学习的很多底层原理有一个更好的理解,当然唯一的不足时这个系列视频的分辨率有点低,看起来略费劲,但是还是可以学习的。 
关于该教授的课程总结,也有网友写了: 
http://m.blog.csdn.net/blog/iichangle/44082827

另外一个学习较好的教程是吴恩达的UFLDL教程,该教程也有网友翻译成中文版的了,可以说也是非常浅显易懂的,里面涉及到的代码也是有网友分享过。关于吴恩达,感觉研究深度学习的没几个不知道的,他还有比较经典的机器学习教程,这些可谓是更底层的原理介绍与一些浅层学习算法,对于较好的理解机器学习乃至深度学习非常有帮助。深度学习UFLDL教程教程如下

http://ufldl.stanford.edu/wiki/index.php/UFLDL%E6%95%99%E7%A8%8B

机器学习教程网址如下:

http://openclassroom.stanford.edu/MainFolder/CoursePage.php?course=MachineLearning

该机器学习教程有更早的斯坦福课堂上的版本,在哪里有网友翻译的中文字幕,可以搜一下学习学习,很不错。

当然还有很多很多很好的教程: 
博客园上的网友总结系列,当你具体到学习某个部分的时候会很有用: 
http://www.cnblogs.com/tornadomeet/tag/Deep%20Learning/default.html?page=1

这位网友翻译的系列: 
机器学习 
其英文版的课程: 
CS231n: Convolutional Neural Networks for Visual Recognition.

在贴一个国外大牛还未出版的电子书: 
http://neuralnetworksanddeeplearning.com/index.html

还有一个好的教程(有英文视频) 
http://cl.naist.jp/~kevinduh/a/deep2014/

再就是DeepLearning的官网,里面好的好东西自己发现: 
http://deeplearning.net/

关于学习深度学习工具,似乎也有好多(matlab版,c++版,python版等等深度学习库),视你自己熟悉而定。比如一个比较适合初学者学习原理的matlab版工具箱:

DeepLearnToolbox 
(后面会基于这个工具箱进行相关实验)。

Python下的工具箱:Theano; 深度学习平台:caffe等等,这些只是看过也没有实际用过,属于比较高端下的深度学习应用范围了。

教程可谓是多不胜数,只待寻找适合自己的最重要,找到一个好的教程坚持学下去,一定会有所收获的



0 0
原创粉丝点击