购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

第1章
深度学习导论

1-1 人工智能的三波浪潮

人工智能(Artificial Intelligence, AI)并不是最近几年才兴起的,目前已经是它第三波热潮了,前两波热潮都经历了十余年,就迈入了寒冬,这一波热潮至今已超过十年(2010至今),是否又将迈入寒冬呢?如图1.1所示,我们就先来重点回顾一下人工智能的三波浪潮吧。

图1.1 人工智能的三波浪潮

(1)1956年在达特茅斯(Dartmouth)学院举办了AI会议,确立了第一波浪潮的开始。

(2)1957年Frank Rosenblatt创建了感知器(Perceptron),即简易的神经网络,然而当时并无法解决复杂多层的神经网络问题,直至1980年代才想出解决办法。

(3)1969年美国国防部高级研究规则局(DARPA)基于投资报酬率过低,决定缩减AI研究经费,AI的发展迈入了第一波寒冬。

(4)1980年专家系统(Expert Systems)兴起,企图将各行各业专家的内隐知识外显为一条条的规则,从而建立起专家系统,不过因不切实际,且需要使用大型且昂贵的计算机设备,才能够建构相关系统,适逢个人计算机(PC)的流行,相较之下,AI的发展势头就被掩盖下去了,至此,AI的发展迈入了第二波寒冬。

(5)2012年多伦多大学Geoffrey Hinton研发团队利用分布式计算环境及大量影像数据,结合过往的神经网络知识,开发了AlexNet神经网络,参加了ImageNet影像辨识大赛,该神经网络大放异彩,把错误率降低了十几个百分比,就此兴起了AI的第三波浪潮,至今方兴未艾。

第三波热潮至今也已超过十年,是否又将迈入寒冬呢?如图1.2所示,观察这一波热潮,相较于过去前两波,具备了以下几个优势。

图1.2 第三波AI浪潮的触媒

1. 发展方式由下往上

先架构基础功能,从影像、语音、文字辨识开始,再逐步往上构建各式的应用,如自动驾驶(Self Driving)、聊天机器人(ChatBot)、机器人(Robot)、智慧医疗、智慧城市等,这种由下往上的发展方式比较扎实。

2. 硬件的快速发展

(1)摩尔定律的发展速度:IC上可容纳的晶体管数目,约每隔18个月至两年便会增加一倍,简单来说,就是CPU每隔两年便会提速一倍,过去50年均循此轨迹发展,此定律在未来十年也可能会继续适用,之后量子计算机(Quantum Computing)等新科技可能会继续接棒,目前计算机要计算几百年的工作,量子计算机预计只要30分钟即可完成,如果成真,那时又将是另一番光景。

(2)云端数据中心的建立:大型IT公司在世界各地兴建大型的数据中心,采取“用多少付多少”(Pay as you go)的模式。由于模型训练时,通常需要大量运算,因此采用云端方案,一般企业就不需在前期购买昂贵的设备,仅需支付必要的运算费用,也不需冗长的采购流程,只要几分钟就能开通(Provisioning)所需设备,省钱省时。

(3)GPU/ NPU的开发:深度学习主要是以矩阵运算为主,GPU这方面比CPU快很多倍,专门生产GPU的NVIDIA公司因而大放异彩,市值超越了Intel公司 [1] 。当然其他硬件及系统厂商不会错失如此良机,因此各式的NPU(Neural-network Processing Unit)或XPU纷纷出笼,积极抢食这块“蛋糕”,各项产品使得运算速度越来越快,模型训练的时间大幅缩短,通常模型调校需要反复训练,如果能在短时间得到答案,对数据科学家而言,也将是一大福音。另外,连接现场装置的计算机(Raspberry pi、Jetson Nano、Auduino等),体积越来越小,运算能力越来越强,对于边缘运算也有很大的帮助,如监视器、无人机等。

3. 算法推陈出新

过去由于计算能力有限,许多无法在短时间训练完成的算法一一解封,尤其是神经网络,现在已经可以建构上百层的模型,运算的参数也可以高达上兆个,都能在短时间内调校出最佳模型,因此,模型设计就可以更复杂,算法逻辑也能够更完备。

4. 大量数据的搜集及标注(Labeling)

人工智能必须依赖大量数据,让计算机学习,从中挖掘知识,近年来因特网(Internet)及手机(Mobile)盛行,企业可以透过社群媒体搜集到大量数据,再加上物联网(IoT)也可以借由传感器产生源源不断的数据,作为深度学习的“养分”(训练数据),而这些大型的网络公司资金充足,可以雇佣大量的人力,进行数据标注,确保数据的质量,使得训练出来的模型越趋精准。

因此,根据以上的趋势发展,笔者猜测第三波的热潮在短期内应该不会迈入寒冬。

1-2 AI的学习地图

AI的发展划分为三个阶段,每一阶段的重点分别为人工智能、机器学习(Machine Learning)、深度学习(Deep Learning),每一阶段都在缩小范围,聚焦在特定的算法,机器学习是人工智能的部分领域,而深度学习又属于机器学习的部分算法,如图1.3所示。

