免费下载案例集|20+数字化领先企业人才培养实践经验 了解详情
写点什么

开发者向 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:243194
用户头像

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

关注

评论

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

Dubbo 泛化调用在vivo统一配置系统的应用

vivo互联网技术

dubbo 中间件 配置管理

Seal 软件供应链防火墙 v0.2 发布,提供依赖项全局洞察

SEAL安全

DevSecOps 开源安全 软件供应链 软件供应链安全 软件供应链防火墙

Java实现SM3加密和验证

共饮一杯无

Java 9月月更 SM3

【数据结构与算法】8道链表面试真题超详剖析,带你领略算法思想【附思路、动图、源码】

Dream-Y.ocean

链表 数据结构与算法 9月月更

大数据ELK(五):Elasticsearch中的核心概念

Lansonli

ELK 9月月更

HowTo:Pipy 如何统计关键指标

Flomesh

Service Mesh 服务网格

关于加密数据的模糊查询

知识浅谈

9月月更 加密数据

ShareSDK HarmonyOS集成指南

MobTech袤博科技

sdk HarmonyOS

从零开始 - 40行代码实现一个简单Promise函数

茶无味的一天

JavaScript Promise

通过Thread Pool Executor类解析线程池执行任务的核心流程

华为云开发者联盟

后端 开发 企业号九月金秋榜

如何解决 Angular custom library module 在 ng build 时无法被识别的错误

汪子熙

typescript 前端开发 angular web开发 9月月更

阿里P8手写Spring Cloud Alibaba实战学习手册,架构师养成必备

Geek_0c76c3

Java 数据库 开源 程序员 架构

极客时间—架构实战营—第九期—模块一作业

阿梁

被裁后半月面试8家公司无果,凭借这份Java面试指南成功入职阿里

Geek_0c76c3

Java spring 程序员 架构 面经

苏州市大数据集团成立!博云成为首批数商代表

BoCloud博云

云计算 数字化 云平台

【文本检测与识别-白皮书】第二章:文本检测与识别技术发展历程

合合技术团队

人工智能 文字识别 OCR

新来个阿里 P7,仅花 2 小时,撸出一个多线程永动任务,看完直接跪了,真牛逼!

程序知音

YYEVA动效播放器--动态元素完美呈现新方案

百度Geek说

移动端 企业号九月金秋榜 动画特效 AE插件

视频直播+小程序,打破物理空间的电商卖货时代!

Speedoooo

小程序 小程序生态 直播带货 电商营销 小程序容器

保障系统安全

源字节1号

软件开发 信息安全 系统安全

什么是架构,什么是架构师?

源字节1号

软件开发 软件架构

三三复制公排互助系统开发技术详情

开发微hkkf5566

从 DFS 到回溯法,再看 N 皇后问题

掘金安东尼

前端 9月月更

小程序化:系统集成行业降本增效的破局思考

Speedoooo

小程序 数字化转型 小程序容器 生态平台

如何实现数据库读一致性

京东科技开发者

数据库 读写锁 事务 MVCC 一致性

Ventana Research|是时候把指标中台纳入企业数据架构了!

Kyligence

数据架构 数据管理 指标中台

Javaweb之会话技术

楠羽

技术 笔记 9月月更

docker与gosu

程序员欣宸

Docker 9月月更 gosu

开发者有话说|用成长治愈所有迷茫

法医

程序员 个人成长

现代化车企——零束科技DevOps研发数字化体系建设实践

嘉为蓝鲸

#DevOps #研发 #汽车 #科技

易周金融分析 | 银行融资青睐可转债;苏州市手机银行应用活跃人数规模发布

易观分析

金融 银行

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