ReAcTable论文解读

简介

转载于:ReAcTable论文解读

本文提出一种新的表格数据问答框架——ReAcTable,它受到ReAct范式的启发,并针对表格问答任务中的特殊挑战进行了改进。它尝试通过利用SQL和Python等外部工具来增强数据分析能力,生成便于模型理解的中间数据表示,最终提升模型解答问题的能力。这种方式并不需要训练新的模型或者进行复杂的模型微调,却仍然能够取得较好的效果。该方法在WikiTQ基准测试中达到了68%的准确率。这一实验结果也表明,ReAcTable是一种有效的用于表格数据问答的方法,对于提高模型在实际应用中的可用性和效率具有重要意义。

1. ReAcTable框架

和Chain-of-Table类似,ReAcTable框架也是以迭代的方式逐步对表数据进行变换,每一步输入当前表数据及用户查询,采用ReAct的思想,让LLM有个观察-思考-行动的过程,判断选择使用SQL工具、Python工具进行数据转换或者是直接给出回答。

Prompt模版如下

few-shot examples

在给定Instructions的同时,也会给出一定的例子,帮助LLM进行更加准确的选择。

投票策略

为了增强输出结果的可靠性,文中采用了3种不同的投票策略并对结果进行了比较。

2. 实验结果

2.1 基础实验

在多个数据集上,ReAcTable都表现出比较好的结果,同时采用简单多数投票的方式最为简单有效。

2.2 深入分析——为什么ReAcTable有效

2.2.1 中间结果表的影响

从实验结果来看只迭代一次(Codex-CoT)与ReAcTable的方式相比,准确率大幅度降低。

2.2.2 迭代次数的影响

很明显,迭代次数会对准确率造成影响,一方面更多的迭代次数意味着ReAcTable在进行更多的推理,可能会提升效果;同时,迭代次数增加也可能意味着问题比较复杂,从而更难回答。

这里主要研究两个问题:

  • 不对迭代次数进行任何限制,ReAcTable会进行多少次迭代
  • 如何对迭代次数进行控制从而影响准确率

迭代次数无限制情况下

  • 究竟需要多大的迭代次数?

可以看到,绝大多数问题都只需要2次或者1次迭代就能回答

  • 不同迭代次数下准确率如何?

从下表的结论看出:

  • 迭代2次效果比迭代1次效果好
  • 随着迭代次数继续增加,准确率在下降,这可能由于问题本身更复杂所导致。

迭代次数受限情况下

如果对最大迭代次数进行限制,准确率会降低,这也意味着适当的迭代次数是必要的。

2.2.3 不同代码工具(Python/SQL)的影响

这里比较了仅使用SQL以及同时使用Python/SQL的效果,可以看出同时使用Python/SQL的效果最好,这说明在当前场景下,Python工具的引入的确是有效的。

2.3 不同LLMs的影响

从下面两张表的结果可以看出,不同的LLM会显著影响准确率;同时,不同的投票方式在不同LLM下的表现还不一致,这有待进一步研究。

3. 一些经验教训

3.1 是否必须对LLM进行任务适配的训练/微调

从上文的实验来看,答案是暂时不需要,直接使用预训练的模型,配合一定的技巧就可以取得不错的效果。

3.2 使用外部代码工具

使用外部的代码工具,如SQL/Python等适合用于数据科学领域的工具,能够有效提升准确率。

3.3 是否需要进行投票

从上面实验来看,使用投票方法一定程度上可以提升效果,但是同时也带来较高的成本,在选择是否使用投票机制之前一定要深思熟虑。

3.4 当前的局限性和未来的方向

  • 目前的few-shot方式是手动创建的,后续可以考虑采用自动的Prompt优化以及few-shot样例的选择
  • 目前关注的是单个数据表的场景,如何扩展到多表也是一个值得研究的方向
  • 如何自动选择投票的方法去提升准确率也是一个可行的研究方向

参考

  1. Zhang Y, Henkel J, Floratou A, et al. ReAcTable: Enhancing ReAct for Table Question Answering[J]. arXiv preprint arXiv:2310.00815, 2023.
一分一毛,也是心意。