昇思训练营day6学习心得-函数式自动微分

 数学的微分与函数式自动微分

对于一元函数 y=f(x),在点 x0​ 处的微分定义为: dy=f′(x0​)Δx

在几何上,微分描述了函数图像上某一点附近的小段曲线与通过该点的切线的近似程度。对于函数y=f(x)在点x0​处,微分dy可以看作是当x从x0​增加到x0​+Δx(其中Δx是一个很小的增量)时,函数值y的增量Δy的近似值。

函数式自动微分是一种通过计算机程序自动计算函数导数数值的方法。它的基本原理是导数运算法则。自动微分主要解决的问题是将一个复杂的数学运算分解为一系列简单的基本运算,该功能对用户屏蔽了大量的求导细节和过程,大大降低了框架的使用门槛。

函数与计算

函数式自动微分通过构建一个计算图来表示数学表达式的计算过程。这个图由节点和边组成,其中节点代表操作(如加法、乘法等),边代表操作之间的数据流向(即哪个操作的输出是另一个操作的输入)。

计算图如下

在函数式自动微分中,计算图被设计为无副作用的(即不修改外部状态),并且通常是纯函数式的。这意味着每个节点都可以独立于其他节点进行计算,且每次计算都产生相同的结果(给定相同的输入的情况下)。这种特性使得函数式自动微分特别适用于并行计算和分布式计算。

微分函数与梯度计算

通过调用mindspore.grad函数,来获得function的微分函数。 

 Stop Gradient

通常情况下,求导时会求loss对参数的导数,因此函数的输出只有loss一项。当我们希望函数输出多项时,微分函数会求所有输出项对参数的导数。Stop Gradient可以实现对某个输出项的梯度截断,或消除某个Tensor对梯度的影响。

Auxiliary data

Auxiliary data意为辅助数据,是函数除第一个输出项外的其他输出。通常我们会将函数的loss设置为函数的第一个输出,其他的输出即为辅助数据。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值