Py学习  »  Python

《Deep Learning with Python》第一章 1.1 人工智能、机器学习和深度学习

龙哥盟飞龙 • 5 年前 • 552 次点击  

《Deep Learning with Python》第一章 1.1 人工智能、机器学习和深度学习

发表于

第一章 什么是深度学习?

本章涉及的知识点:

  • 基本概念的高层次(High-level)定义
  • 机器学习的发展历程
  • 深度学习兴起背后的关键因素以及未来的展望

过去几十年,人工智能(artificial intelligence,AI)一直是媒体强烈炒作的主题。机器学习、深度学习和人工智能也经常出现在无数非技术刊物上。人们构想将来智能聊天机器人、自动驾驶汽车和虚拟助理的工作生活的画面——在昏暗的灯光下,人类的工作很少,而大部分经济活动都有机器人或者AI智能实体。对于当前或者未来机器学习的从业者来讲,需要从吹捧过度的新闻中意识到改变世界的新产品。你们的将来将承担重要的任务:读完本书后,你将会成为开发AI智能实体的开发者。接着解决这几个问题:目前深度学习能实现什么?深度学习的意义如何?人类下一步该如何做?你相信关于人工智能的宣传吗?

本章介绍人工智能、机器学习和深度学习相关知识。

1.1 人工智能、机器学习和深度学习

首先,当人们讨论AI时要清楚谈论的是什么?什么是人工智能、机器学习和深度学习(见图1.1)?它们之间又有什么关系呢?

image

图1.1 人工智能、机器学习和深度学习

1.1.1 人工智能

人工智能诞生于1950年代,当时少数计算机科学的先行者开始探讨计算机是否能够像人类一样“思考”——这个问题到现在还在探索。其简明的定义如下:像人类一样自动化完成智力任务。比如,AI通常认为包括机器学习和深度学习的领域,但是也包含许多非学习的方法。例如,早期的棋类程序只涉及程序设定的硬编码规则,没用到机器学习。在相当长一段时期内,许多专家相信:程序处理足够大的基于知识的显式规则集合能达到人类水平的智能。这种方法称之为符号型AI(symbolic AI),它是1950年代到1980年代主流的AI,并在1980年代专家系统方面快速达到巅峰。

虽然符号型AI能解决定义明确的、逻辑性的问题,比如棋类问题,但是却不能解决更复杂、模糊类的问题,比如,图像分类、语音识别和语言翻译。随之而来的是机器学习这种新方法取代了符号型AI。

1.1.2 机器学习

在英国维多利亚时代,埃达·洛夫莱斯伯爵夫人(Ada Lovelace)是查尔斯·巴贝奇(Charles Babbage)的好友和合作者。巴贝奇是分析机(Analytical Engine)的发明者。该分析机是公认的第一个机械式通用电脑。虽然预言性的远见超越了当时的时代,但是,在1830年代到1840年代设计的分析机并不是真正意义上的通用电脑。因为通用计算机的概念那时尚未出现,它仅仅是一种自动的数学计算分析,因此命名为分析机。在1843年,埃达注记分析机,“分析机谈不上能创造什么东西。但是能做我们命令它做的任何工作……它的职责是帮助我们去实现已知的事情。”

在1950年,AI先行者阿兰·图灵(Alan Turing)在他的著作《计算机器和智能》中引用这个注记作为“洛夫莱斯伯爵夫人的异议”,并提出图灵测试(Turing test)的概念。图灵思考通用计算机是否有学习和创造的能力,并得出下面的结论:

机器学习起因于以下问题:对于计算机来说,除“我们命令它做的任务”之外,它能自我学习完成特定任务吗?计算机能做的工作会让我们感到意外吗?除了程序员人为制定规则的数据处理外,计算机从数据中能自我学习出规则吗?

上述问题打开了新编程范式的大门。在经典编程中,即符号型AI范式,人们输入规则(即为程序)和数据,根据这些规则处理数据,输出答案(见图1.2);在机器学习中,人们输入数据和该数据对应的答案,输出的是程序规则。这些学习来的规则能应用到新的数据上,并产生原创性的答案。

image

图1.2 机器学习:新的编程范式

机器学习系统是训练得到的,而不是用显式的编制。给机器学习一个任务相关的许多例子,它能发现这些例子的统计性的结构,并形成规则自动完成任务。例如,如果想给假期照片自动化打标签,你需要提出一个机器学习系统,输入许多打好标签的照片,该系统学习统计性规则并为指定的照片打标签。

