细说PyTorch深度学习:理论、算法、模型与编程实现
上QQ阅读APP看书,第一时间看更新

1.3 PyTorch

本节介绍PyTorch及其应用领域。

1.3.1 PyTorch简介

PyTorch是一个基于Torch的Python开源机器学习库,用于自然语言处理等应用程序。它主要由Facebook的人工智能小组开发,不仅能够实现强大的GPU加速,同时还支持动态神经网络,这一点是现在很多主流框架(如TensorFlow)都不支持的。

TensorFlow和Caffe都是命令式的编程语言,而且是静态的,首先必须构建一个神经网络,然后一次又一次使用相同的结构,如果想要改变网络的结构,就必须从头开始。但是对于PyTorch,通过反向求导技术,可以零延迟地任意改变神经网络的行为,而且实现速度快。正是这一灵活性,是PyTorch对比TensorFlow的最大优势。

另外,对比TensorFlow,PyTorch的代码更加简洁直观,底层代码也更容易看懂,这对于使用它的人来说理解底层肯定是一件令人激动的事。

PyTorch主要经历了以下发展阶段:

● 2017年1月正式发布PyTorch。

● 2018年4月更新0.4.0版,支持Windows系统,Caffe 2正式并入PyTorch。

● 2018年11月更新1.0稳定版,是GitHub增长第二快的开源项目。

● 2019年5月更新1.1.0版,支持TensorBoard,增强可视化功能。

● 2019年8月更新1.2.0版,更新torchvision、torchaudio和torchtext,增加了更多功能。

PyTorch具有以下优点:

● PyTorch是相当简洁且高效快速的框架。

● 设计追求最少的封装。

● 设计符合人类思维,它让用户尽可能地专注于实现自己的想法。

● 与Google的TensorFlow类似,FAIR的支持足以确保PyTorch获得持续的开发更新。

● PyTorch作者亲自维护的论坛供用户交流和求教问题。

● 讨论社区发达,学习材料丰富。

● 学术界和工业界广泛使用,从而强者愈强。

● 入门简单。

当然,现今任何一个深度学习框架都有其缺点,PyTorch也不例外,针对移动端、嵌入式部署以及高性能服务器端的部署其性能表现有待提升。

PyTorch现在已经从Meta“独立”出来了。2022年9月,扎克伯格亲自宣布,PyTorch基金会已新鲜成立,并归入Linux基金会旗下、其管理委员会成员包括Meta、AMD、AWS、谷歌云、微软和英伟达。

Meta表示:PyTorch成功背后的驱动力是开源社区充满活力的持续增长,成立基金会将确保在今后的许多年中,社区成员以透明和公开的方式做出决定。

成立PyTorch基金会核心就是两个字:中立。而其优先任务是确保PyTorch商业化和技术治理之间的相互独立。

Linux基金会进一步对PyTorch“中立”的重要性进行了解释:PyTorch最初由Meta的AI团队孵化,现在已经发展成为一个由贡献者和用户组成的庞大社区。在AI/ML(人工智能/机器学习)领域,PyTorch恰如一把瑞士军刀——AI/ML社区中的大量技术都是基于PyTorch构建的。

截至2022年8月,PyTorch已经和Linux内核、Kubernetes等并列成为世界上增长最快的5个开源社区之一。从2021年8月到2022年8月,PyTorch统计了超过65000次提交,有超过2400个贡献者参与其中。对于这样的关键技术基础平台而言,中立性和真正归属于社区的特性将加速其增长,并使之更加成熟。PyTorch基金会加入Linux基金会旗下使社区成员相信,PyTorch是可以永久依赖和信任的公共资源的一部分。

1.3.2 PyTorch的应用领域

PyTorch应用广泛,无论是在军事领域还是民用领域,都有PyTorch施展的机会,主要包括以下几个方面。

1.数据分析与挖掘

数据挖掘和数据分析通常被相提并论,并在许多场合被认为是可以相互替代的术语。关于数据挖掘,已有多种文字不同但含义接近的定义,例如识别出巨量数据中有效的、新颖的、潜在有用的最终可理解的模式的非平凡过程,无论是数据分析还是数据挖掘,都是帮助人们收集、分析数据,使之成为信息,并做出判断,因此可以将这两项合称为数据分析与挖掘。

