1.3 深度学习的不同种类
深度学习一般可以分为三类:监督学习、无监督学习和强化学习。在本节中,我们将逐个讲解。
1.3.1 监督学习
监督学习,顾名思义就是需要人工参与,将数据预先打好标签后再进行训练的学习方式。我们以汽车图片的识别为例来介绍这个过程。
1.数据集的创建和分类
假设有许多汽车和飞机的图片集(数据集),我们需要先人工标识出所有图片对应的种类,然后进行训练。为了验证算法的正确性和避免过拟合,我们将这些图片分为两部分,一部分(训练数据)用来训练算法,另一部分(验证数据)用来验证算法的识别准确度。
从数学的角度看,我们要在深度网络中找到一个合适的分类函数,函数的入参是图片,即一个矩阵,当图片是汽车时输出1,否则输出0。这个步骤我们叫作分类任务,这里为了简化问题,我们输出的结果为是或否。一般来说,输出结果也可能是一组值,例如,图片是汽车的概率(一个0~1的值),这个过程我们称为回归。
2.训练
一个简化的训练过程是给定一个输出(一般包含多个参数),然后通过一个函数计算出一组数值,再通过一个规则得出一个输出节点。整个过程从左到右逐层计算,当遇到复杂问题时我们通常会通过添加层数来解决。
虽然得出了结果,但这个结果并不一定是正确的。因此需要将正确的结果反馈给网络来进行修正,此时可以使用一个称为成本函数(也称为目标函数、效用函数或适应度函数)的函数来量化这个偏差,然后将这个偏差从右到左反向传播给网络来对参数进行修正,这个过程称为反向传播。
针对每个训练项目重复训练动作,尽量最小化成本函数,即可达到我们理想的效果。数学中有很多模型可以达到这个效果,但一般最常用的是一个称为梯度下降的方法,下文会涉及具体的细节。
3.验证
当训练完成后,我们需要检验刚才的结果,此时会用到另一部分数据集,即验证数据。根据验证出来的结果,我们可能需要调整刚才训练用的模型,如增加更多的参数、层数,使成本函数的结果更有效地反向传播等。然后重复训练和验证过程,这个过程可能会重复很多次。
4.使用
当模型达到预期标准后,我们就可以将其部署到应用中了。
从上述内容可以看出,监督学习对数据集的要求比较高,并且一般需要大量的数据集才能训练出一个准确的模型。虽然训练模型的代价可能比较大,但是训练模型的结果是十分有价值的。例如,在医学中识别一个肿瘤是良性的还是恶性的就是一个很有价值的预测,我们为此付出的代价是值得的。
1.3.2 无监督学习
无监督学习不需要人为地为数据加上标签,但可以产生预期结果。无监督学习能自动分析数据尝试找出其中的模式,因此相较于监督学习,无监督学习具有更好的适应性和更广的应用场景,但也具有更高的难度。
如果你是一家购物网站的负责人,如何快速准确地发掘最近客户非常感兴趣的商品将是你非常关心的事情。如果有一个算法能自动分析订单情况,找出客户感兴趣的商品分类,我想这一定会使你非常开心。
我们经常在工业化场景中使用的无监督学习算法有以下几种。
○ 自编码(Autoencoding)。
○ 主成分分析(Principal Components Analysis)。
○ 随机森林(Random Forests)。
○ K均值聚类(K-means Clustering)。
最近,无监督学习非常有潜力的发展方向是Ian Goodfellow提出的生成对抗网络。其原理是,创建两个神经网络并赋予它们不同的职责,一个用来生产欺骗对方的数据集,另外一个用来识别数据的真假。这种想法产生了一些惊人的成果,如可以通过字符串生成逼真图片的 AI程序。
不过无监督学习也不是万能的,比如我们在进行分类时,被分类的对象之间必须是有内在联系的,不能是毫无关联的。另外需要有一定的模式可以用来区分这些对象。如果不满足这些条件,无监督学习也是无能为力的。
通过上面的描述我们可以了解到监督学习和无监督学习各有自己的优势和劣势。那么是否可以将这两种结合起来呢?基于此,半监督学习应运而生,半监督学习可以在相对于监督学习拥有更少量的标签数据集的情况下得到符合预期的训练结果,这样成本更低。这里有个例子可以说明这种情况,之前我们拥有一个自动分类的算法,在监督学习下每个类别大致需要1360个标签,而改成半监督学习之后每个类别需要的标签减少到30个。不仅所需标签的数量减少,能识别的类别也从之前的20个到扩展到110个。
因此在数据标签较少的情况下,即使不知道结果,也能预测可能出现的值和概率。
1.3.3 强化学习
强化学习类似于无监督学习,预测结果时也无须人为地为数据打上标签。不同之处是,强化学习在特定数据集的情况下,通过选择一系列的活动,学习获取最大化收益。所以这里比较重要的就是如何最大化预期目标(回报函数)。
而为了更深入地理解这个问题,同时解决这个问题,我们需要知道什么是学习。学习的本质,用一个成语可概括为举一反三。
以高考为例,高考的题目在上考场前我们未必做过,但在高中三年我们做过很多题目,懂解题方法,因此在考场上面对陌生问题也可以算出答案。机器学习的思路与此类似:利用一些训练数据(已经做过的题),使机器能够通过学习掌握数据规律(解题方法),从而分析未知数据(高考的题目)。
最简单也最普遍的一类机器学习算法就是分类。对于分类,输入的训练数据有特征、有标签。所谓的学习,其本质就是找到特征和标签之间的关系。因此当有特征无标签的未知数据输入时,我们就可以通过已有的关系得到未知数据的标签。
在上述分类过程中,如果所有训练数据都有标签,则为监督学习。如果所有训练数据没有标签,则为无监督学习,即聚类。但需要注意的一点是,监督学习算法并非全是分类,还有回归。
目前分类的效果普遍还是不错的,但是相对来讲,聚类就有些惨不忍睹了。本质原因就是,无监督学习本身的特点使其难以得到如分类一样近乎完美的结果。这也正如我们做题一样,答案(标签)是非常重要的,假设两个完全相同的人同时进入高中,一个正常学习,另一个做的所有题目都没有答案,那么高考时第一个人会比第二个人发挥得好。
这时各位可能要问,既然分类如此好,聚类如此不靠谱,那为何我们还要容忍聚类的存在?因为在实际应用中,标签的获取常常需要极大的人工工作量,有时甚至非常困难。困难到什么程度呢?例如,在自然语言处理(NLP)中,Penn Chinese Treebank组织在两年里只完成了4000句话的标签标记。
这时有人可能会想,难道监督学习和无监督学习就是非黑即白的关系吗?有没有灰呢?灰是存在的。所谓的灰,也就是黑和白的中间地带,即半监督学习。对于半监督学习,其一部分训练数据是有标签的,另一部分训练数据是没有标签的,而没有标签的训练数据的数量常常大于有标签的训练数据的数量(这也是符合现实情况的)。隐藏在半监督学习下的基本规律是:数据的分布不是完全随机的,通过一些有标签的训练数据的局部特征,以及更多没有标签的训练数据的整体分布,就能得到可以接受甚至非常好的分类结果。
综上所述,深度学习的大致分类如表1-1所示。
表1-1 深度学习的大致分类