之前长期认为机器学习是一种统计学习,而且确实效果也很好,但是认为神经网络不擅长解决符号推理问题。本篇论文通过训练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的解,也是表达式表示),难点应该就在数据集的构造吧

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