本文介绍 .NET 中提示工程的零次学习和少量学习,包括主要用例。
GPT 模型性能受益于 提示工程、向模型提供说明和示例以优化其输出的做法。 从零开始学习和少量学习是提供示例时可以使用的技术。
零拍摄学习
从零开始学习是传递与逐字完成配对的提示的做法,尽管你可以包括由提示组成的完成。零次学习完全依赖于模型的现有知识来生成响应,从而减少创建的令牌数,并有助于控制成本。 但是,零次学习不会添加到模型的知识或上下文中。
下面是一个零次提示示例,该提示告知模型评估用户输入以确定输入表示的四个可能意向中的哪一个,然后使用 “意向:”为响应开头。
prompt = $"""
Instructions: What is the intent of this request?
If you don't know the intent, don't guess; instead respond with "Unknown".
Choices: SendEmail, SendMessage, CompleteTask, CreateDocument, Unknown.
User Input: {request}
Intent:
""";
零次学习有两个主要用例:
- 使用经过微调的 LLM - 因为它依赖于模型的现有知识,因此零射学习不如少拍摄学习那么资源密集型,并且它适用于已对指令数据集进行微调的 LLM。 你可能只能依靠零枪学习,并保持成本相对较低。
- 建立性能基线 - 零次学习可帮助你模拟应用对实际用户的性能。 这样,便可以评估模型当前性能的各个方面,例如准确性或精度。 在这种情况下,通常使用零次学习来建立性能基线,然后尝试使用少量学习来提高性能。
少样本学习
很少拍摄的学习是传递提示与逐字完成(很少拍摄提示)配对的做法,以显示模型如何响应。 与零次学习相比,这意味着很少的学习会产生更多的令牌,并导致模型更新其知识,这使得几枪学习更具资源密集型。 但是,很少的学习还有助于模型生成更相关的响应。
prompt = $"""
Instructions: What is the intent of this request?
If you don't know the intent, don't guess; instead respond with "Unknown".
Choices: SendEmail, SendMessage, CompleteTask, CreateDocument, Unknown.
User Input: Can you send a very quick approval to the marketing team?
Intent: SendMessage
User Input: Can you send the full update to the marketing team?
Intent: SendEmail
User Input: {request}
Intent:
""";
很少的学习有两个主要用例:
- 优化 LLM - 因为它可以添加到模型的知识中,因此很少的学习可以提高模型的性能。 它还会导致模型创建比零次学习更多的令牌,这最终可能会变得极其昂贵,甚至不可行。 但是,如果你的 LLM 尚未微调,你并不总是得到良好的性能与零射提示,并且需要很少的学习。
- 修复性能问题 - 可以使用少量学习作为零次学习的跟进。 在本例中,你将使用零次学习建立性能基线,然后根据你使用的零次提示尝试少量学习。 这样,便可以在查看模型当前响应方式后将其添加到模型的知识中,以便可以循环访问和提高性能,同时最大程度地减少引入的令牌数。
警告
- 基于示例的学习不适用于复杂的推理任务。 但是,添加说明有助于解决此问题。
- 很少的学习需要创建冗长的提示。 具有大量令牌的提示可能会增加计算和延迟。 这通常意味着成本增加。 提示的长度也有限制。
- 使用多个示例时,模型可以学习虚假模式,例如“情绪比负数高出两倍”。