转载:【AI系统】AI 框架作用

深度学习范式主要是通过发现经验数据中,错综复杂的结构进行学习。通过构建包含多个处理层的计算模型(网络模型),深度学习可以创建多个级别的抽象层来表示数据。例如,卷积神经网络 CNN 可以使用大量图像进行训练,例如对猫狗分类去学习猫和狗图片的特征。这种类型的神经网络通常从所采集图像中,包含的像素进行学习。

本文将从深度学习的原理开始,进而深入地讨论在实现深度学习的计算过程中使用到的 AI 框架,看看 AI 框架具体的作用和目的。

深度学习原理

深度学习的概念源于人工神经网络的研究,但是并不完全等于传统神经网络。在叫法上,很多深度学习算法中都会包含”神经网络”这个词,比如:卷积神经网络 CNN、循环神经网络 LSTM。所以,深度学习可以说是在传统神经网络基础上的升级,约等于神经网络。

虽然深度学习理论最初创立于上世纪八十年代,但有两个主要原因导致其直到近年来才得以发挥巨大作用:

  • 深度学习需要大量的标签化数据。例如,无人驾驶汽车模型训练需要数万亿张图片和数千万小时的视频进行学习;

  • 深度学习需要巨大的计算能力。例如,需要局别并行架构和集群组网能力的高性能 GPU/NPU 对于深度学习计算进行加速。

神经网络

现在业界比较通用对神经网络概念的解释是:

  1. 从通用概念的角度上来看的话,神经网络是在模拟人脑的工作机制,神经元与神经突触之间的连接产生不同的信号传递,每个神经元都记录着信号的特征;

  2. 从统计学的角度来说,就是在预测数据的分布,从数据中学得一个模型,然后再通过这个模型去预测新的数据(这一点就要求测试数据和训练数据必须是同分布)。

实际上,一个神经网络由多个神经元结构组成,每一层的神经元都拥有多个输入和输出,一层可以由多个神经元组成。例如,第 2 层神经网络的神经元输出是第 3 层神经元的输入,输入的数据通过神经元上的激活函数(非线性函数如 tanh、sigmod 等),来控制输出的数值。

数学上简单地理解,单个神经元其实就是一个 $X·W$ 的矩阵乘,然后加一个激活函数 $fun(X·W)$,通过复合函数组合神经元,就变成一个神经网络的层。这种模拟生物神经元的数学计算,能够很好地对大规模独立同分布的数据进行非线性映射和处理,使得其能够应对到 AI 的不同任务。

image

函数逼近

现在,如果把神经网络看做一个复杂函数,那么这个函数可以逼近任何函数。上面只是定义了什么是神经网络,其实神经网络内部的参数(神经元链接间的权重)需要通过求解函数逼进来确定的。

直观地看下一个简单的例子:假设 1 个圆圈代表一个神经元,那么一个神经元可模拟“与或非”3 种运算,3 个神经元组成包含 1 个隐层的神经网络即可以模拟异或运算。因此,理论上,如此组合的神经网络可模拟任意组合的逻辑函数。

image

很多人会说神经网络只要网络模型足够深和足够宽,就可以拟合(fit)任意函数,这样的说法数学理论上靠谱吗?严格地说,神经网络并不是拟合任意函数,其数学理论建立在通用逼近定理(Universal approximation theorem)的基础之上:

神经网络则是传统的逼近论中的逼近函数的一种推广。逼近理论证明,只要神经网络规模经过巧妙的设计,使用非线性函数进行组合,它可以以任意精度逼近任意一个在闭集里的连续函数。

既然神经网络模型理论上能够逼近任何连续函数,那么有意思的事情就来了。我们可以利用神经网络处理数学上分类、回归、拟合、逼近等问题啦。例如在 CV 领域对人脸图像进行分类、通过回归检测图像中的车辆和行人,在 NLP 中对离散的语料数据进行拟合。

