深度学习之PyTorch实战计算机视觉
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.1 监督学习和无监督学习

监督学习(Supervised Learning)和无监督学习(Unsupervised Learning)是在机器学习中经常被提及的两个重要的学习方法,下面通过一个生活中的实例对这两个概率进行理解。

假如有一堆由苹果和梨混在一起组成的水果,需要设计一个机器对这堆水果按苹果和梨分类,但是这个机器现在并不知道苹果和梨是什么样的,所以我们首先要拿一堆苹果和梨的照片,告诉机器苹果和梨分别长什么样;经过多轮训练后,机器已经能够准确地对照片中的水果类别做出判断,并且对苹果和梨的特征形成自己的定义;之后我们让机器对这堆水果进行分类,看到这堆水果被准确地按类别分开。这就是一个监督学习的过程。

如果我们没有拿苹果和梨的照片对机器进行系统训练,机器也不知道苹果和梨长什么样,而是直接让机器对这一堆水果进行分类,则机器能够根据自己的“直觉”将这一堆水果准确地分成两类。这就是一个无监督学习的过程,说明机器自己总结出了苹果和梨的特征,该过程看起来更贴近我们所设想的人工智能技术。

3.1.1 监督学习

我们可以对监督学习做如下简单定义:提供一组输入数据和其对应的标签数据,然后搭建一个模型,让模型在通过训练后准确地找到输入数据和标签数据之间的最优映射关系,在输入新的数据后,模型能够通过之前学到的最优映射关系,快速地预测出这组新数据的标签。这就是一个监督学习的过程。

在实际应用中有两类问题使用监督学习的频次较高,这两类问题分别是回归问题和分类问题,如下所述。

1.回归问题

回归问题就是使用监督学习的方法,让我们搭建的模型在通过训练后建立起一个连续的线性映射关系,其重点如下:

◎ 通过提供数据训练模型,让模型得到映射关系并能对新的输入数据进行预测;

◎ 我们得到的映射模型是线性连续的对应关系。

下面通过图3-1来直观地看一个线性回归问题。

图3-1

在图3-1中提供的数据是两维的,其中X轴表示房屋的面积,Y轴表示房屋的价格,用叉号表示的单点是房价和面积相对应的数据。在该图中有一条弧形的曲线,这条曲线就是我们使用单点数据通过监督学习的方法最终拟合出来的线性映射模型。无论我们想要得到哪种房屋面积对应的价格,通过使用这个线性映射模型,都能很快地做出预测。这就是一个线性回归的完整过程。

线性回归的使用场景是我们已经获得一部分有对应关系的原始数据,并且问题的最终答案是得到一个连续的线性映射关系,其过程就是使用原始数据对建立的初始模型不断地进行训练,让模型不断拟合和修正,最后得到我们想要的线性模型,这个线性模型能够对我们之后输入的新数据准确地进行预测。

2.分类问题

分类问题就是让我们搭建的模型在通过监督学习之后建立起一个离散的映射关系。分类模型和回归问题在本质上有很大的不同,它依然需要使用提供的数据训练模型让模型得到映射关系,并能够对新的输入数据进行预测,不过最终得到的映射模型是一种离散的对应关系。如图3-2所示就是一个分类模型的实例。

图3-2

在图3-2中使用的依然是两个维度的数据,X轴表示肿瘤的尺寸大小,Y轴表示肿瘤的属性,即是良性肿瘤还是恶性肿瘤。因为Y轴只有两个离散的输出结果,即0和1,所以用0表示良性肿瘤,用1表示恶性肿瘤。我们通过监督学习的方法对已有的数据进行训练,最后得到一个分类模型,这个分类模型能够对我们输入的新数据进行分类,预测它们最有可能归属的类别,因为这个分类模型最终输出的结果只有两个,所以我们通常也把这种类型的分类模型叫作二分类模型。

