第1章 机器学习和TensorFIow简述
1.1 机器学习和TensorFlow的历史及发展现状
1.1.1 人工智能和机器学习
我们先来看一下人工智能(Artificial Intelligence)、机器学习(Machine Learning)、深度学习(Deep Learning)的定义。
人工智能(英文缩写为AI)也称机器智能,指由人制造出来的机器所表现出来的智能。
下面是机器学习的英文定义:
Machine learning is a core, transformative way by which we're rethinking how we're doing everything.
其中文含义是:机器学习是一种核心的、变革性的方式,它正在改变我们思考的方式。人工智能(AI)是使事物变得聪明的科学,机器学习是一种开发人工智能的技术。
深度学习(Deep Learning)是机器学习的分支,是一种以人工神经网络为架构,对数据进行表征学习的算法。人工智能的分类如图1-1所示。
图1-1
人工智能按产业分类大致可以分为下面几类:机器学习、自然语言处理、机器人技术和视觉等。在机器学习里深度学习是最近兴起也是比较热门的研究方面。自然语言处理和视觉的技术发展近几年来越来越成熟,有的技术已被大规模应用。
深度学习带来机器学习的革命。我们看到“深度学习”这个词在搜索中的热度近年来在快速攀升。arXiv上的机器学习论文数量也在急剧增长。
深度学习(Deep Learning)是一种模仿人脑结构的机器学习。神经元是专注于某个特定方向的刺激(例如图像中对象的形状、颜色和透明度),通过将多个神经元分层组合在一起而完成模拟人脑的方法。分层可以模拟大脑运算,随着层数的增加,计算的功率和时间也会增加,进而提高计算的准确性。
下面来看一个图片分类的例子:给出一张图片,让机器识别这张图是一只猫还是一条狗。这个机器由多层的神经网络结构组成,该结构中有很多参数,经过大量训练之后,机器能识别出这张图是一只猫。如图1-2(图片来源https://becominghuman.ai/building-an-image-classifier-using-deep-learning-in-python-totally-from-a-beginners-perspective-be8dbaf22dd8)所示展示了这个深度学习的过程。
深度学习并不是全新的事物,但为什么在最近几年有了巨大突破?其中一个重要的原因是,人类发明了一个基于深度神经网络的解决方案。
在20世纪五六十年代,神经网络的研究就已经出现了,在马文·明斯基和西摩·帕尔特(1969)发表了一项关于机器学习的研究以后,神经网络的研究就停滞不前了。
图1-2
他们发现了神经网络的两个关键问题点。一个问题是,基本感知机无法处理异或回路;另一个问题是,计算机没有足够的能力来处理大型神经网络所需要的计算时间。在计算机具有更强的计算能力之前,神经网络的研究进展缓慢。但是随着计算能力的增加,深度学习解决问题的精度已经超过其他机器学习方法。
以图片识别为例,2011年,机器识别的错误率是26%,而人工识别的错误率只有5%,所以这个时候的机器识别离实用有非常大的距离。到2016年,机器识别的错误率已经减少到3%左右,深度学习在该领域呈现出非常惊人的能力,这也是深度学习在图像识别领域吸引产业界大量关注的原因。
组成机器学习的三大要素是:数据、计算力和算法(Data、Computation and Algorithm)。
1.1.2 TensorFIow
接下来看一下最近非常流行的,也是本书主要讲解的机器学习框架TensorFlow。
1.TensorFIow的起源和发展历史
TensorFlow是一个开源软件库,用于完成各种感知和语言理解任务的机器学习。TensorFlow被50个团队用于研究和开发许多谷歌商业产品,如语音识别、Gmail、谷歌相册和搜索,其中许多产品曾使用过其前任软件DistBelief。TensorFlow最初由谷歌大脑团队开发,用于谷歌的研究和产品开发,于2015年11月9日在Apache 2.0开源许可下发布。
2010年,谷歌大脑创建DistBelief作为第一代专有机器学习系统。谷歌的50个团队在谷歌和其他Alphabet公司的商业产品中部署了DistBelief的深度学习神经网络,包括谷歌搜索、谷歌语音搜索、广告、谷歌相册、谷歌地图、谷歌街景、谷歌翻译和YouTube。
谷歌安排计算机科学家如Geoffrey Hinton和Jeff Dean,简化和重构了DistBelief的代码库,使其变成一个更快、更健壮的应用级代码库,形成了TensorFlow。
2009年,Hinton领导的研究小组通过在广义反向传播方面的科学突破,极大地提高了神经网络的准确性,使得神经网络的生成成为可能。值得注意的是,这个科学突破使得谷歌语音识别软件中的错误数减少了至少25%。如图1-3(横坐标为年份,纵坐标为谷歌搜索的人工智能和机器学习关键字数量)所示,2013年以后,人工智能和机器学习的关键词搜索数量有了极大增长。
图1-3
TensorFlow是谷歌大脑的第二代机器学习系统。从0.8.0版本(发布于2016年4月)开始支持本地的分布式运行。从0.9.0版本(发布于2016年6月)开始支持iOS。从0.12.0版本(发布于2016年12月)开始支持Windows系统。该移植代码主要是由微软贡献的。
TensorFlow 1.0.0发布于2017年2月11日。虽然推理的实现运行在单台设备上,但TensorFlow也可以运行在多个CPU和GPU(包括可选的CUDA扩展和图形处理器通用计算的SYCL扩展)上。TensorFlow可用于64位的Linux、macOS、Windows,以及移动计算平台(Android和iOS)。
TensorFlow的计算使用有状态的数据流图来表示。TensorFlow的名字来源于这类神经网络对多维数组执行的操作。这些多维数组被称为“张量”。2016年6月,Jeff Dean称:“在GitHub上有1500个库提到了TensorFlow,其中只有5个来自谷歌。”
1.12.0版本发布于2018年10月,TensorFlow 2.0的预览版在2019年3月的TensorFlow开发者大会上发布。
2.TensorFIow 的主要特性
TensorFlow开源以来已有500多个Contributor及11000多个Commit。利用TensorFlow平台在产品开发环境下进行深度学习的公司有ARM、谷歌、UBER、DeepMind、京东等。谷歌把TensorFlow应用到很多内部项目,如谷歌语音识别、Gmail邮箱、谷歌图片搜索等。
TensorFlow有以下几个主要特性。
· 使用灵活:TensorFlow是一个灵活的神经网络平台,采用图计算模型,支持High-Level的API,支持Python、C++、Go、Java接口。
· 跨平台:TensorFlow支持CPU和GPU的运算,支持台式机、服务器、移动平台的计算。并从0.12版本开始支持Windows平台。
· 产品化:TensorFlow支持从研究团队发布模型到产品开发团队验证模型的全过程,构建起模型研究到产品开发实践的桥梁。
· 高性能:在TensorFlow中采用了多线程、队列技术及分布式训练模型,可在多CPU、多GPU的环境下对模型进行分布式训练。
1.1.3 TensorFIow MobiIe
其实TensorFlow Mobile并不是一个正式的名称,它只是TensorFlow对移动端设备和IoT设备的支持的总称,它可以直接移植到Android、iOS和树莓派等系统上。
1.1.4 TensorFIow Lite
2017年5月谷歌宣布从Android Oreo(API level 26)开始,提供一个专用于Android开发的软件栈TensorFlow Lite。按照官方的定义,TensorFlow Lite是为移动设备和嵌入式设备设计的机器学习软件框架,也是在移动和嵌入式设备上运行机器学习模型的官方解决方案。它支持在Android、iOS和其他操作系统上的低延迟和在较小二进制文件设备上的机器学习推理。
TensorFlow Lite在2017年10月发布了第一个Preview版本,在官方网页https://developers.googleblog.com/2017/11/announcing-tensorflow-lite.html上有如下说明:
Lightweight Enables inference of on-device machine learning models with a small binary size and fast initialization/startup.
Cross-platform A runtime designed to run on many different platforms, starting with Android and iOS.
Fast Optimized for mobile devices, including dramatically improved model loading times, and supporting hardware acceleration.
通过该段说明,我们可以将TensorFlow Lite的特性总结为如下三点:
(1)轻量级:使用小的二进制文件和快速初始化(启动),可以在设备端训练机器学习模型。
(2)跨平台:可以在Android和iOS的许多不同平台上运行。
(3)快速:针对移动设备进行优化,包括显著改进的模型加载时间和支持硬件加速。
如图1-4(图片来源https://techcrunch.com/2017/05/17/googles-tensorflow-lite-brings-machine-learning-to-android-devices)所示是TensorFlow Lite在谷歌I/O发布时的情景。
图1-4