淘先锋技术网

首页 1 2 3 4 5 6 7

简述

训练方式

在一个比较强的BaseModel(GPT3.5)上继续用数据微调(SFT),但这次的微调还引入了一种学习方式叫RLHF(Reinforcement Learning from Human Feedback,人类反馈强化学习)。

所以可以简单总结为:强BaseModel微调 + RLHF

训练过程

第一阶段:训练监督模型

GPT 3.5本身很难理解人类不同类型指令中蕴含的不同意图,为了让GPT 3.5初步具备理解指令的意图,首先会在数据集中随机抽取问题,由人类标注人员,给出高质量答案,然后用这些人工标注好的数据来微调 GPT-3.5模型(获得SFT模型, Supervised Fine-Tuning)。

此时的SFT模型在遵循指令/对话方面已经优于 GPT-3,但不一定符合人类偏好。

第二阶段:训练奖励模型(Reward Model)

在数据集中随机抽取问题,使用第一阶段生成的模型,对于每个问题,生成多个不同的回答。人类标注者对这些结果综合考虑给出排名顺序。接下来,使用这个排序结果数据来训练奖励模型。对多个排序结果,两两组合,形成多个训练数据对。

RM模型接受一个输入,给出评价回答质量的分数。这样,对于一对训练数据,调节参数使得高质量回答的打分比低质量的打分要高。

第三阶段:采用PPO(Proximal Policy Optimization,近端策略优化)强化学习来优化策略。

这一阶段利用第二阶段训练好的奖励模型,靠奖励打分来更新预训练模型参数。在数据集中随机抽取问题,使用PPO模型生成回答,并用上一阶段训练好的RM模型给出质量分数。

把回报分数依次传递,由此产生策略梯度,通过强化学习的方式以更新PPO模型参数。

如果我们不断重复第二和第三阶段,通过迭代,会训练出更高质量的ChatGPT模型。


 

应用和效果

以下内容按照是否“只需要嵌套一个prompt就能达到目标”来分类。

一步到位

只需要根据任务套prompt,就可以达到目标,但前提是需要精心设计尝试多种prompt。

翻译

prompt示例

请你帮我把#START和#END之间的文本翻译成英文

#START
{content}
#END

相关产品

    1. OpenAI translator 划词翻译和文本润色的浏览器插件
    2. 沉浸式翻译 智能识别网页主内容区,双语显示,中文/英文对照着看
    3. ByteLingo英语助手 公司内专用,不用输key

摘要

prompt示例

相关产品

    1. Glarity 一款开源浏览器插件,主要功能是利用 ChatGPT为谷歌搜索、YouTube视频等网站内容生成摘要。

    1. Wiseone

辅助创作/笔记工具

prompt示例

相关产品

    1. Notion AI

其他

  1. 代码补全、生成、debug

prompt示例:

结果:

  1. 正则表达式生成

prompt示例:

结果:

多步到位

文档向量索引

应用场景

input有两类:一个是{doc},一个是{query}

output必须为:基于doc的{answer}

  1. 可以对论文、小说、网页文章、简历、合同等任何长文本内容,进行快速整理摘要重点,或者是针对某个问题提取doc中的答案(不会自己随意生成),如果想要深入研究某个答案,还可以直接索引到那块内容来细看。

相关产品

    1. ChatPdf
    2. ChatDoc

效果

原理

使用openai api来实现对话式文档问答,最朴素的想法把这个当成一个阅读理解问题,构建如下的prompt:

现有一个问题:“洗碗机排水管堵塞了怎么办”,请根据下面的文章来回答,文章内容如下:"......"


 

这种方法在文档较长时存在两个问题:

  • 第一,openai api存在最大长度的限制,例如chatgpt的最大token数为4096,此时直接对文档截断,存在上下文丢失的问题
  • 第二,api的调用费用和token长度成正比,tokens数太大,则每次调用的成本都会很高

参考搜索引擎中“先检索再重排”的思路,针对文档问答设计“先检索再整合“的方案。

整体思路如下:

  • 首先准备好文档,把每个文档切成若干个小的chunks
  • 将每个chunk转为一个向量,存入向量数据库
    • 文本转向量可以使用openai embedding
    • 也可以使用其他方案,如fasttext/simbert等
  • 当用户发来一个问题的时候,将问题同样转为向量,并检索向量数据库,得到相关性最高的一个或几个chunk
  • 将问题和chunk合并重写为一个新的请求发给openai api,可能的请求格式如下:

推荐一个库:llama-index (封装了先检索再整合的逻辑)

Agent

简介

简单来说:agent管理所有prompt、工具、LLM资源,三者结合实现自主开发。

展开来说:给定一个任务,AI Agent可以实现 LLM 与其他工具的组合、链路的嵌套等逻辑。利用提供的工具、LLM和带有CoT的prompt,实现自主开发、拆分子任务、决策子任务优先级、自己去寻找对应解决子任务需要的资源

例子:

相关产品

    1. LongChain Agent
    2. AutoGPT
    3. Microsoft Jarvis
    4. BabyAGI

效果

对LongChain Agent提问“五一假期从上海到东京哪一班航班最便宜?”

直接询问Chatgpt的结果

对AutoGPT提问“为即将到来的假期发明一道原创菜谱,并且保存到一个文件里。”

结果:https://github.com/Torantulino/Auto-GPT

原理

这边以LongChain Agent为例,其他agent的设计都类似。

agent管理所有prompt、工具、LLM资源,三者结合实现自主开发。

三要素:LLM、prompt、APIs

参考网上的一个例子来展开讲原理。

  • 任务:查询本周天气,以及十年后我多少岁,今年我28
  • Agent 返回结果:
  • 要素一:chatgpt
  • 要素二:prompt
  • 要素三:API

这里定义两个工具:WeatherTool、CustomCalculatorTool


 

  • 执行过程:

大集成

简介

集合各种应用

相关产品

    1. Microsoft Copliot
    2. 钉钉 x 通义千问


 

Answer the following questions as best you can.  You have access to the following tools: #  尽可能的去回答以下问题,你可以使用以下的工具:

Calculator: Useful for when you need to answer questions about math.
 # 计算器:当你需要回答数学计算的时候可以用到
Weather: useful for When you want to know about the weather #  天气:当你想知道天气相关的问题时可以用到
Use the following format: # 请使用以下格式(回答)

Question: the input question you must answer #  你必须回答输入的问题
Thought: you should always think about what to do # 你应该一直保持思考,思考要怎么解决问题
Action: the action to take, should be one of [Calculator, Weather] # 你应该采取[计算器,天气]之一
Action Input: the input to the action #  对工具需要输入什么内容
Observation: the result of the action # 工具的返回结果
...  (this Thought/Action/Action Input/Observation can repeat N times) # 思考-行动-输入-输出 的循环可以重复N次
Thought: I now know the final answer # 最后,你应该知道最终结果了
Final Answer: the final answer to the original input question # 针对于原始问题,输出最终结果


Begin! # 开始
Question: Query the weather of this week,And How old will I be in ten years?  This year I am 28 #  问输入的问题
Thought:
    • 第一轮响应内容:
    • 第二轮响应内容:
    • 第三轮响应内容:
    • 直接使用chatgpt的结果: