文章目录
机器学习介绍
hand-crafted rules
河狸天生的能力就是筑水坝,用程序语言来描述就是:
if 河狸听到水流声
then 河狸开始筑水坝直到听不见流水声
这里的要求只有听到水流声,因此生物学家可以通过播放水流声的方式来欺骗河狸筑水坝。
我们模仿这种方式来做一个chat-box,在chat-box设定一些天生的规则,这些规则我们就可以称为hand-crafted rules。比如我们设定一条规则,当输入的句子中包含turn off music的时候,chat-box就要关掉音乐,用程序语言来描述就是:
if there is ‘turn off’ in the input
then turn off the music
但我们如果输入 don’t turn off the music,他还是会turn off the music.
使用hand-crafted rules有什么样的坏处呢,它的坏处就是:使用hand-crafted rules你没办法考虑到所有的可能性,它非常的僵化,而用hand-crafted rules创造出来的machine,它永远没有办法超过它的创造者人类。人类想不到东西,就没办法写规则,没有写规则,机器就不知道要怎么办。所以如果一个机器,它只能够按照人类所设定好的hand-crafted rules,它整个行为都是被规定好的,没有办法freestyle。如果是这样的话,它就没有办法超越创造他的人类。
这个漫画想要说的是:现在你一定常常新闻或者是商场上看到这个讯息,有一个seller说看看我们最新的人工智慧机器人,它就是非常的人工智慧。这个系统搭配一个能言善道seller,加上一个非常非常潮的前端和外壳,里面是什么没有人知道。
外面的观众就问说:他是用什么neural方法做的,反正就是最潮的AI的技术。但是你把他剖来看一看,里面通通都是if掉出来。
现在政府、企业都说想要推广的AI,可是他们想要推广AI其实是这种AI。那这个其实都不是我们现在应该做的事,如果你要推动,如果你要推广的是这种hand-crafted AI的话,你怎么五十年前不推广,一直到今天才出来做呢?今天我们要走的不是这个路线,如果是这个路线是要被diss的,我们要做的是让机器有自己学习的能力,才是machine learning的方向。
监督学习
监督学习需要大量的training data来建立function,training data中需要包含input和对应的output,这些output可以称为label。
regression
regression就是通过建立自变量和因变量的function,得到输出的scalar。
比如我们想预测PM2.5值,也就是我们建立一个function,通过之前一部分时间的PM2.5值来训练这个function,从而输出未来某一个时间点的PM2.5数值,这就是一个regression的问题。
classification
Regression和Classification的差别就是我们要机器输出的东西的类型是不一样。在Regression中机器输出的是一个数值,在Classification里面机器输出的是类别。假设Classification问题分成两种,一种叫做二分类输出的是是或否(Yes or No);另一类叫做多分类(Multi-class),在Multi-class中是让机器做一个选择题,等于是给他数个选项,每个选项都是一个类别,让他从数个类别里选择正确的类别。
举例来说,二分类可以鉴别垃圾邮件,将其放到垃圾箱。我们可以建立一个function,通过大量的邮件来训练它,它的输入是一个邮件,输出为邮件是否为垃圾邮件。
structured learning
我们往往只将监督学习分为regression和classification两大类,但其实还应该包括structure learning,这里面也有许多问题。
structured learning 中让机器输出的是要有结构性的,举例来说:在语音辨识里面,机器输入是声音讯号,输出是一个句子。句子是要很多词汇拼凑完成。它是一个有结构性的object。或者是说在机器翻译里面你说一句话,你输入中文希望机器翻成英文,它的输出也是有结构性的。或者你今天要做的是人脸辨识,来给机器看张图片,它会知道说最左边是长门,中间是凉宫春日,右边是宝玖瑠。然后机器要把这些东西标出来,这也是一个structure learning问题。
选择模型
regression和classification是任务,而完成这个任务的第一步就是选择function set,选择不同的function set就是选择不同的model。最简单的就是线性模型,但我们会花很多时间在非线性的模型上。在非线性的模型中最耳熟能详的就是Deep learning。
deep learning的function可以很复杂,所以它可以完成比较复杂的功能,比如影像识别,也可以让机器下围棋。
除了deep learning 以外还有很多machine learning的model也是非线性的。
半监督学习
前面我们知道,监督学习需要大量的training data,如果我们想减少training data的量,就可以使用半监督学习。
假设你先想让机器鉴别猫狗的不同。你想做一个分类器让它告诉你,图片上是猫还是狗。你有少量的猫和狗的labelled data,但是同时你又有大量的Unlabeled data,但是你没有力气去告诉机器说哪些是猫哪些是狗。在半监督学习的技术中,这些没有label的data,他可能也是对学习有帮助。
迁移学习
另外一个减少data用量的方向是迁移学习。
迁移学习的意思是:假设我们要做猫和狗的分类问题,我们也一样,只有少量的有label的data。但是我们现在有大量的data,这些大量的data中可能有label也可能没有label。但是他跟我们现在要考虑的问题是没有什么特别的关系的,我们要分辨的是猫和狗的不同,但是这边有一大堆其他动物的图片还是动画图片(凉宫春日,御坂美琴)你有这一大堆不相干的图片,它到底可以带来什么帮助。
无监督学习
更加进阶的就是无监督学习,我们希望机器可以学到无师自通。
如果在完全没有任何label的情况下,到底机器可以学到什么样的事情。举例来说,如果我们给机器看大量的文章(在去网络上收集站文章很容易,网络上随便爬就可以)让机器看过大量的文章以后,它到底可以学到什么事情。
我们举一个无监督学习的例子:假设我们今天带机器去动物园让它看一大堆的动物,它能不能够在看了一大堆动物以后,它就学会自己创造一些动物。那这个都是真实例子。仔细看了大量的动物以后,它就可以自己的画一些狗出来。有眼睛长在身上的狗、还有乳牛狗等等。
强化学习
我们若将强化学习和监督学习进行比较时,在监督学习中我们会告诉机器正确答案是什么。若现在我们要用监督学习的方法来训练一个聊天机器人,你的训练方式会是:你就告诉机器,现在使用者说了hello,你就说hi,现在使用者说了byebye ,你就说good bye。所以机器有一个人当他家教在他旁边手把手的教他每件事情,这就是监督学习。
reinforcement learning是什么呢?在reinforcement learning里面,我们没有告诉机器正确的答案是什么,机器所拥有的只有一个分数,就是他做的好还是不好。若我们现在要用reinforcement learning方法来训练一个聊天机器人的话,他训练的方法会是这样:你就把机器发到线下,让他的和面进来的客人对话,然后想了半天以后呢,最后仍旧勃然大怒把电话挂掉了。那机器就学到一件事情就是刚才做错了。但是他不知道哪边错了,它就要回去自己想道理,是一开始就不应该打招呼吗?还是中间不应该在骂脏话了之类。它不知道,也没有人告诉它哪里做的不好,它要回去反省检讨哪一步做的不好。机器要在reinforcement learning的情况下学习,机器是非常intelligence的。 reinforcement learning也是比较符合我们人类真正的学习的情景,这是你在学校里面的学习老师会告诉你答案,但在真实社会中没人回告诉你正确答案。你只知道你做得好还是做得不好,如果机器可以做到reinforcement learning,那确实是比较intelligence。
课程提示
蓝色的方块指的是学习的场景,红色的指的是你的task,你要解决的问题,不同的task又可以使用不同的method来完成。
为什么要机器学习
如果我们想要得到更好的结果,就需要为机器挑选合适的model和loss function。不同的model和loss function适合解决不同的问题。机器训练的过程中,有时间也找不到best function,这时会需要有经验的AI训练师来处理。