很多人联系我说是否能出一系列机器学习的视频教程, 我其实有考虑过, 只不过我觉得目前市场上有很多大神的经典课程, 都讲的比我好, 我不想再创造很多轮子, 但是, 这些大神的作品都缺乏一定的配套资源, 比如练习和实验代码, 并且缺少系统的学习路线, 所以本站打算做一个整理, 把一些经典课程整理出来, 并配上相应的学习资料, 让大神的课程发挥更大的作用。 以下是本站整理的李宏毅老师的机器学习视频教程系列, 本站先放视频, 然后会逐步整理配套的代码/习题/笔记等, 只是希望这个系列教程能对大家有帮助。下面是《李宏毅机器学习教程01:机器学习简介》的视频内容:
视频
下面是机器生成的一个Demo:
实践代码
介绍课程, 无代码。
字幕转录
这一门课,我们预期可以学到甚么呢?我想很多同学心理的预期就是:”你可以学到一个很潮的人工智慧”我知道从今年开始,”人工智慧”这个词,突然变得非常非常非常的热门大家,政府,internship,通通都在讲”人工智慧”这个词但人工智慧是甚么呢?人工智慧其实一点都不是新的词汇人工智慧这个词,AI这个词,artificialintelligence这个词在1950年代,就有了!这个词意味着甚么呢?这个词意味着人类长远以来的目标:希望机器可以跟人一样的聪明。在科幻小说里面,我们看到很多的幻想和期待。在很长的一段时间内,人们并不知道怎么做到人工智慧这件事情。直到后来,大概1980年代以后,有了机器学习的方法。
机器学习,顾名思义,从名词就可以猜出就是让机器具有学习的能力。机器学习跟人工智慧有甚么关系呢?人工智慧是我们想要达成的目标;而机器学习,是想要达成目标的手段!让机器透过学习的方式它可以跟人一样聪明。而深度学习和机器学习有甚么关系呢?深度学习就是机器学习的其中一种方法。在有深度学习机器学习之前,人们用什么样的方式,来做到人工智慧这件事呢?我记得高中生物学的告诉我们说,生物的行为取决于两件事:”一个是后天学习的结果不是后天学习的结果就是先天的本能。
“这对机器来说也是一样,它怎么样表现得很有智慧?要嘛就是透过后天学习的手段,表现得很有智慧;要嘛就是这是它先天的本能。机器为甚么会有先天的本能?那个本能就是就是它的创造者,其实就是人类,帮它事先设定好。那么我们先来看一下生物的本能讲一个跟机器学习一点都没关系的,我们来讲生物的本能这个是河狸。河狸的特色就是牠会筑水坝把水挡起来。
但是河狸怎么知道要筑水坝呢?河狸筑水坝的能力是天生的。也就是说,讲这个河狸是天生的,牠在实验室里出生,牠没有父母教牠怎么筑水坝,但是牠一生下来,心里就有一个冲动,就是牠想要筑水坝。如果我们用程式语言来描述牠的话,牠内建的程式语言是这样的:if牠听到流水声then牠就筑水坝直到听不到流水声为止所以生物学家就可以欺负河狸,他就用一个扬声器来播放流水声如果把扬声器放在水泥墙里面,河狸就会在水泥墙上面放很多的树枝,在水泥墙上筑一个堤,然后想要把扬声器的声音盖住如果把扬声器放在地上,河狸就会用树枝把它盖住,直到听不到扬声器的声音为止所以这是生物的本能。那机器的本能跟生物的本能其实很像:假设有一天,你想要做一个chat-bot如果你不是用learning的方式,也不是用机器学习的方式,而是给它天生的本能的话,那像是甚么样子呢?你可能会在这个chat-bot里面,在这个聊天机器人里面,设定一些规则,这些规则我们通常称之为hand-craftedrules就是人设定的规则。
假设你今天要设定一个对话机器人,它可以帮你打开和关掉音乐的话,那你的做法可能是这样:设定一条规则,就是写程式这样,如果输入的句子里面,看到turnoff这个词汇,那么chat-bot要做的事情就是,把音乐关掉。这个时候,你之后对chat-bot说”Pleaseturnoffthemusic.”或”Canyouturnoffthemusic,please?”看起来好像很聪明,人家就会觉得,嗯果然这就是人工智慧。但是如果你今天想要欺负那个chat-bot的话,你就可以说,”Pleasedon'tturnoffthemusic.”但是它还是会把音乐关掉。这是个真实的例子,你可以看看你身边有没有类似的chat-bot然后你去真的对它说这种故意欺负它讲这种话,它其实是会答错的。
这其实是真实的例子,不要告诉你是哪家公司的产品,这家公司也是号称他们做了很多AI的东西。不要让你发现是哪一家的产品,免得被告。用这个hand-craftedrules有甚么坏处呢?它的坏处就是,hand-craftedrules没有办法考虑到所有的可能性,它非常的僵化,而用hand-craftedrules创造出来的machine,它永远没有办法超过它的创造者,也就是人类。人类想不到的东西,你就没有办法写规则,你没有写规则,机器就不知道要怎么办。
所以一个机器如果只能按照人设定好的hand-craftedrules,它所有的行为都是set好,它没有freestyle的。如果是这样子的话,它就没有办法超越创造它的人类。你可能会说,但是你好像看到很多chat-bot,看起来非常的聪明,这些chat-bot,如果是个非常大的industry,其实它可以hire成千上万的工程师这类的职业,以血汗的方式,来建出数以万计的规则,然后让它的机器看起来好像很聪明。但是对于中小企业来说,这样建规则的方式,反而是不利的。
所以我认为机器学习的发展,对于比较小规模的企业反而是有利的,因为接下来也不需要hire非常大量的人,来帮你想各式各样的规则。你只要手上有data,你可以让机器来帮你做这件事情。当然怎么collectdata又是另外一个问题,这个不是我们今天要讨论的主题。我知道AI这个词,现在非常非常非常的热门,所以会有各式各样,奇奇怪怪的东西。
我觉得现在非常常遇到的问题,以许可以用以下这个漫画来说明,这是个四格漫画,这个漫画并不是随随便便的一个四格漫画,这个一块画是,YannLecunshare在他的facebook上的漫画。这个漫画说甚么呢?现在也一定常常在新闻或者是商展上看到这种东西。有一个sales说,看看我们最新的人工智慧机器人,它就是非常的人工智慧,要show这个系统呢,要搭配一个能言善道的sales,加上一个非常非常潮的前端跟外壳里面是甚么没有人知道。外面的观众就问说,它就是用甚么neural的方法做的吗?反正就是,最潮的AI的技术就对了但是有时候你把它剖开来看,里面都通通都是”if”掉出来这样。
我知道现在政府企业他们都说想要推广AI,有时候他们想要推广的AI,其实是这种AI这个其实不是我们现在应该要做的事,如果你要推广的是这种hand-crafted的AI的话,你怎么50年前不推广一直到今天才突然做了呢?今天我们要走的不是这个路线,如果是这个路线,它应该是要被diss的我们要做的其实是,让机器它有自己学习的能力,也就是我们要做的应该是machinelearning的方向。如果讲得比较拟人化一点,所谓machinelearning的方向就是,这非常拟人化的讲法啦比较像是骗骗麻瓜的讲法你就写一个程式,然后它让机器变得很聪明,它就能够有学习的能力,接下来就像教一个婴儿或小孩一样,你并不是写程式让它做到这件事,你是写程式让它具有学习的能力,接下来你就可以用像教小孩一样的方式告诉它说,假设你要它学会做语音辨识,你就告诉它,这段声音就是”Hi”这段声音就是”Howareyou”这段声音就是”Goodbye”。然后希望接下来它就学会了然后你给它一段新的声音,它就可以帮你产生语音辨识的结果。或者是如过你希望它学会怎么做影像辨识的话,你可能不太需要改太多的程式,因为它本身就有学习的能力你只是需要教它告诉它说看到这张图片,你要说这是猴子,看到这张图片,你要说这是猫,看到这张图片,你要说这是狗,它就具有影像辨识的能力了,接下来看到它没有看过的猫,希望它可以认得。
这是比较拟人化的说法,如果要讲得更务实一点的话,你做的事情可以想成是,在寻找一个function。你要让机器具有一个能力,这个能力是根据你提供给它的资料,他去寻找出我们要寻找的function那很多我们关心的问题,都可以想成是我们就是需要一个function,举例来说,语音辨识。在语音辨识这个问题里面,我们要找一个function,它的输入是声音讯号,它的输出是语音辨识的文字。这个function非常非常的复杂,有人可能会想说我来用一些写规则的方式,用很多语言学读很多语言学的文献,写一堆规则做语音辨识。
这些事情60年代就有人在做了,到现在都还没做出来。语音辨识太过复杂,这个function太过复杂,不是人类可以写出来可以想像的所以我们需要凭借机器的力量,帮我们把这个function找出来。或者说假设你要做影像辨识,那你就要找到一个function,输入就是一张图片,其实就是图片里面的peakzone,输出就是这张图片有什么样的东西。或者是这年头大家都一直在说AlphaGo,如果你要做一个可以下围棋的machine的话,其实你需要的也就是找一个function,这个function输入是围棋上19X19路的棋盘的盘势,你告诉机器说,在这19X19棋盘上,哪些位置有黑子,哪些位置有白子,然后机器就告诉你说,接下来下一步应该要落子在哪里。
或者是你要做聊天机器人,你需要的也是一个function,这个function的输入就是使用者的input,它的输出就是机器的回应。以下我们先很简短的跟大家说明,怎么样找出一个function找出这个function的framework是甚么呢?我们以影像辨识为例,我们要找一个function,输入一张图片,它告诉我们图片里有甚么样的东西。在做这件事,它的起手式是你要先准备一个function的set,这个function的set里面,有成千上万的function,举例来说,这个functionset里面有一个f1,你给它看一只猫,它就告诉你输出猫,给它看一只狗,就输出狗。有一个functionf2,它很怪,你给它看猫它说是猴子,你给它看狗它说是蛇,你要准备一个functionset,这个functionset里面有成千上万的function。
这件事情讲起来有点抽象,你可能会很怀疑说,这怎么回事?怎么准备成千上万的function?我怎么把成千上万的function收集起来变成一个function?不过,这我们之后会再讲。总之我们先讲,假设你手上有一个function的set,其实这个function的set就叫做model。有了这个function的set以后,接下来第二步机器要做的事情是,开始有一些训练的资料。这些训练资料告诉机器说,一个好的function,它的输入输出应该长甚么样子,有甚么样的关系。
你告诉机器说,现在在这个影像辨识的问题里面,如果看到这个猴子的图,你就要输出猴子。看到这个猫的图你就要输出猫,看到狗的图你就要输出狗,这样才是对。借由这些训练资料,你拿出一个function,机器就可以判断说这个function是好的还是不好的。机器可以判断一个function根据训练资料判断一个function是好的还是不好的。
举例来说,在这个例子里面,显然f1,它比较符合trainingdata的叙述,它比较符合trainingdata给我们的知识,所以f1看起来是比较好的,f2看起来是一个很荒谬的function。以下这个,我们今天讲的这个task,叫做supervised这个学习的情境其实叫做supervisedlearning。如果你告诉machinefunction的input和output,这个叫做supervisedlearning。之后我们会讲到其他不同learning的scenario。
现在机器有办法决定一个function的好坏,光能够决定一个function的好坏是不够的,因为在你的functionpool和functionset里面,它有成千上万的function,它有无穷无尽,几乎是无穷它有无穷的function,不可胜数的function,所以我们需要一个有效率的演算法这个有效率的演算法,可以从function的set里面,挑出最好的function。一个个function衡量它好不好,太花时间了,实际上做不到,所以我们需要一个好的演算法,去从function的set里面,挑出一个最好的function。这个最好的function,我们把它写作f找出这个f以后接下来我们就希望拿它来做一些事情我们可以拿它来做影像的辨识输入一张在trainingdata里没有看过的猫,然后希望它的输出也是猫。你可能会问说,机器学的时候没有看过这只猫,那怎么知道在测试的时候找出来的最好的function:f*可以正确的辨识这只猫呢?这个就是,这样的序单元里面,非常重要的问题:就是”机器有没有举一反三的能力?”这个我们之后会再讲。
左边的部分叫做training,就是学习的过程,右边的部分叫做testing,就是学好以后你就可以拿它来运用这个是testing。所以在整个machine类的framework里面,整个machinelearning分成了三个步骤,第一个步骤就是,找一个function,订出一个function的set,第二个步骤就是,让一个machine可以衡量一个function是好还是不好第三个步骤就是,让machine有一个自动的方法,有一个好的演算法可以挑出最好的function。所以机器学习到这边,我们就说完了这样子。也许这整个学期的课你都不需要来,所以机器学习就是三个步骤,当然这三个步骤其实异常的简化了整个process,讲说机器学习只有三个步骤,就好像讲说如果我们要把大象塞进一个冰箱,其实也是三个步骤。
你怎么把大象塞进冰箱?就是把门打开,把大象赶进去,然后把门关起来,然后就结束了。所以说机器学习只有三个步骤就好像是说,把大象放进冰箱也只需要三个步骤。意思是一样的。接下来的时间我们要讲一下,这门课里面,你可以学到哪些和machinelearning相关的技术。
这个是这学期的learningmap,看起来是有点复杂的,我们一块一块来解释。我们先从图的左上角开始,这个图的左上角是regression,甚么是regression?regression是一种machinelearning的task当我们说我们要做regression时的意思是说,我们今天要machine找出来的function,它的输出是一个scalar是一个数值,一个realnumber,这个叫做regression。举例来说,在作业一里面,我们会要你做PM2.5的预测,也就是说你要找一个function,这个function的输出,就是未来某一个时间。举例来说,明天上午的PM2.5。
PM2.5是一个数值,是一个number。所以这个是一个regression的problem。那机器要判断说,今天这个function要输出明天上午的PM2.5那明天上午的PM2.5,你要给它一些资讯,它才能够,它没有办法凭空猜出来,你要给它一些额外的资讯,它才能够猜出明天上午的PM2.5你给他的资讯,可能是今天上午的PM2.5,昨天上午的PM2.5等等这就是一个function,它吃的是我们给它的过去的PM2.5的资料,它输出的是预测未来的PM2.5。你要训练这种machine,如同我们刚才在讲machine类的framework里面讲的,你要准备一些训练资料。
甚么样的训练资料?你就告诉他说,今天根据我们过去的,从政府的opendata上收集来的资料,9月1号上午的PM2.5是这个样子,9月2号是这个样子,9月3号是这个样子,所以一个好的function,输入这样子的一个PM2.5,它应该输出这样的PM2.5。给它9月12号PM2.5,9月13号PM2.5,它应该输出9月14号的PM2.5。收集到够多这样的data,就可以训练一个可以做气象预报的系统。刚才讲的是regression,接下来要讲的是classification。
那regression和classification的差别是,我们要机器输出的东西的类型是不一样的。在regression里面输出的是一个数值,在classification里面机器输出的是,classification问题又分成两种,一种叫做Binaryclassification,二元的分类。在二元的分类里面,我们要机器输出的就是是或否,yes或no。那另外一类classification的problem叫multi-class的classification在multi-class的classification里面,机器要做的事情是要做一个选择题你等于是给它数个选项,每一个选项就是一个类别。
它都从数个类别里面选择正确的类别,这叫multi-class的classification。我们就为binary和multi-classclassification分别举一个例子。举例来说,G-mail有做spamfiltering这件事它自动侦测出垃圾邮件,帮你把它放在垃圾邮件夹内。那它怎么做到这件事呢?其实我们需要的就是一个function。
这个function的输入就是一封e-mail。当然要怎么让一个function吃一个e-mail当作输入?是你自己要想看看的。这个我们未来再讲。这个function吃一个e-mail当作输入,它的输出就是,这封e-mail是垃圾邮件,还是不是垃圾邮件?你要训练这样的function,怎么做?很简单,你就给它一大堆的data,告诉它说,现在输入这一封邮件,你应该说它是垃圾邮件;输入这一封邮件,你应该说它不是垃圾邮件。
你给它够多的这种资料去学,它就可以自动找出一个,可以侦测垃圾邮件的function。那multi-classclassification这边举一个文章分类的例子。现在网路上有非常多的新闻,也许也有人能把所有的新闻看完。那你希望机器自动帮你把新闻做分类,怎么做呢?你需要一个function,它的输入是一则新闻,输出就是这一则新闻,属于哪一个类别。
你可以想成每一个类别就是一个选项,政治是一个选项,经济是一个选项,体育是一个选项。机器要做的事情就是,解这个选择题。你要训练这种机器,你就告诉它说,你就准备很多训练资料,告诉它说:这篇文章叫做体育,这篇文章你要选政治,这篇文章你要选财经,之后给它新的文章,希望它能给你正确的结果。刚才讲的,都是你要machine解的任务。
再来要讲的,在解任务的过程中,第一步就是要选一个function的set,那选不同的functionset,你会得到不同的结果。选不同的functionset就是选不同的model。model很多种,举例来说,non-linear的model上面。最简单的是linear的model。
其中一个大家最耳熟的,我们会花很多时间focus在non-linear的model上面。那在non-linear的model里面,其中一个今日最耳熟能详的,就是deeplearning。所谓的deeplearning的意思,之后我们会再细讲deeplearning的内容,今天只要知道说,在做deeplearning的内容时候,我们的function是特别复杂的。所以它可以做特别复杂的事,举例来说,它可以做影像的辨识,这个特别复杂的function,这个特别复杂的function,它可以描述这个peakzone和它的class之间的关系。
你要找这样子的function,你就是准备一些训练资料,给机器去学就可以了。用deeplearning的技术,你也可以让机器,学会下围棋。那在下一节的task,下一节的task其实就是一个分类的问题。只是这个分类的问题我们需要一个很复杂的function,给它的输入,是一个棋盘的盘式,那输出就是下一步应该落子的位置。
我们知道说,一个棋盘上就是有19X19的位置是你可以落子的。所以今天下围棋这件事情,你就可以把它想成是一个19X19个类别的分类问题,或者是,你可以把它想成是一个,有19X19个选项的选择题。那你要怎么训练机器让它学会下围棋呢?你要收集训练资料,告诉机器,现在这个function的输入输出,现在这个function的输入输出,分别应该是甚么。看到某样的盘式,我们应该输出甚么样的output。
然后大家就非常的讶异;看到某样的盘式,我们应该输出甚么样的output。那怎么收集这种资料呢?你可以从人类过去下的棋谱里面,收集这样子的资料。举例来说,你收集了进藤光和社清春下的那一盘棋谱在那一盘棋里面,首先首先社清春出手先下5之五,,然后大家就非常的讶异;然后进藤光次手再下天元,大家又更加讶异,然后社清春第三首在下五之5,大家就非常非常的讶异。所以你有了这样子的棋谱后,你就告诉machine说,如果现在棋盘上有人落子在5之五,那下一步你就落子在天元。
如果现在5之五和天元都已经有子了来那你就落子在另外一个五之5的位置。你给它够多的棋谱,它就可以学会怎么下围棋了。除了deeplearning以外,还有很多其他的machinelearning的model,它也是non-linear的model。这学期会请吴老师帮我们讲SVM。
刚才我们讲的都是supervisedlearningsupervisedlearning类的问题是,我们需要大量的trainingdata,这些trainingdata告诉我们说,一个我们要找的function,它的input和output之间有甚么样的关系。这个function的output,我们常叫做label。所以常常听到说做机器学习需要大量的label,指的就是说,如果我们用supervised的技术,我们是要让机器在supervisedlearning的情境中学习。我们需要告诉机器,function的input和output是甚么。
这个output往往没办法用很自然的方式取得,我们必须要凭着人工的力量,把它雕塑出来。这些function的output叫做label,那你要找到这样的label,往往需要很大量的effort。有没有办法减少label需要的量呢?那是有办法的!举例来说,有另外一个scenario,叫做semi-supervisedlearning。semi-supervisedlearning的意思是说,举例来说,你今天想要机器鑑别猫和狗的不同,你想要做一个分类器,输入一张图片告诉你它是猫或狗你有少量的猫和狗的labeleddata,但是同时你又有大量的unlabeleddata。
你有一大堆猫和狗的图片,但是你没有力气去告诉机器说那些是猫那些是狗。在semi-supervisedlearning的技术里面,这些没有labeled的data,它可能也是对学习有帮助。我们之后会再讲说,为甚么这些没有labeled的data会对学习有帮助。那另外一个减少data用量的方向是transferlearning,transferlearning的意思是说,假设我们一样要做猫和狗的分类的问题,我们也一样只有少量的有labeled的data,但是我们现在有另外大量的data,这些大量的data它可能有labeled,也可能没有labeled,但是它跟我们现在要讨论的问题是没有甚么特别的关系的。
我们要分别的是猫和狗的不同,但是你这边有一大堆其他动画的图片,这个是凉宫春日,这个是御坂美晴你有一大堆不相干的图片,它到底可以带来甚么样的帮助?这个就是transferlearning要讲的问题。更进阶的是,unsupervisedlearning在unsupervisedlearning里面,顾名思义,我们就是希望机器学到无师自通。如果在完全没有任何label的情况之下,到底机器可以学到甚么样的知识?举例来说,如果我们给机器看大量的文章,收集大量的文章很容易这种机器看过大量的文章以后它到底可以学到甚么事情?它能不能够学会每个词汇的意思?要让机器学会每个词汇的意思,你可以想成是我们要找一个function,然后你把一个词汇丢进去,比如说你把Apple丢进这个function里面机器要输出告诉你说,这个词汇是什么意思。也许它用一个向量来表示这个词汇的,各种不同的特性不同的attribute。
但是现在假如是一个unsupervisedlearning的问题,你现在只有一大堆的文章,也就是你只有词汇,你只有function的输入,没有任何的输出,那到底要怎么解这个问题?或者是我们举另外一个unsupervisedlearning的例子,假设我们今天带机器去动物园,让它看一大堆的动物,它能不能在看了一大堆动物之后,它就学会自己创造一些动物。这个都是真实的例子,这是从IanGoodfellow投影片上载下来的仔细看了大量的动物以后,它就可以自己画一些狗出来。像它画的有,眼睛长在身上的狗还有乳牛狗这样子。像这样子的一个task,它也是个unsupervisedlearning的problem你的function的输入,不知道是甚么,可能是某一个code,它代表了要输出图片的特性。
那输出是一张图片你给机器看到的,只有非常大量的图片你只有function的output,没有function的input在这种情况下,机器怎么学会自己生成新的图片?这个是我们之后会再cover的问题接下来,我们刚才讲的是不同的learningscenario在machine要解的任务上,我们讲了regression的problem,讲了classification的problem还有一类的问题是你比较少听过的,这类的问题叫做structuredlearning甚么是structuredlearning呢?在structuredlearning里面,我们要机器输出的是一个有结构性的东西。刚才在regressionproblem里面机器输出几个数值;在分类的问题里面机器只是输出一个选项,它选一个选项;在structured类的problem里面,机器要输出的是一个复杂的物件。举例来说,在语音辨识里面,机器的输入是一个声音讯号,输出的是一个句子句子是由许多词汇拼凑而成,它是一个有结构性的object。或者是说在机器翻译里面,你说一句话,然后你输入中文,你希望机器翻译成英文,那机器的输出也是一个句子。
这也是有结构性的东西。或者是说,你今天要做的是人脸辨识,你给机器看一张图片,它会知道说,最左边是长门,中间是凉宫春日,最右边这个,这个是朝比奈实玖瑠。它要把这些东西标出来,这也是个structuredlearning的problem我知道多数人可能都听过regression,也听过classification,你可能不见得有听过structuredlearning这时候教授就会直接写说machinelearning就是两大类的问题:regression的problem还有classification的problem但是说machinelearning只有regression和classificationproblem就好像是告诉你说,这个是我们熟知的世界它有五大洲事实上这个只是真实的世界一个小部分而已。真正的世界其实是这个样子的。
这个是暗黑大陆这个是暗黑大陆,可是我们这辈子永远也到不了的structuredlearning就像是暗黑大陆一样这里面还有很多很多问题是人类无法探究的事实上最近有一个很潮的技术叫做GAN,它念起来更像是ㄍㄢ四声所以最近在路上常常会听到有人在讲ㄍㄢ四声他们其实是在讨论这个技术这个技术其实就是一个新的structuredlearning的方法这个我们之后也会提到。最后还有一个现在大家都耳熟能详的就是reinforcementlearning的problem所谓reinforcementlearning的意思是甚么呢?现在大家都或多或少知道,至少知道它是一个很潮的东西。这个reinforcementlearning其实是一个发展很久的问题,它绝对不是一个新的技术。最近会比较受到重视,一开始是因为DeepMind拿reinforcementlearning的技术去玩Akari的游戏在小游戏上可以痛扁人类他们现在很厉害会把paper发到Nature上去另外第二个大家都知道的例子,就是AlphaGo我们都知道AlphaGo里面有用到reinforcementlearning的技术那reinforcementlearning的技术是甚么呢?我们把它跟supervisedlearning的技术比较起来是这个样子在supervisedlearning的技术里面,我们会告诉机器正确答案是甚么。
举例来说,假设你要使用supervised的方法来训练一个聊天机器人那你的训练方式是这样,你给机器的data是这样:你就告诉机器说,现在使用者说hello你就说hi;现在使用者说byebye你就说goodbye所以机器有一个家教在它的旁边手把手的教它每件事情这个是supervisedlearning那reinforcementlearning是甚么呢?在reinforcementlearning里面,我们没有告诉机器正确的答案是甚么,机器所拥有的只有一个分数,就是它做的好还是不好。举例来说,我们现在要用reinforcementlearning的方法来训练一个聊天机器人的话,那它训练的方法会像是这样:你就把机器放在线上,让它跟随便进来的客人对话讲了半天后,最后人就勃然大怒,就把电话挂掉了机器就学到一件事情:刚才做错了它不知道哪边做错了它必须自己回去想一下说到底如何改进所以一开始就不应该打招唿吗?还是中间不应该骂脏话呢?它不知道,没有人告诉这件事它只知道自己做的不好,它要回去反省检讨看看到底是哪一步做的不好所以机器要在reinforcementlearning的情况下学习,它是需要比较强的intelligence。所以supervisedlearning就是learningfromteacher机器有老师,老师会告诉它每个问题的答案那reinforcementlearning是learningfromcritics它是从评价中去学习的它只知道自己做的好或不好,但它不知道自己哪里做得好,它不知道哪里做得不好,它也没有正确的答案reinforcementlearning会这么受到重视就是它比较符合我们人类真正学习的情境这是你在学校里面的学习,老师告诉你一个问题的答案;这是在真实社会中的学习,你没有一个正确的答案,你只有知道,你做的好还是做得不好如果机器可以做到reinforcementlearning,那它确实是比较intelligent。又或者我们用AlphaGo来当做例子下围棋来当作例子,supervisedlearning就是告诉机器说,看到这个盘势你就下5-5,看到这个盘势你就下3-3reinforcementlearning就是会跟对手互下下了好几百手后,最后赢了还知道说这一局棋下的不错但到底哪一步是关键的位置让它可以赢?它其实不知道,它只知道赢了,或者是输了我们知道说AlphaGo其实是用supervisedlearning加上reinforcementlearning的方法去学的机器先从棋谱,棋谱就是它的老师,有棋谱就可以做supervised的学习但棋谱没有很多,所以从棋谱做了supervised的学习以后接下来它会做reinforcementlearning让它学得更好但是reinforcementlearning需要一个对手你说让人来当对手太慢了,人又没有办法跟机器下很多盘棋所以机器的对手是另外一个机器大家都知道说AlphaGo就是自己跟自己下棋,然后不断的进步指的就是在reinforcementlearning的这个步骤,机器不是跟人下棋,它的对手是另外一个机器。
最后在这个图上大家注意一下不同的方块,我是用不同的颜色来表示。同样的颜色代表今天这个不同的方块指的是同一个类型的事情。这边的蓝色方块指的是scenario指的是学习的情境通常学习的情境是你自己没有办法控制的举例来说,为甚么我们要用reinforcementlearning就是我们没有data做supervisedlearning所以我们才做reinforcementlearning我知道reinforcementlearning听起来很潮,因为它用在AlphaGO里面所以现在甚么样的task你有用到reinforcementlearning你就可以到处乱讲说:”这个AlphaGoischip;AlphaGoisdialogue”其实就是用了reinforcementlearning的技术就说AlphaGois甚么东西所以就会变成好像要用reinforcementlearning比较潮所以之前比如说有学生去面试,那个公司就问,人家问他说你做甚么,他说我做的是一个supervisedlearning的task人家说:”你怎么不做reinforcementlearning呢?reinforcementlearning就是比较厉害啊”这个时候你就应该要呛爆他说:如果我今天可以做supervisedlearning的task,我其实就不应该做reinforcementlearning的taskreinforcementlearning是我们没有办法做supervisedlearning的task的时候,我们才做reinforcementlearning。不过你面试若这样讲,你大概就不会被录取就是了所以这些是不同的scenario不同的scenario通常不是你自己可以控制的看你手上有什么样的data,决定你有甚么样的scenario。
那红色的呢?红色的是指你的task,你要解的问题那你要解的这个问题,随着你要找的function的output不同有regression,有classification,有structuredlearningstructuredlearning你就想成不是regression,不是classification的问题就是structuredlearning,简单这样想就好了!所以今天在不同的情境下,你都可能要解这个task,解这个task如果今天在supervised类的情况下你有这些task,但是在semi-supervisedlearning,transferlearning,unsupervisedlearning和reinforcementlearning的情况下但是在semi-supervisedlearning,transferlearning,unsupervisedlearning和reinforcementlearning的情况下。你也都需要去解这些的task最后在这些task里面都有不同的model或者是不同的方法。这边用绿色的方块表示他这边的意思是说,同样的task,我们用不同的方法来解它。所以今天supervisedlearning它画得比较大块,这个里面的东西在这四个task里面也都有出现这个里面的东西在这四个task里面也都有出现,classification画得比较大块,它里面绿色的这些box,在这些红色的box里面都有出现。
本教程由mlln.cn站长整理和发布, 有需求请关注我的网站mlln.cn