deep learning for symbolic mathematics论文梳理
之前长期认为机器学习是一种统计学习,而且确实效果也很好,但是认为神经网络不擅长解决符号推理问题。本篇论文通过训练sequence-to-sequence模型实现了用深度学习求解符号数学问题,这也是这个方法的新奇之处–用自然语言处理的方式求解符号推理问题。本文作者认为数学符号计算的过程本质上就是一个模式识别的过程,由此他们将数学(尤其是符号计算)视为一个 NLP 模型问题,符号推理等同于seq2se
之前长期认为机器学习是一种统计学习,而且确实效果也很好,但是认为神经网络不擅长解决符号推理问题。本篇论文通过训练sequence-to-sequence模型实现了用深度学习求解符号数学问题,这也是这个方法的新奇之处–用自然语言处理的方式求解符号推理问题。本文作者认为数学符号计算的过程本质上就是一个模式识别的过程,由此他们将数学(尤其是符号计算)视为一个 NLP 模型问题,符号推理等同于seq2seq的“机器翻译”过程。
1.符号数学表达式的表示–前缀法
可以先用树表示表达式,再前序遍历该树得到该表达式的前缀表示
2.数据集的构造
本文考虑两种符号问题:函数积分和一阶、二阶的常微分方程
已知操作符和操作数的种类及个数,就可以生成随机的函数(由操作符和操作数组成的符号序列)
2.1 函数积分
(1)forward generation(FWD)
根据操作数和操作符的种类和个数随机产生函数f,然后用计算机的代数系统计算这些函数的积分F,无法计算的就抛弃,可以计算出积分的就组成一个数据对(f,F),作为数据集中的一个数据
(2)backward generation(BWD)
FWD的一个问题就是数据集中只包含那个代数系统能积分的数据
BWD的方法是对随机产生的函数F求导得到f,那么F就是f的积分,(f,F)为一个数据
求导比求积分要简单很多,而且大多数都能求出导数,而且不用依赖代数系统
(3)Backward generation with integration by parts (IBP)
BWD的一个问题是无法产生比较简单的函数的积分
BWD倾向于产生比导数更短的积分,而FWD相反,倾向于产生比导数更长的积分
IBP的方法:任意产生两个函数F和G,分别计算它们的导数。
如果fG已经在数据集中了,也就说可以很容易知道fG的积分,那么就计算Fg的积分
从而得到一对数据;同理,如果已知Fg的积分,可以计算fG的积分;若两个积分都未知,就产生新的F和G
2.2 一阶常微分方程
一阶常微分方程数据集构造的整体流程:
2.3 二阶常微分方程

3.构造模型,结果+比较
3.1 模型
We use a transformer model with 8 attention heads, 6 layers, and a dimensionality of 512.
Adam optimizer, with a learning rate of 10^-4,train our model with 256 equations per batch.
(Transformer只采用了attention机制,不像传统的encoder-decoder的模型需要结合RNN或者CNN来使用)
3.2 结果
对于积分,三种方法构造的数据集训练的网络的准确率都挺高;这个beam size还不是很了解,对于ODE求解的准确性有很大影响
3.3 比较
本文模型和三种经典的符号框架的比较:
很明显,本文模型的效果很好
启发:我现在在做的是用深度学习求解pde,在想是不是可以把本文这种方法推广到求解pde(用基函数表示pde的解,也是表达式表示),难点应该就在数据集的构造吧
更多推荐



所有评论(0)