李宏毅 机器学习 2016 秋:1、Learning Map

从本篇开始,记录李宏毅 机器学习 2016 秋 相关课程内容,图片内容均来自课程 PPT,文字内容全部来自于课程视频字幕文字,之所以这样整理的目的是同样的内容看视频需要一个小时,看文章远小于 1 个小时,且视频存储起来,看起来也比较麻烦。至于为什么从 16 年这么古老的年代开始,首先这些课程内容都是一些基础知识,没有过时一说,且最新课程很多内容也都是引用以往课程中相关内容,因此我们从头开始。

一、Learning Map

这是这学期要学习的地图,我们接下来一块一块的看一下这学期都学些什么。

接下来首先要讲的是 Regression。Regression 是什么意思呢?ML 要做的事情就是要找一个 Function,Regression 的意思就是说,我们要找的这个 Funciton,它的 output 是数值,举个例子来说,假设我们现在要做天气预报,比如要让机器自动预测明天早上的 PM2.5 是多少,你要做的事情就是要找一个 function,它的 output 是明天上午的 PM2.5,是一个 scalar,是个数值,它的 input 可能是今天上午的 PM2.5,昨天上午的 PM2.5 …,那要找这样的 Function 应该怎么做呢?

我们需要有一些 Training Data,告诉机器这个 Function 的 Input、Output 应该长什么样子,比如说呢,你需要有 training data 告诉机器如上图所示中的数据,机器就应该知道,Input 是 (63, 65),Output 就应该是 100,Input 是 (30, 25),输出就应该是 20。

另一个任务是 Classification。Classification 可以分为两种,如果是 Binary Classification,意味着我们要找的 Function 的 Output 是二元的,即 Yes or No,更复杂的 task 是 Multi-class Classification,其 Output 是假设我们有 N 个类别,机器的 Output 是从这 N 个类别中选择一个,这是个选择题,机器要从这 N 个选项中选择一个出来,我们下面各举一个例子:

假设我们现在要做 Spam filtering,我们要找一个 Function,它的 Input 是一封邮件,它的 Output 是二元的,告诉我们说这封邮件是垃圾邮件还是非垃圾邮件,这边需要的 Training Data 就需要标注一些邮件是否是垃圾邮件。

接下来再举一个 Multi-class Classification 的例子,我们知道现在网路上有非常非常多的新闻,假设你想做一个自动的新闻分类器,就需要找一个 Function,它的输入就是一篇新闻中的文字,它的 Output 就是属于哪几个类别中的一个,政治新闻还是经济新闻还是体育新闻,Training Data 就告诉机器某一篇新闻是体育类,某一篇是政治类,某一篇是财经类就可以了。

我们会花较多的时间在 Classification 的部分,我们会先从 Linear Model 开始看起,ML 的三个步骤:第一个步骤是你要决定你的 Function Set,也就是决定你的 Model,你可以挑选 Linear Model,但是它能做的事情是比较有限的,如果你要完成更复杂的 task,你可能需要一个 Non-linear Model,举例来说,现在大家都知道的 DL 就是一个 Non-linear Model,很多比较复杂的问题一定要用到 Non-Linear Model 才能解决这个问题。

举例来说,影像分类是一个很复杂的问题,我们要做的事情是给机器看一张图片,比如图片里有一只猫,机器要回答你这张图片中的东西是什么,这是一个多分类问题,是个选择题,但是它的选项非常多,你可以说把所有可能的物件都当做是一个选项,比如现在做的影像分类,它的选项至少有 1K 个才能涵盖生活中常见到的物件,比如猫、狗、猴子等等。你要训练这样的机器,告诉它这样图片时猴子,那个是猫,那个是狗就行了。但是比较不一样的地方是说你这个 Function 必须要很复杂,你可以想象从一张图片的像素对应到它是属于哪一种物件,中间对应的关系是非常非常复杂的,所以需要用到非常复杂的 Function 才能完成这件事情,在这个地方我们就需要用到 DL 中的一种,叫做 Convolutional Neural Network(CNN)来处理这个问题,我们再举另外一个需要用到 DL 的例子。

这个例子是下围棋,大家都知道 Alpha Go 的厉害,怎么让机器下围棋呢?其实你也只是找一个 Function,这个 Function 的 Input 就是围棋的棋盘,它上面黑白子的位置,它的 Output 就是下一步应该下在哪里,这其实也是个多分类的问题,是个选择题,选项数有 1 9 2 = 361 19^2=361 192=361 种,要怎么训练这样的机器呢,你需要怎么教它呢?你需要的 Training Data 就是准备一大堆的棋谱,告诉它黑子下在哪里,白子就下在哪里等。

Non-linear Model 除了 DL,还有很多其他的如 SVM、决策树等,后面的课程会介绍,到目前为止我们讲的都是监督学习,所谓的监督学习是说,在我们的训练数据里面,我们是有 Input/Output pair,也就是说,机器看到什么样的 Input,应该要有什么样的 Output,这个 Function 的 output,我们又叫做 label。除了监督学习外,我们还有其他类型的任务,比如说 Semi-supervised Learning,

半监督学习是什么意思呢,比如说,我们要做一个辨识猫和狗的系统,你需要的训练数据是,告诉机器这是猫,这是狗,但同时你手上可能还有一大堆猫跟狗的图片,这些图片是没有 label 的,也就是只有这个 Function 的 Input,没有相应的 Output 该是什么。(有少量带标注的数据,同时有大量未标注的数据)

