其他分享
首页 > 其他分享> > 李宏毅深度学习笔记P1、P2

李宏毅深度学习笔记P1、P2

作者:互联网

李宏毅深度学习笔记

李宏毅机器学习P1、P2

机器学习介绍

在这里插入图片描述

人工智能起源于二十世纪五十年代,目标是希望机器可以跟人一样聪明。二十世纪八十年代,出现了机器学习的方法。机器学习,顾名思义,就是让机器具有学习的能力。

人工智能是我们想要达成的目标,而机器学习是达成目标的手段,机器学习包含的方法之一就是深度学习。

在没有机器学习之前,机器的智能都是人类帮它设定好的,也就是hand-crafted rules。使用hand-crafted rules的坏处是没办法考虑到所有的可能性,非常僵化。用hand-crafted rules创造出来的machine,它永远没有办法超过它的创造者人类。人类想不到东西,就没办法写规则,没有写规则,机器就不知道要怎么办。所以如果一个机器,它只能够按照人类所设定好的hand-crafted rules,它整个行为都是被规定好的,没有办法freestyle。如果是这样的话,它就没有办法超越创造他的人类。

在这里插入图片描述

机器学习的目标是寻找一个function,要让机器具有一个能力,这种能力是根据你提供给他的资料,它去寻找出我们要寻找的function。
在这里插入图片描述

在语音辨识这个问题里面,我们要找一个function,它的输入是声音讯号,他的输出是语音辨识的文字。这个function非常非常的复杂,有人会想说我来用一些写规则的方式,读很多语言学文献,然后写一堆规则,然后做语音辨识。这件事情,60年代就有人做,但到现在都还没有做出来。语音辨识太过复杂,这个function太过的复杂,不是人类所可以写出来,这是可以想象的。所以我们需要凭借的机器的力量,帮我们把这个function找出来。

假设你要做影像辨识,那就是找一个function,输入一张图片,然后输出图片里面有什么样的东西。 或者是大家都一直在说的Alpha GO,如果你要做一个可以下围棋machine时,其实你需要的也就是找一个function。这个function的输入是围棋上十九乘十九的棋盘。告诉机器在十九乘十九的棋盘上,哪些位置有黑子,哪些位置有白子。然后机器就会告诉你,接下来下一步应该落子在哪。或者是你要做一个聊天机器人,那你需要的是一个function,这个function的输入就是使用者的input,它的输出就是机器的回应。
在这里插入图片描述以影像辨识为例,我们找个function输入一张图片,它告诉我们这个图片里面有什么样的东西。

在做这件事时,你的起手事是你要先准备一个function set(集合),这个function里面有成千上万的function。举例来说,这个function在里面,有一个f1,你给它看一只猫,它就告诉你输出猫,看一只狗就输出狗。有一个function f2它很怪,你给它看猫,它说是猴子;你给他看狗,它说是蛇。你要准备一个function set,这个function set里面有成千上万的function。

总之,我们先假设你手上有一个function set,这个function set就叫做model(模型)。

有了这个function set,接下来机器要做的事情是:它有一些训练的资料,这些训练资料告诉机器说一个好的function,它的输入输出应该长什么样子,有什么样关系。你告诉机器说呢,现在在这个影像辨识的问题里面,如果看到这个猴子,看到这个猴子图也要输出猴子,看到这个猫的图也要输出猫,看到这个狗的图,就要输出狗,这样才是对的。只有这些训练资料,你拿出一个function,机器就可以判断说,这个function是好的还是不好的。

在这里插入图片描述

机器可以根据训练资料判断一个function是好的,还是不好的。举例来说:在这个例子里面显然f1 好,比较符合training data的叙述,比较符合我们的知识。所以f1看起来是比较好的。f2看起来是一个荒谬的function。这个task叫做supervised learning。
在这里插入图片描述