可是,神经网络介绍现在还只能逼近任何函数,逼近函数需要求解,怎么去求解神经网络呢?

函数逼近求解:在数学的理论研究和实际应用中经常遇到逼近求解问题,在选定的一类函数中寻找某个函数 $f$,使它与已知函数 $g$(或观测数据)在一定意义下为最佳近似表示,并求出用 $f$ 近似表示 $g$ 而产生的最小误差(即损失函数):

$$ loss(w)=f(w)-g $$

所以,神经网络可以通过求解损失函数的最小值,来确定这个神经网络中的参数 $w$,从而固化这个逼近函数。

反向求导

深度学习一般流程是:1)构建神经网络模型,2)定义损失函数和优化器(优化目标),3)开始训练神经网络模型(计算梯度并更新网络模型中的权重参数),4)最后验证精度,其流程如下图所示,前三步最为重要。

image

因为 AI 框架已经帮我们封装好了许多功能,所以遇到神经网络模型的精度不达标,算法工程师可以调整网络模型结构、调节损失函数、优化器等参数重新训练,不断地测试验证精度,因此很多人戏称算法工程师又是“调参工程师”。

但是在这一过程中,这种机械的调参是无法触碰到深度学习的本质的,为了了解实际的工作原理,进行总结:训练的过程本质是进行反向求导(反向传播算法实现)的过程,然后通过迭代计算求得神经网络中的参数,调整参数是控制这一过程的前进速度和方向。

上面这段话我们仍然听不懂,没关系。我们需要了解的是,什么是训练?训练的作用是什么?为什么要求导?为什么在训练的过程中用到求导?求导的数学依据和意义在哪里?

导数是函数的局部性质。一个函数在某一点的导数,描述该函数在这一点附近的变化率。如果函数的自变量和取值都是实数的话,函数在某一点的导数就是该函数所代表的曲线在这一点上的切线斜率。

那么,针对导数的几何意义,其可以表示为函数在某点处的切线斜率;在代数上,其意味着可以求得函数的瞬时变化率。如果把神经网络看做一个高维复杂的函数,那么训练的过程就是对损失函数进行求导,利用导数的性质找到损失函数的变化趋势,每次一点点地改变神经网络仲的参数 $w$,最后逼近得到这个高维函数。

AI 框架的作用

AI 框架与微分关系

根据深度学习的原理,AI 框架最核心和基础的功能是自动求导(后续统一称为自动微分,AutoGrad)。

接下来有个更加重要的问题,深度学习中的神经网络为什么需要反向求导?

按照高中数学的基本概念,假设神经网络是一个复合函数(高维函数),那么对这个复合函数求导,用的是链式法则。举个简单的例子,考虑函数 $z=f(x,y)$,其中 $x=g(t),t=h(t)$ ,其中 $g(t), h(t)$ 是可微函数,那么对函数 $z$ 关于 $t$ 求导,函数会顺着链式向外逐层进行求导。

$$ \frac{\mathrm{d} x}{\mathrm{d} t} = \frac{\partial z}{\partial x} \frac{\mathrm{d} x}{\mathrm{d} t} + \frac{\partial z}{\partial y} \frac{\mathrm{d} y}{\mathrm{d} t} $$

既然有了链式求导法则,而神经网络其实就是个庞大的复合函数,直接求导不就解决问题了吗?反向到底起了什么作用?下面来看几组公式。

假设用 3 组复合函数来表示一个简单的神经网络:

$$ L_1 = sigmoid(w_1\cdot x) $$

$$ L_2 = sigmoid(w_2\cdot L_1) $$

$$ L_3 = sigmoid(w_3 \cdot L_2) $$

现在定义深度学习中网络模型的损失函数,即优化目标:

$$ loss = Loss(L_3,y) $$

根据链式求导法则可以得到:

$$ \frac{\partial loss}{\partial w_3} = {Loss}'(L_3, y) {sigmoid}'(w_3,L_2)L_2 $$

