开发者向Swift递交了优秀的可微分编程提案
极客时间编辑部
讲述:丁婵大小:2.03M时长:04:27
在可微分编程 Mega 提案项目工作了一年半后,一位来自谷歌大脑的开发者和他所在的团队,在 Swift 开发论坛递交了一个提案。该提案旨在“在数值方面和机器学习方面,把 Swift 的能力推向另一高度”。实现这一目标的方式正是在 Swift 中引入可微分编程,这一新的语言特征。它是 Swift for Tensorflow 项目一部分,团队成员通过这个项目把 Tensorflow 直接集成到 Swift 语言中,向开发者提供下一代机器学习平台。
可微分编程是什么?
随着深度学习模型日益增加的复杂度,以及现代化深度学习框架的引入,很多研究人员开始意识到构建神经网络和编程很相似。
Facebook 的 VP 和首席 AI 科学家杨立昆(Yann LeCun),把可微分编程看作现代深度学习技术基础上做的少量的重新包装,和深度学习在现代神经网络上做的包装类似,深度学习只是网络层数大于两层的神经网络。他把可微分编程与常规编程进行比较,发现唯一的不同仅在于编程结果是“参数化的,自动微分的,且可训练 / 优化的。”
一些人也说可微分编程只是自动微分的另一种说法,自动微分技术是从数值上计算一个函数导数的方法。它可以被看做是一个新的编程样式,在该样式中,程序可以从头到尾进行微分求解。
为何可微分编程要被提交到 Swift?
Swift 是一个表达性强、高性能的语言,这使它成为数值应用程序的完美候选。根据提案作者所说,Swift 中一流的可微分编程支持,将允许安全和强大的机器学习开发。
提案作者还相信这是“向着高级数值计算支持迈进的重要一步”。通过这个提案,他们旨在数值计算和机器学习领域把 Swift 变得真正有竞争力。
以下是在 Swift 中加入一流的可微分编程支持的优势:
1. 更好的语言覆盖面:一流的可微分编程支持将使微分功能与 Swift 中其他功能工作得更加顺畅。这将允许开发者可以正常地编码,而不用受限于 Swift 的某个功能子集。
2. 可扩展性:这将给开发者提供一套可扩展的微分编程系统。开发者们能够利用基础的算子,创造自定义的微分 API。
3. 静态警告和报错:这将使得编译器可以静态地确认哪些函数不是可微分的,或者会产生值为 0 的微分。然后,它会给出无法进行微分的错误或者警告。通过在同一个库中,直接调试机器学习运行时错误,能够提高生产力。
该提案将在 Swift 中加入的一些组件包括以下几点:
可微分协议:这是一项标准的库协议,它将生成所需的数据结构,这些数据结构可以是微分方程的参数或者是输出结果。
@differentiable 声明属性:这个属性可用于把类函数声明标记为可微分。
@differentiable 函数类型:这是正常函数的一个子类型,但是它有着不同的运行时表达方式和调用规则。可微分函数类型接收可微分参数,并输出可微分的结果。
微分算子:这部分是可微分 API 的核心,它把“@differentiable”函数作为输入,返回导函数或者计算出导数。
@differentiating 和 @transposing 算子:这些属性是用于声明其他函数的某个自定义导函数。
这个提案在 Hacker News 上引发了激烈讨论。一些开发者对于把可微分编程支持引入 Swift 核心代码感到兴奋,甚至称这个提案的影响是巨大的。另一些人认为提交一个单独的库可以达到同样的目的。
那么,对于这个提案,你有什么看法呢?
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(1)
- 最新
- 精选
- 亚东swift之父离开apple,去Google了。在Google brain。所以未来swift在人工智能领域会是一个强有力的语言。
收起评论