6.7. 总结

  • 中间表示是编译器的核心数据结构之一,是程序编译过程中介于源语言和目标语言之间的程序表示。

  • 传统编译器的中间表示从组织结构出发,可以分为线性中间表示,图中间表示以及混合中间表示。

  • 机器学习框架对中间表示有一系列新的需求,这些新的需求是传统中间表示所不能完美支持的。因此需要在传统中间表示的基础上扩展新的,更适用于机器学习框架的中间表示。

  • 自动微分的基本思想是将计算机程序中的运算操作分解为一个有限的基本操作集合,且集合中基本操作的求导规则均为已知,在完成每一个基本操作的求导后,使用链式法则将结果组合得到整体程序的求导结果。

  • 自动微分根据链式法则的组合顺序,可以分为前向自动微分与反向自动微分。

  • 前向自动微分更适用于对输入维度小于输出维度的网络求导,反向自动微分则更适用于对输出维度小于输入维度的网络求导。

  • 自动微分的实现方法大体上可以划分为基本表达式法、操作符重载法以及代码变化法。

  • 类型系统是指类型的集合以及使用类型来规定程序行为的规则,用于定义不同的类型,指定类型的操作和类型之间的相互作用,广泛应用于编译器、解释器和静态检查工具中。

  • 静态分析,是指在不实际运行程序的情况下,通过词法分析、语法分析、控制流、数据流分析等技术对代码进行分析验证的技术

  • 编译优化意在解决编译生成的中间表示的低效性,前端执行的均为与硬件无关的编译优化。

6.8. 扩展阅读

  • 一种基于图的中间表示类型: 综述

  • 机器学习框架中的自动微分: 综述

  • 函数式框架中的反向自动微分: 综述