虽然机器学习在1990年代才开始繁荣,但是由于硬件性能和数据大小的提升,机器学习很快变得非常流行,并成为AI最成功的子领域。机器学习与数学统计紧密相关,但是它在许多方面又有别于统计学。不像统计学,机器学习试图处理海量、复杂的数据集(比如,数百万张图片,包含数以万计的像素),然而经典统计分析(比如贝叶斯分析)将对此无能为力。因此,机器学习,特别是深度学习,展现相对较少的数学理论,更多的是工程化导向。

1.1.3 数据的特征学习

为了定义深度学习,以及理解深度学习和其它机器学习方法的不同,首先,需要知道机器学习算法在做什么。这里仅仅讲述机器学习在给定期望的数据例子下发现规则,执行数据处理的任务。所以为了实现机器学习,需要知道下面三件事:

  • 输入数据点(Input data points):例如,如果是语音识别的任务,这些数据点应该是语音文件。如果是图标标注的任务,数据点应该是图片;
  • 期望的输出样例(Examples of the expected output):语音识别的任务中,期望的输出样例是语音的手写文本;图像标注的任务中,期望的输出样例是“狗”,“猫”等等的标签;
  • 算法的评估标准:算法的评估标准是为了判断当前算法的输出值与期望的输出值之间的距离。评估标准可以反馈调节算法的工作,这个调节的步骤经常成为学习(learning)。

机器学习模型将输入数据集转化成有意义的输出,这个过程是从已有的输入和输出对的例子中学习到的。因此,机器学习和深度学习的中心问题是可读性的转化数据(transform data):换句话说,学习输入数据的有用的表征(representations)。数据表征使得数据更接近期望的输出。

那什么是数据的表征?其核心是数据的表现形式——表示(represent)或者编码(encode)数据。例如,彩色图片可以编码为RGB格式(红-绿-蓝)或者HSV格式(色相,饱和度,色调)。机器学习模型就是为了找到输入数据的合适表征——数据的转换是为了任务的更容易处理,比如,分类任务。

下面举一个例子。假设有x轴,y轴和一些数据点坐标(x,y),见图1.3:

image

图1.3 样本数据点

正如你所见,有一些白色的数据点,一些黑色的数据点。本例假设想实现一个算法:输入数据点的坐标(x,y),输出该数据点是黑色还是白色的。在本例中,

  • 输入是数据点的坐标;
  • 期望输出是数据点的颜色;
  • 算法评估标准:判断正确的数据点的百分比

此处的首要任务是数据集的新表征,该数据表征需要能清晰分离白色的点和黑色的点。本例使用的数据转换是坐标变换,见图1.4:

image

图1.4 坐标变换

在新的坐标系统中,数据点的坐标可以看成是数据集的一个新表征。并且效果非常棒!使用了数据集的新表征,黑/白分类问题就可以用很简单的规则解决了:“黑色数据点的x > 0,或者”白色数据点的x < 0“。”这个新表征方法基本解决了分类问题。

在本例中,人工定义了坐标变换。但是,如果尝试系统性地搜索所有不同的可能的坐标变换,并将正确分类数据点的百分比作为反馈,那就是在做机器学习。机器学习中的“学习”,是描述自动搜索更优的数据表征的过程。

所有机器学习算法都包含自动化寻找这么一个转换:该转换能根据给定的任务将数据集转化成有用的特征表示。这个操作可能是坐标变换,如前所见,或者线性投影(线性投影可能损失有用的信息),翻译,非线性操作(比如,当x > 0时,选中所有数据点),等等。机器学习算法通常不能创造性地搜索到这些转换;它们仅仅通过预定义的操作集合进行搜索,此过程也称为超参数空间(hypothesis space)。

那究什么是竟机器学习呢?从技术上来讲,在预定义的参数空间内,自动搜索输入数据集有效的表征,并以反馈信号做引导。这个简单的理念可以解决广大的人工职能任务,从语音识别到自动驾驶。

现在理解完机器学习的学习,下面开始探索是什么让深度学习比较特别。

1.1.4 何为深度学习的“深度”

深度学习是机器学习的一个特定子领域,其数据集的学习表征强调学习一系列连续的表征层,这些逐层的表征层不断地增加了有效的数据表征。深度学习的“深度”并不涉及更深度的学习方法;而是表示一系列连续的特征层的理念。数据模型的层数称为模型的深度(depth)。深度学习的其它叫法有,分层表征学习和多级表征学习。当前的深度学习经常涉及十层甚至上百层的连续特征表示层,它们都是从训练数据集自动学习的。其它机器学习的方法一般倾向于从训练数据学习一层或者两层的表征,因此,这种机器学习也称为浅层学习(shallow learning)。

