写点什么

开发者向 Swift 递交了优秀的可微分编程提案

  • 2019-09-27
  • 本文字数:1918 字

    阅读完需:约 6 分钟

开发者向Swift递交了优秀的可微分编程提案

在可微分编程 Mega 提案(Differentiable Programming Mega-Proposal)项目工作了一年半后,Richard Wei,一位来自谷歌大脑的开发者和他所在的团队,在 Swift 开发论坛(Swift Evolution forum)递交了一个提案。该提案旨在“在数值方面和机器学习方面,把 Swift 的能力推向另一高度”,实现这一目标的方式正是在 Swift 中引入可微分编程,这一新的语言特征。它是 Swift for Tensorflow 项目的一部分,团队成员通过这个项目把 Tensorflow 直接集成到 Swift 语言中,向开发者提供下一代机器学习平台。

可微分编程是什么?

随着深度学习模型日益增加的复杂度,以及现代化深度学习框架的引入,很多研究人员开始意识到构建神经网络和编程很相似。


Yann LeCun,Facebook 的 VP 和首席 AI 科学家,把可微分编程看作现代深度学习技术基础上做的少量的重新包装,和深度学习在现代神经网络上做的包装类似,深度学习只是网络层数大于两层的神经网络。他把可微分编程与常规编程进行比较,发现唯一的不同仅在于编程结果是“参数化的,自动微分的,且可训练/优化的。”


一些人也说可微分编程只是自动微分的另一种说法,自动微分技术是从数值上计算一个函数导数的方法。它可以被看做是一个新的编程样式,在该样式中,程序可以从头到尾进行微分求解。


参考一下这篇论文:“Demystifying Differentiable Programming: Shift/Reset the Penultimate Backpropagation”,可以更好地理解可微分编程。

为何可微分编程要被提交到 Swift?

Swift 是一个表达性强,高性能的语言,这使它成为数值应用程序的完美候选。根据提案作者说,Swift 中一流的可微分编程支持,将允许安全和强大的机器学习开发。


提案作者还相信这是“向着高级数值计算支持迈进的重要一步”。通过这个提案,他们旨在数值计算和机器学习领域把 Swift 变得真正有竞争力。


以下是在 Swift 中加入一流的可微分编程支持的优势:


  • 更好的语言覆盖面:一流的可微分编程支持将使微分功能与 Swift 中其他功能工作得更加顺畅。这将允许开发者可以正常地编码,而不用受限于 Swift 的某个功能子集。

  • 可扩展性:这将给开发者提供一套可扩展的微分编程系统。开发者们能够利用基础的算子(其在标准库中定义,在类型系统中得到支持),创造自定义的微分 API。

  • 静态警告和报错:这将使得编译器可以静态地确认哪些函数不是可微分的,或者会产生值为 0 的微分。然后,它会给出无法进行微分的错误或者警告。通过在同一个库中,直接调试机器学习运行时错误,能够提高生产力。


该提案将在 Swift 中加入的一些组件包括:


  • 可微分协议:这是一项标准的库协议,它将生成所需的数据结构,这些数据结构可以是微分方程的参数或者是输出结果。

  • @differentiable 声明属性:这个属性可用于把类函数声明标记为可微分。

  • @differentiable 函数类型:这是正常函数的一个子类型,但是它有着不同的运行时表达方式和调用规则。可微分函数类型接收可微分参数,并输出可微分的结果。

  • 微分算子:这部分是可微分 API 的核心,它把“@differentiable”函数作为输入,返回导函数或者计算出导数。

  • @differentiating 和 @transposing 算子:这些属性是用于声明其他函数的某个自定义导函数。


这个提案在 Hacker News 上引发了激烈讨论。一些开发者对于把可微分编程支持引入 Swift 核心代码感到兴奋。一个用户评论道:“这个提案的影响是巨大的。我几年前在 Haskell 上看见过类似的 POC(proof of concept)工作,但看到它被集成到一个主流语言的核心部分,这真是令人赞叹不已。这可以让他们从 Python 中夺取一大块机器学习市场。希望他们后续能够继续改善机器学习的 API。”


