过去神经网络方面的工作很少是研究数学方面的应用,而本文则是神经网络在数学方面的应用,特别是符号计算、积分计算、常微分方程的计算。本文还提出了一种表示数学问题的语法,生成数据集用于训练seq2seq模型。
在本文中,我们将数学问题特别是符号计算当做NPL模型。也就是将积分、ODE方程用seq2seq模型处理。作者认为解微分方程的过程可以看做是一个模式识别的过程,然而截止到目前还没有一个神经网络可以做到对数学表达式进行识别的能力。
将表达式转换成自然语言
我们将运算符及函数作为内部节点,操作数当做叶节点。例如 2 + 3 × ( 2 + 5 ) 2+3\times(2+5) 2+3×(2+5), 3 x 2 + cos ( 2 x ) − 1 3 x^{2}+\cos (2 x)-1 3x2+cos(2x)−1, ∂ 2 ψ ∂ x 2 − 1 ν 2 ∂ 2 ψ ∂ t 2 \frac{\partial^{2} \psi}{\partial x^{2}}-\frac{1}{\nu^{2}} \frac{\partial^{2} \psi}{\partial t^{2}} ∂x2∂2ψ−ν21∂t2∂2ψ表示成树结构为
因为树的映射是一一对应的,所以表达成树的好处有很多,比如可以省去括号,消除操作优先级的歧义等。
同时将2+3与3+2视作不同的表达式;对于在数学上的无意义的式子我们也视作是合法的表达式,例如 x / 0 , − 2 , l o g ( 0 ) x/0,\sqrt{-2},log(0) x/0,−2,log(0);将 2 + 3 = 5 = 12 − 7 = 1 × 5 2+3=5=12-7=1\times5 2+3=5=12−7=1×5这4个树对应的表达式,视作等价的。
在本文中我们考虑的两种问题积分与微分方程的求解,都可以看做是将方程的树映射到其解的树。这就与机器翻译的模式极其相似,可以认为是它的一种特殊形式。
由于要使用seq2seq模型先要将树转换成序列,这里采用前缀表示法将表达式转换为序列。
定义问题空间
- 树有n个内结点
- p 1 p_1 p1表示一元运算符(cos,sin,exp,log)
- p 2 p_2 p2表示一元运算符(+,-, × \times ×,pow)
- L