Learning Map

版权声明:未经同意,严禁转载 https://blog.csdn.net/pengchengliu/article/details/85164732

//李宏毅视频官网:http://speech.ee.ntu.edu.tw/~tlkagk/courses.html                                                    点击此处返回总目录

//邱锡鹏《神经网络与深度学习》官网:https://nndl.github.io

-------------------------------------------------------------------------------------------------------------------------------

接下来我们要讲一下,在这门课里面,我们可以学到的和machine learning相关的技术。这个是这学期的learning map,看起来是有点复杂的。我们一块一块来解释。

                               

-------------------------------------------------------------------------------------------------------------------------------

我们先从图的左上角开始。图的左上角是Regression。什么是Regression,Regression是一种machine learning的task。当我们要做Regression的时候,意思是说,我们的machine要找出来的function,它的输出是一个scalar,是一个数值,是一个real number。

举例来说,在作业1里面,我们会做PM2.5的预测。也就是说要找一个function,这个function的输出呢,是未来某一个时间,比如说明天上午的PM2.5。PM2.5是一个数值,是一个number,所以这是一个Regression的problem。当然这个machine要预测明天上午的PM2.5,他没有办法凭空猜出来嘛,显然要给他一些额外的信息。你给他的信息呢,可能是今天上午的PM2.5,明天上午的PM2.5等等。

                                 

那要训练这种machine,如之前machine learning的framework中讲的,要给他一些训练数据。什么样的训练数据,你就告诉他说,我们根据政府的open data 所收集的数据,9月1号上午的PM2.5为63,9月2号的为65,9月3号是这样子。一个好的function输入是9月1号和2号的PM2.5,应该输出9月3号的PM2.5;给他9月12号的,9月13号的,应该输出9月14号的。当收集够多的这种data,就可以做气象预报的系统。

                        

-------------------------------------------------------------------------------------------------------------------------------

刚才讲的是Regression,接下来要将的是classification。

                                        

Regression和classification的差别就是,我们让机器输出的东西的类型是不一样的。在Regression里面,机器输出的是一个数值,在classification里面,机器输出的是个类别。

classification问题又分成两种:一种是binary classification,二元的分类;一种是Multi-class classification。在二元分类里面,我们要让机器输出的是是或否,yes或no。在multi-class classification里面,机器要做的事情是一个选择题,你等于是给他数个选项,每一个选项就是一个类别,它从所输的类别里面选择正确的类别。

                                  

我们分别为binary classification和multi-class classification举一个例子:

spam filtering(垃圾邮件过滤),自动检测出垃圾邮件,帮你把他放到垃圾文件夹里面。它是怎么做到这件事的呢?其实我们需要的就是一个function,这个function的输入就是一封email,怎么让function吃一个email当做输入,是要你自己想想看的,我们未来再讲。这个function吃一个email当作输入,它的输出就是这封邮件是垃圾邮件还是不是垃圾邮件。

要训练这样的function怎么做,很简单,你就给他一大堆的data,告诉他说,现在输入这封邮件,应该说它是垃圾邮件;输入这封邮件,应该说它不是垃圾邮件。给他够多的资料去学,它就能找出一个侦测垃圾邮件的function。

                                 

Multi-class classification,我们举一个文档分类的例子。

现在网络上有非常非常多的新闻,没有人可以把所有的新闻看完,希望机器自动地把新闻做分类。怎么做呢?你需要的是一个function,他的输入是一则新闻,他的输出就是新闻属于哪一个类别。你可以想象说,每一个类别就是一个选项,你要做的事情就是解这个选择题。你要训练这种机器,你就告诉他说,你就准备很多训练资料,告诉他说这篇文章叫做体育,这边文章是政治的,这篇文章是财经的。然后给他新的文章,希望他就会给你正确的结果。

                               

-------------------------------------------------------------------------------------------------------------------------------

刚才讲的都是你要machine learning解的任务。

接下来要讲的是,在解任务的过程中,第一步就是要选一个function set,选不同function set,会得到不同的结果。选不同的function set就是选不同的model。model有很多种,举例来说,最简单的就是Linear model。我们回花很多时间focus在none linear model上。

                               

在none-linear model里面,其中大家最耳熟能详的,就是deep learning。

所谓的deep learning呢,我们会在以后细讲deep learning的内容。今天你只需要知道,在做deep learning的时候,我们的function是特别复杂的,所以呢,它可以做特别复杂的事。举例来说,它可以做图像识别。这个特别复杂的function可以描述pixel和它的class之间的关系。你要找这样的function,你就需要准备一些训练数据给机器学就可以了。

                         

                             

