深度学习 vs 机器学习 vs 模式识别
http://www.csdn.net/article/2015-03-24/2824301
【编者按】本文来自CMU的博士,MIT的博士后,vision.ai的联合创始人Tomasz Malisiewicz的个人博客文章,阅读本文,你可以更好的理解计算机视觉是怎么一回事,同时对机器学习是如何随着时间缓慢发展的也有个直观的认识。
以下为正文:
本文我们来关注下三个非常相关的概念(深度学习、机器学习和模式识别),以及他们与2015年最热门的科技主题(机器人和人工智能)的联系。

图1 人工智能并非将人放入一台计算机中(图片来源于 WorkFusion的博客)
环绕四周,你会发现不缺乏一些初创的高科技公司招聘机器学习专家的岗位。而其中只有一小部分需要深度学习专家。我敢打赌,大多数初创公司都可以从最基本的数据分析中获益。那如何才能发现未来的数据科学家?你需要学习他们的思考方式。
三个与“学习”高度相关的流行词汇
模式识别(Pattern recognition)、机器学习(machine learning)和深度学习(deep learning)代表三种不同的思想流派。模式识别是最古老的(作为一个术语而言,可以说是很过时的)。机器学习是最基础的(当下初创公司和研究实验室的热点领域之一)。而深度学习是非常崭新和有影响力的前沿领域,我们甚至不会去思考后深度学习时代。我们可以看下图所示的谷歌趋势图。可以看到:
1)机器学习就像是一个真正的冠军一样持续昂首而上;
2)模式识别一开始主要是作为机器学习的代名词;
3)模式识别正在慢慢没落和消亡;
4)深度学习是个崭新的和快速攀升的领域。

2004年至今三个概念的谷歌搜索指数(图来源于 谷歌趋势)
1. 模式识别:智能程序的诞生
模式识别是70年代和80年代非常流行的一个术语。它强调的是如何让一个计算机程序去做一些看起来很“智能”的事情,例如识别“3”这个数字。而且在融入了很多的智慧和直觉后,人们也的确构建了这样的一个程序。例如,区分“3”和“B”或者“3”和“8”。早在以前,大家也不会去关心你是怎么实现的,只要这个机器不是由人躲在盒子里面伪装的就好(图2)。不过,如果你的算法对图像应用了一些像滤波器、边缘检测和形态学处理等等高大上的技术后,模式识别社区肯定就会对它感兴趣。光学字符识别就是从这个社区诞生的。因此,把模式识别称为70年代,80年代和90年代初的“智能”信号处理是合适的。决策树、启发式和二次判别分析等全部诞生于这个时代。而且,在这个时代,模式识别也成为了计算机科学领域的小伙伴搞的东西,而不是电子工程。从这个时代诞生的模式识别领域最著名的书之一是由Duda & Hart执笔的“模式识别(Pattern Classification)”。对基础的研究者来说,仍然是一本不错的入门教材。不过对于里面的一些词汇就不要太纠结了,因为这本书已经有一定的年代了,词汇会有点过时。

图2 一个字符“3”的图像被划分为16个子块。
自定义规则、自定义决策,以及自定义“智能”程序在这个任务上,曾经都风靡一时(更多信息,可以查看这个 OCR网页)
小测试:计算机视觉领域最著名的会议叫CVPR,这个PR就是模式识别。你能猜出第一届CVPR会议是哪年召开的吗?
2. 机器学习:从样本中学习的智能程序
在90年代初,人们开始意识到一种可以更有效地构建模式识别算法的方法,那就是用数据(可以通过廉价劳动力采集获得)去替换专家(具有很多图像方面知识的人)。因此,我们搜集大量的人脸和非人脸图像,再选择一个算法,然后冲着咖啡、晒着太阳,等着计算机完成对这些图像的学习。这就是机器学习的思想。“机器学习”强调的是,在给计算机程序(或者机器)输入一些数据后,它必须做一些事情,那就是学习这些数据,而这个学习的步骤是明确的。相信我,就算计算机完成学习要耗上一天的时间,也会比你邀请你的研究伙伴来到你家然后专门手工得为这个任务设计一些分类规则要好。

