77百科网
当前位置: 首页 生活百科

微分计算方法真的有用吗(自动微分到底是什么)

时间:2023-05-23 作者: 小编 阅读量: 1 栏目名: 生活百科

机器之心整理参与:思、Jamin一直以来,自动微分都在DL框架背后默默地运行着,本文希望探讨它到底是什么,通过JAX,自动微分又能怎么用。实战JAX自动微分Jax是谷歌开源的一个科学计算库,能对Python程序与NumPy运算执行自动微分,而且能够在GPU和TPU上运行,具有很高的性能。如下先导入JAX,然后用三行代码就能定义之前给出的反传不确定性度量。JAX这样的通用自动微分库也许能在更广泛的领域发挥作用。

机器之心整理

参与:思、Jamin

一直以来,自动微分都在 DL 框架背后默默地运行着,本文希望探讨它到底是什么,通过 JAX,自动微分又能怎么用。

自动微分现在已经是深度学习框架的标配,我们写的任何模型都需要靠自动微分机制分配模型损失信息,从而更新模型。在广阔的科学世界中,自动微分也是必不可少的。说到底,大多数算法都是由基本数学运算与基本函数组建的。

在 ICLR 2020 的一篇 Oral 论文中(满分 8/8/8),图宾根大学的研究者表示,目前深度学习框架中的自动微分模块只会计算批量数据反传梯度,但批量梯度的方差、海塞矩阵等其它量也很重要,它们可以在计算梯度的过程中快速算出来。

目前自动微分框架只计算出梯度,因此就限定了研究方向只能放在梯度下降变体之上,而不能做更广的探讨。为此,研究者构建了 BACKPACK,它建立在 PyTorch 之上,还扩展了自动微分与反向传播能获得的信息。

选自论文 BACKPACK,arXiv:1912.10985。

除此之外,Julia Computing 团队去年 7 月份也发表了一份论文,提出了可微编程系统,它能将自动微分内嵌于 Julia 语言,从而将其作为第一级的语言特性。由于广泛的科学计算和机器学习领域都需要线性代数的支持,因此这种可微编程能成为更加通用的一种模式。

从这些前沿研究可以清晰地感受到,自动微分越来越重要。

自动微分是什么

在数学与计算代数学中,自动微分也被称为微分算法或数值微分。它是一种数值计算的方式,用来计算因变量对某个自变量的导数。此外,它还是一种计算机程序,与我们手动计算微分的「分析法」不太一样。

自动微分基于一个事实,即每一个计算机程序,不论它有多么复杂,都是在执行加减乘除这一系列基本算数运算,以及指数、对数、三角函数这类初等函数运算。通过将链式求导法则应用到这些运算上,我们能以任意精度自动地计算导数,而且最多只比原始程序多一个常数级的运算。

一般而言会存在两种不同的自动微分模式,即前向累积梯度(前向模式)和反向累计梯度(反向模式)。前向累积会指定从内到外的链式法则遍历路径,即先计算 d_w1/d_x,再计算 d_w2/d_w1,最后计算 dy/dw_2。

反向梯度累积正好相反,它会先计算 dy/dw_2,然后计算 d_w2/d_w1,最后计算 d_w1/d_x。这是我们最为熟悉的反向传播模式,它非常符合「沿模型误差反向传播」这一直观思路。

如图所示,两种自动微分模式都在求 dy/dx,只不过根据链式法则展开的形式不太一样。

来一个实例:误差传播

在统计学上,由于变量含有误差,使得函数也含有误差,我们将其称之为误差传播。阐述这种关系的定律叫做误差传播定律。

先定义一个函数 q(x,y) ,我们想通过 q 传递 x 与 y 的不确定性信息,即 _x 与 _y。最直接的方式是随机采样 x 与 y,并计算 q 的值,然后查看它的分布。这就是「传播不确定性」这个概念的意义。

误差传播的积分公式可以是一个近似值, q(x,y) 的一般表达式可以写为:

如果我们定义一个特殊案例,即 q(x,y)=x±y,那么总不确定性可以写为:

对于特例 q(x,y)=xy 与 q(x,y)=x/y ,不确定性分别为 (σ_q/q)^2 = (σ_x/x)^2 (σ_y/y)^2 与 σ_q=(x/y)* sqrt((σ_x/x)^2 (σ_y/y)^2)。

我们可以尝试这些方法,并对比根据这些近似公式算出来的反传误差,以及实际发生的反传误差。

实战 JAX 自动微分

Jax 是谷歌开源的一个科学计算库,能对 Python 程序与 NumPy 运算执行自动微分,而且能够在 GPU 和 TPU 上运行,具有很高的性能。

如下先导入 JAX,然后用三行代码就能定义之前给出的反传不确定性度量。

from jax *import* grad, jacfwd

import jax.numpy *as* np

def error_prop_jax_gen(q,x,dx):

jac = jacfwd(q)

return np.sqrt(np.sum(np.power(jac(x)*dx,2)))

这里计算的反传梯度是根据 jax 完成的,后面的反传误差会直接通过公式计算,并对比两者。

1. 配置两个具有不确定性的观察值

我们需要使用 x 与 y 作为符号推理,但可以把它们都储存在数组 x 中,x[0]=x、x[1]=y。

x_ = np.array([2.,3.])

dx_ = np.array([.1,.1])

2. 加减法

在 (,)=± 这一特例情况下,误差传播公式可以简化为

上图所示,通过误差传播公式计算出来的值与 JAX 计算出来的是一致地。

3. 乘除法

在 (,)= 与 (,)=/ 这两种特例中,误差传播公式可以写为:

