写在前面
报了一个Datawhale 组队学习活动,我参加的是第31期,打算好好学习以李宏毅老师的机器学习视频,虽然之前也看过一些,但是研究不深,这次想趁着这次活动系统学一下。
参考视频:https://www.bilibili.com/video/av59538266
参考文档笔记:https://github.com/datawhalechina/leeml-notes
机器学习介绍
人工智慧:希望机器可以跟人一样的聪明
机器学习跟人工智慧之间什么关系?
人工智慧是我们想要达成的目标,而机器学习是想要达成目标的手段,希望机器通过学习方式,他跟人一样聪明。而深度学习和机器学习有什么关系呢?深度学习就是机器学习的其中一种方法。
machine learning所做的事情,你可以想成就是在寻找一个function,要让机器具有一个能力,这种能力是根据你提供给他的资料,它去寻找出我们要寻找的function。还有很多关键问题都可以想成是我们就是需要一个function。
机器学习一般步骤:
机器学习相关的技术
监督学习
Regression是一种machine learning的task,当我们说:我们要做regression时的意思是,machine找到的function,它的输出是一个scalar,这个叫做regression。举例来说,在作业一里面,我们会要你做PM2.5的预测(比如说预测明天上午的PM2.5) ,也就是说你要找一个function,这个function的输出是未来某一个时间PM2.5的一个数值,这个是一个regression的问题。
下面看一下Classification的内容。
Regression和Classification的差别就是我们要机器输出的东西的类型是不一样。在Regression中机器输出的是一个数值,在Classification里面机器输出的是类别。假设Classification问题分成两种,一种叫做二分类输出的是是或否(Yes or No);另一类叫做多分类(Multi-class),在Multi-class中是让机器做一个选择题,等于是给他数个选项,每个选项都是一个类别,让他从数个类别里选择正确的类别。
半监督学习
监督学习的问题是我们需要大量的training data。training data告诉我们要找的function的input和output之间的关系。如果我们在监督学习下进行学习,我们需要告诉机器function的input和output是什么。这个output往往没有办法用很自然的方式取得,需要人工的力量把它标注出来,这些function的output叫做label。
那有没有办法减少label需要的量呢?就是半监督学习。
假设你先想让机器鉴别猫狗的不同。你想做一个分类器让它告诉你,图片上是猫还是狗。你有少量的猫和狗的labelled data,但是同时你又有大量的Unlabeled data,但是你没有力气去告诉机器说哪些是猫哪些是狗。在半监督学习的技术中,这些没有label的data,他可能也是对学习有帮助。这个我们之后会讲为什么这些没有label的data对学习会有帮助。
迁移学习
另外一个减少data用量的方向是迁移学习。
迁移学习的意思是:假设我们要做猫和狗的分类问题,我们也一样,只有少量的有label的data。但是我们现在有大量的data,这些大量的data中可能有label也可能没有label。但是他跟我们现在要考虑的问题是没有什么特别的关系的,我们要分辨的是猫和狗的不同,但是这边有一大堆其他动物的图片还是动画图片(凉宫春日,御坂美琴)你有这一大堆不相干的图片,它到底可以带来什么帮助。这个就是迁移学习要讲的问题。
无监督学习
更加进阶的就是无监督学习,我们希望机器可以学到无师自通。
如果在完全没有任何label的情况下,到底机器可以学到什么样的事情。举例来说,如果我们给机器看大量的文章(在去网络上收集站文章很容易,网络上随便爬就可以)让机器看过大量的文章以后,它到底可以学到什么事情。
我们举另外一个无监督学习的例子:假设我们今天带机器去动物园让它看一大堆的动物,它能不能够在看了一大堆动物以后,它就学会自己创造一些动物。那这个都是真实例子。仔细看了大量的动物以后,它就可以自己的画一些狗出来。有眼睛长在身上的狗、还有乳牛狗等等。
监督学习中的结构化学习
在machine要解的任务上我们讲了Regression、classification,还有一类的问题是structured learning。
structured learning 中让机器输出的是要有结构性的,举例来说:在语音辨识里面,机器输入是声音讯号,输出是一个句子。句子是要很多词汇拼凑完成。它是一个有结构性的object。或者是说在机器翻译里面你说一句话,你输入中文希望机器翻成英文,它的输出也是有结构性的。或者你今天要做的是人脸辨识,来给机器看张图片,它会知道说最左边是长门,中间是凉宫春日,右边是宝玖瑠。然后机器要把这些东西标出来,这也是一个structure learning问题。
强化学习
reinforcement learning是什么呢?在reinforcement learning里面,我们没有告诉机器正确的答案是什么,机器所拥有的只有一个分数,就是他做的好还是不好。若我们现在要用reinforcement learning方法来训练一个聊天机器人的话。
机器要在reinforcement learning的情况下学习,机器是非常intelligence的。 reinforcement learning也是比较符合我们人类真正的学习的情景,这是你在学校里面的学习老师会告诉你答案,但在真实社会中没人回告诉你正确答案。你只知道你做得好还是做得不好,如果机器可以做到reinforcement learning,那确实是比较intelligence。
reinforcement learning的意思是:机器跟对手互下,机器会不断的下棋,最后赢了,机器就会知道下的不错,但是究竟是哪里可以使它赢,它其实是不知道的。我们知道Alpha Go其实是用监督学习加上reinforcement learning去学习的。先用棋谱做监督学习,然后在做reinforcement learning,但是reinforcement learning需要一个对手,如果使用人当对手就会很让费时间,所以机器的对手是另外一个机器。
小提示
大家注意一下这个不同的方块,我是用不同的颜色来表示。同样的颜色不同的方块是同一个类型的,这边的蓝色的方块,指的是学习的情景,通常学习的情景是你没有办法控制的。比如,因为我们没有data做监督学习,所以我们才做reinforcement learning。现在因为Alpha Go比较火,所以Alpha Go中用到的reinforcement learning会被认为比较潮。所以说有学生去面试,说明自己是做监督学习的,就会被质疑为什么不做reinforcement learning。那这个时候你就应该和他说,如果我今天可以监督学习,其实就不应该做reinforcement learning。reinforcement learning就是我们没有办法做监督学习的时候,我们才做reinforcement learning。红色的是指你的task,你要解的问题,你要解的这个问题随着你用的方程的不同,有regression、有classification、有structured。所以在不同的情境下,都有可能要解这个task。最后,在这些不同task里面有不同的model,用绿色的方块表示。
为什么要学习机器学习?
训练出好的AI,我们知道要训练出厉害的AI,AI训练师功不可没,所以让我们一起朝AI训练师之路迈进。