大语言模型可以说是现代自然语言处理技术的基石,比如GPT-3有1750亿参数,PaLM有5400亿参数,以及针对下游任务的预训练模型提供了非常强大的few-shot学习能力。但是推理任务仍然是一个挑战,尤其是需要多步推理才能得到正确答案的问题。最近,研究人员发现,只要设计合适的提示,就可以引导模型进行多步推理,从而生成最终答案。这种方法也称为链式思维推理。思维链技术在算术基准GSM8K上的准确率从17.9%提升至58.1%,而后期引入的投票自洽(self-consistency)机制进一步将准确率提升至74.4%。自洽法通过思维链从语言模型中采样一组不同的推理路径,然后返回其中最一致的答案。近日,北京大学和微软的研究人员基于包含三项主要创新的自洽新方法DiVeRSe,进一步提升了模型的推理能力。论文链接:https://arxiv.org/abs/2206.02336代码链接:https://github.com/microsoft/DiVeRSe首先,受到“不同思路,相同答案”自洽方式的启发,即来自语言模型对不同的推理路径进行采样,DiVeRSe在多样性方面更进了一步。根据“条条大路通罗马”的理念,使用多个提示生成答案可以生成更完整、互补的答案。研究人员首先为每个问题提供5个不同的提示,然后为每个提示采样20个推理路径,最终为每个问题生成100个答案推理路径。一个关键问题是如何获得不同的提示。假设已经得到一个样本库,我们可以从中抽取K个样本构建一个提示,然后重复5次。如果样本不够,使用self-teaching方法提高提示多样性,即从一部分样本中生成伪推理路径和对。其次,在生成推理路径时,语言模型中没有纠正前面步骤错误的机制,这可能导致最终预测结果混乱。DiVeRSe借鉴了verifier的思想来验证每条推理路径的正确性来指导投票机制。也就是说,并非所有的推理机制都同样重要或同样好。假设我们对一个问题有100条推理路径,其中60条导致“答案是110”,而40条路径导致“答案是150”。在没有验证器的情况下(即原来的自洽方法),“答案是110”是多数票,所以我们可以把110作为最终答案,去掉导致150的40条推理路径。验证器是对推理路径。函数f由二元分类器训练。输入是问题x,路径z和答案y,输出是肯定的概率。用verifier,假设“答案是110”的60条推理路径的平均分是0.3;“答案是150”的40条推理路径的平均分是0.8。那么最终的答案应该是150,因为40*0.8>60*0.3第三,由于答案是基于多步推理产生的,当一条路径产生正确答案时,可以认为所有步骤都对最终的有助于其正确性。但是,当生成错误答案时,并不意味着所有步骤都错误或导致错误。换句话说,虽然结果是错误的,但中间的一些步骤可能仍然是正确的,但一些后续的偏离轨道的步骤导致最后的错误答案。DiVeRSe设计了一种机制,为每个步骤分配一个细粒度的标签,并提出一个步骤感知验证器,并为每个步骤的推理分配正确性,而不是只看最终答案。主体还是一个二元分类器,但是关键问题是如何得到step-level的negativelabel,因为如果最后的答案是错误的,没有人的参与,我们不知道哪一步是错误的,而正确的答案应该都在过程中。是正确的。研究人员提出了支撑的概念。例如,在算术任务中,要求另一个样本的中间结果与中间步骤的结果相同。基于这三项改进,研究人员在五个算术推理数据集上进行了实验。可以看出基于code-davinci-002的DiVeRSe方法实现了新的SOTA算法,平均提升率为6.2%。在常识推理任务上,DiVeRSe的性能略低于基于PaLM的自洽(-2.2%)。原因可能是常识推理任务是多项选择任务而不是开生成任务,导致出现更多的假-positivePseudo-example。在归纳推理任务上,DiVeRSe在CLUTRR任务上取得了95.9%的分数,超过了之前的SOTA微调结果(+28.9%)。在消融实验中,可以看出投票验证者机制的性能提升是相当明显的。在大多数实验中,将投票验证器扩展到步骤感知版本可以提高性能。对于GSM8K上的code-davinci-002,验证器的step-aware版本会导致性能略有下降。可能的原因是code-davinci-002更强大,可以为GSM8K生成更高质量的推理路径,从而减少步级信息的必要性,即text-davinci更容易生成短/不完整的推理路径,而code-davinci对生成长内容更友好。论文第一作者李逸飞,2020年毕业于东北大学软件工程专业,目前在北京大学攻读硕士学位。他的主要研究方向是自然语言处理,尤其是大规模语言模型中的提示调优和推理。文章第二作者为微软亚洲研究院DKI研究员林泽奇。分别于2014年和2019年获得北京大学学士学位和博士学位。主要研究方向为机器学习及其在软件分析和数据分析中的应用。.