分类模型的输出结果有时不仅仅有两个,也可以有多个,多分类问题与二分类问题相比会更复杂。我们也可以将刚才的实例改造成一个四分类问题,比如将肿瘤大小对应的最终输出结果改成4个:0对应良性肿瘤;1对应第1类肿瘤;2对应第2类肿瘤;3对应第3类肿瘤,这样就构造出了四分类模型。当然,我们也需要相应地调整用于模型训练的输入数据,因为现在的标签数据变成了4个,不做调整会导致模型不能被正常训练。依照四分类模型的构造方法,我们还能够构造出五分类模型甚至五分类以上的多分类模型。

3.1.2 无监督学习

我们可以对无监督学习做如下简单定义:提供一组没有任何标签的输入数据,将其在我们搭建好的模型中进行训练,对整个训练过程不做任何干涉,最后得到一个能够发现数据之间隐藏特征的映射模型,使用这个映射模型能够实现对新数据的分类,这就是一个无监督学习的过程。无监督学习主要依靠模型自己寻找数据中隐藏的规律和特征,人工参与的成分远远少于监督学习的过程。如图3-3所示为使用监督学习模型和使用无监督学习模型完成数据分类的效果。

图3-3

在图3-3中,左图显示的是监督学习中的一个二分类模型,因为每个数据都有自己唯一对应的标签,这个标签在图中体现为叉号或者圆点;右图显示的就是无监督学习的过程,虽然数据也被最终分成了两类,但没有相应的数据标签,统一使用圆点表示,这就像实现了将具有相似关系的数据聚集在一起,所以使用无监督学习实现分类的算法又叫作聚类。在无监督训练的整个过程中,我们需要做的仅仅是将训练数据提供给我们的无监督模型,让它自己挖掘数据中的特征和关系。

下面看一个离我们的实际生活很近的聚类的应用实例。如图3-4所示,假如我们在一个有大量深度学习相关文章的网站检索“深度学习”,就会显示很多带有“深度学习”关键字的相关网页,但是只要仔细观察就会发现,这些网页被大致分为几个主要的类别,比如关于深度学习的理论、算法、硬件、新闻等。其实这就是一个聚类应用,可以将这个网站中的检索工具看作一个已经训练好的无监督学习模型,在我们对检索工具输入指令后,它就会按照我们的要求将所有的页面搜索出来,但最后呈现在我们眼前的不会是乱糟糟的一堆链接,而是完成聚类后的几大类网址的主链接,这也极大提升了用户体验。

图3-4

这个检索工具在极短的时间内主要进行了如下三步。

(1)首先,提取网站中全部有关深度学习的网页。

(2)然后,按照检索的关键字或关键词完成这些网页的聚类并为每个类别设置一个主链接。

(3)最后,将主链接返回到用户的浏览器中进行显示。

3.1.3 小结

通过总结以上内容,我们发现监督学习和无监督学习的主要区别如下。

◎ 我们通过监督学习能够按照指定的训练数据搭建出想要的模型,但这个过程需要我们投入大量的精力处理原始数据,也因为我们的紧密参与,所以最后得到的模型更符合设计者的需求和初衷。

◎ 我们通过无监督学习过程搭建的训练模型能够自己寻找数据之间隐藏的特征和关系,更具有创造性,有时还能够挖掘到数据之间让我们意想不到的映射关系,不过最后的结果也可能会向不好的方向发展。

所以监督学习和无监督学习各有利弊,用好这两种方法对于我们挖掘数据的特征和搭建强泛化能力模型是必不可少的。

除了上面提到的监督学习和无监督学习方法,在实际应用中还有半监督学习和弱监督学习等更具创新性的方法出现,例如半监督学习结合了监督学习和无监督学习各自的优点,是一种更先进的方法。所以我们需要深刻理解各种学习方法的优缺点,只有这样才能知道在每个应用场景中具体使用哪种学习方法才能更好地解决问题。