如果你告诉机器input和output这就叫做supervised learning,之后我们也会讲到其他不同的学习场景。现在机器有办法决定一个function的好坏。但光能够决定一个function的好坏是不够的,因为在你的function set里面,他有成千上万的function,它有会无穷无尽的function,所以我们需要一个有效率的演算法,有效率的演算法可以从function的set里面挑出最好的function。一个一个衡量function的好坏太花时间,实际上做不到。所以我们需要有一个好的演算法,从function set里面挑出一个最好的的function,这个最好的function将它记为 f ∗ f^* f∗
在这里插入图片描述

找到 f ∗ f^* f∗ 之后,我们希望用它应用到一些场景中,比如:影像辨识,输入一张在机器没有看过的猫,然后希望输出也是猫。你可能会说:机器在学习时没有看到这只猫,那咋样知道在测试时找到的最好function f ∗ f^* f∗可以正确辨识这只猫呢?这就是machine learning里面非常重要的问题:机器有举一反三的能力。
在这里插入图片描述左边这个部分叫training,就是学习的过程;右边这个部分叫做testing,学好以后你就可以拿它做应用。所以在整个machine learning framework整个过程分成了三个步骤。第一个步骤就是找一个function,第二个步骤让machine可以衡量一个function是好还是不好,第三个步骤是让machine有一个自动的方法,有一个好演算法可以挑出最好的function。
在这里插入图片描述

机器学习相关的技术

在这里插入图片描述

监督学习

Regression是一种machine learning的task,当我们说:我们要做regression时的意思是,machine找到的function,它的输出是一个scalar,这个叫做regression。举例来说,在作业一里面,我们会要你做PM2.5的预测(比如说预测明天上午的PM2.5) ,也就是说你要找一个function,这个function的输出是未来某一个时间PM2.5的一个数值,这个是一个regression的问题。

接下来讲的是Classification(分类)的问题。Regression和Classification的差别就是我们要机器输出的东西的类型是不一样。在Regression中机器输出的是一个数值,在Classification里面机器输出的是类别。假设Classification问题分成两种,一种叫做二分类输出的是是或否(Yes or No);另一类叫做多分类(Multi-class),在Multi-class中是让机器做一个选择题,等于是给他数个选项,每个选项都是一个类别,让他从数个类别里选择正确的类别。

举例来说,二分类可以鉴别垃圾邮件,将其放到垃圾箱。那怎么做到这件事呢?其实就是需要一个function,它的输入是一个邮件,输出为邮件是否为垃圾邮件。
在这里插入图片描述你要训练这样的function很简单,给他一大堆的Data并告诉它,现在输入这封邮件,你应该说是垃圾邮件,输入这封邮件,应该说它不是垃圾邮件。你给他够多的这种资料去学,它就可以自动找出一个可以侦测垃圾邮件的function。

多分类的举一个文章分类的例子,现在网络上有非常非非常多的新闻,也许没有人会把所有的新闻看完,但希望机器自动帮一把新闻做分类。怎么做呢?你需要的是一个function,它的输入是一则新闻,输出是新闻属于哪个类别,你要做的事情就是解这个选择题。

刚才讲的都是让machine去解的任务,接下来要讲的是在解任务的过程中第一步就是要选择function set,选不同的function set就是选不同的model。Model有很多种,最简单的就是线性模型,但我们会花很多时间在非线性的模型上。在非线性的模型中最耳熟能详的就是Deep learning。

用Deep learning的技术也可以让机器下围棋, 下围棋这个task 其实就是一个分类的问题。对分类问题我们需要一个很复杂的function,输入是一个棋盘的格子,输出就是下一步应该落子的位置。我们知道一个棋盘上有十九乘十九的位置可以落子,所以今天下围棋这件事情,你就可以把它想成是一个十九乘十九个类别的分类问题,或者是你可以把它想成是一个有十九乘十九个选项的选择题。

除了deep learning 以外还有很多machine learning的model也是非线性的模型,比如SVM。

半监督学习

假设你先想让机器鉴别猫狗的不同。你想做一个分类器让它告诉你,图片上是猫还是狗。你有少量的猫和狗的labelled data,但是同时你又有大量的Unlabeled data,但是你没有力气去告诉机器说哪些是猫哪些是狗。在半监督学习的技术中,这些没有label的data,他可能也是对学习有帮助。这个我们之后会讲为什么这些没有label的data对学习会有帮助。

