CMU 10423 Generative AI:lec10(few-shot、提示工程、上下文学习)
文章目录
- 1 概述
- 2 摘录
- 2.1 zero-shot 和 few-shot
- 一、Zero-shot Learning(零样本学习)
- 特点:
- 工作原理:
- 优点:
- 缺点:
- 二、Few-shot Learning(少样本学习)
- 特点:
- 工作原理:
- 优点:
- 缺点:
- 三、Zero-shot 与 Few-shot Learning 的对比
- 四、应用案例
- 2.2 Prompting(提示)
- 一、Prompting(提示)的定义
- 二、Prompting 的原理
- 三、Prompting 的类别
- 1. Zero-shot Prompting
- 2. Few-shot Prompting
- 四、Prompting 的应用
- 五、提示工程(Prompt Engineering)
- 六、Chain-of-Thought Prompting(连锁式思维提示)
- 七、Prompting 的优缺点
- 八、Prompting 的挑战与未来
- 总结
- 2.3 In-context Learning(ICL,情境学习/上下文学习)
- 一、In-context Learning 的定义
- 二、ICL 与传统监督学习的对比
- 1. **监督微调**(Supervised Fine-tuning)
- 2. **In-context Learning**
- 三、Few-shot In-context Learning 的过程
- 四、ICL 对模型性能的影响因素
- 五、ICL 对示例质量和数量的敏感性
- 六、ICL 的优缺点总结
- 七、ICL 的应用场景
- 八、Prompt Engineering 在 ICL 中的重要性
- 结论
- 2.4 Prompt Engineering、Chain-of-Thought Prompting、Learning to Prompt
- 一、Prompt Engineering 的定义
- 二、Prompt Engineering 的关键概念
- 三、Prompt Engineering 的实践
- 1. 提示的有效性
- 2. 如何选择合适的提示
- 四、案例:不同任务中的 Prompt Engineering
- 五、链式思维提示(Chain-of-Thought Prompting)
- 六、提示学习(Learning to Prompt)
- 七、Prompt Engineering 的挑战
- 八、Prompt Engineering 的应用场景
- 九、结论
1 概述
该文件主要内容涵盖了**In-context Learning(ICL)**的概念,讲解了零样本学习(Zero-shot Learning)、少样本学习(Few-shot Learning)、提示工程(Prompt Engineering)等主题。以下是对主要部分的概述:
- 零样本学习与少样本学习(Zero-shot and Few-shot Learning):
-
零样本学习:训练数据中没有任何包含测试数据标签的样本,模型需要从未见过的标签中进行推断。
-
少样本学习:训练数据中包含每个标签的少量样本(如2-4个),模型需要通过这些少量的样本进行学习。
-
提示(Prompting):
- 语言模型通常会根据前面给定的上下文生成下一个词语。
- 关键思想是通过提供一个前缀(prompt),让模型根据提示的上下文生成期望的答案。
- 给出了许多不同类型的提示范例,包括文本补全、翻译、问答、摘要等。
-
大语言模型(LLM)的能力:
- 通过提示,可以将LLM应用于各种自然语言处理任务。
- 零样本LLM模型如GPT-2和GPT-3在无监督预测任务中表现出色。
-
指令微调模型(Instruction Fine-tuned Models):
- 像ChatGPT和Llama-2 Chat等模型通过微调,针对特定的提示模板被训练成聊天助手,并遵循系统/用户/助手的分段格式。
-
Few-shot In-context Learning:
- 通过提示的方式让模型利用训练数据中的少量样本,在推理过程中获取规律并进行预测。介绍了few-shot in-context learning对样本顺序、标签平衡等的敏感性。
-
提示工程(Prompt Engineering):
- 强调了不同的提示会影响模型的输出结果,提出了通过选择模型在给定提示下最小的困惑度来优化提示的方法。
-
连锁式思维提示(Chain-of-Thought Prompting):
- 提出让模型进行逐步推理可以提高few-shot in-context learning的性能。
-
学习提示(Learning to Prompt):
- 提到通过不同方式学习更好的提示,如提示改写、基于梯度搜索的提示优化以及提示调优等方法。
整体内容聚焦于如何有效利用提示与大语言模型进行少样本与零样本学习,并探讨了提示工程的相关技巧与方法。
2 摘录
2.1 zero-shot 和 few-shot
以下是对 Zero-shot Learning 和 Few-shot Learning 的详细介绍:
一、Zero-shot Learning(零样本学习)
定义:Zero-shot Learning 是一种不需要见到目标任务标签的情况下,对测试数据进行分类或预测的方法。这意味着在训练阶段,模型从未见过与测试数据标签相关的样本,需要依赖模型的预训练知识和提示(prompts)来完成预测任务。
特点:
- 无训练样本:在测试任务中,模型没有见过任何与测试标签相关的样本。
- 依赖预训练知识:模型通过在大量无标签数据或其他任务中预训练来获取知识,并在推理阶段利用这些知识进行推断。
- 应用广泛:Zero-shot Learning 在开放领域问答、文本分类、机器翻译等任务中非常有效,尤其是在资源稀缺或无法获得标注数据的情况下。
工作原理:
- 模型通常通过自然语言提示(prompts)来引导预测。例如,给模型提供一个描述目标任务的提示(如“翻译为法语”),让模型利用其预训练时学到的语言和上下文知识,来完成该任务。
- 模型生成结果的过程依赖于理解任务描述以及对输入数据的正确推理。
优点:
- 无需标注数据:在无标签或标签数据稀缺的情况下,可以直接进行预测。
- 广泛适用性:模型可以用于多种任务,而无需针对每个任务进行重新训练。
缺点:
- 准确性有限:由于没有见过目标任务的标签,模型的预测准确性通常比有标签数据训练的模型要低。
- 对提示依赖性强:模型对提示的依赖较高,不同的提示会对预测结果产生显著影响。
二、Few-shot Learning(少样本学习)
定义:Few-shot Learning 是指在训练数据中只有少量(例如2-4个)的带标签样本的情况下,让模型进行学习并完成任务。与 Zero-shot Learning 不同,Few-shot Learning 提供了一些与测试任务相关的样本,帮助模型进行更准确的预测。
特点:
- 少量样本:训练集中每个类别只有少数几个示例,这种情况在实际应用中非常常见,例如医学图像分类、语言处理等。
- 需要快速适应:模型必须根据这些少量样本快速学习并适应任务。
工作原理:
- In-context Learning:Few-shot Learning 通常结合大语言模型(如 GPT-3)的“上下文学习”能力,通过提示将少量样本输入到模型中,模型利用这些样本的上下文关系进行推理和预测。
- 元学习(Meta-Learning):一种常见的 Few-shot Learning 方法,模型通过在大量任务上训练,学习到对新任务快速适应的能力。
优点:
- 节省标注成本:在数据标注成本高昂或难以获得大量标注数据的情况下,Few-shot Learning 能够有效发挥作用。
- 灵活性:适用于各类任务,包括图像分类、自然语言处理等。
缺点:
- 对样本敏感:模型对少量训练样本的顺序、选择和质量非常敏感,容易导致结果不稳定。
- 性能有限:虽然比 Zero-shot Learning 更准确,但相较于充分训练的模型,Few-shot Learning 仍存在性能差距。
三、Zero-shot 与 Few-shot Learning 的对比
| 特性 | Zero-shot Learning | Few-shot Learning |
|---|---|---|
| 训练样本 | 无任何目标任务标签样本 | 少量目标任务标签样本(2-4个) |
| 对提示的依赖 | 极高 | 较高 |
| 泛化能力 | 较强(适应广泛任务) | 较强(对新任务有快速适应能力) |
| 预测准确性 | 较低(与任务相关性不高时) | 较高(有少量样本的辅助) |
| 应用场景 | 无法获得标注数据的任务 | 有少量标注数据的任务 |
四、应用案例
-
Zero-shot Learning:
- 语言翻译:将一句话从一种语言翻译成另一种语言,模型没有见过具体语言对的训练数据,但通过提示可以完成翻译任务。
- 图像分类:对未见过的新类别进行分类,例如在训练集中只有猫和狗的样本,但希望模型识别马的图像。
-
Few-shot Learning:
- 医学图像诊断:利用少量标注的医学图像进行疾病分类。
- 文本分类:针对某一特定领域,仅提供少量标注样本来训练模型,完成如情感分析、新闻分类等任务。
通过 Zero-shot 和 Few-shot Learning,我们可以有效应对缺乏大量标注数据的场景,并利用预训练模型的能力实现对多样化任务的处理。
2.2 Prompting(提示)
以下是对 Prompting(提示)的详细整理:
一、Prompting(提示)的定义
Prompting 是指向预训练的大规模语言模型(如 GPT-3、LLaMA、ChatGPT 等)提供一段上下文或前缀,利用这些提示引导模型生成符合特定任务需求的输出。Prompting 是大语言模型在 Zero-shot 和 Few-shot 学习中的关键技术,通过巧妙设计提示,可以让模型完成多种自然语言处理任务。
二、Prompting 的原理
大多数语言模型是通过最大化训练数据中序列的似然性来进行训练的,模型根据输入序列的上下文来预测下一个词。因此,提示的关键在于为模型提供一个足够明确且连贯的上下文,使得模型在生成时能“理解”任务需求并输出符合预期的结果。
三、Prompting 的类别
Prompting 可分为两大类:Zero-shot Prompting 和 Few-shot Prompting。
1. Zero-shot Prompting
-
定义:直接向模型提供一个问题或任务描述,模型不依赖任何示例,利用其预训练知识进行推理和生成。
-
示例:
- 问题:翻译“猫”这个词成英文。
- 提示:Translate “猫” to English:
- 模型输出:“cat”
-
优点:无需提供示例,简单直接,适用于各种任务。
-
缺点:模型对任务的理解可能不够准确,输出效果可能不稳定。
2. Few-shot Prompting
-
定义:在提示中包含少量的示例,使模型通过这些示例学习任务模式,进而推理并生成答案。
-
示例:
- 任务:将句子翻译成法语
- 提示:
Translate the following sentences to French: - I love apples: J'aime les pommes - He is running: Il court - They are happy: Ils sont heureux - The cat is sleeping:- 模型输出:Le chat dort
-
优点:通过示例,模型能更准确理解任务并生成更符合要求的结果。
-
缺点:需要在提示中提供足够的示例,提示长度有限,可能无法容纳较多信息。
四、Prompting 的应用
Prompting 可以将大语言模型应用于广泛的自然语言处理任务,包括但不限于:
- 文本生成:通过提供故事开头或对话上下文,模型可以续写故事、回答问题或生成对话。
-
示例:Prompt: “Once upon a time, there was a wise old owl…”
-
输出:模型继续编写后续故事。
-
翻译:通过提示将源语言文本转换成目标语言。
- 示例:Prompt: “Translate the following text to French: ‘The weather is nice today.’”
- 输出:“Il fait beau aujourd’hui.”
-
问答:根据提示中的问题,模型可以生成答案。
- 示例:Prompt: “Who wrote ‘Pride and Prejudice’?”
- 输出:“Jane Austen”
-
文本分类:通过提供分类任务描述,模型可以根据提示完成情感分析、主题分类等任务。
- 示例:Prompt: “Classify the sentiment of the following sentence as positive, negative, or neutral: ‘I love this movie!’”
- 输出:“positive”
-
摘要:通过提供长段文本,让模型生成简短摘要。
- 示例:Prompt: “Summarize the following paragraph: …”
- 输出:模型生成该段的摘要。
-
代码生成与补全:通过描述任务或给出部分代码,让模型生成完整代码或进行补全。
五、提示工程(Prompt Engineering)
Prompt Engineering 是指为了让模型生成更高质量、更准确的输出,对提示进行设计、调整和优化的过程。由于语言模型对提示的敏感性,选择合适的提示会显著影响模型性能。以下是提示工程中的一些重要技巧:
- 明确任务描述:提供明确而简洁的任务描述,让模型清楚知道需要完成什么任务。
-
不明确:“Translate:”
-
明确:“Translate the following English sentence into French:”
-
提供上下文:在 Few-shot Prompting 中,提供足够的示例,帮助模型学习任务的模式和结构。
-
控制输出:通过提示中的描述词或指导性语言,引导模型生成所需的格式或类型的输出。例如,“Generate a one-sentence summary:”
-
调整提示顺序:模型对示例顺序较为敏感,尝试调整提示中示例的顺序,观察对结果的影响。
-
使用连锁式思维提示(Chain-of-Thought Prompting):通过让模型逐步推理,提供一系列推理步骤提示,使模型生成更复杂的多步推理答案。例如,在数学题中引导模型按步骤解题。
六、Chain-of-Thought Prompting(连锁式思维提示)
Chain-of-Thought Prompting 是一种特殊的提示方式,通过要求模型逐步推理,提高模型在复杂任务中的性能。让模型在生成答案时明确写出思考过程,能够显著提高推理和回答准确性。
示例:
- 问题:一个篮子里有3个苹果,又加入了2个苹果,现在一共有多少个苹果?
- 普通提示:Prompt: “How many apples are in the basket?”
- 连锁式思维提示:Prompt: “First, there are 3 apples in the basket. Then, 2 more apples are added. How many apples are in total?”
模型输出:
- 普通提示:“5”
- 连锁式提示:“First, there are 3 apples. Then, adding 2 apples gives a total of 5 apples.”
七、Prompting 的优缺点
优点:
- 灵活性高:无需对模型进行额外训练,可直接通过 Prompting 引导模型完成各种任务。
- 适应多任务:通过不同的提示,可以让模型完成各种自然语言处理任务。
缺点:
- 对提示敏感:输出结果对提示的措辞、结构、顺序等非常敏感,不同提示可能会导致模型产生截然不同的输出。
- 难以控制:Prompting 的效果不总是可预测的,需要反复尝试和调整。
八、Prompting 的挑战与未来
Prompting 仍面临一些挑战,如提示的有效性评估、对不同任务的适应性、提示的设计和优化等。未来,随着 Prompting 技术的不断发展,可能会出现更加智能化的提示设计工具和技术,进一步提高大语言模型在各种任务中的应用性能。
总结
Prompting 是将预训练大规模语言模型应用于不同任务的关键技术,通过提供适当的上下文或示例,Prompting 能有效激活模型的潜在能力,完成多样化的任务。无论是 Zero-shot 还是 Few-shot,合理设计提示是确保模型输出质量的关键,也是当前自然语言处理领域的重要研究方向。
2.3 In-context Learning(ICL,情境学习/上下文学习)
根据文件内容以及补充的知识,以下是对 In-context Learning(ICL) 的整理,力求全面遵循文件并提供适当的知识补充以确保笔记清晰易懂。
一、In-context Learning 的定义
In-context Learning(ICL) 是一种在推理过程中,通过提供上下文提示(prompt)和训练示例,让预训练语言模型在不改变权重的情况下完成任务的方法。ICL 通过在输入中直接提供示例,让模型推理出任务模式并进行预测。
二、ICL 与传统监督学习的对比
文件中将 ICL 与监督微调(Supervised Fine-tuning)进行了对比:
1. 监督微调(Supervised Fine-tuning)
- 过程:将预训练模型在特定任务的数据集上进行微调。利用反向传播和优化算法(如 Adam)调整模型权重以适应新任务。
- 优点:标准的机器学习方式,能够很好地适应数据量较大的任务。
- 缺点:
- 需要完整的训练过程,计算成本高(约为前向计算的3倍内存和计算量)。
- 必须访问模型权重,这在某些情况下可能不可行(如模型是私有的)。
2. In-context Learning
-
过程:通过将训练示例作为输入提示提供给模型,模型在推理时自动学习这些示例中的模式并给出预测结果。无需对模型权重进行更新或调整。
-
优点:
- 无需进行反向传播,只需一次通过训练数据即可进行推理。
- 无需访问模型权重,通常只需要通过 API 调用模型即可。
-
缺点:
- 由于 Transformer 模型在处理长提示时需要 (O(N^2)) 的时间和空间复杂度(N 为上下文长度),处理长提示可能效率较低。
补充:ICL 实质上是一种利用模型预训练过程中学到的通用知识,结合特定任务示例来进行推理的方法。它不涉及模型参数的更新,而是将训练数据以提示的形式直接提供给模型。
三、Few-shot In-context Learning 的过程
Few-shot In-context Learning 是 ICL 中的一种典型方式,它的过程包括以下步骤:
- 任务描述:首先在提示中明确任务的描述(如“翻译以下句子”)。
- 输入/输出示例:随后提供一系列输入/输出示例,通常包括几对训练样本,帮助模型理解任务要求。
- 推理和预测:模型根据这些示例推理任务,并对新的输入进行预测。
补充:Few-shot ICL 在模型推理时利用了人类学习的直观方式,即通过少量示例掌握任务的模式。这种能力使模型能够应对一些未经过训练的任务,体现了大模型的泛化能力。
四、ICL 对模型性能的影响因素
文件指出,Few-shot In-context Learning 的效果对以下因素非常敏感:
- 训练示例的顺序:训练示例在提示中的排列顺序会对模型的预测产生影响。不同的顺序可能导致模型理解任务方式的变化,进而影响准确性。
- 标签的平衡性:训练示例中正负标签的平衡程度会影响模型对任务的判断。如果提示中一种标签明显多于另一种标签,模型可能会倾向于预测出现较多的标签。
- 标签的多样性:提示中包含的标签种类越丰富,模型在推理时对不同标签的理解可能会更全面。
补充:这些因素的影响在很大程度上反映了模型在利用提示进行学习时对输入信息的敏感性。因此,在设计提示时,需要仔细考虑这些因素,以确保提示对模型的指导是最有效的。
五、ICL 对示例质量和数量的敏感性
文件中强调了以下两点对 Few-shot In-context Learning 的重要性:
- 训练示例是否具有真实标签:与随机标签相比,提供真实标签示例通常被认为对模型更有帮助。
- 提供更多的训练示例:通常认为更多的示例可以提升模型的预测性能。
然而,实验结果表明,情况并非总是如此:即使部分示例的标签不正确,模型仍然能够获得较好的性能。这说明模型在 In-context Learning 中对示例的准确性并不是绝对敏感。
补充:这可能是因为模型已经从预训练中获取了丰富的知识,能够在一定程度上推断出示例的合理性。因此,设计提示时,关注示例的代表性和信息量可能比追求绝对的正确性更重要。
六、ICL 的优缺点总结
优点:
- 无需训练:ICL 不需要对模型进行微调,节省了大量的训练时间和计算成本。
- 灵活性:可以通过不同的提示完成多种任务,适用于多样化的应用场景。
- 无需模型权重访问:可以利用预训练模型的 API 接口完成任务,避免了权重访问的限制。
缺点:
- 对提示敏感:ICL 的性能对提示设计的质量非常敏感,不同提示可能导致截然不同的结果。
- 计算复杂度:由于 Transformer 模型的计算复杂度是 (O(N^2)),处理长提示时可能效率较低,尤其是处理长上下文任务时。
七、ICL 的应用场景
- 文本生成:根据给定的上下文提示生成文本段落。
- 机器翻译:通过提供源语言和目标语言示例,让模型进行新的翻译任务。
- 问答系统:提供问题和答案示例,模型根据提示回答新的问题。
- 文本分类:通过提供分类任务的示例,让模型完成分类任务。
补充:ICL 能够应用于广泛的自然语言处理任务,且无需对模型进行重新训练,显示出极高的应用潜力。
八、Prompt Engineering 在 ICL 中的重要性
Prompt Engineering 是设计有效提示以最大化 In-context Learning 效果的关键。文件中强调了以下几点:
- 通过仔细设计任务描述和示例,Prompt Engineering 可以帮助模型更好地理解任务。
- 提示的顺序、措辞和示例选择都会对模型的性能产生显著影响。
补充:Prompt Engineering 的发展有助于让 ICL 更加有效,未来可能出现自动提示生成的工具,进一步优化模型性能。
结论
In-context Learning 是一种创新的学习方式,能够利用预训练模型的知识,通过上下文提示完成多种任务。尽管 ICL 对提示非常敏感,但其无需训练、灵活性高的特点使其在自然语言处理领域具有广泛的应用前景。通过精心设计提示(Prompt Engineering),我们可以充分发挥 ICL 的潜力,实现高效的任务处理。
2.4 Prompt Engineering、Chain-of-Thought Prompting、Learning to Prompt
一、Prompt Engineering 的定义
Prompt Engineering 是设计和优化输入提示,以引导预训练的大型语言模型(LLM)完成特定任务并生成高质量输出的过程。它涉及选择合适的提示格式、措辞和结构,以确保模型能够正确理解任务需求。
二、Prompt Engineering 的关键概念
文件中的一些关键点可以帮助我们更好地理解 Prompt Engineering 的核心思想:
- 提示的作用:语言模型被训练为根据给定的上下文生成序列,Prompt Engineering 的核心是为模型提供一个前缀字符串,使其生成与任务要求相匹配的输出【43:0†source】。
- 模型如何利用提示:模型通过最大化训练数据中序列的可能性来进行推理。提示实际上是模型完成任务的“指引”,告诉模型要执行什么操作。
- 在 Zero-shot Learning 中的提示设计:当不提供示例时,模型需要根据任务描述和单一提示进行推理,这时设计一个高质量的提示就显得尤为重要。
三、Prompt Engineering 的实践
1. 提示的有效性
文件通过实验强调,提示的设计对模型的性能有很大影响。即使保持任务和数据集不变,仅更改提示也会导致输出结果的显著差异。这表明提示的措辞、结构以及提示中提供的信息量对模型的性能至关重要【43:0†source】。
示例:
- 任务:新闻主题分类
- 数据集:AG News
- 模型:OPT-175B
- 设置:Zero-shot Learning
在这个例子中,不同提示可能导致模型输出不同的分类结果,这反映了 Prompt Engineering 对模型性能的影响【43:0†source】。
2. 如何选择合适的提示
一个实用的方法是选择在模型中具有**最低困惑度(Perplexity)**的提示。困惑度是一种衡量模型对某个序列的预测准确性的方法,困惑度越低,表示模型对该序列的预测越准确。因此,选择困惑度最低的提示可以帮助模型更好地完成任务【43:1†source】。
四、案例:不同任务中的 Prompt Engineering
文件提供了两个具体案例来说明如何在不同任务中进行 Prompt Engineering:
- 新闻主题分类(Zero-shot Learning 场景)【43:1†source】:
-
问题:如果在模型评估过程中保持其他条件不变,只更改提示,结果会有变化吗?
-
答案:会有变化,这就是为什么选择最佳提示非常重要。
-
法语词汇级翻译(Zero-shot Learning 场景)【43:2†source】:
- 数据集:NorthEuraLex
- 模型:Bloom(多语言 LLM)
- 答案:选择困惑度最低的提示可以优化模型的翻译性能。
五、链式思维提示(Chain-of-Thought Prompting)
文件介绍了Chain-of-Thought Prompting,它是一种提示技术,要求模型在生成答案时进行推理,逐步解释思路,进而提高模型在复杂任务中的表现。这种方法尤其适用于 Few-shot In-context Learning 中的多步骤推理任务。
- 链式思维提示的优势:
- 增强了模型的推理能力,使其在回答需要多步骤推理的问题时表现更好。
- 提供了对答案的解释,使模型生成的答案更加透明和可解释【43:3†source】。
六、提示学习(Learning to Prompt)
文件最后提到了几种学习如何优化提示的方法:
- 提示改写(Prompt Paraphrasing):通过改写生成多个不同版本的提示,并选择效果最好的一个。
- 基于梯度的搜索(Gradient-based Search):通过梯度优化搜索能够最大化期望输出的离散提示表示。
- 提示调优(Prompt Tuning):优化提示的嵌入表示,而不考虑提示的离散形式【43:3†source】。
补充知识:
Prompt Tuning 是一种常用于大型预训练模型的方法,通过在训练过程中调整特定任务的提示嵌入向量,可以有效提高模型在新任务中的表现,而无需对整个模型进行微调。
七、Prompt Engineering 的挑战
- 提示敏感性:模型对提示的措辞和结构非常敏感,提示的微小变化可能导致模型生成出截然不同的结果。
- 任务依赖性:不同任务对提示的要求不同,设计一个适用于所有任务的提示通常很困难。
- 提示优化难度:在一些情况下,手工设计提示需要反复尝试,尤其当任务复杂或模型对提示不敏感时。
八、Prompt Engineering 的应用场景
- 文本分类:通过提供分类任务描述,让模型根据提示完成分类任务。
- 机器翻译:设计合适的提示,使模型能够将文本翻译成目标语言。
- 问答系统:通过提示引导模型回答问题,并根据提示提供所需的细节和推理过程。
- 文本生成:利用提示,指导模型生成与任务相关的文本段落。
九、结论
Prompt Engineering 是确保大型语言模型在 In-context Learning 和 Zero-shot/Few-shot Learning 场景下有效工作的关键。通过仔细设计提示,可以引导模型生成更符合任务要求的高质量输出。然而,Prompt Engineering 是一项复杂的技术,涉及对任务、提示和模型行为的深入理解,需要反复试验和优化。
补充:随着 Prompt Engineering 的不断发展,未来可能会出现更加自动化和智能化的提示设计工具,使得在不同任务中应用预训练模型变得更加高效和便捷。
相关文章:
CMU 10423 Generative AI:lec10(few-shot、提示工程、上下文学习)
文章目录 1 概述2 摘录2.1 zero-shot 和 few-shot一、Zero-shot Learning(零样本学习)特点:工作原理:优点:缺点: 二、Few-shot Learning(少样本学习)特点:工作原理&#…...
做数据抓取工作要如何选择ip池
选择合适的IP池对于数据抓取工作至关重要。一个优质的IP池可以提高抓取的效率和成功率,同时减少被目标网站封禁的风险。以下是选择IP池时需要考虑的一些关键因素: 1. IP类型 住宅IP:住宅IP通常来自真实用户,难以被识别为代理。它…...
防止电脑电池老化,禁止usb或者ac接口调试时充电
控制android系统,开发者模式,开启和禁止充电 连接 Android 手机到电脑的 USB 端口。 下载并安装 Android Debug Bridge (ADB) 工具[1]。 USB: 在命令行中输入 adb shell dumpsys battery set usb 0,以禁止 USB 充电。 在命令…...
智权半导体/SmartDV力助高速发展的中国RISC-V CPU IP厂商走上高质量发展之道
作者:Karthik Gopal SmartDV Technologies亚洲区总经理 智权半导体科技(厦门)有限公司总经理 进入2024年,全球RISC-V社群在技术和应用两个方向上都在加快发展,中国国内的RISC-V CPU IP提供商也在内核性能和应用扩展…...
利用vue-capper封装一个可以函数式调用图片裁剪组件
1. 效果 const cropData await wqCrop({prop:{img,autoCrop: true, // 是否开启截图框maxImgSize: 600,autoCropWidth: 30,canMove: true, // 图片是否可移动canMoveBox: true, // 截图框是否可移动fixedBox: false, // 截图框是否固定}});console.log(cropData);使用wqCrop会…...
在系统开发中提升 Excel 数据导出一致性与可维护性的统一规范与最佳实践
背景: 在系统开发过程中,数据导出为 Excel 格式是一个常见的需求。然而,由于各个开发人员的编码习惯和实现方式不同,导致导出代码风格不一。有的人使用第三方库,有的人则自定义实现。这种多样化不仅影响了代码的一致性…...
SpringAOP学习
面向切面编程,指导开发者如何组织程序结构 增强原始设计的功能 oop:面向对象编程 1.导入aop相关坐标,创建 <!--spring依赖--><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spri…...
智能网联汽车飞速发展,安全危机竟如影随形,如何破局?
随着人工智能、5G通信、大数据等技术的飞速发展,智能网联汽车正在成为全球汽车行业的焦点。特别是我国智能网联汽车市场规模近年来呈现快速增长态势,彰显了行业蓬勃发展的活力与潜力。然而,车联网技术的广泛应用也带来了一系列网络安全问题&a…...
Android常用C++特性之std::function
声明:本文内容生成自ChatGPT,目的是为方便大家了解学习作为引用到作者的其他文章中。 std::function 是 C 标准库中的一个 函数包装器,用于存储、复制、调用任何可以调用的目标(如普通函数、lambda 表达式、函数对象、成员函数等&…...
人工智能与机器学习原理精解【27】
文章目录 集成学习集成学习概述集成学习的定义集成学习的性质集成学习的算法过程集成学习的算法描述集成学习的例子和例题Julia实现集成学习 集成学习数学原理一、基学习器的生成Bagging(装袋法)Boosting(提升法) 二、基学习器的结…...
XXL-JOB在SpringBoot中的集成
在SpringBoot中,XXL-JOB作为一个轻量级的分布式任务调度平台,提供了灵活的任务分片处理功能,这对于处理大规模、复杂的任务场景尤为重要。以下将详细探讨如何在SpringBoot中利用XXL-JOB实现灵活控制的分片处理方案,涵盖配置、代码…...
前端工程规范-3:CSS规范(Stylelint)
样式规范工具(StyleLint) Stylelint 是一个灵活且强大的工具,适用于保持 CSS 代码的质量和一致性。结合其他工具(如 Prettier 和 ESLint),可以更全面地保障前端代码的整洁性和可维护性。 目录 样式规范工具…...
Qt系列-1.Qt安装
Qt安装 0 简介 1.安装步骤 1.1 下载 进入qt中文网站:https://www.qt.io/zh-cn/ Qt开源社区版本:https://www.qt.io/download-open-source#source 1.2 安装 chmod +x qt-online-installer-linux-x64-4.8.0.run ./qt-online-installer-linux-x64-4.8.0.run 外网不能下载…...
《自控原理》最小相位系统
在复平面右半平面既没有零点,也没有极点的系统,称为最小相位系统,其余均为非最小相位系统。 从知乎看了一篇答案: https://www.zhihu.com/question/24163919 证明过程大概率比较难,我翻了两本自控的教材,…...
SpringBoot3脚手架
MySpringBootAPI SpringBoot3脚手架,基于SpringBoot3DruidPgSQLMyBatisPlus13FastJSON2Lombok,启动web容器为Undertow(非默认tomcat),其他的请自行添加和配置。 <java.version>17</java.version> <springboot.version>3.3…...
【C语言软开面经】
C语言软开面经 malloc calloc realloc free动态分配内存malloccalloc函数:realloc 函数:free函数: 堆栈-内存分区栈区(Stack):堆区(Heap):全局(静态ÿ…...
YOLOv11训练自己的数据集(从代码下载到实例测试)
文章目录 前言一、YOLOv11模型结构图二、环境搭建三、构建数据集四、修改配置文件①数据集文件配置②模型文件配置③训练文件配置 五、模型训练和测试模型训练模型验证模型推理 总结 前言 提示:本文是YOLOv11训练自己数据集的记录教程,需要大家在本地已…...
HTML粉色烟花秀
目录 系列文章 写在前面 完整代码 下载代码 代码分析 写在最后 系列文章 序号目录1HTML满屏跳动的爱心(可写字)2HTML五彩缤纷的爱心3HTML满屏漂浮爱心4...
从零开发操作系统
没有操作系统 要考虑放到什么位置 org 07c00h 我用nasm(汇编编译) 放到7c00处 ibm兼容机 AX发生变化 -寄存器 不可能做存储 内存- 代码段数据段 if else --指令 代码 int a -数据段 必须告诉计算机代码段从哪里开始 改变cs寄存器里面的值可以改变推进寄…...
SigmaStudio中部分滤波器算法有效性频谱分析
一、各类滤波器参数如下图设置 1.1、输入源白噪音经过如下算法处理后Notch\Band Pass\Band Stop,如下频谱分析图 1.2、输入源白噪音经过low pass后处理前后的频谱分析如如下 二、Notch滤波器配置图,如下 2.1、两串联、五个串联和未串联的Notch对白噪音…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...
【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
MinIO Docker 部署:仅开放一个端口
MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...
Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storms…...
用 Rust 重写 Linux 内核模块实战:迈向安全内核的新篇章
用 Rust 重写 Linux 内核模块实战:迈向安全内核的新篇章 摘要: 操作系统内核的安全性、稳定性至关重要。传统 Linux 内核模块开发长期依赖于 C 语言,受限于 C 语言本身的内存安全和并发安全问题,开发复杂模块极易引入难以…...
