Introduction of Machine Learning
//李宏毅视频官网:http://speech.ee.ntu.edu.tw/~tlkagk/courses.html 点击此处返回总目录//邱锡鹏《神经网络与深度学习》官网:https://nndl.github.io 今天我们介绍一下machin...
//李宏毅视频官网:http://speech.ee.ntu.edu.tw/~tlkagk/courses.html 点击此处返回总目录 //邱锡鹏《神经网络与深度学习》官网:https://nndl.github.io
今天我们介绍一下machine learning。 ------------------------------------------------------------------------------------------------------------------------------- 我们这门课预期学到什么呢?我想很多同学心理的预期就是可以学到一个很潮的人工智能(AI)。 近几年,人工智能开始变得非常热门,政府、工业界通通都在讲人工智能。但人工智能是什么呢?人工智能这个词其实不是新词汇,早在1950'年代就有了。这个词意味着什么呢?意味着人类长远以来的目标,希望人类可以跟人一样聪明。在科幻小说里面,我们看到很多这样的幻想和期待。 但是在很长的一段时间里面,人们并不知道怎么做到人工智能这件事,直到后来大概1980'年代,有了机器学习的方法。 机器学习,顾名思义,就是让机器具有学习的能力。机器学习与人工智能什么关系呢?人工智能是我们想要达成的目标,而机器学习是想要达成目标的手段。机器学习通过学习的方式可以跟人一样聪明。 而深度学习和机器学习是什么关系呢?深度学习是机器学习的一个方法。
------------------------------------------------------------------------------------------------------------------------------- 那在深度学习、机器学习出来之前,人们用什么样的方法来做人工智能这件事情呢? 我记得,高中生物告诉我们说,生物的行为取决于两件事,一个是后天学习的结果,一个是先天的本能。对机器来说也是一样,他怎么样表现的很有智慧,要么就是通过后天学习的手段表现的很有智慧,要么就是这是他先天的本能。本能就是,他的创造者(也就是人类)帮他事先设计好的。
我们先来讲一个跟机器学习一点关系都没有的东西:生物的本能。
这个是河狸,河狸的特点呢,就是会筑水坝把水挡起来。 河狸怎么知道要筑水坝呢?河狸筑水坝的能力是天生的。也就是说,假设一个河狸是在实验室出生的,没有父母教它怎么怎么筑水坝,但是它一生下来,它心里就有一个冲动,就是它想要筑水坝。假如,我们用程序来描述的话,就是:
所以生物学家就可以欺负河狸,他们就用扬声器来播放流水声,如果把扬声器放在水泥墙里面,河狸就会在水泥墙上面放很多泥巴或树枝来糊墙,想要把扬声器的声音盖住。如果把扬声器放在地上,河狸就会用树枝把它盖住,直到听不到扬声器的声音为止。
上面是生物的本能,其实机器的本能跟生物的本能很像。 假设有一天你想要做一个Chat-bot(聊天机器人),如果不用机器学习的方式,而是给它天生的本能的话,那像是什么样子呢?你可能就会在这个chat-bot里面设定一些规则,这些规则通常称之为hand-crafted rules,就是人设定的规则。 假设今天想要设计一个聊天机器人想要帮我们关掉音乐的话,做法可能是这样,可以设定一条规则,写成程序是这样:
也就是,如果输入的句子里面有turn off这个词汇,那chat-bot要做的事情呢,就是把音乐关掉。这时候,如果说“Please turn off the music”或者“Can you turn off the music”,chat-bot就会帮我们把音乐关掉。这样机器就看起来很聪明,被人就会说,果然是人工智能。 但是今天,想要欺负这个chat-bot的话,就可以说"place don't turn off the music",但是它还是会把音乐关掉。 这是个真实的例子,你可以看看身边有没有这种类似的chat-bot,你去对它说这种故意欺负它的话,它其实是会打错的。这是真实的例子,就不告诉你是哪一家科技公司的产品了,这家公司也是号称他们做了很多AI的东西的样子。不要让你发现是哪家公司的产品,免得被告。 那hand-crafted rules 有什么样的坏处呢?它的坏处就是没有办法考虑到所有的可能性,它非常地僵化。而用hand-crafted rules创作出来的machine它永远没有办法超过他的创造者,人类想不到的东西就没有办法写规则,没有写规则机器就不知道怎么办。但是你可能会说,看到的很多chat-bot看起来非常地聪明,这些chat-bot,如果是一个非常大的公司,其实他可以hire成千上万的工程师,来写出数以万计的规则,让他的机器看起来好像很聪明。但是对于中小公司来说,这样的方式反而是不利的。所以,我认为机器学习的发展,对比较小规模的企业反而是有利的,因为不需要派非常大量的人帮你想各式各样的规则。你只要手上有data,你就可以让机器来帮你做这件事情。当然,怎么sollect data又是另外一个问题,这不是我们今天要讨论主题。
AI这个词现在非常非常非常热门。会有各式各样奇奇怪怪的东西,我觉得现在常常遇到的一个问题,也许可以用以下这幅漫画来说明:
这幅漫画不是简单的漫画,而是杨乐坤发表Facebook上的。意思是说是人工智能,其实里面都是if语句。现在,政府啊企业啊都说想要推广AI,有时候他们想要推广的AI其实是这种AI。它这种其实就不是我们现在做的事,如果你要推广的是这种hand-crafted AI的话,你怎么不50年前推广,到今天才突然做?今天我们要走的不是这个路线,如果是这个路线,它其实是应该被diss的,我们要做的其实是让机器有学习的能力。也就是我们要做的是machine learning的方向。
------------------------------------------------------------------------------------------------------------------------------- 那什么是machine learning呢? 那如果讲的比较拟人化一点,所谓machine learning就是你写一个程序让机器变得很聪明,具有学习的能力。接下来就像教一个婴儿教一个小孩一样地教他。并不是写程序让他做到这件事,而是写程序让他具有学习的能力。接下来呢,像教小孩的方式一样教他说,假设你要教他做语音识别,你就告诉他说,这段声音是“Hi”,这段声音就是“how are you”,这段声音就是“good bye”,希望接下来他就学会了,你给他一段新的声音,他就可以帮你产生语音辨识的结果。
或者说,你希望他学会怎么做图像识别的话,你可能不需要改太多的程序,因为他本身具有学习的能力,你只需要教它说,看到这张图片,你要说是猴子,看到这张图片,是猫,看到这张图片是狗。这样他就有图片识别的能力了。接下来给他一个没有看过的猫,希望他呢,可以认得。
------------------------------------------------------------------------------------------------------------------------------- 刚才是比较拟人化的说法。如果要讲得务实一点的话呢,machine learning要做的事情,可以想成是在寻找一个function。你要让机器具有一个能力,这个能力是根据提供给他的资料,他去寻找出我们要寻找出的function。
很多我们关心的问题,都可以想成是我们就是需要一个function。 举例来说,语音识别。在语音识别这个问题里面,我们要找的function,他的输入是声音信号,他的输出是语音识别的文字。这个function非常非常的复杂,有人可能会说,我来用一些写规则的方式,读很多语言学的文献,然后写一堆规则,然后做语音识别。这件事情,60年代就有人做了,直到现在还没有做出来。语音识别太过复杂,这个function太过复杂,不是人类可以做出来,可以想象的,所以我们需要凭借机器的力量帮助我们把这个function找出来。
或者说,假设你要做图像识别,那也就是找一个function,输入是一张图片,其实是图片里面的pixel,输出就是图像里面有什么样的东西。
或者是,这年头大家都再说Alpha go,如果你要做一个可以下围棋的machine的话,其实你需要的也就是找一个function,这个function的输入呢,是围棋上19*19路的盘式,你告诉机器哪些地方有黑子,哪些地方有白字,然后机器会告诉你,接下来下一步应该落子在哪里。
或者说,你要做聊天机器人,你需要的也是一个function,这个function的输入就是使用者的input,他的输出呢,就是机器的回应。
------------------------------------------------------------------------------------------------------------------------------- 以下,我们会很简短地说明怎么样找出这个function。找出这个function的framework是什么呢?我们以图像识别为例。我们要找一个function,输入一张图片,他告诉我们图片里面有什么东西。 在做这件事情,他的起手式是:你要先准备一个function的set。function的set里面有成千上万的function。举例来说,这个function里面有一个f1,给他看一只猫,他就输出“猫”;给他看一只狗,他就输出“狗”。有一个f2,它很怪,给他看猫,他说是“猴子”;给他看狗,他说是“蛇”。
要准备一个function set,里面有成千上万的function。这件事情讲起来可能有点抽象,你可能会很怀疑说,怎么回事,你怎么准备成千上万的function,我怎么把成千上万的function收集起来,变成一个function的pool呢。这个我们之后会再讲。总之,先假设,你手上有一个function 的set,其实这个function的set呢,就叫做model。
------------------------------------------------------------------------------------------------------------------------------- 有了这个function的set以后呢,接下来,第二步,机器要做的事情是,它有一些训练的数据,这些训练数据告诉机器说,一个好的function,它的输入输出应该长什么样子,有什么样的关系。你告诉机器说呢,现在在这个图像识别的问题里面,如果看到这个猴子的图,你要输出猴子;看到这个猫的图,你要输出猫;看到狗的图,你要输出狗。这样才是对的。
你拿出一个function,机器就可以判断说这个function是好的还是不好的。机器可以根据training data 判断一个function是好的还是不好的。举例来说,f1显然比较符合training data的叙述,比较符合training data 给我们的知识,所以f1看起来是比较好的,f2看起来是一个很荒谬的function。
我们今天讲的这一个task,这个学习的情景呢,其实叫supervised learning。就是如果告诉你告诉machine,function的input和output,那这个叫做supervised learning。以后我们会讲到其他不同的learning的理论。
------------------------------------------------------------------------------------------------------------------------------- 那现在机器有办法决定一个function的好坏,光能够决定一个function的好坏还是不够的,因为在function set 里面,它有成千上万、无穷的function,所以我们需要一个有效率的算法,可以从function的set里面挑出最好的function。这个最好的function,我们写作f*。找出这个f*以后,我们就希望拿它来做一些事情,输入一张在training data里面没有看过的猫,然后希望他的输出也是猫。那你可能会说,机器学的时候,他没有看过这只猫,那你怎么知道在测试的时候找出来的这个最好的function f*,可以正确辨识这只猫呢。这个就是在machine learning 里面非常重要的问题,就是机器有没有举一反三的能力,这个我们之后再讲。
左边这个部分叫做training,就是学习的过程。右边的这个部分叫做testing,就是学好以后,你就可以拿他来做应用。在整个machine learning的framework里面,把machine 分成了三个步骤。第一个步骤就是,找出一个function set。第二个步骤就是,让machine可以衡量一个function是好还是坏。第三个步骤是,让machine有一个自动的方法,可以挑出最好的function。
------------------------------------------------------------------------------------------------------------------------------- 总结: 机器学习到这里我们就说完了。机器学习就是三个步骤,当然这三个步骤异常地简化了整个process。说机器学习只有三个步骤,就好像说把大象放到冰箱只有三个步骤一样。
|
更多推荐
所有评论(0)