论文笔记 | MathDQN: Solving Arithmetric Word Problems via Deep Reinforcement Learning

简介

Lei Wang 和 Dongxiang Zhang团队在AAAI18上发表的文章,使用了DQN来解决MWP(Math Word Problem)问题。

Motivation

在将问题表达成一个表达式树的时候,有一种方法是枚举所有的操作数,组成树的叶子节点。这种方法所需的搜索空间很大,虽然有一些剪枝的算法可以运用,但仍不能满足需求。

在实践中,可以发现Deep Q-netwrok能够处理搜索空间很大的问题。比如:游戏场景。

所以本文想要用deep Q-network来解决math word problem。

MathDQN框架

在这里插入图片描述

步骤为:

首先提取问题文本中的相关操作数
对操作数根据表达式树的构造顺序进行排列
每一个迭代,选择两个操作数,将它们的上下文相关的向量表示作为当前state
将state向量输入两层的前馈神经网络,得出当前的两个操作数的最近公共祖先的操作符
对于groundtruth的操作符,如果一致则给出正向反馈,否则给出负反馈。

对应强化学习的要素:

state:当前状态用两个操作数的上下文向量来表示
action:指两个操作数的最近公共祖先的操作符
reward:操作符正确,则给出奖励;否则惩罚。

优缺点分析
strong points:

第一次使用强化学习来解决MWP问题,设计了合理地状态空间、动作空间和奖励函数。
motivation很好,利用了DQN解决搜索空间大的问题。

weak points:

文中使用的数据集规模较小,三个数据集中都包含少于1000个题目。17年发表的文章DNS中提供的较大规模数据集Math23K已经被广泛使用,但这里没有用到。【是否能适用于大规模数据,需要根据代码进一步确定。】

作者:ttliu_kiwi

相关推荐

Spring 深度学习 看这篇就够了(一)

Spring 深度学习 看这篇就够了(一)

antd Form组件行并列显示 Form表单属性为inline时,表单组件宽度问题

在这里插入图片描述

Linux学习笔记09 — 超详细shell脚本编程快速入门

Python pandas中 如何声明(创建)一个空的DataFrame对象(变量),如何快速的创建一个DataFrame变量?

Python pandas中 如何声明(创建)一个空的DataFrame对象(变量),如何快速的创建一个DataFrame变量?