另外一个想法是做 Transfer Learning,所谓的迁移学习是说一样要做辨识猫跟狗的系统,但是除了猫跟狗的 data 以外,还有一大堆其他的 data,这些 data 可能是有 label 的,也可能是没有 label 的,但是它们跟我们现在要做的猫狗辨识是没有关系的,这些没有关系的 data 要怎么来帮助我们现在的 task,这就是迁移学习要做的事情。

接下来更进阶的是 Unsupervised Learning,无监督学习是要做什么呢?我们举一个例子,

假设我们要让机器学会阅读,我们知道网络上有非常非常多的文章,没有人有精力能告诉机器文章中每一个字每一句话是什么意思,我们希望机器能自己爬取很多文章然后把这些文章看懂以后,它就学会了人类的语言,它就知道了每一个词汇的意思,这就是一个无监督学习的例子

我们知道在做 ML 的时候,就是找一个 Function,比如说在这个无监督学习任务中,让机器学会阅读的这个 task 中,我们要找的 Function 是给机器看一个词汇,比如 Apple,它的输出应该是告诉我们 Apple 的含义应该是什么,它的语义是什么,这个语义在图中先用一个向量表示,在这个任务中我们没有 Function 的 Input/Output,我们只有 Input 或 Output 的其中一种,比如在这个 task 中,我们让机器阅读大量的文章,机器看到了很多人类的词汇,所以它有 Function 的 Input,但它没有的东西是 Function 的 Output,没有人能告诉机器说,看到某个词汇的时候,它的语义是什么。

另外一个例子是让机器学会画图

在这个 task 中,我们只有 Function 的 Output,没有 Input。

我们还会讲到 Structured Learning,那什么是结构学习呢,对于分类和回归问题大家应该都很熟悉,但是很多东西可能还是不会的,举例来说,如果有一个 Beyond Classification 问题,如果我们要让机器做的不是选择题,是比选择题更困难的问题,那到底应该怎么处理?

这种问题非常非常多,比如语音辨识,要找的 Function 是输入一段语音信号,Output 就是这段语音信号的文本内容,你当然可以说把全世界所有语言的句子当成一个类别,但是这样类别可能太多了,你没有办法穷举所有可能的句子,所以这不是一个分类的问题,没有办法把它当做一个分类问题来做,那结构学习要处理的问题就是假设是超越分类的问题,那我们到底要怎么处理,其实有一套完整的框架处理这个问题。再举一个例子,比如做机器翻译,中翻英的话,其输入是中文,输出就是对应的英文;再比如人脸辨识问题,人脸有很多,框框的位置也有很多可能。

最后会 cover Reinforcement Learning,最知名的应用就是 Alpha Go,那这个 task 跟前面讲到的监督学习任务有什么区别呢?

在监督学习中我们会给 Function 的 Input 和 Output,比如我们做对话系统,告诉机器现在输入是 “hello”,那你就输出 “hi”,如果输入 “Bye bye”,你就输出“Good bye”,告诉机器看到什么样的 Input,应该要有什么样的 Output。但是在强化学习中,机器没有 Function 的 Input 和 Output,在强化学习的 Learning 中,你就让机器去跟某个人讲话,最后人就愤怒了,就代表机器在之前的某些对话中犯了错,机器唯一知道的事情就是它做的好或者不好,除此之外没有更进一步的信息,所以在监督学习中,机器的每一个输入都有人告诉它应该输出什么,就像有个老师在手把手的教机器学习,每一个问题老师都告诉它标准答案,所有监督学习是 “Learning from teacher”,但是强化学习更接近我们日常生活中的学习,并没有老师跟在身边手把手告诉标准答案是什么,只有它做了一个行为以后,有某些方法告诉它做的好或者不好,机器要自己学习知道做得好是哪里好,做的不好是哪里不好,需要怎么修正,它必须要自己想办法去处理这个问题,所以说强化学习是 “Learning from critics(评论)”。

我们再举一个例子,比如说下围棋

我们刚才讲到,用监督学习的方式下围棋,那就是给机器看一张棋谱,就是说看到这样一个棋面,你就下在 “5-5”,另一个棋面,你就下在 “3-3”。如果是强化学习的话,机器的学习方式就是没有棋谱给他看,从第一步开始,下下下,最后赢了,它就知道这一盘它可能下的好,如果输了那就知道是下的不好,但是没有告诉说哪一步下的好,即使是赢了中间有一些可能仍然是下的不好的地方,即使输了中间可能有一些还是下的不错的地方。但是没有人告诉机器这些事情,机器必须自己想办法把这些事情学出来。如果你有看 Alpha Go 的 paper 的话,有可能知道 Alpha Go 是监督学习 + 强化学习的,先看棋谱学,搜集到的棋谱是有限的,稍微学一点 label 后用强化学习去学的更好。

这就是这个学习要学习的内容,图中非常重要的一点是各个框框的颜色,其中蓝色的是 scenario (场景),就是说你现在有什么样的 training data,橘黄色的是 task,即要找的 Function 的 Output 是什么,比如,Regression 的输出是一个数值,Classification 的输出是几个类别标签中的一个,在 Structured Learning 中,其 Output 是无法穷举的某个东西,同理可以在半监督学习、迁移学习、无监督学习、强化学习中也做这些 task,右上角四个框看起来很小,但是这些 task 都可以塞到里面去,绿色的部分是方法,或者是所谓的模型。同理在不同的 task 中也都可以有 Linear 和 Non-linear 等不同的方法。

课程链接: https://speech.ee.ntu.edu.tw/~hylee/ml/2016-fall.html

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值