第一章、Introduction of Machine Learning(介绍机器学习)
下述所记录的学习笔记内容来源为李宏毅老师的教学视频以及相关的学习资料,仅供个人学习使用。
人工智能(Atrificial Intelligence):为机器赋予人的智能
机器学习(Machine Learning):实现人工智能的方法
深度学习(Deep Learing):机器学习的一种技术
人工智能是我们想要达到的目标,机器学习是我们达到目标的方法和手段,深度学习就是机器学习的其中一种方法。
在机器学习、深度学习之前,人们用什么样的方式来做到人工智慧这件事呢?通过人类设定好的天生本能(hand-crafted rules)。
人们为机器设定一些规则,这些规则我们通常称hand-crafted rules,使用hand-crafted rules有什么样的坏处呢,它的坏处就是:使用hand-crafted rules你没办法考虑到所有的可能性,非常的僵化,使用hand-crafted rules创造出来的机器,永远没有办法超过它的创造者人类。人类想不到东西,就没办法写规则,没有写规则,机器就不知道要怎么办。所以如果一个机器,它只能够按照人类所设定好的hand-crafted rules,它的整个行为都是被规定好的,这个机器就没有办法超越创造他的人类。
WeaKness of hand-crafted rules
Hard to consider all possibilities
Lots of human efforts (not suitable for small industry )
什么是机器学习呢?
我们要做的其实是让机器他有自己学习的能力,也就我们要做的应该Machine Learning的方向。讲的比较拟人化一点,Machine Learning的方向,就是你就写段程序,让机器能够有学习的能力。接下来,你就像教一个小孩一样的教他,并不是写程序让它做到这件事,你是写程序让它具有学习的能力。
Machine Learning ≈ Looking for Function
左边这个部分叫training,就是学习的过程;右边这个部分叫做testing,学好以后你就可以拿它做应用。
机器学习的整个过程分成了三个步骤。
第一个步骤就定义一组函数;
第二个步骤是能判断一个function是好还是不好;
第三个步骤是挑选出最好的function;
学习路径
监督学习(supervised learning)
Regression
Regression是一种machine learning的task,当我们说:我们要做regression时的意思是,machine找到的function,它的输出是一个scalar,这个叫做regression。
Classification(分类)
Regression和Classification的差别就是我们要机器输出的东西的类型是不一样。在Regression中机器输出的是一个数值,在Classification里面机器输出的是类别。假设Classification问题分成两种,一种叫做二分类输出的是是或否(Yes or No);另一类叫做多分类(Multi-class),在Multi-class中是让机器做一个选择题,给他多个选项,每个选项都是一个类别,让他从多个类别里选择正确的类别。
举例来说,二分类可以用来识别垃圾邮件,将其放到垃圾箱。如何实现呢?只需要一个function,输入是一个邮件,输出为邮件是否为垃圾邮件。
你要训练这样的function很简单,给他一大堆的数据并告诉它,现在输入这封邮件,是垃圾邮件,输入这封邮件,它不是垃圾邮件。有足够多的资料去学,它就可以自动找出一个可以识别垃圾邮件的function。
多分类的举一个文章分类的例子,现在网络上有非常非常多的新闻,人没有精力把所有的新闻看完,希望机器自动把新闻做分类。怎么做呢?你需要的是一个function,它的输入是一则新闻,输出是新闻属于哪个类别,你要做的事情就是解这个选择题。
刚才讲的都是要机器去解决的问题,接下来要讲的是解决问题的过程中第一步就是要选择function set,选不同的function set就是选不同的Model。Model有很多种,最简单的就是线性模型,在非线性的模型中最耳熟能详的就是Deep learning。
在做Deep learning时,它的function是特别复杂的,所以它可以做特别复杂的事情。比如它可以做图像识别,这个复杂的function可以描述pixel和class之间的关系。
监督学习的问题是我们需要大量的训练数据(training data)。训练数据告诉我们要找的function的输入和输出之间的关系。如果我们在监督学习下进行学习,我们需要告诉机器function的input和output是什么。这个output往往没有办法用很自然的方式取得,需要人工的力量把它标注出来,这些function的output叫做label。标注数据往往需要大量的人力工作了。
半监督学习(semi-supervised learning)
那有没有办法减少label需要的量呢?就是半监督学习。
假设你先想让机器识别猫狗的不同。你想做一个分类器让它告诉你,图片上是猫还是狗。你有少量的猫和狗的labelled data,但是同时你又有大量的Unlabeled data,但是你没有力气去告诉机器说哪些是猫哪些是狗。在半监督学习的技术中,这些没有label的data,他可能也是对学习有帮助。之后会讲为什么这些没有label的data对学习会有帮助。
迁移学习(transfer learning)
迁移学习的意思是:假设我们要做猫和狗的分类问题,我们也一样,只有少量的有label的data。但是我们现在有大量的data,这些大量的data中可能有label也可能没有label。但是他跟我们现在要考虑的问题是没有什么特别的关系的,我们要分辨的是猫和狗的不同,但是你有这一大堆不相干的图片,它到底可以带来什么帮助。这个就是迁移学习要讲的问题。
无监督学习(unsupervised learning)
更加进阶的就是无监督学习,我们希望机器可以学到无师自通。
如果在完全没有任何label的情况下,到底机器可以学到什么样的事情。举例来说,如果我们给机器看大量的文章(去网络上收集文章很容易,网络上随便爬就可以)让机器看过大量的文章以后,它到底可以学到什么事情。
监督学习中的结构化学习(structured learning)
structured learning 中让机器输出的是要有结构性的,举例来说:在语音辨识里面,机器输入是声音讯号,输出是一个句子。句子是要很多词汇拼凑完成。或者是说在机器翻译里面你说一句话,你输入中文希望机器翻成英文,它的输出也是有结构性的。或者你今天要做的是人脸辨识,来给机器看张图片,然后机器要把图片中的这些东西标出来,这也是一个structure learning问题。
强化学习(reinforcement learning)
强化学习和监督学习进行比较时,在监督学习中我们会告诉机器正确答案是什么。若现在我们要用监督学习的方法来训练一个聊天机器人,你的训练方式会是:你就告诉机器,现在使用者说了hello,你就说hi,现在使用者说了byebye ,你就说good bye。所以机器有一个人当他家教在他旁边手把手的教他每件事情,这就是监督学习。
reinforcement learning是什么呢?在reinforcement learning里面,我们没有告诉机器正确的答案是什么,机器所拥有的只有一个分数,就是他做的好还是不好。若我们现在要用reinforcement learning方法来训练一个聊天机器人的话,他训练的方法会是这样:你就把机器放到线上,让他和进来的客人对话,然后讲了半天以后呢,人最后勃然大怒把电话挂掉了。那机器就学到一件事情就是刚才做错了。但是他不知道哪边错了,它就要回去自己想道理,是一开始就不应该打招呼吗?还是中间不应该骂脏话之类的。它不知道,没有人告诉它哪里做的不好,它需要回去反省检讨哪一步做的不好。机器要在reinforcement learning的情况下学习,机器是非常intelligence的。 reinforcement learning也是比较符合我们人类真正的学习的情景,这是你在学校里面的学习老师会告诉你答案,但在真实社会中没人回告诉你正确答案。你只知道你做得好还是做得不好,如果机器可以做到reinforcement learning,那确实是比较intelligence。
比如我们用Alpha Go作为例子
supervised learning就是告诉机器:看到这个盘式你就下“5-5”,看到这个盘式你就下“3-3”
reinforcement learning的意思是:机器跟对手互下,机器会不断的下棋,最后赢了,机器就会知道下的不错,但是究竟是哪里可以使它赢,它其实是不知道的。
我们知道Alpha Go其实是用监督学习加上reinforcement learning去学习的。先用棋谱做监督学习,然后在做reinforcement learning,但是reinforcement learning需要一个对手,如果使用人当对手就会很让费时间,所以机器的对手是另外一个机器。
通常学习的情景是你没有办法控制的。比如,因为我们没有数据做监督学习,所以我们才做reinforcement learning。例如现在因为Alpha Go比较火,所以Alpha Go中用到的reinforcement learning会被认为比较潮。如果说自己是做监督学习的,就会被质疑为什么不做reinforcement learning。那这个时候你就应该和他说,如果我们可以做监督学习,其实就不应该做强化学习。强化学习就是我们没有办法做监督学习的时候,我们才做强化学习。
为什么我们需要学习机器学习?
听说AI要来取代人类的工作了,大家都很担心。但大家不用担心会出现一个新的工作,叫做AI训练师,机器不是自己会学吗?为什么需要AI训练师。
AI训练师需要为机器挑选合适的model和loss function。不同的model和loss function适合解决不同的问题。另外有些模型的最佳化比较困难,例如深度学习,可能会需要有经验的AI训练师来处理。
因此,我们知道要训练出厉害的AI,AI训练师功不可没,所以让我们一起朝AI训练师之路迈进。