从公众号转载,关注微信公众号掌握更多技术动态
---------------------------------------------------------------
——AI不会淘汰所有人,但会淘汰不懂AI的人
一、最强人工智能GPT-4 Turbo
在前不久的OpenAI开发者大会,正值Chatgpt3.5发布一周年,OpenAI又放了一个大招,公布了以下六项能力。
GPT-4 Turbo 可供所有付费开发者通过gpt-4-1106-preview API 进行尝试,OpenAI计划在未来几周内发布稳定的生产就绪模型。
1.上下文理解能力增加
增加至128K,可以在单个提示中容纳相当于300多页文本的内容。相当于以前只能记住一篇文章,现在能记住一本书。这对于我们使用者来说,意味着Chatgpt基本不可能出现聊着聊着忘记了之前的内容,虽然还不能与人类的大脑相提并论,但是随着这个趋势,在不久的将来,记忆能力上Chatgpt完全可以追上甚至于超越人类。
2.Api服务降价
价格降至三折
3.知识库更新
Chatgpt的知识库从2021年更新2023年4月,这意味我们可以和它交谈更多的较新发展的事实,它不需要实时的从网络上获得信息。
4.多模态
做到了能看、能听、能说。以下是OpenAI更新后,网上有人上传梅西的比赛视频后自动生成解说。
,时长00:27
GPT-4 Turbo 可以接受图像作为聊天完成 API 中的输入,从而实现生成标题、详细分析现实世界图像以及阅读带有图形的文档等用例。例如,BeMyEyes 使用这项技术帮助盲人或弱视人士完成识别产品或浏览商店等日常任务。OpenAI计划为主要的 GPT-4 Turbo 模型提供视觉支持,作为其稳定版本的一部分。定价取决于输入图像的大小。例如,将 1080×1080 像素的图像传递给 GPT-4 Turbo 的成本为 0.00765 美元。
开发人员可以通过图像API 指定模型,将OpenAI向ChatGPT Plus和企业用户推出的DALL·E 3 直接集成到他们的应用程序和产品中。Snap、可口可乐和 Shutterstock 等公司已使用 DALL·E 3 以编程方式为其客户和活动生成图像和设计。OpenAI提供不同的格式和质量选项,每生成一张图像的起价为 0.04 美元。
开发人员现在可以通过文本转语音 API 从文本生成人类质量的语音。新 TTS 模型提供六种预设声音可供选择以及两种模型变体——tts-1与tts-1-hd,tts-1针对实时用例进行了优化,tts-1-hd针对质量进行了优化。每输入 1000 个字符起价为 0.015 美元。
5.assistant API
可以让开发者在自己的应用程序中,构建类似生活助理的体验。
Assistants API具有持久的线程,并支持检索功能,获取及时或者专业的信息,支持代码解释器功能,可以在沙盒执行环境中编写和运行Python代码,改进了函数调用,可以一次调用多个函数。
现场演示中,就轻松做出了一份包括十个景点的巴黎旅行计划出来。
这个 API 的设计是为了灵活性。用例范围包括基于自然语言的数据分析应用程序、编码助手、人工智能驱动的假期规划器、语音控制的 DJ、智能视觉画布等等。助理还可以根据需要调用新工具,包括:代码解释器、检索与函数调用。
6.GPTs
GPTs是一个UGC平台。OpenAI相信最令人难以置信的GPT将来自社区的构建者,无论是教育家、教练,还是只是喜欢构建有用工具的人,都不需要了解编码来制作工具并分享专业知识。
OpenAI还将重点关注在生产力、教育和“只是为了好玩”等类别中遇到的最有用和最令人愉快的GPTs。就像苹果App Store的开发者一样,用户还可以根据使用其开发的GPTs的人数来赚钱。
关于隐私和安全问题,用户可以通过ChatGPT控制数据。用户与GPTs的聊天不会与构建者共享。如果GPTs使用第三方API,用户可以选择是否可以将数据发送到该API。当构建者使用操作或知识定制自己的GPTs时,构建者可以选择用户与该GPTs的聊天是否可用于改进和训练模型。这些选择建立在用户现有的隐私控制之上,包括选择将整个帐户排除在模型训练之外的选项。
OpenAI还建立了新的审查机制,旨在防护用户共享有害的GPTs,包括涉及欺诈活动、仇恨内容或成人主题的 GPTs。
OpenAI表示,GPTs将继续变得更有用、更智能,用户最终将能够让它们承担现实世界中的实际任务,这些系统通常被称为“代理(Agents)”。OpenAI认为,逐步迈向这一未来非常重要,因为这需要认真的技术和安全工作,以及社会适应的时间。
可以尝试使用GPTS构建一个总结视频的助手
,时长01:56
二、GPT能做什么
可以把ChatGPT想象成一个具有多项专业知识的人类,它可以完成很多传统的NLP任务。
三、ChatGPT究竟有什么优势
-
大模型LLM优势
传统机器学习可能需要通过几个月训练才能正常进行工作,有了大语言模型后可能几天后就可以进行工作。
2.乌鸦与鹦鹉
-
过往机器学习:需要“喂”,之后“模仿”,基于的是“对应关系”;
-
ChatGPT:需要“教”,之后“懂”,基于的是“内在逻辑”;
图a是一只乌鸦,被研究人员在日本发现和跟踪拍摄 ,乌鸦是野生的它必须靠自己的观察、感知、学习完全自主生活。
首先乌鸦面临一个任务,寻找食物,它找到一个坚果,需要碾碎,乌鸦怎么尝试都不行,最后发现一个诀窍,把果子放到路上让车碾碎,但是碾碎后它去路中间去吃是一件非常危险的事,因为在一个车水马龙路面上,随时可能牺牲。
然后它开始观察,如图c,它发现在靠近红绿灯的路口,车和人有时候停下,这时候它必须进一步领悟出红绿灯、斑马线、行人指示灯、车停、人停这之间复杂因果链,搞清楚之后乌鸦选择一根正好在斑马线上方的一个电线蹲下来。
它把坚果抛到斑马线上,等车碾碎,然后等到行人灯亮,图c。这时候车子都停了,它可以从容不跑的去吃了。
总结一下城市中的乌鸦通过观察自主传统了:汽车能压碎坚果、红绿灯能控制汽车、车能撞死我, 从而达到了安全打开坚果这一任务结果
(1)过往机器学习的范式 -- 鹦鹉学舌
找到数据中的“对应关系”并应用。具体来说,就是Y=f(X),给定一些优化目标,机器学习寻找X和Y的对应关系,来优化一个特定的方程。
(2)ChatGPT可能的新范式 -- 乌鸦
如果类比成机器学习模型,过往“鹦鹉学舌”范式的解法,是要求所有乌鸦可以共享一个大脑,它们有很清晰的优化目标,即“保住性命的前提下打开坚果”。它们的方式是,随机尝试所有事件的组合,并向着最优解的方向不断演化。
但现实世界的乌鸦无法共享大脑,也不能去冒着死亡风险去尝试所有可能。乌鸦只有一次机会,把观测到的两个现象,产生了一个新的可能性,并应用在一个全新的场景下。
(3)ChatGPT看似拥有乌鸦能力的证据
-
ChatGPT拥有上下文纠正答案的能力,即如果说错了,给出矫正,ChatGPT能“听懂”错在哪儿了,并向正确的方向修正。
-
描述越详细清楚,ChatGPT回答得越好。要知道,越详细的描述,在预训练的文本里越难匹配到
-
在询问ChatGPT互联网上并不存在内容的时候,能给出较好答案
-
ChatGPT能通过信息猜你心中的想法(案例:跟ChatGPT玩20 questions)
-
你可以制定一个全新的游戏规则让ChatGPT和你玩,ChatGPT可以理解
3.范式突破
(1)范式转换 1.0: 从深度学习到两阶段预训练模型
-
影响一:中间任务的消亡
典型的中间任务包括:中文分词、词性标注、NER、句法分析、指代消解、语义 Parser 等,这类任务一般并不解决应用中的实际需求,大多数是作为那些解决实际需求任务的中间阶段或者辅助阶段存在的,比如几乎没有需求说,我要一个句法 Parser,把这个句子的句法分析树给用户看看,用户不需要看到这些 NLP 的中间阶段处理结果,他只关心某个具体任务你有没有干好。
“最终任务” 包括比如文本分类、文本相似性计算、机器翻译、文本摘要等等,有很多。这类任务的特点是每个子领域都解决某个实际需求,任务结果基本能直接呈现给用户,比如用户确实存在给你一句英文,告诉他中文是什么的需求。按理说,“中间任务” 就不应该出现,而之所以会存在,这是 NLP 技术发展水平不够高的一种体现。
-
影响二:不同研究方向技术路线的统一
大多数 NLP 子领域的研发模式切换到了两阶段模式:模型预训练阶段 + 应用微调(Fine-tuning)或应用 Zero/Few Shot Prompt 模式。更准确地说,NLP 各种任务其实收敛到了两个不同的预训练模型框架里:对于自然语言理解类任务,其技术体系统一到了以 Bert 为代表的 “双向语言模型预训练 + 应用 Fine-tuning” 模式;而对于自然语言生成类任务,其技术体系则统一到了以 GPT 2.0 为代表的 “自回归语言模型(即从左到右单向语言模型)+Zero /Few Shot Prompt” 模式。
(2)从预训练模型走向通用人工智能AGI
-
影响一:让 LLM 适配人的新型交互接口
ChatGPT 的最大贡献在于:基本实现了理想 LLM 的接口层,让 LLM 适配人的习惯命令表达方式,而不是反过来让人去适配 LLM,绞尽脑汁地想出一个能 Work 的命令),而这增加了 LLM 的易用性和用户体验。是 InstructGPT/ChatGPT 首先意识到这个问题,并给出了很好的解决方案,这也是它最大的技术贡献。相对之前的 few shot prompting,它是一种更符合人类表达习惯的人和 LLM 进行交互的人机接口技术。
-
影响二:很多 NLP 子领域不再具备独立研究价值
就 NLP 领域而言,这次范式转换,意味着很多目前独立存在的 NLP 研究领域,将被纳入 LLM 的技术体系,进而不再独立存在,逐步消失
四、GPT发展历程及关键能力
1.生成式AI大事件
-
从2022年11月GPT3.5发布后,OpenAI就开始受到广大从业人员的关注,在2023.3月份达到了顶峰,成为了一种现象级的应用,基本上所有的人都会好奇这究竟是一个什么样的应用。
-
自从GPT4发布后,到目前为止国产大模型也如雨后春笋般持续发展,目前已经有80多个国产大模型发布
-
2023年5月,Claude发布,象征着大模型完全可以拥有更长的上下文。
-
2023年7月,llama2正式开源,这是一款可以约等于GPT3.5的模型,引起了业界对于大模型的开源与闭源的激烈讨论。
-
2023年10月,开源版的Baichuan2发布,它支持192K上下文,这也是第一次国产的开源大模型有了重大的突破
-
2023.11 GPT4-turbo发布,再一次引起了所有人的关注。
2.GPT发展历程
(1)ChatGPT关键在于“三大支撑”
-
一是“大模型”。全称是“大语言模型”(Large Language Model),指参数量庞大(目前规模达千亿级)、使用大规模语料库进行训练的自然语言处理模型,是ChatGPT的“灵魂”。
-
二是“大数据”。GPT-1使用了约7000本书籍训练语言模型。GPT-2收集了Reddit平台(美国第五大网站,功能类似于国内的百度贴吧)800多万个文档的40GB文本数据。GPT-3使用维基百科等众多资料库的高质量文本数据,数据量达到45TB,是GPT-2的1150倍。
-
三是“大算力”。以GPT-3为例,其参数量达1750亿,采用1万颗英伟达V100 GPU组成的高性能网络集群,单次训练用时14.8天,总算力消耗约为3640PF-days(假如每秒进行一千万亿次计算,需要3640天)。ChatGPT标志着里程碑式的技术进步。
(2)InstructGPT的Fine-tuning分三步:
-
第一步,人工收集高质量<Prompt, Response范例>的数据集,训练有监督的精调模型SFT
-
第二步,半自动地收集偏好数据集,训练Reward Model,用于后面RL精调时给Response打分。
-
第三步,以Reward Model作为奖励函数,以SFT为初始策略,跑PPO改善策略表现,得到强化版本的模型PPO-ptx,这个版本也就是所谓的InstructGPT。
3.GPT是怎么生成的
GPT 的训练流程可粗略分为四个阶段:预训练、监督式微调、奖励建模、强化学习。
(1)预训练阶段
预训练通常需要使用一个超大型的文本语料库,其中包含数十亿乃至数万亿 token。预训练阶段的训练任务很简单直接,就是根据前文预测下一个词。
(2)监督式微调阶段
上一阶段只会产生一个基础模型,基础模型不等于助理模型。基础模型不会回答用户提问,它们只会完成文档。所以如果你对基础模型说:「写一首关于面包和奶酪的诗」,你可能不会如愿 —— 它只会把你的要求看成一个文档,然后试图完成它。在监督式微调阶段,需要收集少量但高质量的数据集。OpenAI 的方法是以人工方式收集由 prompt 和理想响应构成的数据。这些数据需要不少,一般需要几万个。
然后,继续在这些数据上执行语言建模。算法不变,只是换了训练数据集:从大量低质量的互联网文档换成了少量高质量的问答式「prompt - 响应」数据。
这个训练过程完成后,就得到了一个 SFT 模型。部署这些模型就能得到助理,它们已经能完成一定程度的工作。
(3)RLHF 奖励建模阶段
已微调 LLM 为每个 prompt 生成 4-9 个响应。然后再让人基于自己的偏好对这些响应进行排名。尽管这个排名过程非常耗时,但相比于创建用于监督式微调的数据集,其劳动力密集程度可能要低一些。这是因为对响应进行排名多半比编写响应更简单。
五、Prompt工程
1.两大原则
(1)书写清晰具体的指令
应该通过提供尽可能清晰和具体的指令来表达您希望模型执行的操作。这将引导模型给出正确的输出,并减少你得到无关或不正确响应的可能。编写清晰的指令不意味着简短的指令,因为在许多情况下,更长的提示实际上更清晰且提供了更多上下文,这实际上可能导致更详细更相关的输出。
-
清晰,切忌复杂或歧义,如果有术语,应定义清楚。
-
具体,描述语言应尽量具体,不要抽象或模棱两可。
-
聚焦,问题避免太泛或开放。
-
简洁,避免不必要的描述。
①使用分隔符,帮助chatgpt更好地分辨指令和内容
可以使用任何明显的标点符号将特定的文本部分与提示的其余部分分开。这可以是任何可以使模型明确知道这是一个单独部分的标记。使用分隔符是一种可以避免提示注入的有用技术。提示注入是指如果用户将某些输入添加到提示中,则可能会向模型提供与您想要执行的操作相冲突的指令,从而使其遵循冲突的指令而不是执行您想要的操作。即,输入里面可能包含其他指令,会覆盖掉你的指令。对此,使用分隔符是一个不错的策略。
请使用一句话概括单引号内的文字 \
'''我们过了江,进了车站。我买票,他忙着照看行李。行李太多了,
得向脚夫⑾行些小费才可过去。他便又忙着和他们讲价钱。我那时真是聪明过分,
总觉他说话不大漂亮,非自己插嘴不可,但他终于讲定了价钱;就送我上车。
他给我拣定了靠车门的一张椅子;我将他给我做的紫毛大衣铺好座位。
他嘱我路上小心,夜里要警醒些,不要受凉。又嘱托茶房好好照应我。
我心里暗笑他的迂;他们只认得钱,托他们只是白托!
而且我这样大年纪的人,难道还不能料理自己么?我现在想想,我那时真是太聪明了。'''
②结构化的输出
让chatgpt提供结构化的输出,比如html,json。这样可以将返回结果读入字典等python数据类型
请推荐给我三本书,并用json的格式返回其书名,作者,概要
(2)给模型一些意见去思考
如果模型急于得出不正确的结论,应尝试重新构建查询,要求模型在提供最终答案前显示相关的推理链或一系列推理。另一种理解方式是,如果给模型一个时间太短或词数太少无法完成的复杂任务,它可能会猜测一个很可能不正确的答案。这同样会发生在人身上,如果要求某人在没有时间计算答案的情况下完成复杂的数学问题,他们也很可能会出错。在这些情况下,可以指示模型花更长时间思考问题,这意味着在任务上投入更多的计算资源。
①指定模型完成任务的步骤——思维链
②让模型自己想出问题的解法
2.In Context Learning
in context learning"(上下文学习)是指在特定上下文环境中学习的机器学习方法。它考虑到文本、语音、图像、视频等数据的上下文环境,以及数据之间的关系和上下文信息的影响。在这种方法中,学习算法会利用上下文信息来提高预测和分类的准确性和有效性。例如,在自然语言处理中,上下文学习可以帮助机器学习算法更好地理解一个句子中的词语含义和关系。在计算机视觉中,它可以帮助机器学习算法更好地识别图像中不同物体之间的关系.
-
Few shot(示例出现多个)):6+7=13,6+6=12,5+5=10,8+9=?
-
One shot(示例出现一个)): 5+5=10,8+9=?
-
Zero shot(示例没有出现)): 8+9=?
(1)零样本提示(Zero-shot Prompting)
现今的大型语言模型,经过大量数据的训练并进行指令调整,可以进行零样本(Zero-shot)任务。prompt中是包含instruction,不包含任何示例的场景
Prompt:
将文本分为中性、否定或肯定三类。
文本:我觉得假期还可以。
Completion:分类:中性
Prompt:
文本:我觉得他表现相当好
Completion:分类:肯定
Prompt:
文本:我觉得他表现不眨地
Completion:分类:否定
上述提示中我们没有向模型提供任何示例--这就是零样本能力在发挥作用。当零样本无法发挥作用时,建议在提示中提供演示或示例。下面我们将讨论称为“少样本提示”的方法。
(2)少量样本提示(Few-shot Prompting)
尽管大型语言模型已经展示了卓越的零样本能力,但在使用零样本设置时,它们在更复杂的任务上仍然存在局限性。为了改进这一点,我们使用了一种名为少量样本提示(few-shot prompting)的技术,以在上下文中提供演示来引导模型实现更好的性能。
Prompt:
巴黎是法国的首都,有艾菲尔铁塔、卢浮宫和香榭丽舍大道等著名景点。
纽约是美国的一座大城市,拥有自由女神像、时代广场和中央公园等著名景点。
东京是日本的首都,有天空树、浅草寺和新宿御苑等著名景点。
北京是?
Completion:北京是中国的首都,有故宫、长城和天坛等著名景点。
Prompt:
上海是?
Completion:上海是中国的一座城市,是中国经济、金融、
贸易和交通中心之一,有外滩、东方明珠和豫园等著名景点。
该模型仅通过提供一个示例(即 1-shot)就以某种方式学会了如何执行任务。对于更困难的任务,我们可以尝试增加演示(例如,3-shot、5-shot、10-shot 等)。根据Min等人(2022)的研究结果,以下是在进行小样本学习时关于演示/样例的几个优化提示:
-
“无论标签是否适用于个别输入,演示指定的标签空间和输入文本的分布都很重要。”
-
即使只是使用随机标签,您使用的格式也对性能起着关键作用,这比没有标签要好得多。
-
额外的结果显示,从真实标签分布中选择随机标签(而不是均匀分布)也有助于提高性能。
(3)零样本CoT(Zero-shot CoT)
它主要涉及在原始提示中添加“让我们逐步思考”。这个简单的提示在完成这项任务时非常有效。当您没有太多示例可用于提示时,这特别有用。
Prompt:
我去市场买了10个苹果。我给了邻居两个苹果,给了修理工两个。然后我又去买了5个苹果,吃了1个。我还剩几个苹果?
Completion:
你还剩下11个苹果。开始有10个苹果,给了邻居2个,给了修理工2个,还剩下6个。然后你又买了5个,一共有11个苹果。吃了一个后还剩下10个。
Prompt:
我去市场买了10个苹果。我给了邻居两个苹果,给了修理工两个。然后我又去买了5个苹果,吃了1个。我还剩几个苹果?
一步一步的思考
Completion:
开始时我有10个苹果。然后我给了邻居2个,现在我还有8个苹果。
我又给了修理工2个,现在我还有6个苹果。
接着我又买了5个苹果,现在我总共有11个苹果。最后我吃了1个苹果,所以现在我还剩10个苹果。
分为两个阶段,第一阶段在提问的问题上追加“Let’s think step by step”这句提示语,LLM会输出具体的推理过程;第二阶段,在第一阶段的问题后,拼接LLM输出的具体推理过程,并再追加Prompt=“Therefore, the answer (arabic numerals) is”,此时LLM会给出答案。
(4)Prompt Ensembling集成学习
Prompt ensembling是指将多个不同的提示(prompts)应用于同一个模型,从而提高模型的性能和鲁棒性。提示是一种用于指导模型生成预测的文本片段,通常是问题或任务描述。在Prompt ensembling中,不同的提示被组合在一起,以产生一个更强大和全面的模型。
Prompt ensembling在自然语言处理(NLP)任务中尤其受欢迎,例如文本分类、问答和语言生成等任务。在这些任务中,使用不同的提示可以帮助模型学习不同的语义和上下文信息,从而提高其性能和鲁棒性。在实践中,Prompt ensembling可以使用不同的提示组合策略,例如平均、加权或集成等方法。
假设我们有一个文本分类任务,需要将一些电影评论分为正面评价或负面评价。我们可以使用Prompt ensembling来提高模型的性能。
首先,我们可以创建不同的提示,例如:
-
"这部电影是一个令人兴奋的动作电影"
-
"这部电影的情节令人意外"
-
"这部电影的演员表演出色"
然后,我们可以使用这些提示来训练多个模型,每个模型都针对一个不同的提示进行训练。
在测试时,我们可以将这些模型的预测结果进行平均或加权,从而得到更准确的预测结果。
例如,假设我们有三个使用不同提示进行训练的模型,它们的预测结果如下:
-
模型1:正面评价概率为0.8
-
模型2:正面评价概率为0.7
-
模型3:正面评价概率为0.6
我们可以使用平均方法将这些预测结果组合起来,得到最终的预测结果为:
-
平均预测结果:正面评价概率为0.7
这样的Prompt ensembling方法可以提高模型的性能和鲁棒性,尤其是当使用多个不同的提示时,可以更全面地学习语义和上下文信息。
3.prompt提问框架——CRISPE Framework
-
CR:Capacity and Role(能力与角色)。你希望 ChatGPT 扮演怎样的角色。
-
I:Insight(洞察力),背景信息和上下文(坦率说来我觉得用 Context 更好)。
-
S:Statement(指令),你希望 ChatGPT 做什么。
-
P:Personality(个性),你希望 ChatGPT 以什么风格或方式回答你。
-
E:Experiment(尝试),要求 ChatGPT 为你提供多个答案。
(1)让AI扮演角色
你想让它扮演一个什么样的角色,它便站在这样的角色的立场思考。
-
我想让你扮演一个脱口秀喜剧演员...
-
我想让你扮演讲故事的角色...
-
我想让你扮演一个小说家...
-
我想让你充当书面作品的标题生成器...
至于说,ChatGPT能扮演什么,不能扮演什么,没有人知道,或许你能想到的它都能扮演,或许它只能扮演好一部分角色,但至少上面提供的角色,它都能很好的扮演,且已经有人分享过相关的prompt。
结论:无论写什么Prompt,开头第一句先描述一下我们想让ChatGPT充当什么角色。
(2)上下文和背景信息
描述上下文是为了让AI更加清晰地理解我们的意图,是代替多次互动效果的。
举例:...根据目标受众,您可以为讲故事环节选择特定的主题或主题,例如,如果是儿童,则可以谈论动物;如果是成年人,那么基于历史的故事可能会更好地吸引他们等等..
在这里:
-
如果是儿童,则可以..
-
如果成年人,那么..
这便是一种上下文环境的描述,它代表的是一种文字的正则表达式。
(3)明确指令
可以查到已经支持的任务有:文本分类、实体标注、信息抽取、翻译、生成、摘要提取、阅读理解、推理、问答、纠错、关键词提取、相似度计算。
这些单词在Prompt中都可以光明正大地出现,它们都有人使用过,ChatGPT都会理解得很好。
它有十大类基本能力:
-
文本生成: ChatGPT 可以生成各种格式的文本,例如写故事、写新闻文章或诗歌、写代码等。
-
自动摘要: ChatGPT 可以将一段很长的文本摘要成一个较短的版本。
-
自然语言理解 (NLU): ChatGPT 可以理解文本的含义,可用于情感分析、命名实体识别和文本分类等任务。
-
语言翻译: ChatGPT 可以针对语言翻译任务进行微调,将文本从一种语言翻译成另一种语言。
-
对话生成: ChatGPT 可以生成类似人类的对话,使其适用于聊天机器人和虚拟助手应用程序。
-
文本转语音: ChatGPT 可以针对文本转语音任务进行微调,将文本转换为口语。
-
图像字幕: ChatGPT 可以针对图像字幕任务进行微调,它可以为图像和视频生成字幕。
-
阅读理解: ChatGPT 可以针对阅读理解任务进行微调,它可以根据给定的文本回答问题。
-
问答: ChatGPT 可以根据给定的上下文或知识库回答问题。
-
文本补全: ChatGPT 可以根据给定的上下文或提示来完成给定的文本。
这十大项,及它们的子项,都是它可以执行的任务。
例如第一项能力中的:写故事、想故事、编故事,字词可以稍有差别,但都可能作为任务使用。
(4)明确要求
举例:我想让你充当书面作品的标题生成器。我会给你提供一篇文章的主题和关键词,你会生成五个吸引眼球的标题。请保持标题简洁,不超过 20 个字,并确保保持原意...
在这里,“请保持标题简洁,不超过 20 个字,并确保保持原”就是具体的,对生成目录的要求。
再举例:...你可以选择任何类型,如奇幻、浪漫、历史小说等,但你的目标是写出具有出色情节、引人入胜的人物和意想不到的高潮的作品...
在这里:
-
“可以选择任何类型,如奇幻、浪漫、历史小说等”这是Option标准
-
“写出具有出色情节、引人入胜的人物和意想不到的高潮”是对目标提出的3个明确的要求
(5)明确指定语言风格
举例:就如何使用 ChatGPT,创建更有效的内容,提供最讽刺、嘲讽的建议。
这里的“讽刺、嘲讽”便是语言风格,注意语言风格可以要求极致,例如使用“最”,但不能相互矛盾,例如在同一个prompt中,要求AI同时使用专业且诙谐的语言风格,虽然有时候它俩未必100%矛盾,但这种指定可能会让AI无视你指定的风格,因为它无法完成。
4.迭代
给出正确prompt是一个迭代过程,很难在一开始就给出正确的prompt,为了构建一个正确的prompt是一个迭代的过程。
-
给出清晰具体的prompt
-
分析为什么结果不是期望的输出
-
精炼你的想法和prompt
-
重复进行
六、LLM实践
1.LLM应用——Agent
(1)Agent基础
一个人如果想要在社会中生存,就必须学会适应环境,因此需要具有认知能力,并且能够感知、应对外界的变化。同样,智能代理的框架也由三个部分组成:
控制端(Brain)、
感知端(Perception)
行动端(Action)。
-
控制端:通常由 LLMs 构成,是智能代理的核心。它不仅可以存储记忆和知识,还承担着信息处理、决策等不可或缺的功能。它可以呈现推理和计划的过程,并很好地应对未知任务,反映出智能代理的泛化性和迁移性。
-
感知端:将智能代理的感知空间从纯文本拓展到包括文本、视觉和听觉等多模态领域,使代理能够更有效地从周围环境中获取与利用信息。
-
行动端:除了常规的文本输出,还赋予代理具身能力、使用工具的能力,使其能够更好地适应环境变化,通过反馈与环境交互,甚至能够塑造环境。
当人类询问是否会下雨时,感知端(Perception)将指令转换为 LLMs 可以理解的表示。然后控制端(Brain)开始根据当前天气和互联网上的天气预报进行推理和行动规划。最后,行动端(Action)做出响应并将雨伞递给人类。通过重复上述过程,智能代理可以不断获得反馈并与环境交互。
(2)Agent in Practice
①Single Agent
在任务导向的部署中,代理帮助人类用户处理日常基本任务。它们需要具备基本的指令理解、任务分解、与环境交互的能力。具体来说,根据现有的任务类型,代理的实际应用又可以分为模拟网络环境与模拟生活场景。
在创新导向的部署中,代理能够在前沿科学领域展现出自主探究的潜力。虽然来自专业领域的固有复杂性和训练数据的缺乏给智能代理的构建带来了阻碍,但目前已经有许多工作在化学、材料、计算机等领域取得了进展。
在生命周期导向的部署中,代理具备在一个开放世界中不断探索、学习和使用新技能,并长久生存的能力。
②Agent-agent
-
合作型互动
作为实际应用中部署最为广泛的类型,合作型的代理系统可以有效提高任务效率、共同改进决策。具体来说,根据合作形式的不同,作者们又将合作型互动细分为无序合作与有序合作。
当所有代理自由地表达自己的观点、看法,以一种没有顺序的方式进行合作时,称为无序合作。
当所有代理遵循一定的规则,例如以流水线的形式逐一发表自己的观点时,整个合作过程井然有序,称为有序合作。
-
对抗型互动
智能代理以一种针锋相对的方式进行互动。通过竞争、谈判、辩论的形式,代理抛弃原先可能错误的信念,对自己的行为或者推理过程进行有意义的反思,最终带来整个系统响应质量的提升。
③人机交互场景
指令-执行模式:人类作为指导者,给出指令、反馈意见;而代理作为执行者,依据指示逐步调整、优化。这种模式在教育、医疗、商业等领域得到了广泛的应用。
平等伙伴模式:有研究观察到代理能够在与人类的交流中表现出共情能力,或是以平等的身份参与到任务执行中。智能代理展现出在日常生活中的应用潜力,有望在未来融入人类社会。
2.LLM应用——RAG
当一个问题(Query)来的时候,系统会从知识库(Knowledge Base)中提取相关的上下文(Relevant Context),再将问题和上下文一并喂给 LLM,让 LLM 自行判断并回答该问题,生成响应(Response)。
①问题提炼
这个部分是可选的,之所以存在是因为有些问题是需要依赖于上下文的。因为用户问的新问题可能没办法让LLM理解这个用户的意图。
比如用户的新问题是“它能做什么”。LLM并不知道它指的是谁,需要结合之前的聊天历史,比如“通义千问是什么”来推理出用户需要求解答案的独立问题“通义千问能做什么”。LLM没法正确回答“它有什么用”这样的模糊问题,但是能正确回答“通义千问有什么用”这样的独立问题。如果你的问题本身就是独立的,则不需要这个部分。
得到独立问题后,我们可以基于这个独立问题,来求取这个独立问题的embedding。然后去向量数据库中搜索最相似的向量,找到最相关的内容。这个行为在Part2 Retrieval Plugin的功能中。
②向量检索
独立问题求取embedding这个功能会在text2vec模型中进行。在获得embedding之后就可以通过这个embedding来搜索已经事先存储在向量数据库中的数据了。比如我们已经在ADB-PG中存储了下面内容。我们就可以通过求取的向量来获得最相近的内容或者知识,比如第一条和第三条。通义千问是...,通义千问可以帮助我们xxx。
③推理求解
在获得最相关的知识之后,我们就可以就可以让LLM基于最相关的知识和独立问题来进行求解推理,得到最终的答案了。这里就是结合“通义千问是...”,“通义千问可以帮助我们xxx”等等最有效的信息来回答“通义千问有什么用”这个问题了。最终让GPT的推理求解大致是这样:
3.构建高效 AI 应用的指南
AI生成内容不能保证准确率100%,不适用于不允许出现任何错误的系统,如果想要用在这样的系统需要添加很多的验证
将问题拆分成两个步骤
-
判断应该使⽤哪⼀个外部专家
-
作为⼀个LLM,提取外部专家需要的参数
-
将结果交给LLM,请LLM组织语⾔回答
①引入 Agent 和 Tool
LLM 具备一定的交互能力,但不具备调度和执行的能力,而引入 Agent 的目的是调度,引入 Tool 的目的是执行,两者结合起来就给 LLM 接上了调度执行的能力。
②引入内部知识库 / 语料库
LLM 的推理能力很强大,但其知识更新的成本比较高。对 LLM 进行知识更新的方式有两种,一种是训练,包括重新训练和继续训练,另一种是微调。这两种方式的成本较高、周期较长,同时微调的结果也未必符合预期。业内目前也有一些比较 hack 的方式去弥补这方面的缺陷,比如通过 Prompt 把最新的知识告诉 LLM,但 LLM 所接受 Prompt 的 token 数是有限制的,因此这种方式也存在很大的上限瓶颈。
而知识库更新成本低、周期短,可以通过在知识库里获取与问题关联的关键语料信息,然后再把这些关键语料信息交给 LLM,再利用 LLM 强大的推理能力进行推理,最终获取符合预期的结果。因此引入知识库来弥补 LLM 知识更新的缺陷是一个不错的折中方案。
③广义的输入预处理主要包含哪些处理
结合我过去的实践主要分了几种,可能不全,仅供参考:
-
输入补全。用户的输入可能不全,需要联想补齐;
-
输入纠错。用户的输入可能存在错误的字符或者语法,需要理解语义,并进行词法和语法纠正;
-
输入转化和组装。用户的输入可能不是文字,可能是一系列动作、事件,需要进行转化和组装;
-
输入提炼。用户的输入可能比较泛,需要加以提炼,概括出重要关键的信息。这样一方面可避免产生干扰,另一方面也可规避 token 数限制。
-
输入拆解。用户的输入不会存在一些详细的调度执行计划,需要理解输入语义,进行任务拆解,从而方便后续的调度执行。
④广义的输出后处理主要包含哪些处理?
这个问题我同样也不止一次的想过,结合我过去的实践主要分了几种,可能不全,仅供参考:
-
输出纠错。输出不稳定是 LLM 常见的问题,需要纠错
-
输出转化。LLM 是文生文模型,但 AI 智能体还需要能够产生图片、音频、视频、行为动作等。因此需要对输出进行转化,能够突破文生文的限制。
参考
1.openAI发布会
2.B站