图3 典型的机器学习流程(图来源于 Natalia Konstantinova博士的博客)。
在21世纪中期,机器学习成为了计算机科学领域一个重要的研究课题,计算机科学家们开始将这些想法应用到更大范围的问题上,不再限于识别字符、识别猫和狗或者识别图像中的某个目标等等这些问题。研究人员开始将机器学习应用到机器人(强化学习,操控,行动规划,抓取)、基因数据的分析和金融市场的预测中。另外,机器学习与图论的联姻也成就了一个新的课题---图模型。每一个机器人专家都“无奈地”成为了机器学习专家,同时,机器学习也迅速成为了众人渴望的必备技能之一。然而,“机器学习”这个概念对底层算法只字未提。我们已经看到凸优化、核方法、支持向量机和Boosting算法等都有各自辉煌的时期。再加上一些人工设计的特征,那在机器学习领域,我们就有了很多的方法,很多不同的思想流派,然而,对于一个新人来说,对特征和算法的选择依然一头雾水,没有清晰的指导原则。但,值得庆幸的是,这一切即将改变……
延伸阅读:要了解更多关于计算机视觉特征的知识,可以看看原作者之前的博客文章:“ 从特征描述子到深度学习:计算机视觉的20年”。
3. 深度学习:一统江湖的架构
快进到今天,我们看到的是一个夺人眼球的技术---深度学习。而在深度学习的模型中,受宠爱最多的就是被用在大规模图像识别任务中的卷积神经网络(Convolutional Neural Nets,CNN),简称ConvNets。

图4 ConvNet框架(图来源于 Torch的教程)
深度学习强调的是你使用的模型(例如深度卷积多层神经网络),模型中的参数通过从数据中学习获得。然而,深度学习也带来了一些其他需要考虑的问题。因为你面对的是一个高维的模型(即庞大的网络),所以你需要大量的数据(大数据)和强大的运算能力(图形处理器,GPU)才能优化这个模型。卷积被广泛用于深度学习(尤其是计算机视觉应用中),而且它的架构往往都是非浅层的。
如果你要学习Deep Learning,那就得先复习下一些线性代数的基本知识,当然了,也得有编程基础。我强烈推荐Andrej Karpathy的博文:“ 神经网络的黑客指南”。另外,作为学习的开端,可以选择一个不用卷积操作的应用问题,然后自己实现基于CPU的反向传播算法。
对于深度学习,还存在很多没有解决的问题。既没有完整的关于深度学习有效性的理论,也没有任何一本能超越机器学习实战经验的指南或者书。另外,深度学习不是万能的,它有足够的理由能日益流行,但始终无法接管整个世界。不过,只要你不断增加你的机器学习技能,你的饭碗无忧。但也不要对深度框架过于崇拜,不要害怕对这些框架进行裁剪和调整,以得到和你的学习算法能协同工作的软件框架。未来的Linux内核也许会在Caffe(一个非常流行的深度学习框架)上运行,然而,伟大的产品总是需要伟大的愿景、领域的专业知识、市场的开发,和最重要的:人类的创造力。
其他相关术语
1)大数据(Big-data):大数据是个丰富的概念,例如包含大量数据的存储,数据中隐含信息的挖掘等。对企业经营来说,大数据往往可以给出一些决策的建议。对机器学习算法而言,它与大数据的结合在早几年已经出现。研究人员甚至任何一个日常开发人员都可以接触到云计算、GPU、DevOps和PaaS等等这些服务。
2)人工智能(Artificial Intelligence):人工智能应该是一个最老的术语了,同时也是最含糊的。它在过去50年里经历了几度兴衰。当你遇到一个说自己是做人工智能的人,你可以有两种选择:要么摆个嘲笑的表情,要么抽出一张纸,记录下他所说的一切。
延伸阅读:原作者2011的博客:“ 计算机视觉当属人工智能”。
结论
关于机器学习的讨论在此停留(不要单纯的认为它是深度学习、机器学习或者模式识别中的一个,这三者只是强调的东西有所不同),然而,研究会继续,探索会继续。我们会继续构建更智能的软件,我们的算法也将继续学习,但我们只会开始探索那些能真正一统江湖的框架。
如果你也对深度学习的实时视觉应用感兴趣,特别是那些适合机器人和家居智能化的应用,欢迎来我们的网站 vision.ai交流。希望未来,我能说的再多一点……
作者简介:Tomasz Malisiewicz,CMU的博士,MIT的博士后,vision.ai的联合创始人。关注计算机视觉,在这个领域也做了大量的工作。另外,他的博客也富含信息量和价值,感兴趣的可以浏览他个人主页和博客。
原文链接: Deep Learning vs Machine Learning vs Pattern Recognition(译者/邹晓艺,CSDN 博客专家,关注机器学习、计算机视觉、人机交互和人工智能等领域 责编/钱曙光)
深度学习 vs 机器学习 vs 模式识别的更多相关文章
- 整理:深度学习 vs 机器学习 vs 模式识别
		http://www.csdn.net/article/2015-03-24/2824301 近200篇机器学习&深度学习资料分享(含各种文档,视频,源码等) http://developer ... 
