自动微分#
内容介绍#
这一节里面主要是围绕 AI 框架、或者训练平台的自动微分功能。AI 框架中关于自动微分的一个重要性不言而喻,实际上自动微分是贯穿整个 AI 框架的全流程。没有了自动微分,也就没有了 AI 框架最核心的功能。为什么这么说呢?可以想象一下,假设在实现一个神经网络模型的时候,一般开发者只会使用 Pytorch 的 API 实现一个正向的网络表达式,可是网络模型的反向怎么表示呢?
实际上除了正向的表示是用户手工的地去构建,反向的表示、自动微分的实现、正反向的链接关系都是由 AI 框架,里面的自动微分功能去实现的。因此说自动微分这个功能在 AI 框架里面是非常的重要。
在接下来的内容,主要是了解计算机实现微分的基本概念,其实微分的实现方式分为很多种,有数字微分,符号微分,自动微分。函数的微分是指对函数的局部变化的一种线性描述。微分可以近似地描述当函数自变量的取值作足够小的改变时,函数的值是怎样改变的。
微分在数学中的定义:由 \(y\) 是 \(x\) 的函数 \((y=f(x))\)。从简单的 \(x-y\) 座标系来看,自变数 \(x\) 有微小的变化量时 \((d/dx)\),应变数 \(y\) 也会跟着变动,但 \(x\) 跟 \(y\) 的变化量都是极小的。当 \(x\) 有极小的变化量时,我们称对 \(x\) 微分。微分主要用于线性函数的改变量,这是微积分的基本概念之一。
在具体实现自动微分的过程中,主要有 2 种实现模式,前向和向后微分。前向微分和后向微分为了在数学上方便表达,会引入一个亚克比原理,或者叫做亚克比矩阵。
对微分进行表示,不过这仅限于数学表示,实际上实现的过程中更多的是通过以下三种方法实现:
1)表达式或者图的方式;2)操作符重载(object-oriented);3)源码转换 AST。
最后来去畅想自动微分的未来和挑战,来去回答我们到底要不要学一个 AI 框架呢?学模型算法和原理才是核心?AI 框架未来的核心点机制将会如何演进?
小结与思考#
了解 AI 框架实现中最重要的自动微分原理
知道业界主流的 AI 框架的具体实现方式
自动微分的技术未来发展动向与面临的挑战