数据分析与挖掘技术是机器学习算法和数据存取技术的结合,利用机器学习提供的统计分析、知识发现等手段分析海量数据,同时利用数据存取机制实现数据的高效读写。机器学习在数据分析与挖掘领域拥有不可取代的地位,2012年Hadoop进军机器学习领域就是一个很好的例子。

2.模式识别

模式识别起源于工程领域,而机器学习起源于计算机科学,这两个不同学科的结合带来了模式识别领域的调整和发展。模式识别研究主要集中在两个方面:

(1)研究生物体(包括人)是如何感知对象的,属于认识科学的范畴。

(2)在给定的任务下,如何用计算机实现模式识别的理论和方法,这些是机器学习的长项,也是机器学习研究的内容之一。

模式识别的应用领域广泛,包括计算机视觉、医学图像分析、光学文字识别、自然语言处理、语音识别、手写识别、生物特征识别、文件分类、搜索引擎等,而这些领域正是机器学习大展身手的舞台,因此模式识别与机器学习的关系越来越密切。

3.生物信息学

随着基因组和其他测序项目的不断发展,生物信息学研究的重点正逐步从积累数据转移到如何解释这些数据。机器学习的强大学习能力和推理能力已经被用在生物信息学。在未来,生物学的新发现将极大地依赖于在多个维度和不同尺度下对多样化的数据进行组合和关联的分析能力,而不再仅依赖于对传统领域的继续关注。

序列数据(Sequence Data)将与生物信息(包括结构和功能数据、基因表达数据、生化反应通路数据、表现型和临床数据等一系列数据)相互集成。如此庞大的数据量,在生物信息的存储、获取、处理、浏览和可视化等方面,都对理论算法和软件的发展提出了迫切的需求。

另外,由于基因组数据本身的复杂性,也对理论算法和软件的发展提出了迫切的需求。而机器学习方法,如神经网络、遗传算法、决策树和支持向量机等正适合处理这种数据量大、含有噪声并且缺乏统一理论的领域。例如,目前有大量关于新冠肺炎的机器学习论文发表。

4.其他领域

国内外的IT巨头正在深入研究和应用机器学习,这些巨头把目标定位于全面模仿人类大脑,试图创造出拥有人类智慧的机器大脑。另外,还有一些深入日常生活的具体应用。

(1)虚拟助手。顾名思义,当使用语音发出指令后,它们会协助查找信息。对于回答,虚拟助手会查找信息,回忆相关查询,或向其他资源(如电话应用程序)发送命令以收集信息,甚至可以指导助手执行某些任务,例如设置7点的闹钟等。

(2)交通预测。生活中经常使用GPS导航服务,当这样做时,当前的位置和速度被保存在中央服务器上进行流量管理,之后使用这些数据用于构建当前流量的映射。通过机器学习可以解决配备GPS的汽车数量较少的问题,在这种情况下,机器学习有助于根据估计找到拥挤的区域。

(3)过滤垃圾邮件和恶意软件。电子邮件客户端使用了许多垃圾邮件过滤方法,为了确保这些垃圾邮件过滤器能够不断更新,使用了机器学习技术。多层感知器和决策树归纳等是由机器学习提供支持的一些垃圾邮件过滤技术,每天可检测到超过400 000个恶意软件,每个代码与之前版本有90%~98%相似,由机器学习驱动的系统安全程序理解编码模式。因此,可以轻松检测到2%~10%变异的新恶意软件,并提供针对它们的保护。

(4)快速揭示细胞内部结构。借由高功率显微镜和机器学习,科学家们可查看各种新冠肺炎病毒的变种,并使用机器学习方法模拟病毒变异和传播的规律,为人类健康做出贡献。

1.3.3 PyTorch的应用前景

值得一提的是,有统计数据显示,现在NeurIPS、ICML等机器学习顶会中,有超过80%研究人员使用的都是PyTorch。

随着DeepMind的AlphaGo在2016年战胜了围棋世界冠军李世石,人工智能这个词开始进入大众的视野。从那时起,无论是大型互联网公司还是初创企业都开始大规模招聘机器学习的相关从业者,无论是社招的求职者还是校招的应聘学生都出现了大规模的增长。