- 深度学习vs机器学习 | 这些本质区别你知道多少?
		目录: 数据相关性 硬件依赖性 特征工程 解决问题方法 执行时间 可解释性 一.数据相关性 深度学习与传统机器学习最重要的区别是,随着数据量的增加,其性能也随之提高.当数据很小的时候,深度学习算法并不 ... 
- 深度学习,机器学习神器,白嫖免费GPU
		深度学习,机器学习神器,白嫖免费GPU! 最近在学习计算机视觉,自己的小本本没有那么高的算力,层级尝试过Google的Colab,以及移动云的GPU算力,都不算理想.如果数据集比较小,可以试试Cola ... 
- 深度学习VS机器学习——到底什么区别
		转自:https://baijiahao.baidu.com/s?id=1595509949786067084&wfr=spider&for=pc 最近在听深度学习的课,老师提了一个基 ... 
- 吴裕雄--天生自然python Google深度学习框架:人工智能、深度学习与机器学习相互关系介绍
- 深度学习 vs. 概率图模型 vs. 逻辑学
		深度学习 vs. 概率图模型 vs. 逻辑学 摘要:本文回顾过去50年人工智能(AI)领域形成的三大范式:逻辑学.概率方法和深度学习.文章按时间顺序展开,先回顾逻辑学和概率图方法,然后就人工智能和机器 ... 
- 机器学习如何选择模型 & 机器学习与数据挖掘区别 & 深度学习科普
		今天看到这篇文章里面提到如何选择模型,觉得非常好,单独写在这里. 更多的机器学习实战可以看这篇文章:http://www.cnblogs.com/charlesblc/p/6159187.html 另 ... 
- 机器学习(Machine Learning)&深度学习(Deep Learning)资料【转】
		转自:机器学习(Machine Learning)&深度学习(Deep Learning)资料 <Brief History of Machine Learning> 介绍:这是一 ... 
- 机器学习&深度学习经典资料汇总,data.gov.uk大量公开数据
		<Brief History of Machine Learning> 介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感知机.神经网络.决策树.SVM.Adaboost到随机森林.D ... 
随机推荐
- C#中String 和string 的区别
			C#中同时存在String与string MSDN中对string的说明: string is an alias for String in the .NET Framework.string是Str ... 
- Arcgis for Javascript API下类似于百度搜索A、B、C、D marker的实现方式
			原文:Arcgis for Javascript API下类似于百度搜索A.B.C.D marker的实现方式 多说无益,首先贴两张图让大家看看具体的效果: 图1.百度地图搜索结果 图2.Arcgis ... 
- Android笔记:Socket客户端收发数据
			client.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" and ... 
- 【C++】函数指针宏定义
			看耗子叔文章学习虚函数表(http://blog.csdn.net/haoel/article/details/1948051)的时候被例子的第一句惊到了 typedef void(*Fun)(voi ... 
- Face The Right Way---hdu3276(开关问题)
			题目链接:http://poj.org/problem?id=3276 题意:n牛头排成一排,每头牛两个状态,向前或向后,为了让所有的牛都向前,现在有一个机器 每次 能控制连续K头牛转换自己的状态,求 ... 
- Swift-11-协议(Protocols)
			协议定义了一个蓝图,规定了用来实现某一特定工作或者功能所必须的方法和属性.类.结构体或者枚举类型都可以遵循协议,并提供具体实现来完成协议定义的方法和功能.任意能满足协议要求的类型被称为遵循confor ... 
- Java Map 按Key排序和按Value排序
			Map排序的方式有很多种,这里记录下自己总结的两种比较常用的方式:按键排序(sort by key), 按值排序(sort by value). 1.按键排序 jdk内置的java.util包下的Tr ... 
- 史上最全的iOS面试题及答案
			迷途的羔羊--专为路痴量身打造的品牌.史上最精准的定位.想迷路都难!闪电更新中...敬请期待,欢迎提意见.下载地址:https://itunes.apple.com/us/app/mi-tu-de-g ... 
- 11月16日《奥威Power-BI基于SQL的存储过程及自定义SQL脚本制作报表》腾讯课堂开课啦
			上周的课程<奥威Power-BI vs微软Power BI>带同学们全面认识了两个Power-BI的使用情况,同学们已经迫不及待想知道这周的学习内容了吧!这周的课程关键词—— ... 
- C# 实例化多线程组
			代码如下 //实例化线程组 Thread[] clientThreads = new Thread[numThread]; ; i < numThread; i++) { clientThrea ... 
