本书中使用的数据集
本书包含一些数据集,这些数据集让我们能够展示神经网络在实际数据中的应用。我们选择了几个数据集来介绍如回归、分类、时间序列和计算机视觉等主题。
MNIST手写数字数据集
本书中有几个示例使用了MNIST手写数字数据集(以下简称MNIST数据集)。MNIST数据集是一个大型的手写数字数据集,程序员可以用它来训练各种图像处理系统。这个经典数据集经常与一些神经网络一起提供。该数据集实质上是神经网络的“Hello World”程序。
MNIST数据集以特殊的二进制格式存储。你可以在互联网上找到这种格式。本书提供的示例程序可以读取这种格式。
MNIST数据集包含许多手写数字。它还包括60 000个示例的训练集和10 000个示例的测试集。两个集合上都提供标签,以指示每个数字应该是什么。MNIST数据集是一个经过大量研究的数据集,程序员经常将它作为新机器学习算法和技术的基准。此外,研究人员已经发表了许多有关他们试图实现最低错误率的科学论文。在一项研究中,研究人员使用卷积神经网络(Convolutional Neural Network,CNN)的分层系统,设法在MNIST数据集上实现了0.23%的错误率[1]。
图2展示了该数据集的一个样本。
图2 MNIST手写数字样本
我们可以将这个数据集用于分类神经网络。神经网络学会观察图像,并将它分到10个数字中的适当位置。虽然这个数据集用于基于图像的神经网络,但是你也可以认为它是传统数据集。这些图像的大小是28像素×28像素。尽管这些图像令人印象深刻,但本书将从使用常规的神经网络开始,用784(即28×28)个输入神经元的神经网络来处理这些图像。你将使用相同类型的神经网络,来处理具有大量输入的所有分类问题。这样的问题是高维度的。在本书的后面,我们将学习如何使用专门为图像识别设计的神经网络。与较传统的神经网络相比,这些神经网络在MNIST数据集上的性能要好得多。
鸢尾花数据集
由于AI经常使用鸢尾花数据集[2],因此你会在本书中多次看到它。Ronald Fisher爵士(1936)收集了这些数据,作为判别分析的一个例子。即使在今天,该数据集在机器学习中也非常流行。
鸢尾花数据集包含150朵鸢尾花的测量值和物种信息,该数据集实质上可表示为具有以下列或特征的电子表格:
● 萼片长度;
● 萼片宽度;
● 花瓣长度;
● 花瓣宽度;
● 鸢尾花的种类。
这里的“花瓣”是指鸢尾花最里面的花瓣,而“萼片”是指鸢尾花最外面的花瓣。尽管该数据集似乎是长度为5的向量,但种类特征的处理必须与其他4个特征不同。换言之,向量通常仅包含数字。因此,前4个特征本质上是数字,而种类特征不是。
这个数据集的主要应用之一是创建一个程序,作为分类器。也就是说,它将花朵的特征作为输入(萼片长度、花瓣宽度等),并最终确定种类。对于完整的已知数据集,这种分类将是微不足道的,但我们的目标是使用未知鸢尾花的数据来查看模型是否可以正确识别物种。
简单的数字编码能将鸢尾花种类转换为单个维度。我们必须使用附加的维度编码,如1-of-n或等边的(equilateral),以便让物种编码彼此等距。如果我们要对鸢尾花进行分类,则不希望我们的编码过程产生任何偏差。
将鸢尾花特征视为更高维度空间中的维度,这非常有意义。将单个样本(鸢尾花数据集中的行)视为这个搜索空间中的点,靠近的点可能具有相似之处。通过研究来自鸢尾花数据集的以下3行数据,我们来看看这些相似之处:
5.1, 3.5, 1.4, 0.2, Iris−setosa
7.0, 3.2, 4.7, 1.4, Iris−versicolor
6.3, 3.3, 6.0, 2.5, Iris−virginica
第1行萼片长度为5.1,萼片宽度为3.5,花瓣长度为1.4,花瓣宽度为0.2。如果使用1-of-n编码,则以上3行数据将编码为以下3个向量:
[5.1, 3.5, 1.4, 0.2, 1, 0, 0]
[7.0, 3.2, 4.7, 1.4, 0, 1, 0]
[6.3, 3.3, 6.0, 2.5, 0, 0, 1]
在第4章“前馈神经网络”中将介绍1-of-n编码。
汽车MPG数据集
汽车每加仑英里数(Miles Per Gallon,MPG)数据集通常用于回归问题。该数据集包含一些汽车的属性。利用这些属性,我们可以训练神经网络来预测汽车的燃油效率。加利福尼亚大学欧文分校(UCI)机器学习存储库提供了这个数据集。
我们从卡内基梅隆大学维护的StatLib库中获取了这些数据。在1983年的美国统计协会的展览会上,程序员使用了该数据集,并且没有丢失任何值。这项研究的作者Quinlan(1993)使用该数据集描述了油耗。“按每加仑英里数,该数据考虑了城市车辆的油耗,旨在根据3个多值离散值和5个连续属性进行预测”[3]。
该数据集包含以下属性:
1. mpg(每加仑英里数):连续
2. cylinders(气缸数):多值离散值
3. displacement(排量):连续
4. horsepower(马力) :连续
5. weight(车重):连续
6. acceleration(加速):连续
7. model year(车型年份):多值离散值
8. origin(来源):多值离散值
9. car name(车名):字符串(每个实例唯一)
太阳黑子数据集
太阳黑子是太阳表面的暂时现象。与周围区域相比,其看起
来像是黑点。强烈的磁活动会引起黑子。尽管它们出现的温度是
3 000~4 500 K(约2 727~4 227℃),但与周围物质大约5 780 K (约5 507℃)的温度形成反差,导致它们成为清晰可见的黑点。黑子有规律地出现和消失,这让它们成为时间序列预测的良好数据集。
图3展示了黑子随时间的活动数。
图3 黑子随时间的活动数
年 月 黑子数 标准差
1749 1 58.0 24.1
1749 2 62.6 25.1
1749 3 70.0 26.6
1749 4 55.7 23.6
1749 5 85.0 29.4
1749 6 83.5 29.2
1749 7 94.8 31.1
1749 8 66.3 25.9
1749 9 75.9 27.7
以上数据提供了观测到的黑子的年、月、黑子数和标准差。许多世界性的组织都在观测黑子。
XOR运算符
XOR运算符是布尔运算符。程序员经常将XOR的真值表作为一种非常简单的“Hello World”训练集,用于机器学习。我们将该表称为XOR数据集。该运算符与XOR奇偶校验运算符相关,该运算符接收3个输入并具有以下真值表:
0 XOR 0 = 0
1 XOR 0 = 1
0 XOR 1 = 1
1 XOR 1 = 0
在需要手动训练或评估神经网络的情况下,我们会利用XOR运算符。
Kaggle的Otto集团产品分类挑战赛
在本书中,我们还会利用Kaggle的Otto集团产品分类挑战赛(Kaggle Otto Group Product Classification Challenge)数据集。Kaggle是一个平台,促使数据科学家在新数据集上展开竞争。我们使用这个数据集,根据未知属性将产品分为几类。此外,我们将使用深度神经网络来解决这个问题。我们还会在本书中讨论一些高级集成技术,你可以将它们用于Kaggle挑战赛。我们将在第16章中更详细地描述这个数据集。
本书开始将概述大多数神经网络共有的特性。这些特性包括神经元、层、激活函数和连接。在本书的其余部分,我们将介绍更多的神经网络体系结构,从而扩展这些主题。
[1] Schmidhuber,2012。
[2] Fisher,1936。
[3] Quinlan,1993。