1.计算机视觉

计算机视觉(Computer Vision,CV)方向无论是在学校还是在公司,都有着大量的从业者,并且ImageNet项目可以提供上千万的标注图片供相关从业者使用。既然ImageNet是开源的数据集,那么无论是学校的教授还是学生,无论是大型互联网公司还是初创企业,都可以轻易地获取这些数据集,不仅可以进行CV算法的研究工作,还可以进行相关的工程实践。

由于计算机视觉方向历史悠久,计算机系、工程系甚至数学系都有着大量的老师和相应的学生从事该方向的研究工作,因此学校或者研究所对工业界输出的计算机视觉人才数量也是可观的。

2.自然语言处理

与计算机视觉相比,自然语言处理(Natural Language Processing,NLP)在自动驾驶的车机系统、自动翻译系统、人工助手系统等领域都有广阔的应用前景。

3.推荐系统

机器学习为客户推荐引擎提供了动力,增强了客户体验,并能提供个性化体验。在这种场景中,算法处理单个客户的数据点,比如客户过去的购买记录、公司当前的库存、其他客户的购买历史等,来确定适合向每个客户推荐的产品和服务。

大型电子商务公司使用推荐引擎来增强个性化并加强购物体验,这种机器学习应用程序的另一个常见应用是流媒体娱乐服务,它使用客户的观看历史、具有类似兴趣客户的观看历史、有关个人节目的信息和其他数据点,向客户提供个性化的推荐,在线视频平台则使用推荐引擎技术帮助用户快速找到适合自己的视频。

4.客户流失评估

企业使用人工智能和机器学习可以预测客户关系何时开始恶化,并找到解决办法。通过这种方式,新型机器学习能帮助公司处理最古老的业务问题:客户流失。

在这里,算法从大量的历史、人数统计和销售数据中找出规律,确定和理解为什么一家公司会失去客户。然后,公司就可以利用机器学习能力来分析现有客户的行为,以提醒业务人员哪些客户面临着将业务转移到别处的风险,从而找出这些客户离开的原因,然后决定公司应该采取什么措施留住客户。

流失率对于任何企业来说都是一个关键的绩效指标,对于订阅型和服务型企业来说尤为重要,例如媒体公司、音乐和电影流媒体公司、软件即服务公司以及电信公司等技术主要适用行业都面临着高流失率的压力。

5.欺诈检测

机器学习理解模式的能力,以及立即发现模式之外异常情况的能力使它成为检测欺诈活动的宝贵工具。事实上,金融机构多年来一直在这个领域使用机器学习。

它的工作原理是这样的:数据科学家利用机器学习来了解单个客户的典型行为,比如客户在何时何地使用信用卡。机器学习可以利用这些信息以及其他数据集,在短短几毫秒内准确判断哪些交易属于正常范围,因此是合法的,而哪些交易超出了预期的规范标准,因此可能是欺诈的。机器学习在各行业中检测欺诈的应用包括金融服务、旅行、游戏和零售等。

6.自动驾驶

自动驾驶软件技术主要分为计算机视觉、行为预测以及路径规划。很多人误以为,自动驾驶面临最难攻克的技术在于计算机视觉,但实际上并非如此。过去数年里,随着深度学习的广泛应用,计算机视觉技术发展迅速,只要经过足够的训练和提供充足的数据,计算机视觉就可以探测大部分的情景。如今,自动驾驶面临的难题主要集中在行为预测和路径规划方面。

如果回忆小时候是如何学会骑自行车的,会发现其实大人们并不会告诉孩子到底该怎么骑,主要还是靠自己探索,最终习惯了也就熟练了。

近年来,一些自动驾驶公司开始探索这一种方式,通过利用有限的人类提供的数据“主动学习”如何驾驶。这就需要将大量的机器学习运用于行为预测以及路径规划。例如特斯拉公司的L2自动驾驶系统、丰田公司的THS L2自动驾驶系统。

目前深度学习已经应用于人们日常生活的各个方面,如智能手机、购物网站、旅游网站、导航地图、支付系统等,虽然有些人不知道这些领域已经应用了深度学习算法,但是深度学习确实已经深入老百姓的日常生活。学习基于PyTorch的深度学习技术必将有一个广阔的就业前景。