机器学习、深度学习和结构化学习
一. 机器学习的定义
为什么需要机器学习?
传统的编程大多数情况下只能让计算机解决人推理好的问题,但对于一些复杂的、人无法完全解决的问题,我们就无法显式编程,无法让计算机做运算。
例如语音识别(李宏毅老师自己的研究方向),如果不应用机器学习的方法,那么只能人工去找某个词发音的共同模式,不难发现这种模式非常难用程序(if-else)描述的,在大型语料的情况下简直是无法想象。
机器学习(machine learning)是通过不显式地编程,让计算机自动地学习样本数据中隐含的模式,因此又称为模式识别(pattern recognition)。”学习“就相当于找到一个将输入X映射到输出Y的、抽象意义上的函数f,这种映射蕴含的就是上述的模式。
例如对于语音识别,输入一段语音信号,经过函数f,输出”你好“;对于手写字识别,输入手写体2的图片,经过函数f,输出数字2。
机器学习的框架:
上图给出的是有监督学习的架构。
给定训练数据集(Training Data)X和Y,其中每一对数据 (xi,yi) 分别对应函数f的输入和输出,接下来要做的就是根据训练数据,从模型(Model)的假设函数集合(Hypothesis Function Set)中找到一个“最好”的函数 f∗ 。面对新的测试数据 x′ , f∗(x′) 可以输出最接近我们预期的结果 y′ 。
那么“最好”的定义是什么?如何从无穷大的假设空间中找到这个“最好”的函数 f∗ 呢?这些问题贯穿了整个课程。
机器学习的两大分支
本门课主要围绕机器学习中两大重要的分支——深度学习(Deep Learning)和结构化学习(Structured Learning)。
二. 深度学习的定义
初识深度学习
(外行人对神经网络的看法:模拟人脑的运作方式。实际上只是受到启发而已,并没有实质性地涉及脑神经科学-_-||)
从形象上理解,可以把深度学习当做一种“生产线”。对于机器学习框架中的Model而言,这条生产线使得一系列简单的函数集合 f1、f2...fn 串接成一整个相对复杂的函数,每一个函数都将前一个函数的输出为输入,加工后产生输出给下一个函数。
同时深度学习是一种端到端训练(End-to-end training),生产线每一阶段所做的加工并不是由人去定义好的,人只是给出输入和输出数据,计算机会自动学习出每个阶段应该如何加工。
当前阶段,深度学习(Deep Learning)主要是指基于神经网络(Neural Network)的方法。
神经网络概览
上文所说的受到人脑运作方式的启发,就是在神经元细胞中,树突(们)接收来自其它树突的信号,经过加工处理后,通过轴突传导给其它神经元细胞。
首先来看我们的人工神经网络中,最基本的部件神经元(neuron)的定义。每个神经元都是一个简单的函数,输入是一个N维的向量x,输出是一个标量a。对于输入x中的每一维xi都乘上对应的权重(weight)wi,累加之后再加上一个偏置(bias),得到z,z又经过一个激励函数σ(Activation Function),得到的输出a = σ(z)。其中,最常用的激励函数是sigmoid函数 σ(z)=11+e−z
将多个神经元串接到一起,就形成了一个神经网络。这个神经网络的目标,就是将N维的输入向量映射到M维的输出向量,即 f:RN−>RM 。
如上图所示,我们可以看出神经网络分为三种层次:输入层(Input Layer)、隐藏层(Hidden Layer)、输出层(Output Layer)。其中隐藏层的每一层就相当于“生产线”的每一个阶段。
Layer1中的所有神经元都分别与输入的每一维 x1,x2...xN 建立连接,每根连接线都代表了不同的权重,神经元们各自按照上面的定义操作。该层所有神经元的输出作为下一层的输入,层层递进直到神经网络的最后一层,Layer L的M维输出 y1,y2...yN 就是这个神经网络的输出。“深度”二字由此而来。
深度学习的发展历史
深度学习在历史上经历了浮浮沉沉的过程。
- 1960年代因感知机(perceptron,即单层神经网络)而兴起。
- 1969年有人指出感知机的限制,渐渐不受人关注。
- 1980年代的多层感知机的出现使得深度学习重新流行。直到今天,DNN和彼时的多层感知机都没有本质区别,所以很多人不看好深度学习的原因之一就是没有根本性突破,还是在啃老本。
- 1986年Hinton提出反向传播BP算法,人们开始知道怎么训练多层感知机。可惜的是,当时多于3层的神经网络表现不佳(原因第3课会提)。
- 1989年有人提出一个隐藏层就足以完成任务,因此不必讲究“深度”,导致其沉默了相当长一段时间。
- 2006年Hinton大叔又提出了用RBM(限制玻尔兹曼机)做初始化,实现了当时深度学习的突破。
- 2009年随着硬件性能的提升,开始用GPU做运算
- 2011年深度学习在语音识别领域开始流行,2012年在图像领域取得优异成绩。
- 近年来越来越热门。
Deep vs Shallow
已有的定理:任何一个连续函数 f:RN−>RM ,都可以用只有单个隐藏层的神经网络实现,只要该层的神经元够多。
既然如此,为什么我们要讲究多层的“深度”神经网络,而不是单层的“宽度”神经网络?
如图所示,在手写数字识别的实践中表明,当含有同样多的参数时,3层神经网络的效果要比1层神经网络的准确率高,因此为了得到相同的准确率,深层神经网络所需要训练的参数更少。
后面还提到了类比数字电路中,多层的逻辑门构建相同操作会更轻量级,这里就不再展开了。
总之,要达到相同的性能,深层神经网络所需要的参数更少、训练数据量也更少,因此不要把所有神经元堆在同一层。
三. 结构化学习的定义
在上述的深度学习中,输入和输出都只是向量或者矩阵,而现实中很多时候需要处理输入、输出都是结构化对象(语音、文字序列、图结构、树结构等)的情形。
应用情景:
- 信息检索(Information Retrieval)中,输入关键词“Machine Learning”,返回的输出结果是相关网页的一个列表;
- 机器翻译(Machine Translation)中,输入的一种序列式“Machine Learning and having it deep and structured”,输出的另一种翻译序列是“机器学习及其深层与结构化”;
- 语音识别(Speech Recognition)中,输入一段语音,输出识别的文字。
- 目标检测(Object Detection)中,输入一张图片或一段视频,输出要检测的目标的位置。
四. 本课总结
本门课程主讲机器学习的两大部分——深度学习和结构化学习。需要注意的是,Deep Learning是一种实践方法,而Structured Learning是一种思想,代表了某一类问题,实践上有很多不同的方法。
推荐的深度学习教材
(点击链接就可以进入在线阅读)
《Neural Networks and Deep Learning》written by Michael Nielsen
《Deep Learning》Written by Yoshua Bengio, Ian J. Goodfellow and Aaron Courville
这两本都是深度学习里公认的好教材,后者由张志华老师审校的中文翻译版已经发布。
今后研究生阶段看来是要好好啃一啃了(╯▽╰)。