存在的问题:
关于一个复杂的多跳问题,大语言模型可以正确回答基于该问题分解的多个子问题,但是对于这个问题的最终答案大语言模型可能最终还是给不出来正确的。该论文根据这个现象提出了一个术语,叫"组合性差距"。
解决的方法:
提出一种叫"self-ask"的方法,该方法是一种基于提示工程的更高级的技术,它通过引导模型进行自我反思和问题分解,从而更好地理解问题和生成答案。
自问通过以下步骤实现:
1. 问题分解:
- 模型首先分析初始问题,并确定是否需要分解为更简单的子问题。
- 如果需要,模型会生成一个后续问题,并将其作为子问题提交给模型自身或搜索引擎。
2. 子问题回答:
- 模型回答生成的子问题,并返回答案。
- 如果子问题无法通过模型自身或搜索引擎得到答案,则可以继续生成更简单的子问题,直到得到答案为止。
3. 最终答案生成:
- 模型根据子问题的答案,结合自身知识,生成最终答案。
自问方法的优势:
- 明确的结构: 自问方法通过"后续问题"和"中间答案"等提示词,清晰地标记了问题分解和答案生成的过程,使得模型更容易理解和使用。
- 可扩展性: 自问方法可以轻松地与外部知识库(如搜索引擎)结合,进一步提升模型回答组合问题的能力。
- 提高准确率: 自问方法可以帮助模型更好地理解问题,并避免因错误组合事实而导致的错误答案。
自问方法的局限性:
- 依赖模型能力: 自问方法的有效性依赖于模型自身的能力,如果模型无法理解问题或生成合适的子问题,则该方法可能无法发挥作用。
- 计算成本: 自问方法可能需要模型进行多次推理,从而增加计算成本。
评估指标(间接评估了子问题在模型组合推理中的作用):
1. 组合推理差距 :
- 论文主要关注"组合推理差距",即模型正确回答所有子问题但无法得出最终答案的比例。
- 组合推理差距的大小可以反映模型进行组合推理的能力。
- 研究发现,随着模型规模的增加,组合推理差距并没有显著下降,这表明模型在组合事实方面存在局限性。
2. 子问题正确率 :
- 论文统计了模型回答子问题的正确率,并发现模型在大多数子问题上的正确率较高。
- 这表明模型能够理解和回答子问题,但在将子问题答案组合成最终答案方面存在困难。
3. 模型对子问题的置信度 :
- 论文分析了模型对子问题答案的置信度,发现模型对子问题答案的置信度越高,回答组合问题的正确率也越高。
- 这表明模型在进行组合推理时,需要对其自身知识有较高的置信度。
4. 自问方法的性能提升 :
- 论文比较了自问方法和其他方法的性能,发现自问方法能够显著提高模型回答组合问题的准确率。
- 这表明自问方法能够帮助模型更好地理解问题和生成答案,从而缩小组合推理差距。