一些人认为则提交一个单独的库可以达到同样的目的。“我知道一个编写良好的库也能实现同样的目的。现在这个看起来是不优雅的。比如说,Python 难道就不曾考虑加入这样的机制吗,Python 这样的语言才是真正能受益最多的语言,因为它已经具备了很多工具和诸多社区。这个提案看起来涉及的范畴过于狭窄,并且与开发语言不在一个抽象层次上。我看到过开发语言支持高层次的功能,这样一个库就可以不用做额外工作也能嵌入这个语言了(例如反射机制),“一位用户补充道。


开发者们还讨论另一个做了类似工作的项目:Julia Zygote,它是一个源到源(source-to-sourc)的自动微分原型项目。一位用户评论道:”是的,Julia 的下一代 Zygote 项目正在快速发展。而且,作为一个普通用户来看超越深度学习的应用程序,我目前为止最喜欢的就是基于模型的增强学习和神经常微分方程。“


想了解更多细节,可点击查看该提案:Differentiable Programming Mega-Proposal


原文链接:


Developers from the Swift for TensorFlow project propose adding first-class differentiable programming to Swift


2019-09-27 19:243420
用户头像

发布了 61 篇内容, 共 28.0 次阅读, 收获喜欢 135 次。

关注

评论

发布
暂无评论
发现更多内容

区块链Web3系统的开发费用

北京木奇科技有限公司

区块链开发 软件外包公司 web3开发

城市一张网,以数据之桥擎托未来

脑极体

AI

CST软件抗反射超材料SRR涂层 --- 反射系数,反射率,相位, Floquet,THz

思茂信息

cst CST软件 CST Studio Suite

平凯数据库敏捷模式体验评测,功能真的强大!电力、水利行业可参考!

TiDB 社区干货传送门

测试 版本测评 性能测评 敏捷模式 TEM 试用

YashanDB数据库在智慧城市建设中的实践探索

数据库砖家

YashanDB数据库支持边缘计算的创新应用分析

数据库砖家

YashanDB数据库支持的多模型数据管理技术详解

数据库砖家

给敏捷模式做下体检——多方位平凯数据库TiDB敏捷模式和MySQL的性能测试(上)|金融行业可参考

TiDB 社区干货传送门

版本测评 性能测评

从 Hive 到 TiDB|nifi导入数据到tidb的实战过程

TiDB 社区干货传送门

TiDB第四届征文-业务场景实战

社区医院数据库升级:平凯数据库敏捷模式试用体验

TiDB 社区干货传送门

医疗 TiDB第四届征文-业务场景实战 敏捷模式

平凯数据库敏捷模式应对基层医疗性能瓶颈、跨系统交互、容灾挑战

TiDB 社区干货传送门

天润融通ZENAVA重磅发布:让AI成为客服和营销的核心生产力

天润融通

盈米基金与阿里云联合发布行业首个理财智能体评测集和投顾智能体模型

盈米AI开放平台

YashanDB数据库支持的多种数据模型与查询能力

数据库砖家

将AI全面融入零售全渠道流程,而非仅用于销售预测

第七在线

YashanDB数据库在云原生架构中的应用及优化路径

数据库砖家

YashanDB数据库支持的多维度指标分析方法探索

数据库砖家

YashanDB数据库支持的多语言查询优化技术详解

数据库砖家

智慧化商品运营:数据科学与人类创意的完美融合

第七在线

低代码“文档中心”全流程解析:从文件夹管理到文件共享

引迈信息

YashanDB数据库在智能制造中的关键应用场景解析

数据库砖家

ClkLog埋点分析系统-私有化部署+轻量灵活

ClkLog

开源 鸿蒙 数据分析 埋点 用户画像

YashanDB在智慧城市建设中的几个潜在应用

数据库砖家

YashanDB数据库在自动化测试中的应用与实践

数据库砖家

YashanDB 的多租户环境。

数据库砖家

TiDB 生态效率神器:dbops 一键搞定 MySQL 部署,测试迁移再也不头疼

TiDB 社区干货传送门

MySQL 迁移

YashanDB数据库在智能制造中的创新应用与优势分析

数据库砖家

WPS 365联手小米芯片:守护百万研发文档安全,评审效率提速77%

极客天地

TiDB 敏捷模式部署

TiDB 社区干货传送门

7.x 实践

演讲案例|千万日活背后,TiDB 赋能美柚核心系统高并发场景降本增效

TiDB 社区干货传送门

互联网

YashanDB数据库在智慧城市大数据中的应用实例技术分析

数据库砖家

开发者向Swift递交了优秀的可微分编程提案_编程语言_Bhagyashree R_InfoQ精选文章