谷歌开源Tangent:用于自动微分的Python库
极客时间编辑部
讲述:杜力大小:1.20M时长:02:37
和目前已有的机器学习库不同,Tangent 是一个源到源(source-to-source)的系统,利用 Python 函数 f 生成一个新的 Python 函数,来计算 f 的梯度。这为用户提供了更好的梯度计算可视化,使用户可以容易地对梯度进行编辑和调试。Tangent 在调试和设计机器学习模型上有如下特征:
易于调试反向传播过程
快速编辑和调试梯度
正向模式(Forward mode)自动微分
高效的 Hessian 向量内积(Hessian-vector products)
代码优化
神经网络(NN)使机器学习模型处理图像、视频、音频和文本的能力出现巨大进步。训练神经网络在这些任务上获得高性能的基本抽象概念是“反向模式自动微分”(也叫做反向传播),它由神经网络中的两个传播过程组成:首先运行“前向传播”计算每一个节点的输出,然后运行“反向传播”计算一系列导数以决定权重的更新率,从而提高模型的准确性。
训练神经网络以及在新型架构上做研究需要准确、高效和简易地计算这些导数,因此,调试这些导数的能力非常必要。自动微分,是一种计算表征一些数学函数的计算机程序的导数的技术,并且可以在几乎所有的机器学习库中实现。
目前已有的库通常通过追踪程序的执行或建立动态数据流图然后对图微分,来实现自动微分。而与之相反,Tangent 能自主在 Python 源代码上进行预编的自动微分,并生成 Python 源代码作为其输出。
因此,开发人员可以把自动微分代码当做程序的余下部分进行阅读。对于那些不仅想在 Python 编写模型,还希望在不牺牲速度和灵活性的前提下阅读和调试自动生成导数的代码的研究者和学生,Tangent 是很有用的。
用 Tangent 编写的模型易于检查和调试,不需要特殊的工具或间接的方式,同时,它还能提供其它 Python 机器学习库没有的额外自动微分的特征,具有强大的性能,并和 TensorFlow 以及 Numpy 兼容。
另外,谷歌透露,他们正致力于在 Tangent 中支持 Python 语言的更多属性,如闭包、内嵌函数定义等,同样计划在未来添加更多高级的自动微分和编译功能,如内存与计算之间的自动博弈、更主动的优化以及λ升降等。
不过,谷歌也指出,Tangent 现在是开源的,但仍处于试验阶段,难免存在一些 bug,并表示希望得到社区的积极参与,一同推动 Tangent 的开发和完善。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论