PDF 物理页索引 350
文件中的第 351 页 · 印刷页码:334
首先,我们来尝试AdaGrad:
结果如图10-27、图10-28所示。
现在,我们来尝试Adam:
人工智能与大数据技术导论
334
PDF 物理页索引 351
文件中的第 352 页 · 印刷页码:335
结果如图10-29、图10-30所示。
并输出损失指标的图表:
第10章 神经网络
335
PDF 物理页索引 352
文件中的第 353 页 · 印刷页码:336
结果如图10-31所示。
我们还可以尝试对各种特征使用其他标准化方法,以进一步提高性能。如果仔细查看转换后数据的汇总统计信息,可能会注意到,对某些特征进行线性缩放会使其聚集到接近-1的位置。例如,很多特征的中位数约为-0.8,而不是0.0。
人工智能与大数据技术导论
336
PDF 物理页索引 353
文件中的第 354 页 · 印刷页码:337
通过选择其他方式来转换这些特征,可能会获得更好的效果。例如,对数缩放可能对某些特征有帮助。或者,截取极端值可能会使剩余部分的信息更加丰富。
上述代码包含一些额外的标准化函数。我们可尝试其中的某些函数,或添加自己的函数。要注意的是,若将目标标准化,则需要将网络的预测结果非标准化,以便比较损失函数的值。以上这些只是我们能想到的处理数据的几种方法,其他转换方式可能会更好。households、median\_income和total\_bedrooms在对数空间内均呈正态分布。如果latitude、longitude和housing\_median\_age像之前一样进行线性缩放,效果可能会更好。population、total\_rooms和rooms\_per\_person具有几个极端离群值。这些值似乎过于极端,以至于我们无法利用对数标准化处理这些离群值。因此,我们直接截取掉这些值。
第10章 神经网络
337
PDF 物理页索引 354
文件中的第 355 页 · 印刷页码:338
人工智能与大数据技术导论
结果如图10-33、图10-34所示。
338
PDF 物理页索引 355
文件中的第 356 页 · 印刷页码:339
下面我们训练仅使用纬度和经度作为特征的神经网络模型。房地产商喜欢说,地段是房价的唯一重要特征。我们来看看能否通过训练仅使用纬度和经度作为特征的模型来证实这一点。只有神经网络模型可以从纬度和经度中学会复杂的非线性规律,才能达到我们想要的效果。注意:我们可能需要一个网络结构,其层数比之前在练习中使用的要多。
结果如图10-35、图10-36所示。
第10章 神经网络
339
PDF 物理页索引 356
文件中的第 357 页 · 印刷页码:340
可以看到,对于只有两个特征的模型,结果并不算太糟。当然,地产价值在短距离内仍然可能有较大差异。
10.3 多类别神经网络
在前面的章节中,我们讲解了二元分类模型,该模型可从两个可能的选项中选择其一。例如,特定电子邮件是垃圾邮件还是非垃圾邮件,特定肿瘤是恶性肿瘤还是良性肿瘤。设有分类阈值的逻辑回归就非常适合用来处理这类二元类别分类问题。但是在现实世界中,我们通常不仅仅在两个类别之间做出选择,有时需要从一系列类别中的某个类别内选择一个标签,例如:
●那架飞机是波音747、空中客车320、波音777还是直升机?
●这是一张苹果、熊、糖果、狗还是鸡蛋的图片?
现实世界中的一些多类别问题需要从数百万个类别中进行选择。例如,一个几乎能够识别任何事物图片的多类别分类模型。本节将研究多类别分类。
10.3.1 一对多方法
我们可以借助二元类别分类开发出一些新技术,比如一对多的多类别分类。我们将模型中的一个逻辑回归输出节点用于每个可能的类别(见图10-37)。因此,一个节点可能会识别“这是苹果吗?”,是/不是。另一个节点可能会识别“这是熊的照片吗?”,是/不是。第三个节点可能会识别“这是糖果吗?”,是/不是。我们将一个输出节点用于所观察的每个可能的类别,同时对这些节点进行训练,便可以在深度网络中做到这一点。
人工智能与大数据技术导论
340
PDF 物理页索引 357
文件中的第 358 页 · 印刷页码:341
一对多提供了一种利用二元分类的方法。鉴于一个分类问题会有N个可行的解决方案,一对多解决方案包括N个单独的二元分类器,每个可能的结果对应一个二元分类器。在训练期间,模型会训练一系列二元分类器,使每个分类器都能回答单独的分类问题。以一张狗的照片为例,可能需要训练5个不同的识别器,其中4个将图片看作负样本(不是狗),1个将图片看作正样本(是狗),即:
这是一张苹果的图片吗?不是。
这是一张熊的图片吗?不是。
这是一张糖果的图片吗?不是。
这是一张狗的图片吗?是。
这是一张鸡蛋的图片吗?不是。
当类别总数较少时,这种方法比较合理,但随着类别数量的增加,其效率会变得越来越低。我们可以借助深度神经网络(在该网络中,每个输出节点表示一个不同的类别)创建明显更加高效的一对多模型。
10.3.2 Softmax
在某些问题中,我们知道示例一次只属于一个类别。例如,一种指定的水果要么是香蕉,要么是梨,要么是苹果。在这种情况下,我们希望所有输出节点的概率总和正好是1。要实现这一点,可以使用一种名为Softmax的函数。
我们已经知道,逻辑回归可生成介于0和1.0之间的小数。例如,某电子邮件分类器的逻辑回归输出值为0.8,表明电子邮件是垃圾邮件的概率为80%,不是垃圾邮件的概率为20%。很明显,一封电子邮件是垃圾邮件或非垃圾邮件的概率之和为1.0。Softmax将这一想法延伸到多类别领域。也就是说,在多类别问题中,Softmax会为每个类别分配一个用小数表示的概率。这些用小数表示的概率相加之和必须是1.0。与其他方式相比,这种附加限制有助于让训练过程更快速地收敛。Softmax本质上是对我们所使用的这种逻辑回归的泛化,只不过泛化成了多个类别。在遇到单一标签的多类别分类问题时,我们会使用Softmax。
第10章 神经网络
341
PDF 物理页索引 358
文件中的第 359 页 · 印刷页码:342
以某图片分析为例,Softmax可能会得出图片属于某一特定类别的概率,如表10-1所示。
Softmax层是紧挨着输出层,并在输出层之前的神经网络层。Softmax层必须和输出层拥有一样的节点数(见图10-38)。
Softmax方程式如下:
$$
p ( y = j | \mathbf { x } ) = \frac { e ^ { ( \mathbf { w } _ { j } ^ { T } \mathbf { x } + b _ { j } ) } } { \sum _ { k \in K } e ^ { ( \mathbf { w } _ { k } ^ { T } \mathbf { x } + b _ { k } ) } }
$$
此公式本质上是将逻辑回归公式延伸到了多类别。以下是Softmax的变体:
完整Softmax是我们一直以来讨论的 Softmax,也就是说,Softmax针对每个可能的类别计算概率。
候选采样指Softmax针对所有正类别标签计算概率,但仅针对负类别标签的随机样本计算概率。例如,如果想要确定某张输入图片是波音737飞机还是波音747飞机的图片,就不必针对每个非飞机样本提供概率。类别数量较少时,完整Softmax代价很小,但随着类别数量的增加,代价会变得极其高昂。候选采样可以提高处理具有大量类别问题的效率。
●Softmax假设每个样本只是一个类别的成员。但是,一些样本可以同时是多个类别的成员。对于此类示例:
人工智能与大数据技术导论
342
PDF 物理页索引 359
文件中的第 360 页 · 印刷页码:343
不能使用Softmax。
必须依赖多个逻辑回归。
例如,假设样本是只包含一项内容(一块水果)的图片。Softmax可以确定该内容是梨、橙子、苹果等的概率。如果样本是包含各种各样内容(几碗不同种类的水果)的图片,那么必须改用多个逻辑回归。
总之,在训练多类别分类时,我们有几个选项可以选择。一个是使用完整Softmax,此时训练成本相对昂贵。想象一下,如果有一百万个类别,那么基本上需要为每个示例分别训练一百万个输出节点。我们可以通过进行“候选采样”来提高一点效率。
10.3.3代码实例
本节对手写数字进行分类。我们训练线性模型和神经网络,对传统MNIST数据集中的手写数字进行分类,并比较线性分类模型和神经网络分类模型的效果,最后可视化神经网络隐藏层的权重。我们的目标是将每个输入图片与正确的数字相对应。我们会创建一个包含几个隐藏层的神经网络,并在顶部放置一个归一化指数层,以选出最合适的类别。下面来看一下代码。
首先,下载数据集,导入TensorFlow和其他实用工具,并将数据加载到Pandas DataFrame。此数据是原始MNIST训练数据的样本,我们随机选择了10000行。
对这10000行数据进行训练:
第10章 神经网络
343