提示工程 | 豆包MarsCode AI刷题

112 阅读3分钟

Few-Shot(少样本)- One-Shot(单样本)-Zero-Shot(零样本)

大家或许可能会联想到Machine learning/Deep learning 中的小样本学习,是的没错!这个概念的产生基可以顾名思义,我们往往无法获取到大量的标签化数据。

在LangChain的提示工程(Prompt Engineering)中,小样本学习的思想也被广泛应用,即Few-Show和Zero-Shot。

  • 在Few-Shot学习设置中,模型会被给予几个示例,以帮助模型理解任务,并生成正确的响应。
  • 在Zero-Shot学习设置中,模型只根据任务的描述生成响应,不需要任何示例。

image.png

上图是OpenAI的GPT-3论文给出的GPT-3在翻译任务中,通过FewShot提示完成翻译的例子。 当然如果少样本提示的效果不佳时,可能会导致模型在任务的学习上不充分,从而无法得到想要的结果。 这个可以当成算法题中给的样例,仅仅通过题面或许不能够完全理解题意或者给出解决方案,当拿到几个样例后就不一样了。

CoT思维链

顾名思义我们又可以得知,相较于上面加入了推理过程。

思维树(Tree of Thoughts,ToT)框架

Model I/O中的第二个子模块,LLM

image.png

对于大模型的微调远远比从头训练一个模型更加省时高效!

image.png

图中的具体任务总结来说就是预训练与微调。

关于微调,为什么要微调呢?因为面对不同的下游任务所涉及的领域不同,为了使得模型有所针对性,进行模型微调变成垂类模型,即微调模型做垂直领域,就是这么简单!

刷题小记,一题多解

1.找单独的数 easy

问题描述

在一个班级中,每位同学都拿到了一张卡片,上面有一个整数。有趣的是,除了一个数字之外,所有的数字都恰好出现了两次。现在需要你帮助班长小C快速找到那个拿了独特数字卡片的同学手上的数字是什么。

要求:

  1. 设计一个算法,使其时间复杂度为 O(n),其中 n 是班级的人数。
  2. 尽量减少额外空间的使用,以体现你的算法优化能力。

以下两种方法均值O(n)做法

方法1:异或 利用异或特性寻找唯一的数字,其与0异或仍然为本身。同时具有自反性,两个相同数字例如1^1 = 0。 玩下样例即可验证

def solution(inp):
    result = 0
    for num in inp:
        result ^= num
    return result

if __name__ == "__main__":
    print(solution([1, 1, 2, 2, 3, 3, 4, 5, 5]) == 4)
    print(solution([0, 1, 0, 1, 2]) == 2)

方法2:字典遍历

小白最喜欢的方法,无脑遍历字典寻找计数为1的元素即可,代码如下。

def solution(inp):
    count = {}
    for num in inp:
        if num in count:
            count[num] += 1
        else:
            count[num] =1
    for num, cnt in count.items():
        if cnt == 1:
            return num