代码改变世界

Stanford公开课Machine learning第一课

2012-10-27 16:45  Aga.J  阅读(1490)  评论(0编辑  收藏  举报

  什么是机器学习,看维基百科的定义:Machine learning, a branch of artificial intelligence, is a scientific discipline concerned with the design and development of algorithms that take as input empirical data, such as that from sensors or databases, and yield patterns or predictions thought to be features of the underlying mechanism that generated the data。不管在工业界中,机器学习不仅应用在计算机领域,它可以有效的应用到其他学科去完成一些任务,比如生物学科基因工程研究,金融统计等等。

  我们知道,通过编写程序,我们可能让计算机做一些事情,比如打入拼音时,输入法会显示对应的中文,word会将这个中文写到word文档中,但是如果考虑通过编成来实现手写字体的识别,或者水果的识别等等,那将是一件相对困难的事,但是如果用机器学习的方法,让机器预先学习一些例子,等机器掌握了一定知识后便可以做这些识别工作了。再举一个例子是关于数据挖掘的,你在amazon上留下了大量的浏览和点击购买记录,amazon便利用这些数据通过机器学习的方法从数据中挖掘出知识,掌握你的个人喜欢最终给你推荐相关商品。

l  课程Part One

 

n  Supervised Learning 有监督学习

  机器学习按照学习方式的不同,分为supervised learningunsupervised learning,这里先介绍Supervised Learning即有监督学习,举一个简单的例子,假设你想卖房子,但是你不知道怎么定价,而你有附近其他房子的定价信息:

平方数

价格

50

 

100w

 

53

 

106w

 

58

 

120w

 

70

 

138w

 

75

 

160w

 

100

 

200w

 

  x轴为平方数,y轴为价格,我们得到下面这个图,在图中我们看到价格数和平方数好像可以用一条直线拟合,那么得到这条直线方程后我便可以根据我的房子的评分数来让机器给我一个合适的价格数。

 

image

  嗯,这其实就是一个有监督学习,所谓有监督学习简单来说就是我们提供了数据集,提供了问题的输入和问题的确切输出结果,然后利用样本数据“监督”机器来学习输入和输出之间的关系(在上面的例子中,这个关系好像是一条直线方程)。

  实际上上面介绍的问题属于机器学习中一类回归问题(可以理解为图中点的规约到直线上的问题),还有另一类称为分类问题,实际上从名称我们就可以知道它也是一种有监督学习,因为分类是需要我们明确结果类别有哪些,比如把一个水果分为香蕉,梨,苹果,这是一个三分类问题。假设我们做一个这样的二分类问题,一个水果是属于香蕉还是苹果,我们很自然的可以选择长度作为特征输入,于是就得到这样的结果

长度cm

 

结果

10

 

香蕉

5

 

苹果

6

 

香蕉

6

 

苹果

8

 

香蕉

3

 

苹果

  但是实际上仅仅依赖长度是不足以完全正确的区分两类水果,所以我们可以引入更多特征,比如颜色,那么就变成这样

长度cm

 

颜色

结果

10

 

黄色50

 

香蕉

5

 

红色100

 

苹果

6

 

黄色50

 

香蕉

6

 

红色100

 

苹果

8

 

黄色50

 

香蕉

3

 

淡黄40

 

苹果

我们在坐标图中将长度和颜色分布作为x轴和y轴,然后可以看到分类结果还是比较容易识别的。

image

 

这里有个问题,通常情况下我们需要更多特征才能更加准确的来学习和判断一个事物,但是如果是更多特征,那就需要用更多维度来表,那如果在无限维度上表示一个点?如果将这个无限维度映射到计算机内存中?SVM 支撑向量机便是这样一个神器,后面会介绍Support Vector Machine

 

Unsupervised Learning 无监督学习

和有监督学习相对的是无监督学习,所谓无监督学习,简单的理解就是我给你一堆数据一堆特征,你给我产出一些有意义的东西,从数据里面找到一些结构。最简单的例子就是将人进行人群的划分,我们无法给出人群类别的准确定义,但是我们可以利用无监督学习帮我们找到这样一个又一个的人群(可能你周围几个人就是一个小群体),这就是所谓的聚类分析。在这个部分,课程通过图片内像素点的聚类结果来展现无监督学习的效果和应用,同时一个声音识别也是通过无监督学习来实现(为什么是无监督学习?你可以思考下。)

 

Reinforcement Learning 强化学习

强化学习挺起来很高级,但是在我们日常生活中也会有这样的学习存在,那就是狗的训练,当你训练狗去完成一件事情时,你让他做这样一件事,如果他做得好做对了,你会给他东西吃表示赞同,如果他做不好或做错了,你会给他相应的惩罚,那么狗在这个过程中就会学习到怎样才能得到你的赞同,那么他便会在以后很好的完成任务来得到你的奖励。在计算机领域中机器人便是一个强化学习的应用之一,如何训练机器人很好的躲避障碍等等。

 

Learning theory 理论基础

说了那么多机器学习的例子,实际上机器学习是有其深厚的理论和数学基础的,为什么在某个学习任务上应用某个算法是有效的,为什么这个算法是有效的,在数学上如何证明这样一个结构,需要多少样本训练,等等这些都是机器学习所需要的数学及统计理论基础。

 

下节课将会介绍SGD,随机梯度下降,并介绍其数据理论。

 

l  课外

n  半监督学习

在这节课中,我们初步了解了机器学习是什么,能干什么,同时也学习到机器学习的两类学习问题:supervised learning unsupervised learning,实际上还有一种称为半监督学习(即semi-supervised learning),实际上它是监督学习和无监督学习相结合的一种新学习方法,它主要考虑如何利用少量的有标注样本(监督)和大量的未标注样本(无监督)来完成分类或回归问题。因为如果只有少量的有标注数据来做supervised learning,那么机器学习出来的模型肯定是有偏的或者模型的泛化能力不好(在有限的知识下我们人类也无法很好的对未知的事物做出准确的判断),同时这也是在做机器学习中需要注意的一点,即样本的质量问题,样本的质量包括样本大小,样本标注质量,样本分布等等。

在现实环境中,有标注数据往往是少量并难以获得,而未标注的数据则是大量并难以利用的,所以如何利用大量的未标记示例来改善学习性能已成为当前机器学习研究中最受关注的问题之一,半监督学习就是其中一种方法(还有直推学习和主动学习,这里暂时不深究)。半监督学习实际上对所有数据(标注和未标注)的分布情况做了一些假设,假设数据间存在的一定的结构,这些结构让未标注的数据能合并到已标注数据的标注结果中,主要包括下面两种假设:

1smoothness assumption

 

Points which are close to each other are more likely to share a label

 

       2Cluster assumption

 

       The data tend to form discrete clustersand points in the same cluster are more likely to share a label

 

       更多半监督学习的内容会在以后的文章中详细介绍。

 

n  监督学习和无监督学习

那么什么时候该应用监督学习,什么时候该使用无监督学习呢?从这两个概念的定义出发,我们很轻松的可以知道,当样本或者数据有明确输入和明确输出结果时,我们可以使用监督学习,监督学习最常见的包括回归问题和分类问题,而无监督学习则常见为聚类问题。但是现实中很多情况下需要我们去构造样本,可以通过人工标注的方法,明确数据的输出,再将问题作为监督学习来解决,也可以先利用无监督学习,对数据做预处理后再结合人工标注等方法最终进行有监督学习。但是说起来容易,实际上不管在做监督学习或无监督学习,很多机器学习方面的技巧或者细节都可能对结果有巨大影响,比如当你选用的样本有偏或者样本分布不均或者样本数据并不是独立同分布时,那么这时候使用有监督学习得到的模型就会产生较大误差

 

n  机器学习

机器学习听起来似乎十分简单,将待解决的问题确定为某一类问题后,就可以选用模型来训练样本数据,得到预测模型后便可以应用到实际数据中。但是没有深厚的数学基础以及对各种模型的理解,还有丰富的机器学习经验,是无法做好一个机器学习的任务的。

1)这个问题是机器学习中的哪类问题

2)这个问题可以转化为机器学习中的其他类问题吗

3)这个问题既然是机器学习中的A类问题,那么选择什么样的模型来解决这个问题呢

4)为什么选择这个模型而不是选择那个模型?是因为样本问题?因为模型泛化能力问题?因为??

5)这个模型的本质数学理论是如何?是否合适这个问题?

6)这个训练结果为什么会这样?是模型问题?是样本问题?

7)做训练前,你考虑过样本问题吗?

8)做训练时,你的特征时如何选取的?

9)完成训练后,你如何评估你的结果?

10)等等