网站开发一月工资多少,网站备案被恶意注销,佛山微网站建设报价,网站推广外包公司问题情境
情景#xff1a;比如我希望用 GPT 做一个产品的客服#xff0c;现在有一些相关文档#xff0c;如何让 GPT 学习到产品信息呢#xff1f; 并且还具备正常对话功能 一个方案是直接把产品信息当做输入喂给GPT#xff0c;但是ChatGPT/GPT-4/LLMs 一般都有输入长度的…问题情境
情景比如我希望用 GPT 做一个产品的客服现在有一些相关文档如何让 GPT 学习到产品信息呢 并且还具备正常对话功能 一个方案是直接把产品信息当做输入喂给GPT但是ChatGPT/GPT-4/LLMs 一般都有输入长度的限制 token 长度的限制如果信息太长超过token长度则无法把这些信息一股脑的当做输入扔进去。但又想让 ChatGPT 学到这些知识所以这个问题就必须想办法解决。
解决方案
一、finetune微调
微调finetune是深度学习领域一个很常用的操作就是模型的再次训练。通过 finetune 可以小幅度改变大模型的参数使大模型聚焦于特定场景的知识即私有数据知识。但 finetune 需要大量的 GPU 资源进行模型训练同时需要一定的深度算法基础保证模型能够按自己需求把私有数据的知识学习到。门槛较高
但是实际操作过程中微调后的model反而容易发生“遗忘“变成了一个专才是具备了回答特定问题的能力但是丧失了对话功能。不知道openai如何让chatgpt具备这种全才功能的
对此 GPT4是这样解释的 在微调fine-tuningGPT-3之后模型会专门关注于特定的任务或者专门的领域。这是因为在微调过程中模型将根据新的训练数据重新调整其参数以更好地适应这些特定任务或领域。这可能会导致模型在其他任务或领域中的表现下降因为它主要优化了在新数据上的表现。 然而ChatGPT是一个通用的对话模型它是通过在大量的对话数据上进行预训练和微调训练得到的。这意味着它可以在各种不同的对话场景和主题上进行自然和连贯的对话。 关于如何实现的我会简单解释一下 预训练阶段Pretraining Stage模型首先在大量的互联网文本上进行预训练。在这个阶段模型学习到了大量的语言知识包括语法、词汇、常识以及各种主题的基本信息。 微调阶段Fine-tuning Stage预训练完成后模型将在特定的对话数据上进行微调。这些数据可能包括人与人的对话、人与机器的对话等。在这个阶段模型学习到了如何进行自然和连贯的对话。 关键的区别在于微调阶段的数据是多样化的包含了各种不同的对话场景和主题所以ChatGPT能够在各种不同的对话中表现得较好。这和针对特定任务或领域进行微调的模型是不同的。对于特定任务的微调模型它的数据是特定的导致它在这个任务上表现得很好但在其他任务上可能就不行了。 User 那我可以解决这种微调后的遗忘问题嘛比如从prompt上下功夫 ChatGPT 在微调模型后确实可能会出现“遗忘”问题即模型在专门优化新任务时可能会忽视其原有的知识和能力。这在迁移学习领域是一个常见的问题研究者们提出了一些策略来缓解这个问题比如慢速微调、弹性权重共享等。 对于你提出的在prompt上下功夫的想法的确是一个有效的策略。正确的prompt设计可以帮助模型更好地理解任务并使用其已有的知识。 在OpenAI的GPT-3中已经展示了通过精心设计的prompt可以大幅度提升模型的表现。比如在机器翻译任务中将prompt设计为“Translate the following English text to French: …”可以帮助模型更好地执行任务。在对话任务中也可以使用类似的策略比如可以在每一次对话开始时告诉模型你需要的是一个全能的对话模型而不仅仅是针对特定任务或领域的专家。 然而虽然精心设计的prompt可以提高模型的表现但并不能完全解决遗忘问题。这是因为微调过程中的遗忘问题本质上是因为模型在新任务上过度优化导致的而prompt设计只能帮助模型更好地理解任务无法改变微调过程中的优化方向。要彻底解决这个问题可能需要更深入的研究和新的策略。 二、基于检索的提示补充
Context Learning
GPT系列的大语言模型都有一个共同的原理是基于上下文学习Context Learning能力进行训练和结果生成。
上下文学习可以通过一个不完全准确的例子理解
历史数据我今天头疼所以我生病了。 历史数据我今天肚子疼所以我生病了。 输入提示我今天脚疼所以_______ 模型我今天脚疼所以我生病了 模型通过学习历史数据模型能对当前的输入进行预测。因为历史的数据表示我“疼”了就会“生病”所以模型通过数据抽象总结出了这个因果关系并根据“脚疼”推理出“生病”。当数据足够多、足够丰富模型能够预测的结果也就越丰富越随机。
这个例子虽然不完全准确但能反映出部分上下文学习的核心思想。
上下文学习中输入被称为提示Prompt提示越准确、包含的信息越多模型所能准确推理出更准确的结果。 回到上述的问题如何让 GPT 学到额外的私有信息就是尽可能构建出包含有用的、包含私有知识更多的提示从而使 GPT 根据上下文能力学到额外的信息。但因为算法本身原因大模型都有输入的限制要求输入不能超过某一长度因此无法通过无限制的增大长度来增大信息。
》因此回到了本部分的解决方案基于检索的提示补充。
基于检索的提示补充核心思路是
根据输入信息1 检索本地私有数据库/文档中的内容得到额外的信息2 将信息2 和 输入信息1 安装特定的提示模版Prompt template组合成一个包含信息更多的新输入信息3 再将信息3作为输入调用 GPT 模型生成最终的结果。
目前基于检索的提示补充开源工具有
OpenAI 的官方插件chatgpt-retrieval-plugin 本地/私有数据收集和索引构建外部数据与大模型之间接口的开源项目Llama-index 同样是 外部数据、其他应用与大模型交互的接口层框架LangChain
文本参考
https://zhuanlan.zhihu.com/p/623031303