机器学习介绍
首先李宏毅老师介绍了生物的本能,接着以河狸为例子,阐述了科学家如何利用河狸听到水声就去筑堤坝的生物特性,放置扬声器在想要的地方来使河狸去填埋,从而达到想要的效果。
假设有一天你想要做一个chat-bot,如果你不是用机器学习的方式,而是给他天生的本能的话,那像是什么样子呢?你可能就会在这个chat-bot里面,在这个聊天机器人里面的设定一些规则,这些规则我们通常称hand-crafted rules,叫做人设定的规则。那假设你今天要设计一个机器人,他可以帮你打开或关掉音乐,那你的做法可能是这样:设立一条规则,就是写程序。如果输入的句子里面看到“turn off”这个词汇,那chat-bot要做的事情就是把音乐关掉。这个时候,你之后对chat-bot说,Please turn off the music 或can you turn off the music, Smart? 它就会帮你把音乐关掉。看起来好像很聪明。别人就会觉得果然这就是人工智慧。但是如果你今天想要欺负chat-bot的话,你就可以说please don‘t turn off the music,但是他还是会把音乐关掉。这是个真实的例子,你可以看看你身边有没有这种类似的chat-bot,然后你去真的对他说这种故意欺负它的话,它其实是会答错的。这是真实的例子,但是不告诉他是哪家公司产品,这家公司也是号称他们做很多AI的东西的。
使用hand-crafted rules有什么样的坏处呢,它的坏处就是:使用hand-crafted rules你没办法考虑到所有的可能性,它非常的僵化,而用hand-crafted rules创造出来的machine,它永远没有办法超过它的创造者人类。人类想不到东西,就没办法写规则,没有写规则,机器就不知道要怎么办。所以如果一个机器,它只能够按照人类所设定好的hand-crafted rules,它整个行为都是被规定好的,没有办法freestyle。如果是这样的话,它就没有办法超越创造他的人类。
我们要做的其实是让机器他有自己学习的能力,也就我们要做的应该machine learning的方向。讲的比较拟人化一点,所谓machine learning的方向,就是你就写段程序,然后让机器人变得了很聪明,他就能够有学习的能力。接下来,你就像教一个婴儿、教一个小孩一样的教他,你并不是写程序让他做到这件事,你是写程序让它具有学习的能力。然后接下来,你就可以用像教小孩的方式告诉它。假设你要叫他学会做语音辨识,你就告诉它这段声音是“Hi”,这段声音就是“How are you”,这段声音是“Good bye”。希望接下来它就学会了,你给它一个新的声音,它就可以帮你产生语音辨识的结果。
框架
以影像辨识为例,我们找个function输入一张图片,它告诉我们这个图片里面有什么样的东西。
在做这件事时,你的起手事是你要先准备一个函数集,这个函数里面有成千上万的功能。举例来说,这个函数在里面,有一个f1,你给它看一只猫,它就告诉你输出猫,看一只狗就输出狗。有一个函数f2它很怪,你给它看猫,它说是猴子;你给他看狗,它说是蛇。你要准备一个函数集,这个函数集里面有成千上万的函数。这件事情讲起来可能有点抽象,你可能会怀疑说怎么会有成千上万的函数,我怎么把成千上万的函数收集起来。
先假设你手上有一个函数集,这个函数集就叫做model(模型)。
机器学习其实只有三个步骤,这三个步骤简化了整个过程。
左边这个部分叫training,就是学习的过程;右边这个部分叫做testing,学好以后你就可以拿它做应用。所以在整个machine learning framework整个过程分成了三个步骤。第一个步骤就是找一个function,第二个步骤让machine可以衡量一个function是好还是不好,第三个步骤是让machine有一个自动的方法,有一个好演算法可以挑出最好的function。
机器学习相关的技术
监督学习
回归是一种机器学习的方法,其意思为:机器找到一个函数,他输出是一个标量,这个就叫做回归。如,做一个PM2.5的预测,就是说需要找一个函数,这个函数的输出是未来某一个时间PM2.5的的数值,这个就是一个回归的问题。
如果需要机器判断明天的PM2.5的输出,则需要提供一些咨询以供其猜想。(数据集)
若你要训练这种模型,如同我们在框架中讲的,你要准备一些训练资料。
半监督学习
刚才我们讲的都是supervised learning(监督学习),监督学习的问题是我们需要大量的training data。training data告诉我们要找的function的input和output之间的关系。如果我们在监督学习下进行学习,我们需要告诉机器function的input和output是什么。这个output往往没有办法用很自然的方式取得,需要人工的力量把它标注出来,这些function的output叫做label。
那有没有办法减少label需要的量呢?就是半监督学习。
通过半监督学习能减少label需要的量。
迁移学习
另外一个减少data用量的方向是迁移学习。
无监督学习
更加进阶的就是无监督学习,我们希望机器可以学到无师自通。
监督学习中的强化学习
structured learning 中让机器输出的是要有结构性的,举例来说:在语音辨识里面,机器输入是声音讯号,输出是一个句子。句子是要很多词汇拼凑完成。它是一个有结构性的object。或者是说在机器翻译里面你说一句话,你输入中文希望机器翻成英文,它的输出也是有结构性的。或者你今天要做的是人脸辨识,来给机器看张图片,它会知道说最左边是长门,中间是凉宫春日,右边是宝玖瑠。然后机器要把这些东西标出来,这也是一个structure learning问题。
强化学习
若将强化学习和监督学习进行比较时,在监督学习中我们会告诉机器正确答案是什么。若现在我们要用监督学习的方法来训练一个聊天机器人,你的训练方式会是:你就告诉机器,现在使用者说了hello,你就说hi,现在使用者说了byebye ,你就说good bye。所以机器有一个人当他家教在他旁边手把手的教他每件事情,这就是监督学习。
在reinforcement learning里面,我们没有告诉机器正确的答案是什么,机器所拥有的只有一个分数,就是他做的好还是不好。