基本概念

提起深度学习,与之相关的机器学习、模式识别、数据挖掘等名词不禁扑面而来。但是究竟它们之间,是怎样的关系呢?

机器学习

我从网络上收集了一些关于机器学习等名词的观点,列出如下:

  • 人工智能:系列名词中最大的概念,是指人工制造出来的系统所表现出来的智能,目前被拆分成许多较为独立的分支领域,如推理演绎、学习、知觉等;
  • 机器学习:人工智能中目前最受欢迎的一个分支,主要研究计算机怎样模拟或实现人类的学习行为;
  • 数据挖掘:由数据分析技术(机器学习)和数据管理技术(数据库)两大支柱组成,在大部分场合可以与“知识发现”相互替代1
  • 模式识别:对于人来说,是指从原始输入数据并根据其类别采取相应行为的能力2;而工程领域中,模式识别研究的是如何识别模式(判断或发现),与出自计算机科学的“机器学习”差别不大。前者强调应用,而后者更偏向于理论。

我不太满意以上这些不能触及本质的观点,而要更加深入地认识这些名词,必须要先理解两个更基本的概念:知识和模式。

知识与模式

“模式”一词,在百度百科中的解释是“解决某一类问题的方法论”3。这个定义虽在特定语境下有一定道理,但为了与“知识”相区分,我认为这个定义远不如现代汉语词典上的定义简洁而准确:事物的标准样式。所谓模式,正是人认识世界,对世界抽象的方式。人甫一开智,便发现事物与事物的不同。那么怎样来区分和归类事物?唯有定义“标准样式”来进行比对。

提到模式,就不得不说一说“概念”。从上文中模式的定义可以发现,概念与模式是一一对应的。模式作为事物的标准样式,是判断事物是否属于一类的标准,而概念则是这一类事物的名称。“事物——模式——概念”这一条映射,是人建立起智慧的基石。后面会有更有趣的例子说明这一点。

“知识”一词的定义,在很多地方都是“人类的认识成果”或者“人类在漫长劳动中总结出的经验和成果”等等不痛不痒的话,互动百科中的解释则颇合我意:知识就是概念之间的连结4。乍一听似乎很抽象,容我举几个“栗子”:

  • 刚刚能够区分我和非我,开始认识世界,在咿咿呀呀学语的孩子,在没有复杂知识的情况下(已经认识基本几何体,比如圆),是如何认识汽车的呢?母亲会教他,那圆的一转一转的/一动一动的是轮子,有四个轮子在马路上跑的是车子。孩子虽然一开始不能完全理解所有信息,但下次坐公交车时,必定能指着外面的汽车喊“车 车”。因为他能够学习到,“轮子”和“车子”两个概念及对应的模式,和“一个汽车有四个轮子”这一条知识。
    • 模式是人为定义的结果,没有对错,只不过问题是你的定义是否为大多数人所认同;
    • 知识是客观观察的结果,可能存在对和错,例如有一些车子就是三轮的,比如三轮车…
  • 计算机编程在早期还是一门极其需要智力与经验的技术,因为语言的能力还很弱,新手面对很多问题往往无从下手,而阅读老鸟们缺乏注释的代码又非常痛苦。直到《设计模式》一书的出版,(普通水平,能够满足大部分需求的)程序员从此成为了易于批量生产的“廉价产品”。老鸟们买来翻翻看,不禁感慨“什么啊,这些我都会啊”。但正是这些早就存在的专用于解决特定问题的“知识”本身,没有被抽象为“模式”;或者是在某些大牛的大脑里已经形成了“模式”,但还没有名字,成为“概念”,以便交流。因此《设计模式》一书作者的最大贡献,不是发现了这些模式,而是将这些已有知识总结成了模式,并赋予特定的容易理解的名字,像Singleton, Factory这样。
    • 知识虽然是概念之间的连接,但作为一个抽象的事物,仍可以被抽象为模式,即知识和模式其实可以互相转化;
    • 概念很重要,虽然人和人交流的目的常常是传递一个知识或者统一一种模式,但唯有借助概念才可能有效达成。概念越特定专一,比如专业术语,交流越有效率(信息的概率定义);
    • 知识本身是反人类的,概念才容易为人所牢记。回想我们背历史时,相比“某年某月某日,哪哪谁谁做了什么”,“XX事件”总是更容易记住;
    • 最后忍不住提一句偶像Matz的话,随着计算机语言的进化,设计模式将慢慢的被融入语言的设计中,不用再在实现上费工夫。即以后运用设计模式时,只需重载一种类或是调用某种方法,而用不着自己写一大段代码。
  • 再专门举一个最近从《写给大家看的设计书》中收获的关于概念的例子——约书亚树的故事:
    • 概念真的很重要,是人认识世界的桥梁:世界——事物——模式——概念——人;</li>
    • 这个例子从另一个角度解释了,为什么大家对模式识别这么关心:因为一旦给一个我们所不熟悉的事物,确定了模式,给定了概念,起了名字,我们人类就可以将它“玩弄于鼓掌之间”。</li>