4. 幂

对于特例 (,)=^*^,传播公式可以表示为:

我们可以写成

JAX 的使用非常多样,甚至能直接使用它搭建神经网络。例如 JAXnet 框架,它是一个基于 JAX 的深度学习库,它的 API 提供了便利的模型搭建体验。比如说,以下代码就能建个神经网络:

from jaxnet import *

net = Sequential(Dense(1024), relu, Dense(1024), relu, Dense(4), logsoftmax)

此外,不久之前,DeepMind 也发布了两个新库:在 Jax 上进行面向对象开发 的 Haiku 和 Jax 上的强化学习库 RLax。JAX 这样的通用自动微分库也许能在更广泛的领域发挥作用。

    推荐阅读
  • 旅途综合症是什么病 旅游后综合症叫什么

    据悉该女子是因为坐火车时间过长,患上了旅途综合征,才会出现这样的状态,那么什么是旅途综合症呢?什么是旅途综合症旅途综合征是一种没有器质性病变的精神疾病,此病多发与长途列车旅行者,其诱因在于旅途困顿,情绪压抑,精神紧张以及对人身安全怀有恐惧等。旅途综合症有哪些症状旅途的困顿、情绪压抑突破生理承受能力,便导致精神崩溃,表现出片段的妄想,幻觉以及激烈的言行紊乱。

  • 新自由主义介绍(简要介绍新自由主义)

    下面希望有你要的答案,我们一起来看看吧!新自由主义介绍新自由主义是英国现代政治思想的主要派别。主张在新的历史时期维护个人自由,调解社会矛盾,维护自由竞争的资本主义制度。因而成为一种经济自由主义的复苏形式,自从19世纪70年代以来在国际的经济政策上扮演着越来越重要的角色。新自由主义指的是一种政治—经济哲学,反对国家对于国内经济的干预。

  • 入秋后这三种水果不要多吃(入秋之后的各种水果食用禁忌)

    刚一入秋,秋果便源源上市,品种繁多,因其营养丰富、味道鲜美、医食兼优,人人想先尝为快。患“橘黄症”后,应适量多食植物油,并多喝水,以加速其溶解、转化和排泄。中医称其为“肾果”,尤适肾病者食用。但板栗坚实,生食难于消化,熟食易滞气积食,一次不宜多食;有安肠止泻作用,便秘者忌食,否则加重症状。

  • 钻天打洞的意思(钻天打洞的意思简单介绍)

    以下内容希望对你有帮助!钻天打洞的意思钻天打洞,汉语成语,拼音是zuāntiāndǎdòng,千方百计地投机钻营。

  • 卧室装修什么地板好(卧室用哪种地板好)

    装修选择地板是一件很平常的事情,它作为地面材料的主力,受到了业主们的一致追捧。但是它也存在一些不足那就是安装麻烦,不易打理,需要定期打蜡。且价格要比其他的材质柜很多,是一般家庭负担不起的。需要提示大家的是它遇水或暴晒等可能产生反翘变形现象。本站,中国知名大型装修平台,装修领导品牌。

  • 申请微信号必须用手机号吗(不用手机号注册微信吗)

    申请微信号必须用手机号吗?申请微信号必须用手机号吗截止到2018年,注册微号是一定要用手机号码的,首先我们需要了解的是,没有手机号在实名制还没普及的时候是可以通过其他方式注册微信号的,但是微信逐步关闭了非手机号申请注册微信的方式,因此没有手机号是一定无法注册微信的。微信的群体越来越壮大,注册程序也繁琐了许多。很多需要使用多个微信号的朋友,经常注册一个账号后几个小时就被封了。

  • i5(9400f配什么主板和显卡(不知道怎么选的快来这里了解具体情况了)

    i5主板选购方面:理论上intel300系列均可搭配i5-9400F,不过入门级H310主板定位偏低,一般建议奔腾或者赛扬系列的处理器使用,而定位高端级的Z3Z390主板支持超频,而i5-9400F不支持超频,最佳适合CPU型号后缀带K支持超频的处理器,因此最佳适合主流级B360主板。而从均衡性角度来看,从目前已经发售和刚上市的来看,最低不建议低于GTX1050,可选GTX1050Ti、GTX1060以及AMD家RX5RX590。

  • 顺德剥皮牛刺身(潮汕半煎煮剥皮牛)

    今天逛海鲜档最新鲜的是几条大剥皮牛,又叫橡皮鱼,潮汕人叫大迪婆,学名马面鲀,肉质紧实,味道鲜美,营养丰富,是中国仅次于带鱼的海产经济鱼类。这种鱼的肌肉纤维长,适合作为色香味佳的小包装方便食品的食材,又可制成烤鱼片。同时因为剥皮牛肝大,可制鱼肝油,鱼骨可做鱼排罐头,头皮内脏可做鱼粉。剥皮牛肉质紧实劲弹,独骨刺,蛋白质含量丰富,营养又美味,是不可多得的好食材。

  • 怎样证明蔻驰包包是真的(土豪都是这样鉴别蔻驰包包的真伪)

    女票想要一个蔻驰的包包,怎么样才能像老司机一样轻松鉴别真伪呢?“蔻驰包包是中国女性最想拥有的一款轻奢包包,精致的做工和百搭的款式,成为目前为止全球受欢迎的包包。”正宗的蔻驰包包绝对是印刻上去的,只有假包才是印刷的。一些老款的蔻驰包包,尤其是60年代末以前的包包,是没有验证码的,因为蔻驰从70年代才开始在手提包上做验证码。