用deep learning的技术,你也可以让机器学会下围棋。下棋这个task其实就是一个分类的问题,这是这个分类的问题,我们需要一个很负责的function。他的输入是一个棋盘的盘式,他的输出呢就是下一步应该落子的位置。我们知道,棋盘上有19*19个位置。所以下围棋这件事情,你就可以把它想成是一个19*19的类别的分类问题,或者是你可以把它想成是有19*19个选项的选择题。那要怎么训练机器让它学会下围棋呢?你要收集训练数据,告诉机器说,现在这个function的输入输出分别应该是什么。看到什么样的盘式,应该有什么样的output。

那怎么收集这种资料呢?可以从人类过去下的棋谱里面收集这样的资料,举例来说,你收集了近藤光和社清春下的那一盘棋的棋谱。在那盘棋里面呢,首先社清春出手下5之五,然后大家就非常的讶异;然后近藤光又下天元,大家就更加讶异;然后社清春第三手再下五之5,然后大家就非常非常地讶异。

                                              

你有了这样一个棋谱以后呢,你就告诉machine说,如果棋盘上有人落子在5之五,那下一步你就落子在天元。如果现在在5之五和天元都已经有子了,那你就落在另一个五之5的位置。然后呢,你给他更多的棋谱,他就学会怎么下围棋了。

                                 

-------------------------------------------------------------------------------------------------------------------------------

除了deep learning 以外呢,还有很多其他的machine learning的model也是non-linear的。比如SVM、decision tree、K-NN等。

                              

                                 

-------------------------------------------------------------------------------------------------------------------------------

好,刚才我们讲的都是supervised learning,它的问题是,我们需要大量的training data,这些training data 告诉我们说,我们要找的那个function,它的output和input间有什么样的关系。这个function的output我们常叫做label。所以常会听到说,机器学习要大量的label,指的就是说,如果我们用的是supervised learning的技术,我们是要让机器在supervised learning的情景下做学习,我们需要告诉机器function的input和output是什么。这个output往往没有办法用很自然的方法取得,必须要凭着人工的力量把它标注出来,这些function的output叫做label,要找到这种label data ,往往需要很大量的effort。

那有没有办法减少label需要的量呢?是有办法的。举例来说,semi-supervised learning。

                                   

semi-supervised learning是什么呢?举例来说,假设想要鉴别猫和狗的不同。也就是做一个分类器,输入一张图片,然后告诉你是猫还是狗。你有少量的猫和狗的 label data,同时又有大量的unlabel data,有一大堆猫和狗的图片,但是没有力气去告诉机器哪些是猫,哪些是狗。在semi-supervised learning技术里面,这些没有label的data,可能对学习也是有帮助的。我们之后会讲。

                           

-------------------------------------------------------------------------------------------------------------------------------

另外一个减少data用量的方式是Transfer learning。

                      

所谓的transfer  learning的意思是说,假设同样做猫和狗的分类问题,我们也一样有少量的label data,但是我们现在有大量的data,这些的大量的data可能有label,可能没有label,而且它跟我们现在要考虑的问题是没有什么特别的关系的。我们要分辨猫和狗的不同,但是这里有一大堆其他的图片。一大堆不相干的图片,会带来什么样的帮助,这个就是transfer learning要讲的问题。

-------------------------------------------------------------------------------------------------------------------------------

更进阶的是unsperviesd learning。

                         

在unsupervised learning 里面,顾名思义,我们就是让机器学到无师自通。如果在完全没有label的情况下,到底机器可以学到什么样的事情。举例来说,如果让机器学大量的文章,到网络上搜集文章很容易,八卦嘛,随便爬就有了。

                          

让机器看过大量的文章以后,他到底可以学到什么样的事情。它到底能不能学会每一个词汇的意思。

要让机器学会每一个词汇的意思,可以想成我们要找一个function,把一个词汇丢进去,比如把Apple丢进这个function里面,然后机器会输出这个词汇是什么意思。也许它用一个向量来表示这个词汇的各种不同的特性。假如说现在是UNsupervised的问题,你现在只有一大推的文章,也就说只有function的输入,没有任何的输出,那你到底要怎么解这个问题。

                             

或者我们举另外一个unsupervised learning 的例子,假设我们今天带机器去动物园,让他看一大堆的动物,它能不能再看了一大堆的动物以后,他就学会自己创造一些动物。

                            

看了大量的动物以后呢,就可以画一些狗出来,画的有眼睛长在身上的狗,乳牛狗等。

像这样的task也是unsupervised learning的problem,你的function的输入呢,不知道是什么,可能是某一个code代表着要要输出的图片的特性,输出是一张图片。你让机器看到的是非常大量的图片。只有function的output,没有function的input,在这种情况下,机器怎么学会自己生成新的图片。这个是我们之后会在cover的问题。

-------------------------------------------------------------------------------------------------------------------------------

在machine要解的任务上,讲了Regression 和classification。其实还有一类问题是比较少听过的。叫做,structured learning。

                                   

