We present a simple functional programming language, called Dual PCF, that implements forward mode automatic differentiation using dual numbers. The main new feature of this language is the ability to evaluate - in a simple and direct way - the directional derivative of functionals. We provide a wide range of examples of Lipschitz functions and functionals that can be defined in Dual PCF. We use domain theory both to give a denotational semantics to the language and to prove the correctness of the new derivative operator using logical relations. To be able to differentiate functionals-including on function spaces equipped with their Scott topology that do not admit a norm-we develop a domain-theoretic directional derivative that is Scott continuous and extends Clarke's subgradient of real-valued locally Lipschitz maps on Banach spaces to real-valued continuous maps on topological vector spaces. Finally, we show that we can express arbitrary computable linear functionals in Dual PCF.


翻译:我们提出了一种简单的函数式编程语言——Dual PCF,它利用对偶数实现前向模式自动微分。该语言的主要新特性在于能够以简单直接的方式计算泛函的方向导数。我们提供了大量可在Dual PCF中定义的Lipschitz函数与泛函示例。我们运用域论为该语言赋予指称语义,并通过逻辑关系证明新导数算子的正确性。为了能够对泛函(包括定义在Scott拓扑下、不承认范数的函数空间上的泛函)求导,我们发展了一种域论方向导数,该导数具有Scott连续性,并将Banach空间上实值局部Lipschitz映射的Clarke次梯度推广至拓扑向量空间上的实值连续映射。最后,我们证明可在Dual PCF中表达任意可计算线性泛函。

0
下载
关闭预览

相关内容

在数学和计算机代数中,自动微分有时称作演算式微分,是一种可以借由计算机程序计算一个函数导数的方法。两种传统做微分的方法为:(1)对一个函数的表示式做符号上的微分,并且计算其在某一点上的值。(2)使用差分。使用符号微分最主要的缺点是速度慢及将计算机程序转换成表示式的困难。此外,很多函数在要计算更高阶微分时会变得复杂。 使用差分的两个重要的缺点是舍弃误差及数值化过程和相消误差。此两者传统方法在计算更高阶微分时,都有复杂度及误差增加的问题。自动微分则解决上述的问题。
专知会员服务
79+阅读 · 2021年3月16日
【干货书】机器学习速查手册,135页pdf
专知会员服务
129+阅读 · 2020年11月20日
【Manning新书】现代Java实战,592页pdf
专知会员服务
101+阅读 · 2020年5月22日
专知会员服务
162+阅读 · 2020年1月16日
强化学习最新教程,17页pdf
专知会员服务
182+阅读 · 2019年10月11日
这 11 种编程语言,还“活着”吗?
CSDN
2+阅读 · 2022年12月1日
编程语言Zig有什么与众不同的
InfoQ
0+阅读 · 2022年11月9日
“我最想要的六种编程语言!”
CSDN
1+阅读 · 2022年7月22日
PyTorch 源码解读之 torch.autograd:梯度计算详解
极市平台
0+阅读 · 2022年6月23日
ERNIE Tutorial(论文笔记 + 实践指南)
AINLP
30+阅读 · 2019年8月28日
Transferring Knowledge across Learning Processes
CreateAMind
29+阅读 · 2019年5月18日
Unsupervised Learning via Meta-Learning
CreateAMind
44+阅读 · 2019年1月3日
A Technical Overview of AI & ML in 2018 & Trends for 2019
待字闺中
18+阅读 · 2018年12月24日
机器学习线性代数速查
机器学习研究会
19+阅读 · 2018年2月25日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
1+阅读 · 2014年12月31日
国家自然科学基金
1+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
2+阅读 · 2012年12月31日
国家自然科学基金
1+阅读 · 2009年12月31日
Arxiv
0+阅读 · 2023年5月25日
Arxiv
0+阅读 · 2023年5月25日
Arxiv
13+阅读 · 2021年5月25日
Arxiv
11+阅读 · 2018年4月25日
VIP会员
最新内容
美空军新型反无人机部队初探
专知会员服务
1+阅读 · 今天5:45
《防空交战流程的概率建模研究》
专知会员服务
4+阅读 · 今天5:04
ICML 2026 教程 | 数值优化理论还重要吗?
专知会员服务
4+阅读 · 7月26日
ICM 2026 | 陶哲轩:人工智能时代的数学
专知会员服务
7+阅读 · 7月26日
《反无人机交战场景下的战斗归零研究》
专知会员服务
7+阅读 · 7月26日
博士论文 | 用代码结构感知方法推进代码大模型
相关VIP内容
专知会员服务
79+阅读 · 2021年3月16日
【干货书】机器学习速查手册,135页pdf
专知会员服务
129+阅读 · 2020年11月20日
【Manning新书】现代Java实战,592页pdf
专知会员服务
101+阅读 · 2020年5月22日
专知会员服务
162+阅读 · 2020年1月16日
强化学习最新教程,17页pdf
专知会员服务
182+阅读 · 2019年10月11日
相关资讯
这 11 种编程语言,还“活着”吗?
CSDN
2+阅读 · 2022年12月1日
编程语言Zig有什么与众不同的
InfoQ
0+阅读 · 2022年11月9日
“我最想要的六种编程语言!”
CSDN
1+阅读 · 2022年7月22日
PyTorch 源码解读之 torch.autograd:梯度计算详解
极市平台
0+阅读 · 2022年6月23日
ERNIE Tutorial(论文笔记 + 实践指南)
AINLP
30+阅读 · 2019年8月28日
Transferring Knowledge across Learning Processes
CreateAMind
29+阅读 · 2019年5月18日
Unsupervised Learning via Meta-Learning
CreateAMind
44+阅读 · 2019年1月3日
A Technical Overview of AI & ML in 2018 & Trends for 2019
待字闺中
18+阅读 · 2018年12月24日
机器学习线性代数速查
机器学习研究会
19+阅读 · 2018年2月25日
相关基金
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
1+阅读 · 2014年12月31日
国家自然科学基金
1+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
2+阅读 · 2012年12月31日
国家自然科学基金
1+阅读 · 2009年12月31日
Top
微信扫码咨询专知VIP会员