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的简单函数式编程语言,使用双重数实现了前向模式的自动微分。该语言的主要新功能是以简单直接的方式评估函数als的方向导数。我们提供了许多可以在Dual PCF中定义的Lipschitz函数和函数als的示例。我们使用域理论既给出了语言的指称语义,又通过逻辑关系证明了新的导数运算符的正确性。为了能够对包括不具有范数的函数空间在内的函数als进行微分,我们开发了一种域理论方向导数,它是Scott连续的,并将Clarke的次梯度从定义在Banach空间上的实值局部Lipschitz映射推广到定义在拓扑向量空间上的实值连续映射。最后,我们展示了我们可以在Dual PCF中表示任意可计算的线性函数als。

0
下载
关闭预览

相关内容

在数学和计算机代数中,自动微分有时称作演算式微分,是一种可以借由计算机程序计算一个函数导数的方法。两种传统做微分的方法为:(1)对一个函数的表示式做符号上的微分,并且计算其在某一点上的值。(2)使用差分。使用符号微分最主要的缺点是速度慢及将计算机程序转换成表示式的困难。此外,很多函数在要计算更高阶微分时会变得复杂。 使用差分的两个重要的缺点是舍弃误差及数值化过程和相消误差。此两者传统方法在计算更高阶微分时,都有复杂度及误差增加的问题。自动微分则解决上述的问题。
专知会员服务
76+阅读 · 2021年3月16日
【干货书】机器学习速查手册,135页pdf
专知会员服务
125+阅读 · 2020年11月20日
【Manning新书】现代Java实战,592页pdf
专知会员服务
99+阅读 · 2020年5月22日
专知会员服务
161+阅读 · 2020年1月16日
强化学习最新教程,17页pdf
专知会员服务
174+阅读 · 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
28+阅读 · 2019年5月18日
Unsupervised Learning via Meta-Learning
CreateAMind
42+阅读 · 2019年1月3日
A Technical Overview of AI & ML in 2018 & Trends for 2019
待字闺中
17+阅读 · 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会员
相关VIP内容
专知会员服务
76+阅读 · 2021年3月16日
【干货书】机器学习速查手册,135页pdf
专知会员服务
125+阅读 · 2020年11月20日
【Manning新书】现代Java实战,592页pdf
专知会员服务
99+阅读 · 2020年5月22日
专知会员服务
161+阅读 · 2020年1月16日
强化学习最新教程,17页pdf
专知会员服务
174+阅读 · 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
28+阅读 · 2019年5月18日
Unsupervised Learning via Meta-Learning
CreateAMind
42+阅读 · 2019年1月3日
A Technical Overview of AI & ML in 2018 & Trends for 2019
待字闺中
17+阅读 · 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会员