当前位置: 首页 > news >正文

jax可微分编程的笔记(2)

jax可微分编程的笔记(2)

第2章 自动微分

自动微分和符号求导有诸多的相似之处:它们同样依赖于计算图
的构建,同样依赖于求导的递归实现。从某种意义上来说,它们
甚至有完全相同的数据结构。不过,二者的区别也是显著的:
符号微分侧重于符号,而自动微分则侧重于数值。

自动微分是一种专门化的计算图网络。各种所谓的“神经网络”,
只不过是某种特殊的计算图结构,而由此引申出所谓的“深度学习”
的概念,不过是可微分编程框架的这一概念外延的子集。

2.1.1 前向模式的理论

自动微分的前向模式适用于函数输入参数个数较少,输出参数个数
较多的场合。

2.1.2 前向模式的二元数诠释

从数学的角度来看,我们可以将自动微分的前向模式理解为将函数
延拓到二元数域的结果。

从本质上来说,二元数幂零元E^2=0,承接了同调论中的重要结论
d。df=0 ,在这样的视角下,二元数与微分操作在数学结构上的相似
就成为了显然。


2.2 反向模式

直观上来看,反向模式的算法与前向模式相比显得极为不同,然而,
自动微分的反向模式与前向模式,其实具有相当的一致性。

2.2.1 反向模式的理论

对结点的处理将会沿着计算图构建顺序的相反方向执行,这样的求导
实现方式,称为自动微分的反向模式,由此引出的算法又称为反向
传播算法。

第一次反向传播,我们可以计算出雅可比矩阵的一行,因此,自动微分
的反向模式适用于函数的输入变量较多,而输出维数较少的场合。

在反向模式的代码现实中,要对计算图网络进行拓扑排序,用于拓扑排序
的卡恩算法是卡恩在1962年提出的.它允许我们尝试对任意的有向图
进行拓扑排序

2.2.2 反向模式与前向模式的统一

在前向模式时,如果将计算图所定义的函数f扩展到二元数域,其切值
中将包含着雅可比矩阵作用于x的结果。

当一个函数的输入x发生了变化时,函数的输出f将如何变化?在前向
模式中,在保留到一阶的情形下,x的微小变化 delta x 将会导致输出
的f产生变化 delta f.这样的响应关系将会随着正向的计算,穿过一
整张由函数f所定义的计算图,这样的数学行为被我们用二元数的运算
法则进行了严格的描述。

下面我们希望询问上述问题的反问题:当一个函数的输出f发生了变化
时,函数的输入x将如何变化?在一个机械臂的控制问题中,自动微分
的前向模式相当于根据每个机械节点的形态及转 速,控制机械臂末端
的状态;而自动微分的反向模式,则是通过机械臂终端节点的空间状态
及运动趋势,控制其每个关节的运动参数。

对于一个函数数值的计算,只有在它所有的输入的值全部完成计算后
才能进行计算,这样的计算顺序其实就是一种拓扑序。

http://www.lryc.cn/news/305138.html

相关文章:

  • 在Linux服务器上部署一个单机项目
  • HTTP概要
  • 128 Linux 系统编程6 ,C++程序在linux 上的调试,GDB调试
  • vue2的ElementUI的form表单报错“Error: [ElementForm]unpected width”修复
  • Linux 网络命令指南
  • vue3组件间的通信,通过props,emit,provide和inject把数据传递N个层级,expose和ref实现父组件调用子组件方法
  • 开源免费的NTFS for mac工具mounty
  • Sora-OpenAI 的 Text-to-Video 模型:制作逼真的 60s 视频片段
  • 4 buuctf解题
  • Jmeter基础(3) 发起一次请求
  • 视频怎么变成gif动图?一招教你在线转换
  • Leetcode2583. 二叉树中的第 K 大层和
  • (六)激光线扫描-三维重建
  • CSS 面试题汇总
  • 定制你的【Spring Boot Starter】,加速开发效率
  • Vue源码系列讲解——生命周期篇【二】(new Vue)
  • JavaScript 设计模式之观察者模式
  • 数据结构D4作业
  • springboot750人职匹配推荐系统
  • 【笔记】【开发方案】APN 配置参数 bitmask 数据转换(Android KaiOS)
  • Redis篇之缓存雪崩、击穿、穿透详解
  • 【深度学习笔记】3_2线性回归的从零实现
  • Apache Maven简介
  • #12解决request中getReader()和getInputStream()只能调用一次的问题
  • 直接插入排序+希尔排序+冒泡排序+快速排序+选择排序+堆排序+归并排序+基于统计的排序
  • Java高级 / 架构师 场景方案 面试题(二)
  • C/C++内存管理学习【new】
  • 选择适合你的编程语言
  • 【力扣每日一题】力扣106从中序和后序遍历序列构造二叉树
  • logback日志回滚原理