$$ \frac{\partial loss}{\partial w_2} = {Loss}'(L_3, y) {sigmoid}'(w_3,L_2) {sigmoid}'(w_2,L_1) L_1 $$

$$ \frac{\partial loss}{\partial w_1} = {Loss}'(L_3, y) {sigmoid}'(w_3,L_2) {sigmoid}'(w_2,L_1) {sigmoid}'(w_1,x) x $$

假设神经网络为上述公式 $L_1,L_2, L_3$,对损失函数求神经网络中各参数求偏导,可以看到在接下来的求导公式中,每一次导数的计算都可以重用前一次的的计算结果,于是 Paul Werbos 在 1975 年发明了反向传播算法(并在 1990 重新使用神经网络对反向求导进行表示)。

这里的反向,指的是图中的反向箭头,每一次对损失函数中的参数进行求导,都会复用前一次的计算结果和与其对称的原公式中的变量,更方便地对复合函数进行求导。

image

AI 框架与程序结合

下面左图的公式是神经网络表示的复合函数表示,蓝色框框表示的是 AI 框架,AI 框架给开发者提供构建神经网络模型的数学操作,AI 框架把复杂的数学表达,转换成计算机可识别的计算图。

image

定义整个神经网络最终的损失函数为 $Loss$ 之后,AI 框架会自动对损失函数求导(即对神经网络模型中各个参数求其偏导数)。

上面提到过,每一次求导都会复用前一次的计算结果和与其对称的原公式中的变量。那么干脆直接基于表示神经网络的计算图计的基础之上,构建一个与之对称的计算图(反向计算图)。通过反向计算图表示神经网络模型中的偏导数,反向传播则是对链式求导法则的展开。

image

通过损失函数对神经网络模型进行求导,训练过程中更新网络模型中的参数(函数逼近的过程),使得损失函数的值越来越小(表示网络模型的表现越好)。这一过程,只要你定义好网络 AI 框架都会主动地帮我们完成。

很有意思的是,AI 框架对整体开发流程进行了封装,好处是让算法研究人员专注于神经网络模型结构的设计(更好地设计出逼近复合函数),针对数据集提供更好的解决方案,研究让训练加速的优化器或者算法等。

综上所述,AI 框架最核心的作用是提供开发者构建神经网络的接口(数学操作),自动对神经网络训练(进行反向求导,逼近地求解最优值),得到一个神经网络模型(逼近函数)用于解决分类、回归、拟合的问题,实现目标分类、语音识别等应用场景。

如果您想了解更多AI知识,与AI专业人士交流,请立即访问昇腾社区官方网站https://www.hiascend.com/或者深入研读《AI系统:原理与架构》一书,这里汇聚了海量的AI学习资源和实践课程,为您的AI技术成长提供强劲动力。不仅如此,您还有机会投身于全国昇腾AI创新大赛和昇腾AI开发者创享日等盛事,发现AI世界的无限奥秘~
转载自:| https://www.cnblogs.com/ZOMI/articles/18562690 | header |
| ---------------------------------------------- | ------ |
| | |

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/852217.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

转载:【AI系统】卷积操作原理

卷积是神经网络里面的核心计算之一,它是一种特殊的线性运算。而卷积神经网络(CNN)是针对图像领域任务提出的神经网络,其受猫的视觉系统启发,堆叠使用卷积层和池化层提取特征。它在 CV 领域方面的突破性进展引领了深度学习的热潮。 回到卷积本身,其变种丰富、计算复杂,神…

转载:【AI系统】Winograd 算法

在上一篇文章的介绍中,介绍了 Im2Col 技术,它通过将三维张量重新排列成矩阵形式,然后利用基于内存访问局部性的优化库如 GEMM(通用矩阵乘法库)加速计算。随后,还探讨了空间组合优化,这一种利用局部性原理来提升效率的技术。 在本文将重点介绍 Winograd 优化算法,它是矩…

转载:【AI系统】Im2Col 算法