图1.3 AI三个阶段的重点

而一般教育机构规划AI的学习地图即依照这个轨迹,逐步深入各项技术,通常分为四个阶段,如图1.4所示。

图1.4 AI学习地图

(1)数据科学(Data Science)入门:内容包括Python/R程序语言、数据分析(Data Analysis)、大数据平台(Hadoop、Spark)等。

(2)机器学习:包含一些典型的算法,如回归、Logistic回归、支持向量机(SVM)、K-means聚类算法等,这些算法虽然简单,但却非常实用,比较容易在一般企业内普遍性地导入。通常机器学习的大致分类如图1.5所示。

图1.5 机器学习分类

最新的发展还有半监督学习(Semi-supervised Learning)、自我学习(Self Learning)、联合学习(Federated Learning)等,不一而足,我们千万不要被分类限制了想象。

另外,数据挖掘(Data Mining)与机器学习的算法大量重叠,其间的差异在于,数据挖掘是着重挖掘数据的隐藏样态(Pattern),而机器学习则着重于预测。

(3)深度学习:深度学习属于机器学习中的一环,所谓深度(Deep)是指多层式架构的模型,如各种神经网络(Neural Network)模型、强化学习(Reinforcement Learning, RL)算法等,以多层的神经层或try-and-error的方式实现以优化(Optimization)或反复的方式求解。

(4)实务及专题探讨(Capstone Project):将各种算法应用于各类领域、行业,强调专题探讨及产业应用实践。

1-3 机器学习应用领域

机器学习的应用其实早已在不知不觉中融入我们的生活中了,举例如下。

(1)社群软件大量运用AI,预测用户的行为模式,过滤垃圾信件。

(2)电商运用AI,依据每位消费者的喜好推荐合适的商品。

(3)还有各式的3C产品,包括手机、智能音箱,以人脸识别取代登录、语音识别代替键盘输入。

(4)聊天机器人取代客服人员,提供营销服务。

(5)制造机器人(Robot)提供智能制造、老人照护、儿童陪伴,凡此种种,不及备载。

AI相关的应用领域如图1.6所示。

图1.6 AI应用领域

目前相对热门的研发领域如下。

(1)各种疾病的诊断(Medical Diagnostics)及新药的开发。

(2)聊天机器人:包括营销、销售及售后服务的支持。

(3)目标检测(Object Detection)/人脸辨识(Facial Recognition)。

(4)自动驾驶(Self Driving)。

(5)制造机器人。

1-4 机器学习开发流程

一般来说,机器学习开发流程(Machine Learning Workflow),有许多种建议的模型,如数据挖掘流程,包括CRISP-DM(Cross-Industry Standard Process for Data Mining)、Google Cloud建议的流程 [2] 等,个人偏好的流程如图1.7所示。

图1.7 机器学习开发流程

机器学习开发流程大概分为十个步骤,这里不含较高层次的企业需求了解(Business Understanding),只包括实际开发的步骤。

(1)搜集数据,汇整为数据集(Dataset)。

(2)数据清理(Data Cleaning)、数据探索与分析(Exploratory Data Analysis, EDA):EDA通常是指以描述统计量及统计图观察数据的分布,了解数据的特性、极端值(Outlier)、变量之间的关联性。

(3)特征工程(Feature Engineering):原始搜集的数据未必是影响预测目标的关键因素,有时候需要进行数据转换,以找到关键的影响变量。

(4)数据切割(Data Split):切割为训练数据(Training Data)及测试数据(Test Data),一份数据提供模型训练之用,另一份数据则用于衡量模型效果,如准确度。切割的主要目的是确保测试数据不会参与训练,以维持其公正性,即Out-of-Sample Test。

(5)选择算法(Learning Algorithms):依据问题的类型选择适合的算法。

(6)模型训练(Model Training):以算法及训练数据进行训练,产出模型。

(7)模型计分(Score Model):计算准确度等效果指标,评估模型的准确性。

(8)模型评估(Evaluate Model):比较多个参数组合、多个算法的准确度,找到最佳参数与算法。

(9)部署(Deploy):复制最佳模型至正式环境(Production Environment),制作使用界面或提供API,通常以网页服务(Web Services)作为预测的API。

(10)预测(Predict):客户端传入新数据或文件,系统以模型进行预测,传回预测结果。

机器学习开发流程与一般应用系统开发有何差异?最大的差别如图1.8所示。

(1)一般应用系统利用输入数据与转换逻辑产生输出,如撰写报表,根据转换规则将输入字段转换为输出字段;但机器学习会先产生模型,再根据模型进行预测,重用性(Reuse)高。

(2)机器学习除了输入数据外,还会搜集大量历史数据或在Internet中抓取一堆数据,作为塑模的“饲料”。

(3)新产生的数据可回馈入模型中,重新训练,自我学习,使模型更“聪明”。

图1.8 机器学习与一般应用系统开发流程的差异

1-5 开发环境安装

1. 开发环境安装

