Few-Shot(少样本)- One-Shot(单样本)-Zero-Shot(零样本)
大家或许可能会联想到Machine learning/Deep learning 中的小样本学习,是的没错!这个概念的产生基可以顾名思义,我们往往无法获取到大量的标签化数据。
在LangChain的提示工程(Prompt Engineering)中,小样本学习的思想也被广泛应用,即Few-Show和Zero-Shot。
- 在Few-Shot学习设置中,模型会被给予几个示例,以帮助模型理解任务,并生成正确的响应。
- 在Zero-Shot学习设置中,模型只根据任务的描述生成响应,不需要任何示例。
上图是OpenAI的GPT-3论文给出的GPT-3在翻译任务中,通过FewShot提示完成翻译的例子。 当然如果少样本提示的效果不佳时,可能会导致模型在任务的学习上不充分,从而无法得到想要的结果。 这个可以当成算法题中给的样例,仅仅通过题面或许不能够完全理解题意或者给出解决方案,当拿到几个样例后就不一样了。
CoT思维链
顾名思义我们又可以得知,相较于上面加入了推理过程。
思维树(Tree of Thoughts,ToT)框架
Model I/O中的第二个子模块,LLM
对于大模型的微调远远比从头训练一个模型更加省时高效!
图中的具体任务总结来说就是预训练与微调。
关于微调,为什么要微调呢?因为面对不同的下游任务所涉及的领域不同,为了使得模型有所针对性,进行模型微调变成垂类模型,即微调模型做垂直领域,就是这么简单!
刷题小记,一题多解
1.找单独的数 easy
问题描述
在一个班级中,每位同学都拿到了一张卡片,上面有一个整数。有趣的是,除了一个数字之外,所有的数字都恰好出现了两次。现在需要你帮助班长小C快速找到那个拿了独特数字卡片的同学手上的数字是什么。
要求:
- 设计一个算法,使其时间复杂度为 O(n),其中 n 是班级的人数。
- 尽量减少额外空间的使用,以体现你的算法优化能力。
以下两种方法均值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