在structured learning 里面,我们要让机器输出的是,一个有结构性的东西。在regression里面,机器输出的是数值;在classification里面,机器输出的是一个选项。在structured learning里面,机器输出的是一个复杂的物件。举例来说,在声音识别里面,机器的输入是声音信号,输出是一个句子,句子是由很多词汇拼凑而成,是一个有结构性的object。

                           

或者说,在机器翻译里面,你输入中文,要让机器翻译成英文。

                         

或者说,要做人脸识别,给机器看一张图片,机器会说左边是谁,中间是谁,右边是谁。它要把这些人标出来。

                             

-------------------------------------------------------------------------------------------------------------------------------

最后还有一个大家都耳熟能详的,就是reinforcement learning problem。

                          

所谓的reinforcement learning 的problem是什么呢?

我们把它和supervised learning的技术比较起来的话,是这样。

                  

在supervised learning中,我们会告诉机器正确答案是什么。举例来说,你要用supervised 的方法来训练一个聊天机器人,那你的训练方式是这样,你给机器的data是这样。你就告诉机器说,现在使用者说了hello,你就说hi;现在使用者说了byebye,你就说good bye。

所以机器有一个人当它的家教,在手把手地教他每件事情,这个是supervised learning。

那reinforcement learning是什么呢?在reinforcement learning里面,我们没有告诉机器正确的答案是什么。机器所拥有的只有一个分数,就是它做的好还是不好。举例来说,我们要用reinforcement learning的方法来训练一个聊天机器人的话,训练方法会是这样。你就把机器放到线上,让它跟随便进来的客人对话,讲了半天以后呢,客人就勃然大怒就把电话挂掉了。机器就学到一件事情,就是刚才做错了。但是它不知道那里做错了。它要回去自己想一下是哪里做错了,是一开始就不应该大招呼么还是中间不应该说脏话之类的。没有人告诉他这件事情,他只知道自己做的不好,他要回去自己检讨反省哪里做的不好。所以机器要在reinforcement learning的情况下学习,他要很强的Intelligence。

所以,supervised learning就是learning from teacher,机器有老师,老师会告诉他每个问题的答案。而reinforcement learning 是learning from critics,他是从评价中去学习的,他只知道他做得好还是不好,但是他不知道哪里做得好,哪里做的不好,他也没有正确答案。但是reinforcement learning这么收到重视,就是它比较符合我们人类真正的学习的情景。supervised learning是在学校里面的学习,reinforcement learning是在真实社会中的学习,你没有正确答案,你只知道做得好还是做的不好。如果机器可以做到reinforcement learning,那它确实是比较Intelligent。

或者我们用下围棋来当做例子,supervised learning 就是告诉机器说看到这个盘式就下“5-5”,看到这个盘式就下“3-3”。

reinforcement learning就是,机器和对手互下,下了好几百手以后,最后赢了。他就知道说,这一局下得不错。但是到底哪一个步是一个关键的位置可以让他赢,他其实不知道,他只知道赢了或者是输了。

                        

我们知道alpha go 是用supervised learning 加上reinforcement learning的方法学的。机器先从棋谱学习,但是棋谱没有那么多,所以

接下来呢它会做reinforcement learning,他会学的更好。但是reinforcement learning需要一个对手,而人又太慢了,所以机器的对手是另外一个机器。大家都知道alpha  go 是自己跟自己下棋,然后不断地进步。

-------------------------------------------------------------------------------------------------------------------------------

最后在这个图上,大家注意一下,不同的方块用不同的颜色来表示。同样的颜色代表同一个类型。蓝色的方块指的是scenario,指的是学习的情景。通常学习的情景是没有办法控制的。举例来说,为什么我们要reinforcement learning,就是因为什么没有data做supervised learning,所以我们才做reinforcement learning。大家说reinforcement learning现在听起来很潮,因为用在alpha go里面。 其实,如果能做supervised learning,就不应该做reinforcement learning。有什么样的data 决定用什么样的scenario。红色的是指你的task,是你解的问题,你要解的问题随着output的不同,有Regression,有classification,有structured learning。structured learning可以想成,不是Regression,不是classification的问题就是structured learning。

                             

在不同的scenario下都可能要解这个task。也就是在semi-supervised、transfer learning、unsupervised learning 、reinforcement learning下也需要解这三种task。

最后在这些task里面,都有不同的model或者是不同的方法。用绿色的方块来表示。意思是同样的task可以用不同的方法来解。

今天,classification画的计较大块,其实里面绿色的方块在另外两块中叶都有出现。

          supervised learning画的比较大块,其实里面红色的内容在另外四块也都有出现。

          

 

猜你喜欢

转载自blog.csdn.net/pengchengliu/article/details/85164732
Map
今日推荐