总结一下,模式和知识是人类抽象世界的两大利器,两者有区别又可相互转化。利用这两个概念,在此我对上一小节的问题重新给出一个回答:

  • 机器学习,研究如何让机器具备人的学习能力,抽象得到模式,观察总结知识;
  • 模式识别,基于数据从中发现或者判断模式,前者对应非监督学习问题,后者则是监督学习问题。
  • 数据挖掘,挖掘数据中隐藏的还未被人所观测到的知识。之所以没被观测到,有两个原因:
    • 这一知识的水平较高,超出该时代下人的认知水平。比如重商主义的管仲早在战国时期就运用市场经济和国家调控相结合的“中国特色制度”来治理齐国,终成“春秋五霸”之一。而其后数千年,管仲金子般的思想却没入尘埃。客观的说,有意识形态上被儒家扼杀的原因。可反观其后另一个重农主义的极端——商鞅,虽在后世被文士们所唾弃,但连毛主席都评价道“百代都行秦政法”。何也?只怪“管仲治国的方法”这一知识,水平太高,超出了时代,早过西方经济学家们千有余年。不过,连人都不能观测到的知识,就目前的机器学习水平而言,被机器观测到的可能性并不高,因此第二个原因才是主因;
    • 观测知识的成本太高。在大数据时代,我们根据交易记录人工地判断一个人的喜好并不困难;但是要判断成万上亿的个体,如果让人去做,淘宝早倒闭了。再比如在我所研究的生物信息学中,许多数据库实质上是很多经过专业培训的人通过阅读一篇篇文献,手工记录形成的;如果数据挖掘技术能够得到质的提升,将假阳性降低到能与人工相媲美,那又将是怎样一番情景!(生物相关领域的数据量很大,而数据库作为基础信息,如果假阳性很高,后续研究的成果基本上就没意义了)

模式识别

如果您有一些先验信息,不难推测深度学习属于模式识别领域,毕竟它模拟的是最擅长总结模式的大脑。

传统方法

传统的模式识别我们通常认为有四大步骤:

  • 数据获取:如拍摄图像、视频,录制音频;
  • 特征提取:原始数据的维度常常很高,比如几千万维度的图片。很多优秀的算法在超高维数据上的效果不好,这时需要依靠人工来进行特征选择和提取,比如做个小波变换啊什么的;
  • 分类器设计:有了提取后的特征,根据特征的特点和识别的目的,挑选合适的分类器。如果不知道用什么好,直接扔给SVM试试?
  • 系统实现:在验证集上证明了效果良好之后,基本上就确定下整个流程。将前三个步骤的工作整理结合一下,比较乱的代码藏得深一点,就称我们实现了一个某某系统。

深度学习

传统模式识别方法听上去轻松加愉快,但是其实难度隐藏在“特征提取”上,正所谓“特征如此多娇,引得无数英雄尽折腰”。图像、音频、文本这三大领域上的模式识别问题一直是研究的热点,多年来费劲了无数的聪明才智,提出了那么几个牛逼的特征。可是深度学习才一登场,就一不小心“state-of-the-art”,让人不禁眼红加疑惑,到底什么是深度学习?

别着急,深度学习是整个系列日志的重点呢。不过它的核心思想其实一句话就能够解释,回想前文所提到的人类的学习过程,有很费劲地进行特征提取吗?深度学习的实质就是模拟人的大脑的思维活动,自发地进行特征提取。

深度学习的模型有很多,其中有些只相当于传统模式识别中的特征提取部分,还有一些则代替了分类器设计。

参考资料

  1. 周志华. 机器学习与数据挖掘. 中国计算机学会通讯, 2007, 3(12): 35-44.
  2. Duda, Richard O., Peter E. Hart, and David G. Stork. Pattern classification. John Wiley & Sons, 2012.
  3. 百度百科,“模式”词条.
  4. 互动百科,“知识”词条.