专栏名称: GiantPandaLLM
专注于机器学习、深度学习、计算机视觉、图像处理等多个方向技术分享。团队由一群热爱技术且热衷于分享的小伙伴组成。我们坚持原创,每天一到两篇原创技术分享。希望在传播知识、分享知识的同时能够启发你,大家一起共同进步(・ω<)☆
目录
相关文章推荐
GiantPandaLLM  ·  【博客转载】Row-Major VS ... ·  昨天  
51好读  ›  专栏  ›  GiantPandaLLM

OpenAI o1 技术初探2:使用MCTS增强推理能力(基于代码实践的解读)

GiantPandaLLM  · 公众号  · 3D  · 2024-10-27 22:39

正文

请到「今天看啥」查看全文


  • 最后一个step以“The answer is”开头,表示产出了原始问题的最终答案。

  • 2.2 A2(propose the remaining thought steps)

    对于一些简单的问题,我们可能并不会步步思考。我们会一次性通过一些简单的推理后直接给出答案,例如:

    ### Instruction:
    If there are 3 cars in the parking lot and 2 more cars arrive, how many cars are in the parking lot?

    ### Response:
    Let's think step by step. There are originally 3 cars. 2 more cars arrive. 3 + 2 = 5. The answer is: 5.

    2.3 A3 (propose next sub-question along with its answer)

    有时候,我们会把原始问题拆解成很多子问题,然后回答一个个子问题,最终给出答案,例如:

    Question 1: If there are 3 cars in the parking lot and 2 more cars arrive, how many cars are in the parking lot?
    Question 1.1: How many cars are there in the park before?
    Answer 1.1: There are 3 cars in the park before.
    Question 1.2: How many cars arrive then?
    Answer 1.2: 2 more cars arrive.
    Question 1.3: Now we can answer the question: how many cars are in the parking lot?
    Answer 1.3: There are 3 + 2 = 5 cars in the parking lot now. The answer is 5.

    其中,Question1是原始问题,其余是拆解的子问题。其中,Question 1.3属于终结类型的子问题,因为回答它就等于回答了最终答案。这种拆解子问题的方式更适合用来解决困难问题,我们的例子比较简单,这里只是展现出一个形式。

    2.4 A4 (Answer the sub-question again)

    这种方式将和A3一起配套使用,例如,对于A3的Question1.1,你可能并不确定Answer1.1是否正确,这时你想重新再思考一次Answer1.1的答案。由于此时你只是对某一个子答案做修正,因此你可能采用A2(propose the remaining thought steps)的方式,做一些简单的推理,重新取得Answer1.1。此时相当于把Answer1.1用A2例子中的输出结果进行替代,这里不再给出具体例子。

    2.5 A5(Rephrase the question/sub-question)

    有时我们在做题时,通常会在大段的原始题目描述中,把关键信息提取出来,例如:condition1..., condition2等等。我们可以先通过这种方式改写原始题目/子题目,然后再做回答。这个比较好理解,同样也不再给出具体的示例。

    2.6 整合:构造一颗搜索树

    总结一下,目前为止,我们按照人类的思维方式,总结出了人类解决一个问题时可能采用的5种方法:

    • A1(propose a one-step-thought) :步步推理,每一步都有一些中间答案,然后在最后一步中得到最终答案

    • A2(propose the remaining thought steps) :一次性推理完毕,直接得出最终答案

    • A3 (propose next sub-question along with its answer) 将原始问题拆解成若干子问题并做相关回答。最后一个子问题的答案即是最终答案(和A1有些类似,但采取的是subquestion-subanswer这种指示方式)

    • A4 (Answer the sub-question again) :有时A3中某个子问题的回答不一定可信,我们尝试重新回答它。这时我们会采用A2的模版,重新回答这个子问题

    • A5(Rephrase the question/sub-question) :重新复述一个原始问题/子问题。例如去掉大段文字表述信息,只把关键部分提取成condition1..., condition2之类的形式,用这个形式当作新的问题。

    在代码操作中,我们会按2.1~2.5的示例,构造相应的prompt来指示模型执行不同的动作。下图给出了A1的prompt示例,更多例子大家可以参见源码中rStar/prompts部分:

    当人解决问题时,可能会根据问题的难度,决定不同的解决模式,但是当我们采用模型进行搜索时,模型是很难预知问题难度的, 所以我们总是希望:模型能够尽可能地把这些解决方式(Action)都探索一遍。

    那么接下来,我们就 配合着rStar的源码 ,一起来看下这棵搜索树长什么样子( 这里我们不使用论文中的图,因为它缺少了太多细节,我们直接从源码出发重新绘制 ):

    我们先看一些基本信息:

    • 搜索树的根结点是原始问题。

    • 方形node表示终止结点(leaf node),例如图中的cot结点(A2)。但注意,不是只有cot结点才是leaf node。例如A1中的最后一个step,A3中的最后一个子问题-子回答都可以成为leaf node。

    • 虚线表示选择性探索(根据你的脚本配置决定),实现表示必须性探索。

    接下来我们来看图中的更多细节:

    我们从根结点(第0层)出发,根结点是用户的原始问题,对于根结点来说:

    • A1(a step),A5(rephrase)是选做的,A2(remaining steps,图中按源码的命名方式称为cot),A3(next subqs and subas)是必做的。其中,经过A5后,相当于从一个全新的用户问题出发,所以A5之后创建分支的规律和根结点一致,因此图中不再画出。现在我们观察图中的第1层,也就是根结点所有的子节点







    请到「今天看啥」查看全文


    推荐文章
    GiantPandaLLM  ·  【博客转载】Row-Major VS Column-Major
    昨天
    腾讯社交广告服务平台  ·  给广告主一个开户审核的锦囊妙计 | 直播课
    8 年前
    开智部落  ·  花鸟岛上的神
    7 年前