作为早期的 AI 框架,Caffe 中卷积的实现采用的是基于 Im2Col 的方法,至今仍是卷积重要的优化方法之一。 从上一篇文章的介绍中可以看到,在 CNN 中卷积直接计算的定义中,卷积核在输入图片上滑动,对应位置的元素相乘后相加求和,滑窗的大小由卷积核决定。由于滑动操作时的窗…

转载:【AI系统】模型转换基本介绍

模型转换的主要任务是实现模型在不同框架之间的流转。随着深度学习技术的发展,训练框架和推理框架的功能逐渐分化。训练框架通常侧重于易用性和研究人员的算法设计,提供了分布式训练、自动求导、混合精度等功能,旨在让研究人员能够更快地生成高性能模型。 而推理框架则更专注…

转载:【AI系统】知识蒸馏原理

本文将介绍知识蒸馏(Knowledge Distillation, KD)的原理,这是一种通过从大型的教师模型向小型的学生模型转移知识来实现模型压缩和优化的技术。知识蒸馏的核心思想是利用教师模型在大量数据上积累的丰富知识,通过特定的蒸馏算法,使学生模型能够学习并吸收这些知识,从而达…

DDCA —— 内存一致性

CS6810 Chapter 5. Multi-threading, Synchronization, Consistency. 的学习笔记,详细介绍了同步、构造锁、缓存锁、Test-and-Test-and-Set、负载链接和条件存储,以及内存一致性模型和事务内存。1. 同步(Synchronization) 1.1 构造锁(Locks)原子(atomic)执行:应用程序…

Consul 学习总结

什么是Consul? Consul是一种服务网络解决方案,使团队能够管理服务之间以及跨本地和多云环境和运行时的安全网络连接。Consul提供服务发现、服务网格(service mesh)、流量管理和网络基础设施设备的自动更新。可以在单个Consul部署中单独或一起使用这些功能。 架构介绍 Consul提…

转载:【AI系统】GhostNet 系列

本文主要会介绍 GhostNet 系列网络,在本文中会给大家带来卷积结构的改进方面的轻量化,以及与注意力(self-attention)模块的进行结合,部署更高效,更适合移动计算的 GhostNetV2。让读者更清楚的区别 V2 与 V1 之间的区别。 GhostNet V1 模型 GhostNet V1:提供了一个全新的 Gh…

转载:【AI系统】ShuffleNet 系列

本文会介绍 ShuffleNet 系列,重点在于其模型结构的轻量化设计,涉及如何降低深度网络计算量,在本文中会着重会讲解逐点分组卷积(Pointwise Group Convolution)和通道混洗(Channel Shuffle)两种新的运算,而 V2 版本则会从设备运算速度方面考虑将网络进行轻量化。 ShuffleNet …

转载:【AI系统】推理系统架构

推理系统架构是 AI 领域中的一个关键组成部分,它负责将训练好的模型应用于实际问题,从而实现智能决策和自动化。在构建一个高效的推理系统时,我们不仅需要考虑其性能和准确性,还需要确保系统的可扩展性、灵活性以及对不同业务需求的适应性。在本文中,我们将主要以 NVIDIA …

剪映破解版、剪映 VIP 版本下载安装教程,亲测有效

大家好!今天要给各位小伙伴们安利一款我亲测超好用的视频剪辑工具——剪映!更劲爆的是,这里推荐的还是剪映破解版——支持永久 VIP 功能,完全免费,真的爱不释手!对于我们这些天天和视频打交道的 UP 主来说,这简直是创作道路上的一盏明灯! 链接地址:https://pan.quark.…

第十五次作业

1、WAF绕过文件上传实验。 首先判断WAF是依靠哪种规则进行拦截的 抓包将文件内容类型改为脚本类型,成功上传,说明文件内容类型不是WAF的检查因素将文件内容改为一句话木马,成功上传,说明文件内容不是WAF的检查因素抓包将文件后缀名改成.php,上传失败被拦截,说明文件后缀名…