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

常微分方程ODE和Neural Ordinary Differential Equations

微分方程(英語:Differential equation,DE)是一種數學方程,用來描述某一類函数與其导数之间的关系。微分方程的解是一個符合方程的函數。而在初等数学的代数方程裡,其解是常数值。

常微分方程(英語:ordinary differential equation,簡稱ODE)是未知函数只含有一个自变量的微分方程。

很多科学问题都可以表示为常微分方程,例如根据牛顿第二运动定律,物体在力的作用下的位移  和时间  的关系就可以表示为如下常微分方程: 

 

ODE solver是常微分方程的数值解法工具。它使用数值解法来近似求解常微分方程,得到近似的解。 

 

 从输入层 h(0) 开始,我们可以将输出层 h(T ) 定义为这个 ODE 初始值问题在某个时间 T 的解。该值可以由黑盒微分方程求解器计算。

给定z(t0)和f的参数,向前传播求解z(t1)很容易。(只需要一个ODESolve)

但是用反向传播求L 关于 θ 的梯度,怎么求?

 

第一步是确定损失的梯度如何取决于每个时刻的隐藏状态 z(t)。这个量称为伴

a(t) = ∂L /∂z(t) 。它的动态由另一个 ODE 给出,

               (35)

我们指出了伴随方法和反向传播(等式 38)之间的相似性。类似于反向传播,伴随态的 ODE 需要及时向后求解。我们在最后一次指定为约束点,就是最后一个时间点的loss的梯度,可以得到关于任何时候的隐藏状态,

 t为tN的时候,∂f(z(t), t, θ) /∂z(t)的计算方法和其他时间点没有区别,只是把t的值换成tN而已。我们只需要把z(tN)和tN输入到f中,然后用自动微分的方法求出f对z(tN)的偏导数就可以了。

 扩展上面的方法,推广可以得到关于 θ 的梯度

 

 

 f 的雅可比行列式(指f对它的输入变量的偏导数组成的矩阵)具有以下形式

结合(35)

 

 

 

 

 算法1的目的是计算一个常微分方程初值问题的反向模式导数,也就是损失函数对参数的梯度

 

 

 

 

 

 

 

 

 

 

 

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

相关文章:

  • C++ 编译过程(附简单实例)
  • ThingsBoard教程(五四):规则节点解析 Azure IoT Hub Node, RabbitMQ Node
  • 元素偏移量offset
  • 如何让自动化测试框架更自动化?
  • 无屏幕实现连接树莓派
  • 【Android】AMS(一)系统启动流程
  • FineBI6.0基础学习第一课 数据门户
  • 如何部署项目到Tomcat + 第一个Servlet程序
  • 牛客刷题(HTML-Day1)
  • 性能测试如何入门?熬夜7天整理出这一份3000字超全学习指南
  • 信息安全实践1.2(重放攻击)
  • 上海亚商投顾:沪指高开高走 地产股迎来久违反弹
  • Vim学习笔记【Ch02】
  • 《低代码指南》——低代码维格云能源行业解决方案
  • 【自制C++深度学习推理框架】Layer的设计思路
  • Rust每日一练(Leetday0011) 下一排列、有效括号、搜索旋转数组
  • STL --- 五. 函数对象 Function Objects
  • Java IO 流操作详解
  • Halcon 形状匹配参数详解
  • C++11强类型枚举
  • pytorch讲解(部分)
  • C++ 基本的7种数据类型和4种类型转换(C++复习向p3)
  • Scrum敏捷迭代规划和执行
  • 智警杯赛前学习1.1---excel基本操作
  • 【Android】Handle(一) 主要特点和用途
  • 40亿个QQ号,限制1G内存,如何去重?【已通过代码实现】
  • Talk预告 | 新加坡国立大学张傲:10%成本定制类 GPT-4 多模态大模型
  • 从C语言到C++_13(string的模拟实现)深浅拷贝+传统/现代写法
  • reduce()方法详解
  • C++虚假唤醒