在深度学习中,这些表征层通常是通过多层神经网络(neural network)模型学习得到的。神经网络来源于生物科学,深度学习的核心概念启发自对人类大脑的理解,但是深度学习模型并不是大脑的模型。没有证据表明大脑实现的学习机制被用在了当前的深度学习模型。你可能偶然发现某些顶级科学文章宣称深度学习像大脑一样工作或者模拟大脑,但是实际情况不是这样的。这可能对该领域的新人在理解深度学习上带来疑惑和困扰。你不需要搞得像大脑一样神秘,只管忘掉看到的关于深度学习和生物相关的假设。深度学习是一个从训练数据学习表征的数学框架。

深度学习算法到底如何进行表征学习呢?下面看一个几层深度网络的例子,其转换数字图片来识别图片中的数字,见图1.5:

image

图1.5 图片识别数字的分类神经网络

如图1.6所示,神经网络将数字图片转换为学习特征,对原始图片进行图像增强,从而识别出最终的结果。你可以认为神经网络经过多层连续的过滤器进行信息提取,最后得到结果。

image

图1.6 数字分类模型的深度学习表征

所以,什么是深度学习呢?从技术性上讲,深度学习是多级数据集表征学习。就这么简单的机制,经过足够多层的扩展,能够魔术般的解决问题。

1.1.5 三张图理解深度学习工作原理

此时,你已经知道机器学习是通过观察样本数据集的输入和目标,进而学习将输入(比如,图片)和目标(比如,“cat”标签)映射。你也知道深度神经网络是从样本数据集中学习数据转换(也即学习表征),通过多层数据转换层实现输入和目标的映射。下面看下这个学习过程具体是如何工作的?

layer处理输入数据的规范要求存储在layer的权重(weights)中,这些权重其实是一堆数值。从技术术语上讲,layer通过权重参数化实现了数据转换(权重有时也称layer的参数),见图1.7。本文中,学习(learning)意味着寻找神经网络中所有layer的权重值的集合,比如正确地将样本数据集的输入和相关的目标映射。这里需要注意的是,一个神经网络可能包含成千上万个参数。修改某个参数可能会影响其它所有的参数,那找到所有参数的正确值看似是个相当艰巨的任务。

image

图1.7 权重参数化的神经网络

为了控制神经网络的输出,需要度量模型输出和期望值之间的距离。这部分是神经网络模型的损失函数(loss function)的工作,有时也称观察函数(objective function)。损失函数输入神经网络模型的预测值和实际目标(期望输出),计算两者之间的距离值,评估神经网络在训练模型上的效果,见图1.8。

image

图1.8 度量神经网络模型输出的损失函数

深度学习的主要诀窍是,使用损失函数值作为反馈信号微调权重值,降低训练数据在某个方向上的损失值,见图1.9。前面的调节过程是神经网络的优化器(optimizer)的工作。优化器是由后向传播算法(Backpropagation)实现的,其是深度学习的核心算法,下一章惠详细讲解向传播算法是如何工作的。

image

图1.9 损失函数值调节权重值

一般神经网络权重值先随机初始化,这时神经网络完成的看起来仅仅是些随机数据转换,它输出的结果自然地远离理想值,损失函数值也相应很高。但是随着神经网络数据处理的推进,权重值也在正确的方向上逐步微调,损失值也在降低。前面描述的过程称为迭代训练(training loop)。重复迭代足够的训练次数后得到的权重值会最小化损失函数值。具有最小化损失值的神经网络模型输出与期望的目标值几乎相同。

1.16 深度学习的应用场景

虽然深度学习是机器学习中早期的子领域,但是其也就在2010年代才稍微兴盛起来。过去几十年,深度学习没什么进展,只在感知学习问题上有点成绩。

深度学习当前已经在机器学习难以出成绩的领域有了以下突破:

  • 图像分类
  • 语音识别
  • 手写字识别
  • 机器翻译
  • 文本语音转换
  • 智能数字设备,比如 Google Now和Amazon Alexa
  • 自动驾驶
  • 广告投放,比如Google,百度和微软的Bing
  • 网站搜索
  • 自然语言的问答
  • AlphaGo

人们仍在探索深度学习更广泛的领域,如果成功的话,深度学习可能在科学、软件开发等方面帮助人类开辟新世纪。

未完待续。。。

Enjoy!

翻译本书系列的初衷是,觉得其中把深度学习讲解的通俗易懂。不光有实例,也包含作者多年实践对深度学习概念、原理的深度理解。最后说不重要的一点,François Chollet是Keras作者。声明本资料仅供个人学习交流、研究,禁止用于其他目的。如果喜欢,请购买英文原版。


侠天,专注于大数据、机器学习和数学相关的内容,并有个人公众号:bigdata_ny分享相关技术文章。

若发现以上文章有任何不妥,请联系我。

image


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/SKTFSDkJIG
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/10344
 
552 次点击