这篇论文提出了一种深度学习表示符号数学问题(尤其是函数积分问题和常微分方程问题)的语法,以及生成可用于训练seq2seq模型的大型数据集的方法。
一.数学可以当作自然语言
1.可以用树来表示数学表达式
树 和 表 达 式 之 间 存 在 一 对 一 的 对 应 关 系,其中树的内部节点是由算子(operator),函数(function)组成的,叶子节点由数字,变量,函数等组成。
2.可以用序列来表示树
tree-to-tree模型比它们的seq2seq模型更复杂,速度也慢得多。为了简单起见,我们使用seq2seq模型.
使用seq2seq模型生成树需要将树映射到序列。为此,我们使用前缀表示法(也就是我们数据结构中学的前缀表示法),例如,2+ 3∗(5+ 2)可以表示为[+ 2 ∗ 3 + 5 2].为什么不用中缀呢?因为前缀表达式更短,因为它不需要括号。
表达式和树之间的一一对应,树和前缀序列之间也存在一对一的映射。
3.生成随机表达式
用相同的概率生成随机树和表达式,如图
4.计算表达式
二.生成数据集
原本想要随机生成函数积分和生成求解一阶和二阶常微分方程的问题,但是这样很可能造成生成的问题没有意义(比如有一些函数是不能积分的),所以需要一些生成数据集的方法。
首先在生成数据之前,作者对数据的范围进行了必要的限制:
-
数学表达式最多拥有 15 个内部节点;
-
L=11 表示叶子节点的值只有 11 个,分别是变量 x 和 {−5,−4,−3,−2,−1,1,2,3,4,5} ;
-
p1=15 表示一元计算只有 15 个,分别是
-
p2=4 表示二元计算只有四个,分别是
1.生成函数积分的方法
主要有:前 向 生 成 (FWD)、反 向 生 成 (BWD)、IBP逆 向 生 成 法。
前向生成(FWD)
主要思路就是在以上的数据范围内随机生成各种各样的方程 f,然后使用 SymPy 或者 Mathematica 等工具来计算函数 f 的积分 F,那么 (f,F) 就可以作为一个训练集。当然,有的时候函数 f 的积分是无法计算出来的,那么这种计算表达式就需要进行放弃,就不能放入训练集。
反 向 生 成 (BWD)
由于积分是求导的逆运算,可以在以上的数据范围内随机生成各种各样的方程 f ,然后计算它们的导数 f′ ,于是 (f′,f) 就可以放入积分数据的训练集。
IBP逆 向 生 成 法
根据分部积分的公式来计算
2.生成一阶微分方程及其解的方法
3.生成二阶微分方程及其解的方法
4.数据处理
-
数学表达式的简化(expression simplification):例如 x+1+1 可以简化成 x+2 ,
可以简化成 1
-
参数的简化(coefficient simplification):
例如 可以简化成 -
无效表达式的过滤(invalid expression filter):
例如 等
树状结构的表达式,是使用前缀表达式来写成一个句子的。例如 2+3 就写成 + 2 3,2 + x 就写成 + 2 x。
三.进行实验
模型参数
利用上面的方法生成数据集,对 于 所 有 的 实 验 , 训 练 一 个 seq2seq模 型 来 预 测 给 定 问 题 的 解 , 即 预 测 给 定 函 数 的 一 个 原函数 ,或 给 出 微 分 方 程 的 一 个 解 。 我 们 使 用 一 个 transformer模 型 ,它 具 有 8个 注 意 力 头 ,6层 , 维 度 为 512, 并且发现用更复杂的模型并没有提升其效果。
评价模型
模型的输出有可能与参考答案形式不同,但实质相同,因此使用 Sympy 对模型给出的预测和参考答案进行比较,来判定是否正确。使用准确率进行评价。
使用束搜索(Beam Search)提升测试性能
在预测的时候,使用不同的 Beam Size,其准确率是不一样的,在 Beam Size = 50 的时候,效果比较好。
与 Matlab、Mathematica 比较
数学软件超时的时候,视作求不出答案;并且不在 FWD(前向数据集)上进行比较(因为 FWD 本来就是软件求出来的,正确率是100%)。作者限制了 Mathematica 的运行时间为 30s
可以看到,有了束搜索的加持,模型的表现都比三款数学软件要好。
并且作者给出了一些数学软件无法求解而该模型可以正确给出答案的例子:
求解的等价性
可以根据 Score 逆序排列,作者发现模型给出的 top-n 预测结果一般都是同一个公式的不同形式,以下是一个例子。
泛化性能的研究
作者研究了在不同数据集(FWD, BWD, IBP)上训练的模型在其他数据集上的泛化性能:
并且, 通 过 只 训 练 SymPy可 以 集 成 的 函 数 , 模 型 能 够 推 广 到 SymPy不 能 积分 的 函 数 :
结论
本文展 示 了 标 准 的 seq2seq模 型 可 以 应 用 于 困 难 的 任 务 , 如 函 数 积分 和 求 解 微
分 方 程 。 本文提 出 了 一 种 方 法 来 生 成 任 意 大 的 数 据 集 , 以 及 它 们 的 相 关 解 决 方 案 。 并且证 明 , 在 这 些 数 据 集 上 训 练 的 一 个 简 单 的 transformer模 型 在 计 算 函 数 积 分 和 求 解 微 分 方 程
方 面 都 可 以 表 现 得 非 常 好 , 超 过 了 最 先 进 的 数 学 框 架 , 如 Matlab或 Mathematica,结 果 还 表 明 , 该 模 型 能 够 以 非 常 不 同 的 方式 编 写 相 同 的 表 达 式 。