Python是目前机器学习主流的程序语言,可以直接在本机安装开发环境,亦能使用云端环境,首先介绍本机安装的程序,建议依照以下顺序安装。

(1)安装Anaconda:建议安装此软件,它内含Python及上百个常用工具包。用户可先至https://www.anaconda.com/products/individual下载安装文件,在Windows操作系统安装时,建议执行到图1.9所示画面时,将两者都勾选,就可将安装路径加入至环境变量Path内,这样就能保证在任何目录下均可执行Python程序。Mac/Linux系统则须自行修改登录文件(Profile),增加Anaconda安装路径。

图1.9 Anaconda安装注意事项

(2)安装TensorFlow最新版:Windows操作系统安装时,运行cmd命令,开启DOS窗口,Mac/Linux则须开启终端机,输入:

pip install TensorFlow

注意:此指令同时支持CPU及GPU,但要支持 GPU须另外安装驱动程序及SDK

(3)测试:安装完成,在DOS窗口或终端机内,输入python,进入交互式环境,再输入以下指令进行测试:

> import tensorflow

> exit()

①若出现下列错误:

from tensorflow.python._pywrap_tensorflow_internal import *

ImportError:DLL load failed:The specified module could not be found.则可能是Windows操作系统较旧,须安装MSVC 2019 runtime。

②如果还是出现DLL cannot be loaded.,也可使用Anaconda提供的指令来安装。

conda install tensorflow。

③注意:若安装Python V3.7或更旧版,则只能安装TensorFlow 2.0.0版或以下版本。

(4)若要支持GPU,则还需安装CUDA Toolkit、cuDNN SDK,只能安装TensorFlow支持的版本,请参考TensorFlow官网说明 [3] ,如图1.10所示。

图1.10 TensorFlow支持的CUDA Toolkit版本

注意:目前只支持 NVIDIA 独立显卡,若是较旧型的显卡,则必须查阅驱动程序搭配的版本信息请参考NVIDIA官网说明 [4] ,如图1.11所示。

图1.11 CUDA Toolkit版本与驱动程序的搭配

(5)提醒各位读者,低端的显卡,若不能安装TensorFlow支持的版本,就不用安装CUDA Toolkit、cuDNN SDK了,因为显卡内存过小,执行TensorFlow时常常会发生内存不足(OOM)的错误,徒增困扰。

(6)CUDA Toolkit、cuDNN SDK安装成功后,将安装路径下的bin、libnvvp加入至环境变量Path中,如图1.12所示。

图1.12 将bin、libnvvp加入Path中

(7)安装若有其他问题,可参考笔者的博客文章“Day 01:轻松掌握Keras” [5]

2. 云端环境的开通

我们再来谈谈云端环境的开通,Google、AWS、Azure都提供机器学习的开发环境,这里介绍免费的Google云端环境——Colaboratory,须具备Gmail账号才能使用,其具以下特点。

(1)常用的框架均已预安装,包括TensorFlow。

(2)免费的GPU:NVIDIA Tesla K80 GPU显卡,含12GB内存,设置合理。

(3)它在使用时实时开通Docker Container,限连续使用12小时,超时的话虚拟环境会被回收,所有程序、数据一律会被删除。

开通程序如下。

(1)使用Google Chrome浏览器,进入云端硬盘(Google Drive)接口。

(2)建立一个目录,如“0”,并切换至该目录,如图1.13所示。

图1.13 新建目录

(3)在屏幕中间右击,选择“更多”>“关联更多应用”选项,如图1.14所示。

图1.14 连结应用程序

(4)在搜索栏输入“Colaboratory”,找到后单击该App,单击“Connect”按钮即可开通,如图1.15和图1.16所示。

图1.15 搜索“Colaboratory”

图1.16 开通“Colaboratory”

(5)开通后,即可开始使用,可新增一个“Colaboratory”的文件,如图1.17所示。

图1.17 新增“Colaboratory”文件

(6)Google Colaboratory会自动开启虚拟环境,建立一个空白的Jupyter Notebook文件,后缀为ipynb,几乎所有的云端环境及大数据平台Databricks都以Notebook为主要使用接口,如图1.18所示。

图1.18 自动建立空白Jupyter Notebook文件

(7)或者直接以鼠标双击Notebook文件,也可以自动开启虚拟环境,进行编辑与执行。本机的Notebook文件也可以上传至云端硬盘,选择使用完全不用转换,非常方便。

(8)若要支持GPU可设定运行环境使用GPU或TPU,TPU为Google发明的NPU,如图1.19所示。

图1.19 设定运行环境使用GPU或TPU

(9)“Colaboratory”相关操作,可参考官网说明 [6]

注意:本书所附的范例程序,一律为Notebook文件,因为Notebook可以使用Markdown语法撰写美观的说明,包括数学公式,另外,程序也可以单独执行,便于讲解,相关的用法可以参考 Jupyter Notebook An Introduction [7] 2CnYpBilVVeH6USXWF+znGgKq7XdpD1YLoXHa4LTlunk4Rm1EB8eIBboVUCz7Y87

点击中间区域
呼出菜单
上一章
目录
下一章
×