Skip to content

Commit

Permalink
add more (#192)
Browse files Browse the repository at this point in the history
* add more in 7.3

* add more in 7.1

* add more in 1.2

* add more in 7.4

* add more in 1.3

* add more 1.3

* add more

* add more for 1.3

* add more for 1.3
  • Loading branch information
YanjieGao authored Jul 4, 2022
1 parent 76a01a3 commit a22e52f
Show file tree
Hide file tree
Showing 5 changed files with 134 additions and 100 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@

互联网公司通过不断爬取互联网数据沉淀了大量数据,同时因为其有海量的用户,这些用户不断使用互联网服务,上传文字,图片,音频等数据,又积累了更为丰富的数据。这些数据随着时间的流逝和新业务功能的推出,数据量越来越大,数据模式越来越丰富。所以互联网公司较早的开发和部署了的大数据管理与处理平台。基于这些海量数据,互联网公司通过数据驱动的方式,训练人工智能模型 ,进而优化和提升业务用户体验(例如,点击率预测让用户获取感兴趣的信息),让更多的用户使用服务,进而形成循环。由于天然的随着业务发展遇到更多需要应用人工智能技术的实际场景和需求,相较于学术界,互联网公司作为工业界的代表,较早地将深度学习的发展推到了更加实用,落地的阶段,并不断投入研发推动人工智能算法与系统的不断演进和发展。

以图中为例,同样是图像分类问题,从最开始数据规模较小的 MNIST[<sup>[]</sup>](#mnist) 手写数字识别数据集,到更大规模的 ImageNet,再到互联网Web服务中沉淀了数亿量级的图像数据:
以表 1.2.1 中为例,同样是图像分类问题,从最开始数据规模较小的 MNIST[<sup>[1]</sup>](#mnist) 手写数字识别数据集其只有 6 万样本,10 个分类,到更大规模的 ImageNet,其有 1600 万样本,1000 个分类,再到互联网 Web 服务中沉淀了数亿量级的图像数据。海量的数据让人工智能问题变得愈发挑战的同时,实质性的促进了人工智能模型效果的提升,因为当前的以深度学习为核心的代表性人工智能算法,其本身是数据驱动的方式从数据中学习规律与知识,数据的质与量决定了模型的本身的天花板。

<center>表 1.2.1 不同图像分类问题数据集的数据量</center>

Expand All @@ -58,7 +58,7 @@

***1. 深度学习在已有数据集(MNIST数据集)上超越机器学习算法***

[MNIST](http://yann.lecun.com/exdb/mnist/)[<sup>[]</sup>](#mnist) 手写数字识别数据库是一个大型手写数字图像数据集,在早期通常用于训练和研究各种图像分类的深度学习模型,由于其样本与数据规模较小,当前也常常用于教学或神经网络结构(NAS)搜索的研究。
[MNIST](http://yann.lecun.com/exdb/mnist/)[<sup>[1]</sup>](#mnist) 手写数字识别数据库是一个大型手写数字图像数据集,在早期通常用于训练和研究各种图像分类的深度学习模型,由于其样本与数据规模较小,当前也常常用于教学或神经网络结构(NAS)搜索的研究。

我们可以观察图 1.2.1,了解不同的机器学习算法取得的效果。

Expand All @@ -71,7 +71,9 @@

2012 年,一个深度卷积神经网络可以将错误率降低到 0.23% (2012),这样的结果已经可以和人所达到的错误率 0.2% 非常接近。

深度学习模型在 MNIST[<sup>[1]</sup>](#mnist) 数据集上的表现,让研究者们看到了深度学习模型提升预测效果的潜力,进而不断尝试新的深度学习模型和更复杂的数据集上进行验证。
深度学习模型在 MNIST[<sup>[1]</sup>](#mnist) 数据集上相比传统机器学习模型的表现,让研究者们看到了深度学习模型提升预测效果的潜力,进而不断尝试新的深度学习模型和更复杂的数据集上进行验证。

所以我们看到,深度学习算法在准确度和错误率上的效果提升,让不同应用场景上的问题取得突破进展或让领域研发人员看到相应潜力,是驱动不同行业不断投入研发深度学习的动力,


***2. 深度学习在公开数据集(ImageNet)上取得不断的突破***
Expand All @@ -82,10 +84,12 @@
<center><img src="./img/2/2-3-4-dl-imagenet-improve.png" /></center>
<center>图 1.2.2 更深和高效的深度学习模型结构在 ImageNet 数据集上的效果不断取得突破</center>

从图中可以看到,1998 年的 Lenet,到 2012 年的 AlexNet,不仅效果提升,模型变大,同时引入了 GPU 训练,新的层(ReLU等)。到 2015 年的 Inception,模型的计算图进一步复杂,且有新的层被提出,错误率进一步降低到 6.7%。到 2015 年的 ResNet,模型层数进一步加深,甚至达到上百层。到 2019 年 NAS,模型设计逐渐朝着自动化的方式进行设计。

我们可以观察到,新的模型不断在以下方面演化进而提升效果:
- 更好的激活函数和层: ReLU,Batch Normalization 等。
- 更复杂更深的网络结构和更多的模型权重。
- 更好的训练技巧: 正则化(Regularization),初始化(Initialization),学习方法(Learning Methods)
- 更好的训练技巧: 正则化(Regularization),初始化(Initialization),学习方法(Learning Methods),自动化机器学习与模型结构搜索等

这些可以取得更好的效果的技巧和设计,驱动者算法工程师与研究员不断投入设计新的模型,同时也要求深度学习系统不断提供新的算子(Operator)支持,算子优化,训练算法支持,进而驱动框架和编译器对前端,中间表达,和系统算法协同设计的演进和发展。

Expand All @@ -111,7 +115,7 @@

2016 年,Google DeepMind 研发的 AlphaGo[<sup>[7]</sup>](#alphago) 在围棋比赛中以 4:1 的高分击败了世界大师级冠军李世石。OpenAI 训练出了名为 OpenAI Five[<sup>[8]</sup>](#openaifive) 的 Dota 2 游戏智能体。2019 年 4 月,OpenAI Five 击败了一支 Dota 2 世界冠军战队,这是首个击败电子竞技游戏世界冠军的人工智能系统。

由于不同领域的输入数据格式不同,预测输出结果不同,数据获取方式不同,造成模型结构和训练方式产生非常多样的需求,各家公司和组织不断研发新的针对特定领域的框架或上层接口封装以支持特定领域数据科学家快速验证和实现新的想法,工程化部署和批量训练成熟的模型。所以我们可以看到,由最开始 AlexNet 是作者直接通过 [CUDA](https://code.google.com/archive/p/cuda-convnet) 实现深度学习模型,到目前有通过 Python 语言灵活和轻松调用的框架,到大家习惯使用 Hugging Face 进行神经网络语言模型训练,背后是系统工程师贴合实际需求不断研发新的工具,并推动深度学习生产力提升的结果。所以即使作为系统工程师,也需要密切关注算法和应用的演进,才能紧跟潮流设计出贴合应用实际的工具与系统。
由于不同领域的输入数据格式不同,预测输出结果不同,数据获取方式不同,造成模型结构和训练方式产生非常多样的需求,各家公司和组织不断研发新的针对特定领域的框架或上层接口封装(例如,Facebook 推出的 Caffe 与 Torch 演化到 PyTorch,Google TensorFlow 及新推出的 JAX,工具与框架本身也是随着用户的模型构建与程序书写与部署需求不断演进。)以支持特定领域数据科学家快速验证和实现新的想法,工程化部署和批量训练成熟的模型。所以我们可以看到,由最开始 AlexNet 是作者直接通过 [CUDA](https://code.google.com/archive/p/cuda-convnet) 实现深度学习模型,到目前有通过 Python 语言灵活和轻松调用的框架,到大家习惯使用 Hugging Face 进行神经网络语言模型训练,背后是系统工程师贴合实际需求不断研发新的工具,并推动深度学习生产力提升的结果。所以即使作为系统工程师,也需要密切关注算法和应用的演进,才能紧跟潮流设计出贴合应用实际的工具与系统。

## 1.2.3 计算机体系结构和计算能力的进步

Expand All @@ -123,7 +127,9 @@
于是,人们就开始为应用定制专用芯片,通过消除通用处理器中冗余的功能部分,来进一步提高对特定应用的计算性能。
比如,图形图像处理器 GPU 就对图像类算法做专用加速。后来出现 GPGPU,也就是通用 GPU,对适合于抽象为单指令流多数据流(SIMD)的并行算法与工作负载都能起到不错的加速效果。

为了更高的性能,这些年人工智能芯片也大行其道。其中一个代表就是 Google TPU(Tensor Processing Unit)[<sup>[9]</sup>](#tpu)。通过对矩阵乘法定制脉动阵列(Systolic Array),进一步提高了性能。通过定制化硬件,厂商又将处理器性能提升了大约 $10^5$ 量级。专有芯片的算力发展也逐渐逼或超越蜻蜓,老鼠和人脑的算力。
为了更高的性能,这些年人工智能芯片也大行其道。其中一个代表就是 Google TPU(Tensor Processing Unit)[<sup>[9]</sup>](#tpu)。通过对深度学习模型中的算子进行抽象,转换为矩阵乘法或非线性变换,根据专用负载特点进一步定制流水线化执行的脉动阵列(Systolic Array),进一步减少访存提升计算密度,提高了性能。除了算子层面驱动的定制,深度学习负载本身在算法层常常应用的稀疏性和量化等加速手段也逐渐被硬件厂商根据通用算子定制到专用加速器中(例如,英伟达推出的 Transformer Engine),在专用计算领域进一步协同优化加速。

通过定制化硬件,厂商又将处理器性能提升了大约 $10^5$ 量级。专有芯片的算力发展也逐渐逼或超越蜻蜓,老鼠和人脑的算力。

然而可惜的是,经过这么多年的发展,虽然处理器性能提升这么多,我们机器的数值运算能力早已是人类望尘莫及了,里面的程序仍然是人类指定的固定代码,智能程度还远远不及生物大脑。从智力程度来说,大约也就只相当于啮齿动物,距离人类还有一定距离。

Expand Down
Loading

0 comments on commit a22e52f

Please sign in to comment.