人工智能VS通用人工智能
通用人工智能的提出已经成为近年研究的一个热点。微软全球执行副总裁、人工智能研发的总掌舵人沈向洋说:“单独做一个东西之后,今天有非常强的AI系统,比如Alphago在围棋上战胜柯洁。这些都非常了不起,开发系统的时候做出些非常了不起的技术,但今天没有人去想通用人工智能到底是什么,到底要多少的输入。”
我们一直梦想着有一个通用的模型,可以建模整个世界,使各种各样的问题都能够迎刃而解,这便是通用人工智能的最终目标。但事实上,我们现在所研究的人工智能,都是针对某一特定问题的算法或模型,比如图像的分类,目标的检测,视频的理解等等。在特定的问题上,深度学习给我们带来了惊人的表现,但是一旦离开特定的领域,算法与模型的性能会大幅度下降。
从我们的目标来看,通用人工智能意味着如何来提高神经网络的泛化能力。所谓泛化能力,指机器学习算法对于新的样本的适应能力,即对于未知的数据也可以得到很好的结果。比如迁移学习中的一个例子:我们使用欧洲人的面部表情图片来训练一个模型,然后用来识别其他欧洲人的面部表情,识别结果通常可以不错,但是用来识别亚洲人的表情,结果会一落千丈,远远达不到预期,即此时模型的泛化能力很差。
下面我们从一个关于MNIST手写字符识别的小例子来具体的看这个泛化能力的问题。
存在的问题--从一个小例子出发
我们知道在MNIST手写字符集上,识别率已经做到了接近100%。我们先来自己实现一个由两层卷积层,两层池化层和两层全连接层构成的简单的卷积神经网络来进行MNIST手写字符的识别(注意,所有涉及到的代码,小编都会给出的,大家不要着急)。实验中,训练集样本数为55000,验证集样本数为5000,测试集样本数为10000。在训练集,验证集和测试集上的识别率分别为0.999,0.976和0.971。
图1MNIST测试集中的部分样本
可以看出识别结果非常不错,已经接近了100%。但是有个疑问:想象你在纸上写了一个字符“5”,无论你怎样旋转,你仍然可以轻松地认出,这就是字符“5”。但是对于神经网络来说,如果我们对测试集的手写字符进行旋转变换后,它还能很好的进行识别吗?即神经网络是否可以像人一样不会受到这些偏差的干扰呢?
为了验证上述的问题,我们进行如下的实验:
保持训练集数据,网络结构,训练方式等不变,只将测试集合中的图片进行-45度至45度的旋转。比较该条件下的实验结果与原先的不进行旋转变换所得到的结果。
实验结果为:对于旋转变换,此时对于测试集的识别率为0.801。
我们可以看出,单纯的使用卷积神经网络并不能很好的处理旋转的问题。相比于原先的识别率,测试的识别率大幅度下降。如果旋转的角度范围更大的话会进一步导致识别率的下降。实验结果表明模型的泛化能力不尽人意。
泛化能力的提升
为了解决泛化能力的问题,科研人员们进行了各种努力。从正则化技术到dropout技术,再到Batch-normalization技术,这些技巧一定程度上减缓了神经网络的过拟合问题,提高了其泛化能力。但是这些技术仍然只是技巧,并不能从根本上解决问题。另一个解决方案是获取大量的有标注的数据集,进行模型的训练。比如对于上面MNIST手写字符识别的例子,我们可以构造大量的各种旋转的手写字符数据,进行网络的训练。然而获取大量有标注的数据本身就是一个非常困难的问题,进行数据的标注既费时又费力。于是,我们又在探究其它的方法——迁移学习。
迁移学习
迁移学习是将一个场景中学到的知识迁移到另一个场景中。比如我们可以将猫咪和狗狗图像训练得到的分类模型迁移到其它相似的任务上,用来分辨鹰和布谷鸟。利用迁移学习,在一个模型训练任务中针对某种类型数据获得的关系也可以轻松地应用于同一领域的不同问题。迁移学习已经有了很多应用,如图2所示:
图2 迁移学习的应用
然而迁移学习受限于临近域的迁移,我们能够将猫咪和狗狗图像训练得到的分类模型迁移到其它相似的任务上,用来分辨鹰和布谷鸟,是因为源域(猫咪和狗狗)和目标域(鹰和布谷鸟)存在着相似性。假如我们想把猫咪和狗狗图像训练得到的分类模型迁移到飞机大炮的识别上就不是那么容易了(远域的迁移)。关于远域的迁移学习,可以参考中国香港科技大学杨强老师团队的“由人脸图片训练好的分类器,迁移识别飞机图像”。
总结与展望
迁移学习一定程度上缓解了标记数据的压力,对于我们接近通用人工智能,迈进了一步。但是迁移学习本身依然受限于数据集中邻域的分布,即我们目前所谈及的深度学习,其本质还是数据驱动的,无论是机器文本翻译、语音翻译还是机器问答,都依赖于比以往多几百万倍的数据量。图灵奖得主Raj Reddy认为不存在通用的AI,所有的智能都是应用于某一特殊领域的智能。大家又怎么认为呢?
领取专属 10元无门槛券
私享最新 技术干货