迁移学习

另外一个减少data用量的方向是迁移学习。

迁移学习的意思是:假设我们要做猫和狗的分类问题,我们也一样,只有少量的有label的data。但是我们现在有大量的data,这些大量的data中可能有label也可能没有label。但是他跟我们现在要考虑的问题是没有什么特别的关系的,我们要分辨的是猫和狗的不同,但是这边有一大堆其他动物的图片还是动画图片(凉宫春日,御坂美琴)你有这一大堆不相干的图片,它到底可以带来什么帮助。这个就是迁移学习要讲的问题。

无监督学习
更加进阶的就是无监督学习,我们希望机器可以学到无师自通。

如果在完全没有任何label的情况下,到底机器可以学到什么样的事情。举例来说,如果我们给机器看大量的文章(在去网络上收集站文章很容易,网络上随便爬就可以)让机器看过大量的文章以后,它到底可以学到什么事情。

它能不能够学会每一个词汇的意思,要让机器学会每一个词汇的意思,你可以想成是我们找一个function,然后你把一个词汇丢进去。比如说你把“apple”丢进这个function里面,机器要输出告诉你说这个词会是什么意思。也许他用一个向量来表示这个词汇的各种不同的特性。但现在讲是无监督学习的问题,你现在只有一大堆的文章,也就是说你只有词汇,你只有function的输入,没有任何的输出。那你到底要怎么解决这个问题。
我们举另外一个无监督学习的例子:假设我们今天带机器去动物园让它看一大堆的动物,它能不能够在看了一大堆动物以后,它就学会自己创造一些动物。那这个都是真实例子。仔细看了大量的动物以后,它就可以自己的画一些狗出来。有眼睛长在身上的狗、还有乳牛狗等等。

这个Task也是一个无监督学习的问题,这个function的输入不知道是什么,可能是某一个code代表要输出图片的特性,输出是一张图片。你给机器看到的只有非常大量的图片,只有function的input,没有output。机器要咋样生成新的图片,这是我们后面要解决的问题。

监督学习中的结构化学习

structured learning 中让机器输出的是要有结构性的,举例来说:在语音辨识里面,机器输入是声音讯号,输出是一个句子。句子是要很多词汇拼凑完成。它是一个有结构性的object。或者是说在机器翻译里面你说一句话,你输入中文希望机器翻成英文,它的输出也是有结构性的。或者你今天要做的是人脸辨识,来给机器看张图片,它会知道说最左边是长门,中间是凉宫春日,右边是宝玖瑠。然后机器要把这些东西标出来,这也是一个structure 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需要一个对手,如果使用人当对手就会很让费时间,所以机器的对手是另外一个机器。

同样的颜色不同的方块是同一个类型的,这边的蓝色的方块,指的是学习的情景,通常学习的情景是你没有办法控制的。比如,因为我们没有data做监督学习,所以我们才做reinforcement learning。现在因为Alpha Go比较火,所以Alpha Go中用到的reinforcement learning会被认为比较潮。所以说有学生去面试,说明自己是做监督学习的,就会被质疑为什么不做reinforcement learning。那这个时候你就应该和他说,如果我今天可以监督学习,其实就不应该做reinforcement learning。reinforcement learning就是我们没有办法做监督学习的时候,我们才做reinforcement learning。

红色的是指你的task,你要解的问题,你要解的这个问题随着你用的方程的不同,有regression、有classification、有structured。所以在不同的情境下,都有可能要解这个task。

最后,在这些不同task里面有不同的model,用绿色的方块表示。

为什么要学习机器学习
AI工程师要为机器挑选合适的model和loss function,不同的model和loss function适合解决不同的问题。学习得到的模型不一定能解决问题。有些模型比如深度学习,模型的最佳化比较困难,需要有经验的AI工程师来处理。

标签:P2,function,P1,机器,一个,李宏毅,reinforcement,学习,learning
来源: https://blog.csdn.net/qq_36046307/article/details/118691514