关于如何设计AI的方法变革——大模型的AI设计方法
大模型推动人工智能应用的设计方式产生了根本性的变革。无论你是AI资深设计专家还是外行人员,这篇文章都可以启发你对AI设计的思考,带你探索过去现在和未来的AI该如何进行设计。
- 如果你已经是一个AI设计人员,熟知基本的AI设计方法,可以直接跳到第三部分“三、大模型的AI设计方式变化”然后再与我探讨想法。
- 如果你只对大模型出现后的应用和前景感兴趣,不关心大模型的原理以及基于原理,也不想成为大模型或者行业应用的设计人员,可以直接跳到“理解大模型的应用与方向”和“建构大模型的生态”部分。
- 如果你不是一个AI设计人员,可以先读第一部分“一、大模型出现以前AI设计方式”了解下过去的AI设计,相信大部分设计方式都可以在平时工作找到对应。
本文定位是一篇AI从业者分享一些大模型对个人设计理念带来的冲击,对于大模型的技术发展更多给出一些二次思考内容,原始的技术文献不会直接搬运或者详细解释,不过谈及到的每个部分的技术都附带了文献来源,可供自行翻阅。
写这篇文章的动机之一是关于大模型的社群讨论偏于低质,而且从大模型出现到现在,有意义的文章大多都围绕模型本身的技术研究和工程复现进行,很少有人从非纯粹的技术层面探讨一些大模型对于设计理念和行业相关方巨变的思考,因此希望可以通过分享自己的思考吸引更多愿意深度思考这件长期机会的人。
这些对于目前的从业人士门槛、行业发展、应用场景都具有很大的影响。作为一个一直在AI行业中的参与者,我把自己更多从非技术研究层面的思考和实践经验记录下来,汇总成关于大模型时代AI的设计和看待问题的新方式。
本文视角其实更多的是站在AI设计的视角上探讨问题,关于商业模式、技术原理等等会简短讨论,本文更多的探讨基于当下的研究产生的一些思考,对于研究信息仅会提供一些引用链接,核心在于探讨下AI设计的方式以及未来展望的看法。本文计划集中分享以下几个问题的思考:
- 过去的AI设计是怎么做的?
- 关于收益估算、任务定义、级联模式、误差评估等等专业设计怎么做?
- 大模型对于设计方式产生了什么冲击?
- 大模型的哪些能力导致了这些冲击?
- 目前AI设计的门槛产生了什么变化?
- 消噪与序列预测到底带来了哪些可以发散想像的方向?
- 大模型本身的限制有哪些应用没有办法完成?
如果你是资深的AI行业设计人员,对于这些问题已经有了答案,希望你可以直接拉到文章最后,联系到我和我探讨下大模型对于你的设计方式产生了什么样的冲击和变化。如果你是非从业人员,看完我的思考之后,不知道你是不是觉得自己也理解了AI产品该如何设计,也可以开始做AI的设计工作了。
一、大模型出现以前AI产品设计方式
在大模型出现以前,结合过去的实践经验,我将AI产品的设计总结为四个阶段:目标定义阶段,收益估算阶段,设计阶段,迭代阶段,下面结合一些实践的案例分享一些个人思考。
1. 目标定义阶段
在讨论AI产品的目标定义时,实际上与其他类型产品的目标定义相差并不太大,因为AI产品本质上还是以一种更高效的方式在解决实际业务问题,因此这个方面就不重点谈到,会在下面环节的案例里穿插一些。
例如,针对面向消费者(To C)的产品,关注增长曲线是否达到自然传播率、产品是否跨越了技术采用生命周期等等。
而针对面向企业(To B)的产品,需要关注利益相关方的市场收益、客户认知,还有特殊的奢侈品和礼品类产品逻辑。
唯一的差异在于,过去AI的产品设计需要额外关注【技术可达性】,另一方面因为客户基本上完全不懂AI,不能指望客户提供关于他所在行业的AI设计思路,而是需要想办法先把自己变成客户行业的专家,告诉客户需要什么,就像拿着锤子找钉子,这一点和一般的设计有很大不同。
对于商业方面的目标设定问题,许多业界大咖已经在商业分析、OKR、增长等领域有深刻的时间和研讨,就不班门弄斧了,这里强烈推荐大家直接关注刘润老师,作为刘润老师的五年死忠粉,他对于商业思想和方法,尤其是早期的很多内容总能给我带来极大的启发和帮助。
2. 收益估算阶段
收益估算是在对于相关行业或者目标场景具有一定了解之后,决定是否要投入这块市场或需求场景,以及以什么样的投入力度进入,资深的设计者在估算收益之后,基本就已经确定好大致的设计方案了。一般来讲,收益估算会分为三个部分。
1)目标大盘估算
比如目标大盘的覆盖率、用户量、活跃率、交互量等信息,一般来说需要来源于市场研究与洞察,如果是C端会来源于用研或者数据分析(一般是session分析)。
比如我需要构建一个数据标注平台,我需要决策标注平台是要自建还是采购三方,那其实我就大概需要对这个市场的大盘做一个分析,评估其中的关键资源和关键利益相关方我是否能够撬动?多大成本能否撬动?以来决策这件事情是否值得做。例如我可以做如下分析:
1.标注任务类似滴滴打车,是典型的供给者(标注员)、平台、消费者(需求企业)的三方市场。
2.三方市场要做起来,评估需要先撬动哪一端,评估我的资源优势能够撬动标注员,还是撬动企业B端客户渠道,能否更加高效的获取客户,比如我具有很强的个人品牌、企业品牌、第三方背书等都可以显著降低获客或者渠道成本。
3.若要建设标注自研,一定是标注员的人均标注成本能够显著低于采购(对内部工具而言),或者能够以极低成本获取外部客户(对于做外部市场而言),如果我两者优势均不具备,或者生产成本显著高于外采,那就应该放弃自建。
4.当然如果是出于企业信息安全,或者绝密信息保护的需要,那就完全是另一种逻辑,完全不可以用投产比来衡量。
2)影响面估算
影响面决定打算开始做这件事的上限,就算技术持续发展,理想情况可以100%的解决问题,影响面也就是可能得最大收益了,当然随着要求效果的持续提升,需要的数据量和成本都会指数上升,而每次优化带来的收益会递减,经常很多AI产品做到差不多就不会优化了。
① 一般如果有线上数据的话,影响面估算主要来源于数据观察和现象抽象的总结,就是采用归纳法来分析,例如线上搜索数据的多样性不足,对线上日志分析后发现问题的占比可能在5%,或者线上用户有一些潜在情感交流诉求的比例在15%,这些都可以通过session分析的方式得到。
一般这种方式,TO B产品的数据分布相对比较固定,如果是TO C产品,会有两种典型问题:
1.新用户都有【能力边界试探现象】,会出现大量“无法理解”“闲聊”类的数据,而一般7天后则会收敛到设备可满足的一些交互领域,之后交互比例也会相对固定。试探类交互有可能并不是用户的真实需求。
2.因为TO C的AI类产品一般都很难像触控产品一样,把自己的能力边界直接在界面展示给用户看,因此产品能力会影响用户行为。因为新用户阶段用户除了试探外,更多会尝试自己未来希望产品帮自己解决的问题,而当产品无法解决问题的时候,慢慢用户就不再会发起这些需求,但是这些往往是设计者希望持续扩展的产品能力,所以很多新需求的挖掘往往要从新用户数据来。这个也是7天左右新用户需求收敛的原因。
② 如果是缺乏一些线上交互数据,则和一般产品设计相同,需要采用市场调研或者用户研究的方式开展调研,辅以逻辑推理和统计学的后向归纳,得到一些可靠结论,比如最近招募用研,我就很喜欢问如何验证数据可靠性以及推理相关性的问题。
3)收益估算
一般采用逻辑演绎方式估计收益,在过去,和算法合作经验丰富,经常阅读一些相关论文的资深AI产品,可以做到估算的相对较准(当然实际还取决于算法人员水准),这一点尤其在TO B业务的客户交流判断方案和可行性时尤其重要,也是区分资深和非资深的因素。诸如有监督的文本分类任务可以做到多少,无监督的文本聚类任务SOTA效果是多少,那些任务技术可达,哪些任务技术不可达。
实际业务里,收益的估算一般会更复杂一些,因为实际系统一般不会是一个任务就可以完成,甚至在大模型以前,很多因为单任务技术不可达,需要把一个任务拆解为多个任务组合才能实现,这样的收益估算就更加困难一些,和实际的偏差也会更大一些。
3. 设计阶段
AI产品的设计一般也是分几个阶段进行,我把这个总结成六步设计,包括【问题定义】【拆解问题要素】【制定路径/蓝图】【定义子任务】【定义子任务流程】【可行性推演】。以下主要结合两年前的一个实践案例,大致介绍下设计阶段流程,因脱敏需要,案例的前置估算和部分设计细节会被我省略,省略部分会尽量插入一些其他案例。
对于AI设计来说,逻辑基本素养尤其重要,在对于现实问题的抽象过程中,经常发现一些隐含的逻辑,而把这些逻辑全部抽象出来变成机器任务就是设计者的关键人物。经常碰到的问题有:
- 存在隐含的前提:比如某两个维度之间存在因果关系或者相关关系,比如趋势永远整体向上等等。这些很多都会被当成人工先验知识,在模型里设置,而不是让模型自己去学。或者比如我说“去把垃圾扔一下”,隐含的前提假设是“你知道家里垃圾桶在哪”&“你知道丢垃圾的垃圾车在哪”
- 假设需要明确定义:比如我们假设数据是离散的还是连续的,数据之间是否具有关联性。以丢垃圾的例子来说,可能是我假设“垃圾中没有什么超出你知识或者力量范围的需要处理的物品”
这一部分用一个复杂度相对较低的例子分享下一些思考。在两年前,业务部的老业务遭遇天花板,需要挖掘一些潜在的新业务出来。结合当时业务的交互量越来越大,提了一个目标是“从交互中发掘潜在需求”,对这个目标进行一个逻辑三段论的分析,会发现其实它其实隐含了一些没有被明确定义的前提,以下问题:
- 需要定义什么叫“潜在需求”?
- 交互中包含什么可以利用的信息?
- 如何进行发掘的流程设计?
介绍下AI设计中的我理解的“任务”概念,机器学习和人工智能的专业书籍上有很多关于这块的介绍,我主要从非算法人员视角,结合过去经验说下我的理解:
1.怎么理解任务:给AI明确边界和达成量化条件的课题工作,最需要关注的两个点也就是“明确的边界”和“明确的可量化完成状态”;
2.怎么理解子问题:根据具体的任务目标,拆解出需要解决的子问题,并且制定出大问题的解决路径,子任务可以不完全贴合机器视角,从逻辑推衍上看如何实现目标;
3.怎么理解子任务:子任务可以说是从AI的视角,由子问题对应到的具体算法任务,每一个任务需要用一套算法或者组合算法来解决,关于这一块,在后面的步骤中会详细谈一下;
4.一般任务的目标如何定义,由于目标是结合具体场景定义而来的,对于每个场景的深刻洞察我觉得才是设计者的核心能力,是一种把实际问题抽象化的能力,定义系统要解决的场景核心是什么设计目标,一般来说会有一些常见参考,例如精准,召回,多样,排序,相关等等,目标并不等同于指标,诸如F1、AUC等单纯评估模型性能的指标就不能算做设计目标,同样的更多的场景其实需要根据场景,设计独立的评价业务指标,过去基本每项任务其实都有根据业务目的设计的复合指标来衡量目的是否达到,知名的BLEU、ROUGE等也属于具体业务指标。
1)问题定义
① 问题是什么
本质上是重新审视问题,定义要解决的问题本质是什么,因为AI行业的客户需求是模糊的,客户无法定义到问题,所以需要把一个抽象的想法转变为定性或者定量的具象问题。
同时需要对需求场景进行分析,不同业务场景需要的目标差别很大,需要设计人员首先确定对于业务场景来说,最重要的是什么。这里面其实更多的考验的是设计人员对于文化、社会、行为、人类学、生物学、脑科学甚至心理学的理解(我不是很喜欢单纯靠心理学得出结论的方式)。
比如三年前我们重新考虑语音搜索场景的搜索引擎问题的时候,就发现这个场景和全文检索(百度搜索)有很大不同,对于精准的要求尤其高,但是召回数量上反而要求要少,因为大家都希望一句话直达播放。
另一个例子是因为扩散模型的火爆,有些人用来设计一些擦边福利图片,然后就对于这种应用场景进行了一些思考。
对于这种场景来说,其实多样性就是一个最重要的指标,提供的一定不能是单一女人,风格一致的女人或者真实世界存在的女人,因为从生物进化视角来说,幻想“性”和真实“性”一定要有差异,幻想不可以是真实生活可接触的一些特性,这一点花花公司老板海夫纳尤其懂得,《花花公子》上的女人的着装、行为、性格在现实生活不可能找到,这也就是海夫纳的生意经。
第三个想到的例子,是去年一直在做虚拟人的东西,本质上其实是在探索情感这种非刚需的价值。关于这一点,主要是参考了脑科学和心理学的交叉,包括心智系统、镜像神经元、边缘系统、海马体的构成,以及据此总结的共情与共感两类对外情感基础的形成。
这里因为我们业务目标希望虚拟人和用户之间建立情感信任,因此选择共情路线,这就代表整个会话系统设计目标是引起情感共鸣,和正常人人机会话、人和人的交流都显著不同。例如用户表达偏向情感类事件的时候,一般情况下会话情感设定上,都需要对用户表达赞同和理解,不论谈论内容如何。
关于这一部分,我的下一篇文章计划是就打算详细分享一下虚拟人设计的实践,调研和运用关于人的感性认知如何建立,文学小说撰写方法论及动画设计方法论等多学科领域知识,同时在交互上借鉴了【艾迪芬奇的记忆】,对于这款游戏的研究刷新了我对于人机交互设计的理解。
关于问题如何定义强烈建议可以看一下《你的灯亮着吗》,里面有大量启发性的案例,比如关于错误定义问题导致成本大量浪费,或者正确定义问题使得复杂问题一夜之间解决的例子。举个例子,书里有提到“解决电梯拥堵问题的一种方案,在每个上下班路上装上镜子,让过路人都停下来整理妆容,就可以很好的解决电梯拥堵问题。”
② 目标场景最关注什么
第二个是需要分析对于目标场景来说,最关注的是哪个维度。下图是一个抽象的曲线来描述这个问题,由于准召属于一堆跷跷板指标,在模型性能等同时候,往往是在根据业务场景在选择曲线上滑动选择一端的点作为能力输出。
这首先需要定义问题所处的用户场景中,是“精准”更关键还是“召回”更加关键。虽然对于模型来说,可以用AUC来衡量模型整体的性能情况的,但是在相同性能情况下,可以根据目标场景调整召回和精准的倾向性。在某些情况下,如果所在场景里,某个维度的重要性远超其他维度,即使模型整体性能下降了,最关键的维度显著提升,也可能是一次有意义的优化。
2)要素拆解
主要是拆分问题得到解决需要的一些关键要素,哪些是解决问题必备的关键要素,哪些是对于问题有增益但是不关键的要素,这样可以对后续的子任务拆分以及每个子任务的资源投入力度有一定的预期。熟悉TO C产品设计的应该都熟悉TO C的业务蓝图绘制方式,目的都是一样的,找到需要重资源投入解决的关键问题。
结合两年前“从交互中发掘潜在需求”的案例,首先对于“潜在需求”,我找了一些关键特性来描述这个概念,这些其实就可以算作这件事情拆分出来的要素。基于要素对应的问题,即可以找到系统设计的子任务,简单的子问题对应一般对应到一个子任务,这里需要保证的是拆分出的要素和对应的子任务是机器可以理解的。
对于这个案例来说,核心就是如何看待“潜在需求”,我们可以想到一些要素来尝试描述下理想中的潜在需求:
- 目前没有被满足:目的挖掘新的领域,而不是单纯的挖掘交互失败的case,毕竟挖掘已知需求或者已知需求的新表达范式并不是目标。
- 用户的需求是普遍的:毕竟是商业公司,肯定是希望优先做投入产出比最高的事。
- 未来有增长潜力:同样的,商业公司考虑持续收益,但是这件事可以推理出如果我要预测一两年后需求发展情况,做一个长周期时序预测,必然不确定性极高,完全不具备可商业性,这种问题就应当交给人解决。
从上面的三个要素,可以发现首先机器独立一定无法完成任务,这个任务一定是人机耦合的。其次前两个要素都有共性问题,就是AI还是无法直接完成,因为找不到这些要素和问题的边界和明确的量化完成状态,我就以“用户需求普遍性”要素为例,做一下要素拆解。
因为逻辑上来说我没法一步得到投产比这种复合结果,我可以先计算收益,收益这个概念其实分析下,也会发现其实是由【影响面】和【转化率】组成的复合指标,转化率这件事我认为机器是不可达的,也需要人工判断,那就只能进行【影响面】的挖掘和预测。因此到这里我们其实已经可以修正下我们的第一步的目标了。
目前来看,我们的目标实际上是设计一个“新需求领域的影响面挖掘系统”+“一套可视化后台用于人工结合市场知识判断新领域预期转化率”。
应该注意两点:
1.熟悉概率、统计或者信息论的都了解,实际上每一次拆分,或者用组合方式解决问题,都再次引入了误差,代表系统整体效率的下降,所以应当尽可能端到端的输入输出直接解决问题,避免过多的问题和任务分解设计;
2.对于很多问题实际上机器完全不可达,不可达原因可能是完全无法收集到数据、任务完全无法定义或者当前技术效果无法商用,这个时候经典的做法就是把问题交还给用户,采用人机耦合方式解决问题,这个时候系统设计的目标也应该从【直接解决问题】改变为【辅助提高人类的问题解决效率】,其实很多产品都可以看到这类影子,比如经典的“帮助中心”或者“客服中心”。
实际上到这一步,大致的可达路径其实心里已经大致有数了。
3)路径制定
以“从交互中发掘潜在需求”这个例子分享下我的一些思考,在最开始的拆解中,我分解了三个初始问题:
- 定义什么叫“潜在需求”?
- 交互中包含什么可以利用的信息?
- 如何进行发掘的流程设计?
在前面我做了第一个问题的分析,下面两个问题因为涉密用户和业务信息了,我就简要阐述下:
① 交互中包含的可以利用的信息
实际上这个是经典的信息论原理的利用,一般应用到的会包括以下两点,同样的我以非算法的视角阐述下我的理解:
A. 信息的输入一定要大于输出,存在冗余才能通过算法压缩输出需要的信息,并且还原信息。
通俗点,比如模型完全没有学习过小学数学,就不可能可以解决小学数学题。
像GPT这种大模型可以让你输入很短的几句话,就帮你写出论文,原因在于GPT本质上是一个语言模型,是语言模型训练过程输入压缩了相关的知识信息,因此才可以在很少输入的情况下,让语言模型补足需要的输出。其实从GPT计算小学内容经常出错也可以看出这个原理,因为这类信息不在GPT的训练数据中。
另一个直观的理解方式是,给定1的输入就最多只能有1的输出,不可能产生1.1,实际上AI需要冗余信息,才可以保证压缩传递后能够输出一样的结果,即10的输入产生1的输出,因为处理就一定会损失一些东西,有冗余才可以容忍更多处理空间。
B. 引入解决问题需要的更多维度,尤其是正交维度的信息,就可以显著提升模型效果。
其实这也是最常用的大幅优化效果的方式,例如在语音类的AI设计中,【用户输入的语音音频】和【用户的语言表达】就是两个不重叠的正交维度,即使一些纯粹的语音AI能力,例如声纹识别、语音合成,引入语言的维度也可以大幅提升效果,因此寻找需要解决场景的更多相关正交维度,就是一种最常见的优化方式。
当然信息论的原理有很多条,只是在这件事上,我主要应用了以上两条。因为AI的基础是信息论,即使是在大模型时代,信息论的基本原理就像物理学基本法则,属于目前基于统计的AI无法逾越的基本法则。
对于语音交互来说,一般寻找到的正交可利用信息维度类别有用户音频、用户文本、用户操作、交互周围环境、操作发生时间等等方面进行寻找,这个其实很简单我就省略了。
② 如何进行发掘的流程设计
对于这件事,其实本质上是检验逻辑链合理性和前提假设成立可能性,做过基本的逻辑学训练的人都可以做到,实际这件事我也是指导一个校招生就让他完成了,大致可以这么思考这件事:
A. 首先通过定义一些交互失败的特征,一般都是通过定义【显性正反馈】【显性负反馈】【隐性正反馈】【隐性负反馈】来实现交互失败的case判断,敏感原因我省略具体特征。但是其实这样无法区别几类问题:
- 效果有问题:因为算法效果问题、或者用户自身问题导致交互失败;
- 已有需求新的表达范式:例如【影视】新增“制片商说法方式”;
- 新领域需求:比如奥运会来了,我们需要重新定义一个奥运会领域。
对于这种边界很模糊的分类问题,AI基本无能为力,因此思路上只能并行构造两套系统,一套挖掘“效果问题”的case,一套挖掘“新需求/新范式”的case,一套设计上侧重利用已有知识挖掘关联性,一套侧重新需求发现。两套系统一定会有重叠,但是配合也可以解决问题。
一种典型的交互失败案例
B. 要实施挖掘,可以想到的逻辑链及匹配的前提假设有:
a. 假设线上用户的交互说法,同类的需求具备一些明显的共性,不同类的具有显著差异。
- a.i. 那可以直接尝试先进行无监督聚类,将数据划分成一堆类别,即可拿到比如,线上100w数据,有几类需求(比如天气1w,股票2w),当然没有先验知识注入的情况下我只能得到【category1】【category2】【category3】
- a.ii. 接下来第二步处理如何知道【category1】【category2】【category3】,分别是什么,可以想到最简单的方式是,假设我可以先给系统注入知识,告诉它什么样的数据叫“天气”那不就可以完成任务
需求挖掘流程的简单想法
b. 这种流程下,接下来的子任务定义就很简单,“聚类+分类”就可以实现,但是这中逻辑链存在明显的问题:
问题1:这个流程里无监督聚类的准确度是最重要的,因为后续的分类环节是基于已有聚类流程开展的,逻辑上第一个环节的效果就尤其重要,因为如果第一个环节效果只有50%,那基本后面就和抛硬币瞎猜一样了。
然而实际上,调研了下业界的无监督聚类SOTA,确实低的吓人,但是可以看到在加入一些知识做半监督之后,效果提升明显,但是与此同时却丧失了发现训练外的新需求的能力,这个对于我们业务场景来说是不可接受的。
Discovering New Intents with Deep Aligned Clustering(https://arxiv.org/abs/2012.08987)
问题2:假设我真的有这样一份结构化的知识,那本质上我的任务还没开始其实已经完成了,因为我既然已经都可以知道什么数据是什么需求了,直接去匹配就可以了,没必要做一个挖掘系统了,这是一个典型的先有鸡还是先有蛋的问题。
c. 所以在我们没有一个完善的结构化知识,并且无监督聚类效果肯定无法商用的前提下,要怎么来做这件事呢?这里细节就不阐述了,以下是当初思考的某几个想法:
- 思路1:我拿不到精准的结构化知识,那么我是否可以拿到一些相对粗的知识呢?比如维基百科、SNS社区、各种门户网站都有很好的粗粒度非结构化或者半结构化知识;
- 思路2:像Google、Baidu这类搜索引擎,他们构造原理上需要爬虫爬取全世界的网页,并且进行相关性检索,因此我们可以假设一个新query的相关实体或者query本身,搜索引擎可以提供高相关度的网页,那我们就可以用搜索接口的Top N结果去挖掘一些潜在粗粒度知识;
- 思路3:直接拿到大量数据聚类处理不可行的话,我们是否借鉴“新query发现”的思路,从单条数据切入,先找到单条的新需求数据,然后再推广找到类似新需求范式的影响面,但是其实这样设计会有一个问题,就是以【新范式】代替了【新需求】,范式定义就很重要,比如引入语义、语法等等就比单纯的文本近似靠谱得多,但是这样实际上挖掘到的需求影响面会比实际小;
- 思路4:技术不可达的话,通过人机耦合来完成任务,比如构造一个挖掘平台,每天把挖掘到的同一类的新大类需求抛到上面,由人工去标记这是什么需求。这种思路的话就需要内部拉通一个“需求闭环团队”,要求大家每天都上平台做需求分析。
这里每种思路的后续设计思考我就省略了,简单说做一些可行性的推衍之后,各种思路结合做了第一版的简单路径设计,细节诸如粗粒度知识如何获取之类的就省略了:
直接处理全部数据聚类效果不可达,逆向思维,从单条数据开始找单条数据的近似类
如果目前想不到什么假设,或者对于场景没有什么了解,则需要先补充自己对于这块的了解,一般来说是从现网交互数据,或者线下用研中获取一些信息。
4)子任务定义
核心是把之前拆解的子问题和路径,转化成算法上的AI子任务,子任务定义从技术上来说可以说是决定整个系统效果上限的动作,定义错了子任务后面的算法结构再怎么优化,再怎么加高质量数据,效果也很难上得去。建议和算法负责人讨论完成,需要资深算法人员的深度参与,因为从这里开始已经要开始规划技术路线了,甚至我其实觉得算法才是起到主导作用。这部分我只是从非算法的视角结合案例谈一点粗浅理解。
从大类来说,AI可以分为两个大类任务【判别】和【生成】,其实这也分别标识了两条AI发展路线。除此以外AI我个人认为,主要需要了解的通用AI子任务有以下几类:
- 分类(Classification):将数据划分到预先定义好的类别中。
- 聚类(Clustering):根据相似性对数据进行分组。
- 回归(Regression):预测一个连续值变量。
- 排序(Ranking):对项目按照相关性或优先级进行排序。
- 检索(Retrieval):从大量数据中查找与查询相关的信息。
- 关联规则挖掘(Association Rule Mining):发现变量之间的关联关系。
- 时序分析(Time Series Analysis):预测基于时间序列数据的未来值或趋势。
- 异常检测(Anomaly Detection):识别数据中的异常或离群值。
其他的一些子任务很多是算法中间过程,例如超参优化、Embedding等等,这些我觉得非算法了解大致用途即可。或者是一些具体业务场景可能用到的,例如自然语言处理中的NER、句法分析、指代消解等等,这些根据业务场景需要补充对应知识。
这个方便理解重要性可以举一个四年前的案例。当时的背景是我们发现全文检索方案在语音场景的搜索中效果很一般,需要重新设计一个语音场景的搜索引擎,其中有一个子问题,当初我想首先必须了解用户表达的资源的结构化知识是什么样子的,例如《战狼》的主演是谁、出品公司是啥、角色哪些讨喜、情节是啥、舆论评价如何等等。这样我可以有更多维度的输入,最终的输出设计空间就很大。
针对这件事,我们觉得需要一个丰富的影视知识图谱,然后我们想到以下几个点:
1.比如豆瓣、猫眼、时光网这种三方网站,其实有大量的线上线下影视结构数据、影评数据等等,甚至微博、小红书、Twitter等等有相关舆论讨论;
2.比如腾讯、优酷、爱奇艺、Netflix、Hulu、HBO等等网站,每家有自己版权的影视,其中也含有不少独家影视知识信息;
3.当时和算法负责人合计把多个来源整合到一起,就可以得到一份最全的影视知识图谱,比如我们有豆瓣的《小猪佩奇》和HBO的《小猪佩奇》,把两边字段合并就可以得到更全的《小猪佩奇》知识。
4.然后合并这一步,我们想当然的认为,这是一个分类任务,因为我只要判断豆瓣的《小猪佩奇》和HBO的《小猪佩奇》是不是一个东西,是就合并到一起就可以了。
再把其他的子问题思考加入,到这里至少当初我们觉得逻辑上没有任何问题,结果做出来我们发现不管怎么优化模型结构和数据,效果都做不上去,甚至神经网络的效果和用来做demo对比的传统机器学习的效果基本一致。后来复盘我们才发现子任务定义错了,这个场景实际上是一个排序任务,因为《小猪佩奇》各个来源可能有上百部,以一个来源为基础逐一对比增加信息,实际上模型看不到其他来源的信息,如果是排序任务,模型就可以一次性输入全部信息比对。
子任务定义后需要注意以下几点:
- 子任务是否符合需求场景:即子任务定义是否正确。
- 子任务是否具备可行性:对于计算机来说不可计算任务,比如无法通过图灵机测试的;或者时间或者成本过高的任务,例如参数训练需要30台超级计算机计算3年(当然看公司经济实力),这些都可以认为不具备可行性。
- 子任务效果上是否ok:可以先调研下业界的子任务Sota,效果无法商用的也没有意义。
这里还是用上面的影视知识图谱举个例子,当时我们引入了影视海报作为额外正交维度,提升合并效果,这件事也犯过一个小的定义错误,最开始想当然认为比对图像相似度即可,后来发现实际任务要复杂得多,只是这次问题在设计阶段就纠正了。
当然除了调整子任务定义,上述问题还可以通过清洗数据解决,训练数据中的噪音对于AI来说会严重影响效果,即使是语音识别中的噪音环境中的识别,更多也是单独对固定频率的噪音建模,过滤这些噪音信号,训练数据的高质量是保证AI效果的关键。对于子任务定义,案例涉密的分析过程我就省略了,这件事确实很看水平。
5)子任务流程
子任务定义完成之后,就需要设计一套流程将其组合成完整的解决方案,这里除了逻辑上怎么把子任务关联起来以外,经验上来说有两种常用到设计模式:
① 级联结构:一个子任务的输出会被下一个子任务所使用。
经常在一些【分类子任务+其他子任务】的模式中使用,例如如果是一个购物网站,我们可以先把用户分类成“购物狂人”、“刚需购买”、“优惠券狂人”、“奢侈品爱好者”等等类型,然后对每个类型的用户分别构建模型,由分类模型判定后,每种模型分别打分,输出结果后吧结果抛给对应的推荐模型给出推荐结果。
② 中立类:在分类任务中比较常用,比如分类任务中经常有一些不认识的数据,或者摇摆数据,就可以加入拒识模式或者定义一个摇摆类,就可以让分类效果大幅提升。
例如自然语言理解的意图分类里,就可以定义“影视、音乐、笑话、天气、拒识”几个类别,再比如要分析运动对于治疗颈椎病是否有效,就可以定义“有效、无效、中立”几个类别,比单纯定义“有效、无效”会好很多。
其他的则需要根据业务场景需要看如何设计,比如上文提到的“从交互中发掘潜在需求”的流程中,实际上就是一个持续运行的分类任务,同时维护一个待聚类池,满足一定条件设定就触发聚类。
当然实际算法要处理的设计问题要多的多,诸如检查点设置、数据Pipeline、重平衡等等,只是作为非算法人员,我认为主要以上是需要考虑的,其他的了解即可,相信你的算法负责人的专业性。
验收指标制定
实际上,一般AI产品或者能力都会有个验收阶段,例如观察混淆矩阵,AUC等离线验收模型效果,观察制定的业务指标在各种集合上的表现。这里主要是分享一些关于设计的思考,就不仔细谈这件事,但是根据应用场景特性制定业务的验收指标这件事很重要。这个指标和模型的性能评价指标无关,有些时候模型的性能指标不变甚至有所下降,但是业务关键指标提升了,对具体业务来说也是一次有益的优化。
关于业务关键指标制定,一般来说都不是精准度、召回率、多样性等等这种单一维度指标,一般都是复合指标,而且为了排除绝对数量的影响,一般都是比例型指标。关于验收另外重要的一点是,指标一定是分两类的:
- 在线评价指标:用于在系统做好之后进行验收的指标。可以理解为即使不懂内部逻辑的小白,也有一个直观方法评判结果如何。以人机会话举例的话,可以设计例如对话回复是否符合常识,人设是否凸显等等。
- 离线评价指标:用于在系统研发阶段评估系统质量的指标。可以理解为内部产研人员评估每个维度的效果是否达到预期,指导迭代的指标。以人机会话举例的话,可以设计例如QA相关度、情绪识别准确度、情绪应对策略是否合理、回复文本风格是否幽默等等。
假设为上述的“交互需求挖掘”制定业务指标,虽然中间有很多的子任务,但是我可以关注每条数据是否被正确分类了。因为这本质上是一个效率系统,而且我已知聚类的SOTA其实不高,但是这个误差我可以接受,我其实更关注尽量少的使用人工,例如我可以定义“保证每类需求95%类纯度基础上,被正确召回到类别里的数据占80%以上”,当然实际不是这个指标,只是随便举个例子。
6)可行性推演
主要是回头评估整个解决方案的问题,在检验子任务定义和流程设计之后,主要是需要预估下整个系统的误差和冗余大概有多少,以及评估应用场景是否可以接受这种级别的误差。
① 误差评估
对于误差评估来说,我认为设计人员应该在设计完之后,大致就对自己的整个解决方案的误差大致量级,或者说实现了原始目标的百分之多少有一个预估。
- 首先还是先分析需求场景的特性,不同场景对于误差的容忍度是不同的,这个其实很好理解,比如军工、安全等引用场景,误差容忍度就很低,比如很多99.74%的【3-sigma法则】甚至很多企业实施的【6-sigma准则】。
- 不同场景对于不同指标的误差容忍度也是不同的,这个也是为什么一般需要先定义目标是什么(精准,召回,多样,排序,相关),比如军工安全上,模型性能不变的情况下,可以牺牲召回来换得高精准度。
- 任务定义和初始目标之间就有Gap,但是为了把抽象目标变成可实施的,就会产生。
- 子问题拆解或者子任务定义过程中,因为某些子问题走不通,或者子任务不可达,导致需要做一些逻辑降级,比如解决其中的一部分,让系统变得可以实现,这个天然也就引入误差。
- 定义设计流程中,如果不是以单一模型的方式设计的,而是采用的级联模式,那么级联本身就会带来误差,这个直观上其实也很好理解,第一级输出的误差会被带入到第二级。过往语音识别采用“声学模型+语言模型”两个正交维度分别建模的级联模式设计,现在更多都采用“端到端识别模型”统一建模了,也是优化掉这种误差。可以被当成特征或者维度设计到一个模型里的,就尽量不要用级联设计。
- 当然还有一种误差是模型本身可以做到多少效果,比如90%的效果,就这个模型这一环节有10%的误差需要考虑。然后每一级的误差和下一级的误差之间是叠加关系,而不是简单加法。
- 有些任务天然需要对误差保持高度敏感,例如生成式模型(例如大型语言模型GPT),相比于判别式模型,每一个环节的误差都会被传递到下一次预测中被放大,因为语言模型是逐字预测的,起初可能只是小数点后几位的微小误差,在最后会被放大到30%甚至50%的巨大误差,像这类任务需要对误差高度敏感。
3年前当初做过一个【无注册声纹识别系统】,这个系统是在用户交互过程中,可以无感知的就实时判断出“用户是谁”、“性别年龄情况如何”两个重要画像信息,而不需要用户实现注册自己的声音,实现真正无感知。这个对于一些多人共用设备(例如电视、冰箱等家电)或者经常有外人往来的地方(例毕竟外人不可能提前注册)有很广的应用前景。
简单设想一下,这项能力可以用来做以下两件事:
- 用来实时做交互人的识别,识别到是谁之后,可以把这个设备调整到这人的个性化设定上去,例如内容推荐、闹钟习惯、闲聊风格等等;
- 用来做推荐系统,识别出是谁之后,可以把个人的交互数据计算成画像,让公用设备也可以具备个性化推荐能力。
对以上两个场景来说,“实时交互人识别”对于误差的容忍度就很低,具体来说其实是精准度要求极高,因为误差会连续传递到全部服务上。实际上基于单纯“声学”或者“语言”一维到两维信息的无注册声纹已经效果已经不可达了,需要引入视觉维度做“多模交互人识别”,或者干脆把系统做成注册式声纹。
“推荐系统”对于误差的容忍度就相对高,具体来说召回要求不高,就算一个人被识别成了两个人,导致画像计算数据变少,其实影响也很小,另一方面精准度要求也不高,因为其实即使识别错了,用户也比较难感知到。
如果以上面的视角方式再回头审视下“交互中挖掘需求”这件事,就会发现之前设计的流程存在很多问题。
A. 首先其实是有个概念偷换,且不论只能评估【需求影响面】,【转化率】则需要人工评估这种问题,其实在定义“文本聚类”子任务的时候,已经是再用【表达范式影响面】在替换【需求影响面】了,可以大概理解成其实只能挖掘某个需求的某个意图,例如“看XXX的(XX年上映的)电影”,其实这只是影视需求的一种表达范式。
即使加入了【知识】给模型提供了一定的泛化能力,也需要知道这种泛化相对有限,毕竟【知识】本身承载的范式就有限,而人的表达范式是无限的。
B. 第二个当然就是“分类+聚类”这种级联结构,导致误差传递,每一级的误差都被放大了;
C. 还有问题是如果带入业务场景分析子任务流程,就会发现如果聚类时候召回不足,会导致没被召回的结果变成新需求,结果就是有【CAT1(影视1)】【CAT2(影视2)】等等同一需求多个子类。同时业务上会发现如果我们每天的全量数据都拿去全量聚类,计算一次要48h,也就是说输入一批数据三天后才出结果,而系统还在不断入数据,越堆积越多,并且三天一看数据也不符合业务快速试错的要求。
所以最后结合上述问题,初版的设计问题其中一种解法是改成以下的子任务和流程,最终的子任务并不是【聚类+分类】而是【分类+聚类+检索+类比对】的流式设计,而流程也变成轮次聚类的设计方式,具体分析过程就省略了,以下给出了大致的设计思路示意图。
② 冗余评估
这个一般是评估系统的效果上限、可优化空间和优化成本,比如如果系统已经没有太多优化空间,也没有其他正交维度可以引入了,那这个系统其实就是一锤子买卖,后面的效果运营服务即使想做也没有任何收益,商业角度看就应该侧重思考怎么降本了。如果存在优化空间,也要衡量效果优化的投入,效果每提升1个点需要的成本都是指数上升的,效果越高再优化的成本也就越高,甚至可能就是重构一套新解决方案,所以其实有些不产生流量价值收入的TO B生意经常做成一锤子买卖。
4. 迭代阶段
在谈AI如何迭代发展之前,想先探讨一下关于AI能力边界的问题。关于这个问题,我个人意见认为吴军老师提到过的他的导师总结的人工智能三大问题总结的最为精炼。
1)设计者意志:可以说AI目前依旧是设计者意志的体现,是设计者用他的设计意志代替了全人类意志在设计。
关于这一点,我一个关系要好的算法负责人讲过他的观点是AI是一种“重构+共现”,我觉得可以直观理解成一种高级复读机,不论是定义需要获取的数据,还是定义任务,基于统计的AI还是一种对于信息的归纳和总结,来复现输入的信息量。
这其实代表使用的AI代表的就是设计者的意志。即使是大模型,我使用OpenAI的GPT4和Antropic的Cluade做东西,也发现两者在输出信息倾向和逻辑上有明显不同,有兴趣的可以到https://nat.dev/ 或者What is the Vercel AI Playground?试用下。
2)隐私性:AI的隐私性问题和安全问题讨论已经很多了,就不赘述了,近年的联邦学习技术对这个问题提供了一些有益的解决方向思路。
3)非连续性:这里涉及一个基本边界问题,AI的前提假设是涉及的事务都是连续的,但是实际上现实世界的很多事情都是离散的、稀疏的,这有可能是因为没有收集到足够的信息,有可能是更多信息本身无法被收集,这就造成:
- 第一,并不是所有的问题都可以被AI抽象。
- 第二,实际上AI抽象现实问题的时候,离散问题会被当做连续性问题解决,导致误差。
因为AI可以简单理解为一种基于统计学的高级复读机,所以其实本质上无法处理预料之外的情况,虽然可以对意外情况做一些兜底处理,但单靠模型的话,未定义的部分其实就相当于在抛硬币了。比如吴军老师经常举一个例子,对于自动驾驶来说,如果车不认识“沙袋”,那车路上碰到沙袋就只能停下,或者极端一点,一个人突然拦在车前面不走,车也只能停下,这就是非连续性。
为什么讲这个呢,因为一般大的迭代方向和这些限制就有关系,一般来讲迭代的方向有几种:
1)基于业务场景的基线版本,扩展更多的业务其他应用场景
- 例如用于缩减成本的本地化方案:把计算转移到本地,就可以节省云端服务器费用;
- 例如降低隐私问题的联邦学习方案:和区块链的思路就有些相近。
2)提升到更好的效果
- 以前的AI有一个大问题是,如果不更新训练数据,效果就会持续下降,当然有些设计时候可以预留一些字典,可以后续靠填充字典数据,不更新模型提升对于新数据的适应,减少下降趋势。
- 如果可以寻找到更好的流程,或者更精准的子任务定义,可以大幅提升整个系统的效果。
- 算法模型结构本身的更新,这个问题就相信你的算法负责人就可以了。
3)根据不同业务应用场景的定制化
a. 比如前面提过的声纹的例子,如果做家庭个人健康档案,依据无注册的声纹就无法做到,因为无注册声纹的上限相对较低,优势在于便利和实时性。但这种场景需要至少95%以上的高精准度才能使用,此时就要重新考虑方案。
b. 声纹这个例子里,就可以使用注册式声纹(即现在大部分声纹方案),先让用户说几句话,然后生成一个人,因为这种情况下可以人机耦合来解决噪音干扰问题,可以保障。
- i. 聚合数据完全纯净,因为是人工专门录制的音频嘛,后面只需要和这个聚合类比对下是不是一个人就完了;
- ii. 同时可以设计各种发音场景或者发音质量校验标准(比如百度地图录制一个自己的发音人,就会校验音频信噪比、音频质量、文本匹配度等等,总会提示音频质量不过关重录),来让训练数据的质量变得无比高;
二、预训练带来了什么变化
预训练首先是对于传统的监督学习的改变,Transformer这种有史以来最高效的特征抽取器的广泛应用,让LM通过共享预训练模型的参数连接起各个任务,GPT/Bert的两种研究范式也就就此确立的。对于之前主要广泛受关注的是以Bert为代表的“双向语言模型预训练+应用Fine-tuning”模式,使得语言模型适应下游的任务,基于预训练的思路,模型更大了,效果更好了,各种人工智能的最终任务,诸如完形填空、目标检测、关键要素抽取、机器翻译、自动摘要、图像识别、物品推荐等等均取得了不同程度的提升。
从我的视角来看,我对BERT范式的模型理解是这样的:
1)模型的通用性差:虽然预训练让模型适应下游任务,但是实际上应用方面比较窄,这个可能和这种范式与人类语言习惯的距离更远,不如生成范式接近人类的表达,和Bert的训练数据也有相当大的关系。
2)预训练的信息输入量远高于以前的训练模式,通过大量提高输入的方式必然会使得输出有提升。因为我理解AI算法本质是压缩输入,已经从输入里总结归纳,并且在输出端复现输入,即使是生成式的算法也是这样,例如大型语言模型加入COT可以使得结果的逻辑性和合理性更强。
3)数据和模型大小变化带来的收益较低,原本效果上无法商用的一些方案和技术,依旧无法商用。这个可能和模型本身的规模没有达到某个量级有关,因为同样是双向的T5和BART在生成类任务上也取得了不错的效果(BERT本身就不具备这种场景能力,不做谈论)。
4)模型量级在指数上升,且模型的规模扩张速度已经超过了摩尔定律的硬件性能提升速度,也就是说就算抛开效果提升了多少来看,成本的上升速度超过了收益,成本的上升速度有些过快了。关于这一点虽然openai和deepmind都分别测试了模型量级和数据量的缩放法则来说明必要性,但是成本上升却也是事实。
Pre-train, Prompt, and Predict: A Systematic Survey ofPrompting Methods in Natural Language Processing(https://arxiv.org/pdf/2107.13586.pdf)
这篇综述文章很好的阐述了研究的范式发展思路,到GPT这一代的时候,Prompt方式已经将任务调整到语言模型中进行实现而不是让语言模型适应下游的任务,这种方式带来了相当多的变化。
三、大模型的AI设计方式变化
1. 大模型带来的变化:普通人的AI设计时代
Prompt标识的第三波大模型的变化(我并不喜欢称这种方式是自回归的语言模型的时代,或者单向语言模型的时代,至于原因下面会提到),从结果上来看,我觉得最大的变化是理解成本和应用价值都向C端的一般用户逐渐靠拢。
过去的AI其实从理解成本上来看,普通用户很难理解是怎么一回事,因为人与AI无法把完整的交流都通过人类可以理解的方式进行。就这好比文艺复兴的时代,宗教比科学一直以来都更加容易被人接受,就是因为宗教的语言交流方式距离一般人的直觉更近,大家可以无需学习很多科学知识就可以对这件事进行理解和探讨,而现在相同的事情正在大模型上发生。
第二点就是应用价值的变化,过去的AI实际上在To C的普通消费者上一直比较难产生直接价值,这实际上是“交互”这种AI应用场景的困境,实质上“交互”本身一直都很难找到一个能直接产生价值的点,这也导致大量的To C的AI产品实际上的销售模式很多都是依托供应商分销完成,这种模式实质上很多厂商把货物压到分销商手里,销售环节就已经算结束了,这里的具体原因我们不做深入探讨。
但是大模型实际上改变了这个情况,从Chatgpt开始,大量面向To C产生实际价值的产品需求被释放了,对于大模型所有人都可以轻而易举的想到几个和自己有关的价值场景,可以说To C的价值在大模型这里才真正被释放了出来。
Prompt的方式,对于AI设计来说,其结果就是带来了各个维度的AI设计门槛的变化,以及理解成本的极大降低,大模型时代可能只要具备基本的逻辑学修养,就可以进行AI产品设计,让我不禁感觉“人人都是AI设计者”的时代可能近在眼前了。所有人都可以很直白的理解AI可以做什么的时候,各种有趣好玩的AI应用涌现就近在眼前了。
为什么到了GPT的方式才让我产生这个感觉,主要源自它带来的一些人机交互方面的巨大变化。关于大模型技术国内外论文已经相当多了,诸如RLHF、COT、Zero shot prompting等等,因为文章整体整体更多分享个人见解,不是一篇技术分享文章,这些部分我只大概引用佐证说明观点,明细就压缩掉了,如果不了解相关的一些背景信息,可以直接看Openai、Antropic、Google、Deepmind、Meta、国内外知名大学和研究机构的论文,或者国内外大佬的解读博客。每个部分的佐证我都有引用标注,如果想要了解到技术细节还是建议自己勤动手吧。
1)人机交互界面变得自然,贴近人类的交互界面
大模型带来的一个核心变化之一是,过去的人机交互,机器只能理解有限范式的指令,而大模型做到了统一范式:
- 在信息输入时,统一了范式使得多种类型的输入都可以作为信息输入AI(T5论文论证了这一点),这其实意味着我们可能不需要逐个类型任务设计不同的AI,例如图像和文本都可以统一形式输入同一个AI,然而实际上语言模型确实可以把这些连续性信息都抽象成语言进行理解;
- 因为压缩了世界知识,使得AI具备了通用的理解能力,而不是仅仅理解定义的有限范式,这其实另一方面也代表了语言模型具备输出多种范式的内容潜力,事实上本文谈打的另一种图像类大模型扩散模型,我觉得最终会被语言模型所替代掉。
Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer(https://arxiv.org/abs/1910.10683)
人机交互界面是一个泛指,以完成人机交互需要交互人具备的专业能力要求来看,可以划分为三个阶段,下图是我用Dell-E生成的表达人机交互界面发展阶段的示意图,虽然我尽力调整了,但是图片依旧有点文不切题,这个让我更加确信了现在的图像生成一定需要语言模型的必要性:
① 专业人士+有限集能力:可以类比“遥控器+电视机”的模式。
这种模式可以看成是经过了两次编码,一次是人把需求转化成遥控器的按键指令的编码,一次是遥控器把接收到的指令编码成执行指令给到电视机执行,所以一般这种产品都是具有学习成本的,即使是移动时代的app也可以理解成这种模式,既然有学习成本,就不是所有人都天然会使用的,这也是为什么老年人很难学会的原因。
② 普罗大众+有限集能力:这时已经可以把“遥控器”这一个环节的编码载体去除了,变成了“自然人+电视机”的交互模式。
人已经可以通过自然语言和设备进行交互了,但是这并不是需求不需要进行编码了,只是因为自然语言这种需求编码方式,人人都掌握了所以学习成本消失了。关于人类使用自然语言对本身需求进行编码的效率问题,这是另一个话题了,留给以后有机会再谈吧。
上面这种模式实际上就可以理解成过去的自然语言处理范式,虽然使用门槛被降的很低,但是是依靠预定义的有限范式支持的,这里面需要大量的设计和算法人工定义工作,可预期的也是支持的自然语言范围很窄,经常不理解,算法在有限预定义集合上做各种语义泛化工作,但是实际上还是在追求有限集合上的输入复现。
这种方式预定义扩展的范式越多,用户用起来就觉得越自然,支持的说法越多,所以在之前的人机交互设计中,大家普遍围绕线上用户交互失败的query,不断挖掘、不断丰富和扩展自己的范式,让用户用的更爽。
③ 普通大众+通用能力:在这种模式下,大概可以理解成“电视机”本身也被一种万能工具替代了,大众通过自然语言直接和需要的影片交互。
可以大致认为这个时候用户可以用自然语言发起各类需求,而这些需求都可以被大模型编码成执行指令,直接给到资源方执行。这也是大模型的重要的通用性的特性,我的理解是这个可以说是数据带来的,而不是AI本身的特性。关于这个特性在下面会谈一下我对于这个“通用性”和“全知全能”之间的差距的理解。
④ 其实看扩散模型的Playground也可以看出这种演化趋势,Stable diffusion还需要具备一定的代码能力才可以使用,到Dell-e和Midjourney已经可以直接在网页或者Discord上使用自然语言交互。
但是实际上,实现虽然Dell-e和Midjourney可以用自然语言交互,但是和普罗大众的需求语言还是存在巨大差距,本质上和Stable diffusion用机器代码指令交互区别并不大,只是使用门槛降低了一些,本质上还是需要以机器能够理解的会话范式来说话,例如下面是一个在Midjourney的Discord社区随便翻了一个案例,专业语言的Prompt我是用GPT帮我写的。
Midjourney的Discord社区某个案例,文本我用翻译软件翻成中文了
交互界面的自然化,带来的必然结果就是对使用人的专业技能要求少了,比如我们不需要会使用设计工具和代码,就可以使用Midjourney,但是如果让我们输出专业的Prompt,就会需要一些专业知识。如果让GPT来做专业语言prompt生成,也需要做到从设计语言层面做需求拆解,这其实依旧和普通人模糊不清的需求描述有差别。
这一部分的需求拆解工作是不能让AI来执行的,因为这件事没有现有知识可以总结,而是需要基于已有的少量输入,推理出远超输入的大量输出。大型语言模型可见的问题是不具备基于已有推理未知的能力,给的结果更多可以理解为是AI从数据总结归纳的结果,而不是推理的结果,这种结果可想而知是接近千篇一律的。
所以其实自然度也是有限度的,至少各专业领域的需求拆解工作目前并不会被替代,其实抽象一下也就是说,各个领域里面真正产生新信息的工作不可能被替代掉。
但是即使语言模型有能力边界,其实这种程度的交互自然度已经使得相当多的专业性知识在实际使用中变得缺乏意义,但是我依旧认为了解领域专业知识的人才可以具备创造新信息的能力,不了解的人甚至不具备评价某一成果好坏的能力。
2)大模型的通用性,高成本领域定制方案的消失
过去的AI往往一种AI只能解决一种任务,这就使得大千世界里形形色色的行业和领域都需要各种算法能力定制,但是GPT的预训练使得大模型表现出了对于人类语言的通用理解能力和推理能力,因此在各种领域都显示一定的基础理解力和应用潜力。
加之低成本定制方案FLAN、P-tuning、Lora的应用,微调的技术证明了可以用少量数据强化大模型的指定方向的效果,这意味着通用人工智能+低成本的定制,取代了过去逐个场景定制的高成本方案,可能一般用户见的最多的就是基于Stable Diffusion微调的各种风格的图像生成模型:
① Lamda和Alpaca的相关研究证明了只需要几万指定方向的高质量数据微调就可把指定方向的效果拉升到可用水平,相比于天文数字的预训练来说,这个量级的数据可以很快收集到。
这意味着具备了“一个通用大模型+低成本定制领域方案”的一套解决方案可以低成本,并且快速的实现基于通用大模型的各领域应用定制工作。斯坦福的论文阐述这一项工作开销低于500美元,斯坦福使用的LLaMa模型较小,但是依旧有很强的参考意义。举个例子,如果我需要把强化大模型的多样性,我只需要几万的Finetune或者P-tuning的多样性数据集来调整即可。
Alpaca: A Strong, Replicable Instruction-Following Model(https://crfm.stanford.edu/2023/03/13/alpaca.html)
② Lora在NLP领域以及图像领域Stable Diffusion的广泛应用,使得可以在不对大模型进行有损调整的情况下,低成本的强化指定场景效果。从下图可以看出,相比于Finetune需要调整的参数,Lora调整的参数规模和达到效果实在可观,这意味着Lora的微调成本更低,成效更好。当然Lora可能更加适合单任务或者单特性的强化,对于多任务或者模型整体的调整可能并不适合通过Lora解决。
LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS(https://arxiv.org/pdf/2106.09685.pdf)
另一方面,大模型的通用性代表,即使无法收集到一些某些领域的数据,依靠大模型的通用能力+Prompt提示的方式,也可以实现在指定领域不错的效果,即使没有在指定领域进行过精调。
实际上,在实践中也发现如果是通过Tuning的方式实现,一般精调的数据集并不宜过多,过多的数据集会导致大模型原本特性和能力效果出现下降,可能对话的相关性和多轮连续性都会受到很大的影响。所以目前似乎精简的高质量集合是相对合理的,如何精简精调数据集本身又是一项充满门道的事情。
大模型的通用性来源于对世界的压缩,可以认为大模型把整个人类世界压缩作为了输入,因此大模型才可以做到在用户仅仅给出很少量信息的问题时,可以输出远超过输入端信息量的输出。
在移动互联时代,大家还在讲信息爆炸的影响,但是现在对于大模型来说,数据渴求已经是一个更普遍的现象。世界上的很多信息并不存在于互联网上,因此即使把整个互联网那个的信息输入大模型,通用性依旧是有限的,这个其实就会需要能够收集线下模态信息的模型出现。
从另一个维度讲,即使现在模型的膨胀速度已经超越了摩尔定律的硬件扩张速度,大模型对于世界的压缩效率也是很恐怖的,我并不知道这个会不会影响到信息论信息量计算公式的基本定理,但是只要大模型依旧按照统计的路线,信息论的基本原理始终是生效的。对于算法人员来说,大模型的通用性意味着算法可能真的是在革自己的命,首先收到冲击影响的可能是算法从业者。
但是其实上面说的大模型的通用性,并不是真正可以实现多种现实任务的“多任务人工智能”,关于真正的多任务人工智能,目前依旧停留在学界的理论上,但是真正的通用AI我觉得还需要等待多任务的人工智能的进步。
3)“效果上不可达”可能可以根本解决
Google的经典论文阐述在模型参量达到13B(10^22)以后,大模型涌现出没有定义过的新能力,这项新能力的效果,在参数量达到量级之后,很多原本效果接近于随机的任务,效果突然出现大幅度的提升。
虽然一些论文阐述评估方法具有平滑性的问题,但是效果出现了跨越式提升却是事实。一个直观的感觉就是,如果对比过GPT4和Chatgpt,或者更小的语言模型比如Alpaca,其实就会发现,小语言模型对于语言本身的理解更像是一种范式模仿,不具备语言的逻辑连续性和推理能力,即小语言模型其实没有理解语言这件事本身,而GPT4已经在逐渐逼近理解这件事,虽然它依旧存在很多问题。
对于大语言模型来说,因为对于语言的理解更加高维和深层,从而出现了一些Emergent Abilities,原本效果上不可行的任务都变得可商用了,因为我们可以寄希望于伴随着训练数据规模和模型参量的提升,大模型从训练数据中学习到一些更深层的语言知识,transformer的中层和高层得到更充分的利用。这意味着设计需要的经验和能力要求大幅降低了:
Emergent Abilities of Large Language Models(https://arxiv.org/abs/2206.07682)
① 在上文提到之前AI设计方式的例子中,由于一些子任务不可行而需要进行复杂任务流程和子任务重新定义的设计不再需要了,设计可以被极大的简化。
② 原本需要资深人士经验推断才能判断一项任务是否可行,或者效果能达到什么程度的经验判断变得意义较小(或者可能变得无法评估,因为无法推断模型扩张到什么程度会引发能力涌现)。【技术可达性】这个问题原本是需要踩过很多坑,有大量子任务经验,这类资深的设计人员,可以让公司在设计和验证方案阶段的成本最小化,这一原本AI方案设计的巨大门槛,被基本消除了,各种方案都有可能在某个量级下能够成立,可能真正的条条大路通罗马了。
这其实引发我思考一个恐慌的问题,就是AI是否摆脱了“设计者意志”,是否设计者都不再需要了。但是这件事即使我在Openai的Discord也较少看到讨论(我发出的提问也并没有人回应),就我的对于大语言模型的使用体会,结合个人理解以及和算法朋友的讨论,我个人直观上感觉Emergent abilities可能与两种情况有关联:
① 是和人工定义的原始子任务存在一些关联的,可能语言模型学到了一些更高层次的潜在语言关联,这个现象并没有办法在任意一个任务上就凭空出现。
② 因为模型数据量和规模的扩大,模型从语言本身学到了更深层的东西,把他们存储在了transformer中。
下面有一个例子是我使用中发现的一种典型现象,如果GPT-4帮助你决策,在引导下GPT-4可以主动询问一些做决策缺失的信息,并做到稳定复现,但是Chatgpt即使给出Prompt也无法稳定实现。这个应该就是语言模型慢慢具备了“常识”,国内很多复刻的大模型其实主要不足也就在这里。
但是“常识”其实我觉得是一个很抽象的词汇,它可能包括了“历史的沿袭”、“主体和主体属性”、“主体间关系”等很多方面,这些问题也放在下篇文章再讨论吧。
③ 模型和数据量的扩大,导致模型对于语言的表达理解更深了,同样的一句话GPT4已经都可以理解,Chatgpt则会给出完全不同的回应,虽然每种回应包含的信息量都有巨大差异,但是即使选择信息量最小的一种提示方式,GPT4也可以立刻反应过来,而这种非显性的交流,更加接近真实场景中人的会话方式:
- 你没有什么需要我提供的信息来提供具体建议吗(反问+质疑+提示)
- 你没有什么要问我的吗(反问+质疑)
- 你有什么要问我的嘛(缺失提示信息,也没有反问和质疑态度)
BIG-BENCH中有类似的Sufficient Information测试任务集合(https://github.com/google/BIG-bench/tree/main/bigbench/benchmark_tasks/sufficient_information),但是我感觉big-bench上的测试集偏向于知识推理(e.g., How much water is in a full 4 inch tall cylindrical glass? Answer: what is the radius of the glass?).而不是一些基于社会运行常识的一些推理,例如着装需要依据不同的工作性质、场合、性别、外貌特点以及个人希望他人对自己形成的社会认知。
至少从我几个月的使用体验中,我认为AI依旧存在“设计者意志问题”,甚至因为微调对于激发模型表现的巨大影响,以及预训练数据的范式对于模型语言理解倾向的巨大影响,设计者通过数据向语言模型施加的影响更大了。关于预训练范式如何影响语言模型的问题下面会再另外谈到。
4)很多中间子任务变得没有意义
大模型导致很多的AI中间子任务不再具有意义,很多问题可以端到端的直接解决,这不仅是很多AI的子任务失去了研究意义,很多业务子流程设计的时候也不再需要转化成繁琐的AI子任务,可能仅仅依靠基本的逻辑素养,只要制定出合理的任务路径,就可以期待大模型可以端到端的直接解决此类问题。
举个例子,假设我们想设计一个基于情感的聊天会话系统(先不考虑知识和常识怎么来的问题),在以前会可能需要做如下的任务分解:
在上面的任务流程里,“会话历史的理解与关键抽取”、“会话情景的综合分析”、“主动挑起话题的能力”、“话题主体的预测与选择”、“风格化”等等都需要单独制定方案逐一解决。
这种思路在过往的AI设计中很常见,因为无法端到端直接输出想要的结果,就把一个任务拆解细碎的小任务组合,最早的语音识别是将任务分解成识别音节、词性、语法等小任务(即使现在语音识别分成声学和语言两个维度,也是放在统一端到端模型了)。
而之前对于情感这件事,具体的AI子任务会有更加细碎的分解,例如之前小米对于情感对话这块的实践就是这样的思路,把情感这件事拆分成“Exploration”、“Comforting”和“Action”三步来实现,并且借鉴了Maarten Sap 等人建构“if-then”图谱的思路。
MISC: A MIxed Strategy-Aware Model Integrating COMET for Emotional Support Conversation(https://arxiv.org/pdf/2203.13560.pdf)
ATOMIC: An Atlas of Machine Commonsense for If-Then Reasoning(https://arxiv.org/pdf/1811.00146v3.pdf)
而对于大模型来说,我只需要定义好情感的精调数据应该长成什么样子,就可以借助精调数据激发大模型的能力,端到端的实现情感会话。这样的端到端设计方式直接导致了三个结果:
- 专业的子任务定义工作不需要了,设计者甚至不需要理解子任务是什么,人工智能存在哪些子任务这些基本知识,就可以上手做设计。
- 任务拆解和路径拆解的工作变得非常简单,因为不存在效果不可达,并且问题只需要端到端解决,看起来没必要分析任务的构成要素,拆解解决路径了。甚至目标本身可能就是任务,例如“我需要一种面向老年用户情感陪伴的聊天系统”,可能直接就是这个目标唯一也是不需要分解的任务。
- 数据的重要性变得比预训练时代还要重要,以前我们可以认为要达到很好的效果,模型占20%,数据占80%,现在数据的比重再度提高了。这也导致了一个问题,就是数据集定义和设计的怎么样,就直接决定了最终效果。机器学习的名言“trash in,trash out”,可以说在大模型中会得到极致的体现,大模型对于数据的敏感性比过去的模型都更高,3%的训练集噪音就可以直接毁掉整个系统,使系统变得根本无法使用,而在以前,这个噪音容忍度可能是5%或者更高。
看起来既不需要做路径拆解也不需要做子任务定义了,但是我觉得其实这更加考验对于“情感”这件事的本质理解了,毕竟定义出来数据集长什么样就直接影响了最终的输出效果,“数据集应该是什么样的”这个问题可能更考验对于社会学、脑科学、家国文化、心理等方面的理解,以及对于“会话”这件事的本质理解。
5)大模型的应用会有哪些问题
打造一个大模型需要巨大的训练费用和调用费用,这一部分在很多大模型的工程复现文章中都有成本的详细论证,就不做赘述。想谈几个被较少提及的应用问题,但是包括训练和调用成本在内,这些问题并不是无解的,只是需要行业内共同大模型的健康发展去逐步解决。
① 成本问题展望
A. 成本的扩张
关于目前“AI模型规模的增长速度超过了摩尔定律的硬件扩展速度”各种论证和说明有很多,但是当下这个舆论风向的话,可能Sam Altman的说辞更有说服力一些吧。众所周知,AI的效果每提升一点,模型规模和需要的计算资源都是指数上升的,一定不止摩尔定律的两倍这么多。当然摩尔定律本质上也是商业行为逆推整个行业技术改进速度的案例,所以Sam Altman这个很有当年英特尔和微软那味。
另一件事是,目前互联网上可得到和使用的数据,相比于目前模型消耗数据的速度已经显得有些不够用了,尤其是信噪比低的高质量数据可见的十分有限。这导致后面有可能需要从线下去收集数据进行线上化,线下数据的线上化本身对于资源的消耗就可见的十分巨大。比如看看Palm-E消耗的资源量和达成的效果,就可以理解线下维度的数据收集有多么困难。
B. 成本下降的展望
算法优化的本质,我的理解是不断的提高无损压缩信息的压缩比,因此可以以更小的资源消耗实现等同的效果本身就是算法的优化目标。
在模型规模指数级的提升背景下,OpenAI自2019年开始,也提出了需要模型运行效率的问题。另一方面这个问往往不至于算法本身,很多工程化的手段都可以在效果不损失的前提下,在很短的时间内把计算消耗降低一到几个数量级。GALM和HunggingGPT让一部分专家系统起作用,而不是整个系统起作用也是一种思路。
Measuring the Algorithmic Efficiency of Neural Networks(https://cdn.openai.com/papers/ai_and_efficiency.pdf)
第二个有帮助的点是,可以通过增加训练数据量使同等规模大小下模型得到更充分的训练,这样虽然对于一次性的训练成本有上升,但是在调用模型时候这种流动成本可以降低。
虽然openai(Scaling Laws for Neural Language Models)和deepmind(Training Compute-Optimal Large Language Models)有通过实验给出最佳的模型规模和训练数据量匹配比例,但是不论如何训练数据量单独扩增对于充分训练之前的效果提升也有很大的帮助。另一方面,精调数据集对于效果帮助则更大,InstructGPT已经证明经过精调的小模型性能表现上甚至可以超过大模型。
目前的这种稀疏的大模型,在实际推理时,只有模型的一部分参数在起作用,通过进一步理解大模型的作用原则,我觉得后面通过控制部分参数参与推理来实现成本的下降可能也是可行的。另一方面一个分发大模型+一堆专家小模型的MOE思路也可以大幅降低成本,例如GLam虽然参量是GPT3的七倍多,但是实际上成本却比GPT3少得多。
GLaM: Efficient Scaling of Language Models with Mixture-of-Experts(https://arxiv.org/pdf/2112.06905.pdf)
当然这一部分是纯粹的算法和工程问题,我觉得了解可行性与方向即可,专业的问题还是就留给专业的人解决。
② 合规和人机合作的定位
对于GPT来说,本质上生成内容是不可控的,其实从微软和Google在开始推广前,都开掉了自己的合规团队就可以看出一些端倪。在我理解里处理方式无非是几种:
- 引导:通过引入人工反馈强化和精调来对大模型的输出方向进行引导;
- 后处理:也就是加一些规则处理做敏感过滤,这个最容易想到,大模型厂商也都有做;
- 清洗数据:这个是最彻底的,但是也是最难的,因为一方面清洗数据或者强制给模型预设某些条件,会导致模型的性能下降;另一方面精调数据的清洗还好,预训练数据的清洗是一个世界难题,虽然有研究证明似乎可以精准定位到发生问题的训练数据和模型局部,但是路还是很远。
综合来看,对于GPT来说,人机合作的设计路线更加合理。过去的人机交互意志有一个比较尴尬的实际问题,就是to c其实很难产生直接价值,to b虽然产生了价值,但是往往敏感性很高,可控性这个可能是过去Bert路线这么受追捧的原因。
但是对于可控性较差的GPT而言,可能AI作为辅助角色,引入人工干预可能是未来的长期路线。类似自动驾驶形态的人机合作,最有可能成为大模型的产品定位终局,比如大模型可能不能直接成为家教,但是可以成为家长教育孩子最好的辅助工具。
这件事如果从系统论思考,结论也是类似的。从系统论来说,一个不受管理的封闭系统始终是熵增趋势,会逐步走向无序与混乱,而解决熵增的方式就是与外部系统建立关系,引入负熵,让系统无序性降低。
对于人这个系统来说,与其他外部系统之间的负熵引入尤其重要,如果AI本身都是让人在自己的圈子里去活动,那只会让整个系统越来越无序和混乱,所以AI如何成为辅助链接外部负熵的辅助,从系统论视角来看这个可能是终局,其实这种熵增变化对于AI本身也是一样。
③国产化的精度问题
受美国制裁影响对于大模型本身其实影响很大,且不说先进软件技术都在美国的问题,国产化的计算芯片和NVIDIA的差距就会对大模型输出效果造成巨大影响。就像上面提到的,GPT这种生成式模型对于每一个字预测的误差都很敏感,因为误差会被逐级放大,在过去几亿参数较小规模的生成模型上经验来看,国产化因为浮点计算的小数点位后2-3位开始和NVIDIA产生偏差,同样的模型在国产化芯片和NVIDIA上一致性只有差不多50%-60%,而这种问题在大模型上会被放大的更加剧烈。
目前国内还有一些渠道获取A100或者A800,但后续感觉还是要看国产化芯片计算精度,毕竟对生成式模型来说,不光是计算资源是否足够问题,计算精度一位的差异都会在逐渐生成的过程中被无限的放大。
④ 数据渴求与模型规模
对于大模型来说,模型规模越大,训练数据越多,模型效果就越好。那么对于大模型来说,目前的数据是否够用呢?会不会出现现实世界中的数据被消耗完,从而达到AI能力极限的问题呢?
这个问题此前的估算模型是OpenAI输出的训练数据和模型规模的配比,但是按照Deepmind团队最新的Chinchilla的评估提出了修正,假设按照Chinchilla测算,模型规模和训练数据应该1:1同比扩大,可以说目前的大模型都属于训练数据量不足,训练不充分的阶段。比如以GPT3的1750亿参数规模,至少训练数据应该扩充11倍以上。下表是论文给出的三种不同评估方法的一些评估值。
Training Compute-Optimal Large Language Models(https://arxiv.org/pdf/2203.15556.pdf)
Training Compute-Optimal Large Language Models(https://arxiv.org/pdf/2203.15556.pdf)
按照充分训练发挥模型最大效能的方式来进行,现行的数据量足够支撑模型训练吗?会不会出现数据不足的情况?我觉得这个问题有这么几点已知信息:
- 按照Chinchilla的评估,我大概认为要实现ChatGPT或者GPT4的效果,可能需要的模型参数量要小得多,但是训练数据量和训练充分度要大得多,可能从效率上来说合理的事更小的模型更多的数据。而目前的ChatGPT或者GPT4其实效果已经相当可观了。
- GPT4的训练集tokens数量比ChatGPT可能要大至少一个数量级,但是从之前的45T清洗到1T的训练集来看,依旧是英文互联网的一部分。目前的英文互联网上的高质量数据集依旧有相当多可以被用于拓展训练集。
- 中文互联网上,我记得在哪里看到过有人清洗了几百T的数据集只得到了几T的训练集。从常识来看,中文互联网的高质量数据集也很少,因为互联网发展时间短,很遗憾像百科、各类图书的电子化、国际高质量学术论文平台和杂志,这种高质量信息建设的工作在中文互联网很少。各类线下高质量数据的线上化程度也不高,所以中文的高质量数据集是否足够这个问题我觉得是有很大疑问的。
2. 设计方式的变化:设计者最好的时代来了
目前的大模型来看,虽然可以替代一些专业工作者的工作,甚至于算法研究本身的工作,但是依旧摆脱不了设计者意志问题。因为大模型在效果上和通用性上的巨大进步,突破了之前的AI能力边界,各行各业被能力边界压制的需求都涌现了出来。所以确实可以说,设计者大展拳脚的时代来了。
① 大模型时代AI设计:端到端设计方式&极端的数据主导权
大模型对于效果的突破进展,以及其设计思路,冲击性的改变了三件事情:
- 依靠语言模型一种技术解决了过去需要多重任务、级联设计才能解决的问题;
- LLM同时解决了多种任务,虽然达不到真正的多任务人工智能水准,但是可解决的问题范围已经相当大(关于这一点后面讲大模型应用会谈到);
- 数据变得无比重要,无论是“数据集的质量”还是“覆盖到世界知识的可收集维度”都分别在【精调】和【预训练】两个阶段产生巨大的影响,其影响已经远远超过了模型本身。
这三种变化组合起来,对于设计的冲击是巨大的。这意味着以下几点的巨大变化:
- A. 设计需要的门槛大幅下降了,因为大模型的巨大通用性,子任务定义这个环节,在大部分的AI应用场景中都不需要了,设计者只需要定义最终任务,而最终任务即使对于入门者理解它也是很容易的。当然如果你是大模型的设计者本身,而不是行业应用,这件事可能依旧是需要的。
- B. 设计再也不需要考虑效果可达性问题,因为对于大模型来说,可以抱有一个美好的预期,在达到某一个体量(参量+数据)之后,新定义的任务效果就可以涌现出来,大幅提升到可用水准,(当然这件事是否在任何任务上都可以成立,还是需要技术的验证)
- C. 大模型本身甚至让目标和路径逻辑拆解变得及其简单了,很多复杂的拆解设计工作也都可以简化到端到端的方案实现。这不仅意味着需要拆解和定义的任务数量的减少,甚至大多数时候的任务都可以简化成一个最终任务,而调整它的方法就是调整和定义它的训练集。
- D. 数据的重要性变得无比高,什么样的训练数据才是我们需要的数据,因为所有关于需求场景分析,各种维度需要达成的目标期待,全部都靠一份数据集实现,如何定义这份数据集应该长成什么样子,就显得十分的重要。如前文所述,这份数据集不能以数量来取代质量,因为过大的精调数据集会让大模型原本的一些能力消失,会话本身都会成为问题,这显然得不偿失。
- E. 从什么地方拿到高质量的数据,如何清洗数据,如何构造一条持续的数据收集通道。这些在原本AI框架中相对不重要的事情,如今变得极其的重要。相应的,这方面的数据供应行业也会早就巨大的机会,谁能以更低廉成本提供高质量数据,谁能把线下各种非结构化的数据抽象到线上数据集中,这些数据市场的机会会变得无比大。
举个例子,上文我提到了参考关于小米的情感会话的一些实现方案,如果这件事放在大模型来实现,其设计就可以简单的多,只需要定义“精调数据集+prompt”长成什么样子,就可以激发模型这块的能力。
但是实际上对于设计者来说思考工作量可能变化不大,因为只靠一份精调数据集就决定最终效果,更加考验设计者对于【会话情感】这件事思考是否透彻,这些思考会反映在数据集范式的定义上,一旦数据集定义的不好,最终也就无法实现出好的效果。
如果我们实际把两种设计流拉出来,比较一下两种设计流的门槛,可以发现:
A. 过去的专业设计流:从【需求分析阶段】到【开发实现】,还有一个专业的【系统设计】阶段,这个阶段需要大量的专业知识和阅读量,这就让设计本身变得门槛极高。
蓝色部分需要对于技术的研读和经验才能进行。当然说实话,过去见过的AI设计按照这个流程能完成设计的很少,很多设计的工作被忽略了。可以看出过去的设计流程里面对于需求的分析把握以及对于技术的了解度都占了比较大的比重。
过去的方式有一项的工作就是任务分解,在各种边界条件限制下无耐不断进行任务和子任务的分解和重新定义,而就像前面所说的,每一次分解都代表了更多误差的引入,和对设计者更高门槛的要求。
B. 大模型的端到端设计流:从【需求分析阶段】到【开发实现】也可以直接的解决了,因为没有必要在拆分复杂的子任务,甚至对于【需求分析】本身,要求的逻辑能力也变弱了,更多的是要求模仿目标场景的范式被定义出来。
对于大模型设计来说,大概可以认为只要对于场景和问题的分析做的足够好,问题的拆解可能可以直接作为系统的任务定义,问题解决的逻辑路径可能可以直接作为任务系统的任务流程。而唯一有可能需要的只是需要大概了解下有哪些经典设计模式。
这个工作流其实已经相当接近普通To C或者To B产品的设计流了,在这种设计模式下,任务基本是可以端到端的直接解决,无需进行分解,或者说分解和定义的工作实际是在定义训练数据,而不是定义系统组成。
设计门槛的变化,最有可能的结果就是,人人都是AI设计者的时代可能要到了。
但是其实要我说的话,虽然门槛变低了,但是这件事的分析难度可能没有太多变化,在过去实践中我们发现在定义数据集的时候,能否注意到目标场景的大量隐前提,例如会话中的主客体关系和主导角色,这些都构成了影响prompt和训练效果的关键。只会粗浅的收集数据和范式模仿,可能永远也达不到目标效果,至少在我们的大模型实践中是这样的。
② 大模型时代设计者角色:大模型设计者&行业应用设计者
大模型极大的降低了设计门槛,让很多不具备专业知识的普通人可以加入AI设计行列。同时因为大模型的通用性+低成本微调的特性,导致大部分的应用场景都可以基于大模型的微调开展,无需再像之前一样逐个场景定制AI,因此设计门槛也出现了分化:
A. 基础大模型的设计者:这类设计者更加需要关心一些世界抽象问题,基于不同的抽象维度的深度理解去设计基础的大模型。同时这类工作依旧需要一定的算法理解,但是理解深度要求就浅的多了,因为实际操作定义可能是最终任务,而不是子任务,这让理解成本降低了很多。
B. 行业应用的设计者:这类设计者则更加关心具体应用场景的问题,对于应用场景的理解力,应用场景的会话范式和成立前提,决定了该如何定义应用场景的精调数据集,这项工作虽然门槛基本没有了,但是因为几乎只有数据一个影响因素了,数据集定义质量就是关键,而数据集定义取决于对于场景的理解深刻度有多少。
a. 大模型方案的设计
就像上面提到的,大模型让一些中间状态的子任务,词性、句法、依存、指代消解、语义角色标注等等都不再具有研究意义,甚至NER、Embedding这类在大部分通用场景下也不需要单独再做为一个独立子任务进行方案和研究设计。但是目前其实针对大模型的效果测试集中,其实依旧可以看见这些子任务的身影。
BIG BENCH测试集中的传统NLP任务(https://github.com/google/BIG-bench/blob/main/bigbench/benchmark_tasks/keywords_to_tasks.md)
研究可以更多的关注于最终任务,诸如完形填空、机器翻译、摘要总结、情感分类等等。这种最终任务的理解成本就变低了很多,比如即使没有阅读过NLP领域的研究,也大概都可以通过简短的介绍大概知道上面哪些最终任务是什么意思,以及大概的应用场景是什么。
中间任务的消失,和任务解决越来越端到端化的趋势,让大模型设计者更加需要具有对于一些技术外的抽象现实任务本质的深刻理解。例如对于Chatgpt的场景来说,对于【什么是会话】【什么是写作】的理解,就是对于这种任务场景的洞察力的体现。
作为设计者来说,算法知识需要了解的更少了,怎么能够从对于世界的理解中抽象出一些基本任务,并且对这些人类社会的现象本质具备深刻洞察和理解,成为设计者的关键素质。而这些端到端的设计最开始的应用,就是取代了算法人员自己,因为看起来需要具备算法素养的场景越来越少了,算法确实是自己革掉了自己的命。
对于目前的人机交互形式来看,我觉得可以抽象成“写作”和“会话”两种本质任务,关于总结、范式转换类的工作可以理解成是一种写作,关于知识、交互、情感类的工作可以理解成是一种会话。
在22年的虚拟人交互实践过程中,我注意到一些跨学科的应用,对于研究这类抽象事物的本质尤其重要。例如【小说写作】【动画设计】这两个行业的知识对于“会话”和“人机交互”产生了很大的帮助,《生命的幻想》《经典人物原型45种》《情节与人物》等等其他领域书籍,以及《艾迪芬奇的记忆》这款游戏,这些从其他领域借鉴的方法论和设计指南起到了很大的帮助。同时对于一些脑科学、生物学等跨学科知识,也都成为了重要的设计基础,原本打算整理下时间经验,但是文章写写停停,终于还是没写完。
今年大模型导致AI同行交流都越来越变的闭塞,而大模型的想象空间又让我明显感觉到和行内人士,及各行人士交流的重要性,因此打算开始有计划做一些分享和交流,下期打算就拿出虚拟人这块的事情和大家谈谈关于“会话”和“写作”两个话题的理解,这篇就不做详细阐述。
b. 行业AI应用设计
大模型的微调技术证明,大模型可以以很少的训练数据量实现一种全新的目标场景拓展应用,或者针对性的提高模型某一方面的特性表现,典型的例如:
- 模型特性:例如提高对话的自然度,提高会话的趣味性,或者形成一种全新的会话人设。
- 应用场景:AI法律顾问,AI家庭教师,汽车管家,家庭管家等等。
这一点我觉得是AI最大的机会,人人都可以在自己行业找到AI应用场景,而这个应用的设计门槛又被无限的下降,成本也被降低到了个人即可使用的程度,这一切都预示着大量的从未涉足过AI行业的设计者的出现,以及大量具有创造性的新场景的涌现,这是一个长期机会窗口的开始。
而我理解这并不代表大模型时代资深者就不再存在,机会可能在于可以提出比别人用更少的参数量,更少的数据量可以达到等价效果的方案。这可能是AI行业成熟期的开始,更高的效率更高的利润,成熟期市场的标志会逐渐成为方案设计的核心。
商业世界里,能够压低生产成本本身就是公司一个过硬的核心能力,能以50%的成本实现其他公司100%的等同效果,这就意味着可以以0.7倍的成本价,出让20%-30%的利润,逼迫能力不足的竞争对手退出。我个人觉得对于行内人来说,最怕的就是演变成几年前CV算法四小龙同质化竞争,一堆厂家建一个算法池,客户豪气的讲“想用哪家的随便用”这种格局。
③ 迈向抢夺定价权的时代
商业里有一句经典的话,“没有核心能力的企业,消费者会掌握定价权”。举个不太恰当的例子,这句话的典型行业可以看手机市场。雷军自己都曾经表达过,小米手机卖多少钱取决于消费者愿意出多少钱,和手机制造成本是多少钱没有关系。因此小米把寻找消费者可接受的最合理价位作为售价,然后通过规模效应把成本压到售价以下,这种变化也是行业从红利走向成熟期的标志。
对于AI行业来说,也是同样,所有参与者都希望把自己高昂的技术成本转换成公司的核心能力,也就是希望企业本身能够掌握定价权。
而对于AI企业来说,资深设计者掌握的高效设计模式决定了企业可以以更低的成本实现更好的代差级效果。
当然这里面还有谁能掌握更加核心和不公开的低噪音数据的问题,但是这些都是企业为了掌握定价权的动作。这里面对于掌握高效收集清洗数据,高效设计模式的资深设计者来说,机会也是变得更多了,更多的初级人员的加入并不意味着资深者的出局。
从目前大模型之后行业趋势来看,大家慢慢的都开始做CloseAI了,从论文到使用的数据集,都不再像以前一样完全开源供大家使用,甚至于很多的大模型连一个playground都没有。大模型对于数据质量更加严重改的依赖,导致大家会尽一切可能保护自己真正核心的数据资产。
④ 理解大模型的应用与方向
A. 理解大模型应用场景
目前最主要的大模型可以归结为语言模型(应用包括语音识别、多模态识别、蛋白质序列预测、电路设计、代码撰写、PPT生成等等)、扩散模型(图片生成、3D自动建模等等)以及两者的联合使用(视频生成)。
- 扩散模型本质我理解是一种消噪过程,我理解一些可以抽象成噪音消除预测的场景就可能是扩散模型未来的场景,这些场景是独立的,不要求上下文相关性的,简单说就是内部不要求逻辑合理这种要素存在,单纯的复现输入,因此像艺术类的工作,诸如建模、画图等就可以用这个实现。但是艺术设计的前向工作,比如灵感产生、设计理念、前期设定等等前期工作,其实没有办法解决。
- 而语言模型侧重于连续序列的预测,侧重上下文的关联性,从人类社会的视角来看,这个的应用前景明显更加广阔,所以很多人谈起大模型就谈到Chatgpt,做个不恰当的比喻,这个相当于在尝试解决解决人类大脑可以解决的问题。为什么说是不恰当的比喻,因为语言模型本质上来说,其实没法办法像大脑一样推理思考,更多是在对输入进行归纳、总结和压缩,使输出看起来符合逻辑性。
- 其实综合上面来看,很容易想到的就是扩散模型看起来偏重输出表现层的东西,语言模型看起来强在逻辑性,两个组合不就可以输出需要逻辑性表现的东西,用LLM理解语义和动作序列,用扩散模型生成每一帧的序列,例如视频、3D动作等等。这方面确实有研究,例如CogVideo、Imagen等等。
- 也有很多研究诸如斯坦福的《Diffusion-LM Improves Controllable Text Generation》或者关于应用扩散过程做Masked Language Model的研究,就是用扩散过程做语言模型,因为语言模型的Masked再预测的过程确实可以看作是一种消噪过程,甚至自监督学习本身就可以理解成是对query的一种带噪重构,所以最终两者会不会殊途同归这个还是留给专业算法去研究吧。
从替代人类工作的视角来看,我的理解和吴军老师对于大模型的解释类似,大模型尤其是热炒的大型语言模型,并不会替代信息创造者的工作,更多是替代了不做信息创造仅仅做信息加工和传递的工作。以使用人使用交互工具需要的能力来看,可以从两类人来看待这件事,一类是知识或者信息的生产者,一类是知识或者信息的消费者。
⑤ 对生产者来说,大模型是一种绝对的效率工具
我的理解是,对于世界运行的本质任务抽象度越高的大模型,未来的应用前景也就愈加广阔。例如语言模型之所以应用场景比扩散模型要广阔得多,影响力也大得多,原因在于语言本身相比于图像就是一种高度抽象的世界概括方式,因此语言模型也可以视作对于人类社会中其中一个维度的高度抽象。”图像、视频、文本、音乐、生物结构等等”一系列均有上下文序列强关联的事务,均可以被抽象地视为“语言”的一种范式。
未来是否会有一个终极抽象的大模型能够真正实现“通用的多任务人工智能”这个我不知道,但是至少从各个人类社会的抽象维度一定都会诞生出大模型,如果不是单纯的比拼垂类任务精度,而是比拼通用性的覆盖广度,那么抽象度低的大模型一定会被抽象度更高的大模型替代掉。
实际上我觉得垂类任务的精度问题也可以通过扩展模型和数据量,或者指望“能力涌现”解决这个问题,比如扩散模型我觉得其实有可能会被语言模型替代掉,因为语言模型在设计这件事上甚至可以做的更好。
A. 扩散模型之于创作
其实很好理解,相当于把设计者从工具使用里解放出来,充分发挥设计本身的能力和对成果的鉴赏修正力,典型设计的例子如《一拳超人》,ONE老师做构思和设定,村田雄介做原画,这样爆品漫画就产生了。可以说扩散模型可以发挥ONE老师这类信息生产者的创作潜力,而且效率相比于村田老师更高。
设计这件事的工具,因为人机交互工具自然度的进化,使用门槛被降低了,从图像扩撒模型的演进过程也可以看出这一点,stable diffusion需要具备一定的代码能力,而到了midjourney和dell-e,已经可以通过可以专业人士的自然语言交互直接使用了。但是我觉得对于资深专业者来说,并不构成问题:
- 1业知识最根本的,我认为是策划能力,并不是产品策划,技术架构策划,艺术设计策划、科研的策划都属于这类工作。这件事本质上是需要利用及其有限的输入信息,利用逻辑推演或者跨学科关联知识创造更多的输出信息量,而这件事本身是违反信息论原理的,因此大模型其实永远也无法实现这类工作。
- 对于工具而言,使用成本的降低是必然的演进趋势。需要门槛的专业工具本身就会慢慢被无成本的工具替代。而这种替代正是可以把专业人士从繁重的工具使用中解放,释放专业人士策划创造信息能力。
扩散模型可以说在图形、图像、视频、音乐这类专业领域,都可以用于生成然后用其他模型指导连续性,也可以多种语言模型联合使用,例如如下的输出方式,Socratic Models 研究了多种这种大模型组合使用,或者外挂其他工具的场景和案例,这个其实很容易想到,就不赘述了,可以自己去看:
Socratic Models: Composing Zero-ShotMultimodal Reasoning with Language
这个可以说是目前最高效的工具了。虽然之前火爆的主要是图像的扩散模型,但是未来像各种模式的富媒体生成应该都可以沿用扩散模型的思路实现。但是我的直观感觉是扩散模型的抽象度其实并不够高。
相比语言模型,扩散模型更像是从信息的各种形式中归纳出来的一种范式。虽然自从电视出现后,图像信息承载了人类社会83%的信息量,声音信息承载了11%的信息量,但是这种直接归纳得到的范式,我觉得抽象效率并不够高,很有可能未来会被其他更加通用高效的工具所替代掉。
B. 语言模型之于序列预测
目前国内外看到的大模型的各种应用,还属于比较基本的能力复现使用,但是即使是这样,大模型已经在相当大的范围内可以得到应用。大模型的主要能力可以抽象到四个方面:
a. 范式转换能力:相同类型的信息从一种范式转换为另一种范式,其信息量进行了一定的压缩,例如:
- 给出一段详细的文字描述,将其转换为图片或者视频输出;
- 语音识别和语音合成,其实可以算作语音转文本和文本转语音的范式转换;
- 给出详细的需求描述让AI转换成代码;
- 给予明确详细的指令和情景分析,让机器人执行动作;
- 文字和图像排版;
- ……
b. 明确范式的内容输出:给出简短的信息,要求LLM填充更多的信息量输出,因为信息量增加实际上不符合信息论原理,所以这种输出的信息本质上来源于预训练的数据中,所以这种应用会有两个局限:
- 预训练没有见过的数据,LLM没法给出很好的效果,甚至可能输出都是“幻觉”,因为LLM往往预训练数据很多,可以做这样的实验,如果你给LLM一些反人类对话习惯的会话方式,比如每句话都要强调一下相同的内容和前提,就会发现LLM在会话过程中越来越不像人的会话,甚至可能会话都不通顺;
- 对于具有明确且固定的范式可以输出的很好,例如工作周报、健身计划、季度财报、非业务代码、甚至学术论文等等,但是对于不固定的范式就很难可以输出质量很好,例如让LLM模拟某个人的写作风格很容易,但是让LLM自己写出自己独特的文采和风格的文章,质量就停留在中学生水准,差强人意。
综合以上的应用局限,可以比较好的应用这种能力的场景也大概可以想得到了。例如如果让LLM写一些能力代码或者单元测试,LLM可以很好给出,但是如果让LLM写业务代码实际上没法输出,因为业务代码里往往蕴含了相当多的研发自己对于需求的解读和信息丰富。
c. 总结归纳的能力:从大量信息中,总结提炼出关键的信息,这个能力实际上可以解决信息过多的情况下,人工不足以进行全部客观的分析解读的问题。这一方面其实如果结合得当的知识更新注入方案,行业应用场景会相当广阔,当然目前主流的知识注入方式还是外挂单独的小模型或者检索的方式给大模型注入知识,然后要求大模型基于外挂的知识进行输出信息的改写:
- 收集大量信息总结提炼,但是不输出新的信息的新闻稿撰写;
- 上市公司的财报客观解读,这些需要客观性,规避偏见和虚假的东西LLM甚至比人做得好;
- 某一市场状况的总结分析和解读;
- 大规模的综合数据分析和解读;
- 知识总结和摘要提炼,可以用于教育行业;
- ……
d. 连续序列推理预测:对于可以抽象成具有连续规律序列的事物,都是利用LLM能力的最好的场景,这种能力其实最接近LLM能力生效的本质,其限制也很明显,就是不具有规律性或者信息稀疏的事物上,这种能力并不生效,所以这种能力的本质在于事物本身是否可以看做具有连续规律性。这种能力经常被应用于需要天文数字的计算量或者人工实验量才能解决或者得出结论的问题。
- 人类语言、语音、歌曲、影视等具有连续规律的事物;
- 蛋白质设计、芯片电路设计、路线规划等等具有连续规律性,或者可以看做具有规律性的事物;
- 科研实验试错的最好助手,例如药物分子设计,大规模转基因实验等等各种科研实验领域上;
- Dota、麻将、纸牌等等策略取决于连续上个动作和下个动作的游戏AI;(OpenAI早期用强化学习做过一个Dota对战机器人,我觉得现在其实可以考虑用LLM做一个更强的)
- 植物生长情况预测,环境变化预测等等放大到大范围上的预测;
- 当然以上都是开脑洞的应用,模拟人类说话和写作本身其实就可以看做连续预测;
- …….
当然即使是科研领域,也有大模型解决不了的领域,例如考古或者天文学,都属于可观测数据极其有限的领域。例如天文学因为没有足够数量样本验证定义是特例误差,还是统计标准,其实是依靠构建出大量的定理,依靠关联定理数量的多少来决定哪些定理是科学的,从而在极少的几个观测实体上验证假设。
对于参与以统计学为科学基地的AI行业的我个人来说,这种少样本的科学方法论,拓宽了个人看待世界的方式的另一种维度。
这四个方面的能力并不是只能单独使用,可以同时应用产生在一种应用中,例如指定“给我蛋糕食谱并且配上每个环节的操作示意图”这种需求就会应用到多种能力。
其实理解了上面的大模型的能力,对于大模型能做什么不能做什么就有一些边界预期,目前的LLM远不是通用人工智能,甚至不是真正的多任务人工智能,但是其应用场景也绝对不止目前大家简单应用的一点能力复用,所有符合上述抽象逻辑的问题和问题组合,理论上都可以通过LLM来解决。
相比于扩散模型,语言模型更贴近人类社会一种连续性维度的抽象理解,因此其掀起的热炒也远比扩散模型高得多。目前的语言模型我认为主要抽象了两种本质范式,已替代了过去零零碎碎的各种场景定制范式:
1. “会话”:类比人类社会中的各种交流形式,不论是一对多的大众传媒,还是一对一的社交活动都在会话的场景可以得到体现,而会话的核心场景就是信息量不产生在一方,总有一个相互的信息交互过程,这代表了有很多隐含的社会约定俗成的规则在“会话”范式中。
我认为可能“协作”更像是这种范式的终极形态,交互双方相互填补信息空缺,综合输出一份共创结果。模型规模的扩大,对于语言深层的理解逐步在强化,但是至少从目前对于GPT4的使用过程可以发现,其实目前的GPT4还没有办法完全自主的理解这种范式。
什么是语言中更高更深层的东西,对于会话来说,就目前的一些实践经验来看,我觉得其实这个问题可以分为两部分:
1.会话成立的前提:这一点很容易被忽视,我发现对于GPT来说如果不给它指明,GPT本身也不会关注这个问题。例如【会话的主客体关系】【会话主导角色】【谁在填充信息量】【做出评价与总结】等等。这一部分的信息必须在few shot或者后续纠错中补充给gpt,gpt才能理解,或者以精调的方式激发这方面的能力表现。从这个意义上来说,可以再次证明大模型对于设计者意志的依赖。
2.语言文本中蕴含的深层信息,大概语言模型的发展也是按照这种方式,从最开始的形式(词性、句法、成分)走向含义(语义),到现在的会话情感,对于会话中的显性情感GPT已经可以完全理解,但是对于一些隐性情感及回应的情感态度选择,这块语言模型的潜力还有待被进一步挖掘。
关于“对话”和“写作”本质我的理解打算在下一篇关于虚拟人的大模型实践里详细分享一下,这里就不细谈了。
或者我让大模型理解一下更抽象的内容,比如什么叫做“协作”。也可以发现大模型其实完全不理解这件事,只是在语言层面模仿的比较顺畅,关于协作的本质大模型完全不理解,给出的只是浮于表面的人类行为模仿,以及语言顺畅度的润色。其实这个也可以看出设计者并没有为大模型定义这种任务和能力,有可能会是未来大模型下一代大迭代的方向。
下面是我让GPT4模拟一下协作流程,GPT4给出的,可以看出各参与成员之间其实完全没有发生信息量的交互行为以及共创产生新信息量的行为,有的只是一种已有信息的不断传递、总结和形式转化(这个过程我觉得其实也可以说是是语言模型的本质)。后面我又尝试让GPT4做了各种方向的调整和prompt,但是目前的GPT4始终无法理解什么是协作。
2. “写作”:或者说“类写作”的创作工作范式,我觉得用与发散思维对立的演绎思维来归纳这种范式并不是很全面。因为只要是上一个元素和下一个元素之间存在某种关联性,基于此将输入的大量信息作总结,或者在某些少量信息提示下,进行大段信息的输出,都可以归入这种范式。我觉得这种范式大致归纳为:
- 预输入信息:AAAABBCCCDDEEFFFFFGGGGG…..
- 信息总结:ABCDEFG..
- 提问:给一个符合某种边界条件的序列组合
- 输出:AYHCNHNFKEHZCDSE…
关于这种范式最近看到一篇阐述如何强化LLM的推理和决策能力的论文觉得思路和我很像,都是理解人类处理这类范式事情的本质会有哪些前提和逻辑过程,然后把它应用到LLM中。
作者提出了一个REACT方法,发现人在执行任务过程中,每两个子动作之间其实会穿插一段推理和思考,重新掌握下目前的情况,如下图右边部分就是这种思路的应用,相比于左边的COT方法的幻觉,REACT方法可以正确得出结论。虽然右侧的执行动作看起来像是一个全部用穷举法解决问题的小孩子,但是我觉得这个思考方向是正确的。
REAC T: SYNERGIZING REASONING AND ACTING INLANGUAGE MODELS(https://arxiv.org/pdf/2210.03629.pdf)
所以我觉得类比人类社会,对创造类工作流程的模仿更适合这种范式。但是只是模仿不创造新信息的价值是什么呢?我认为是可以让机器无限次的不断模拟试错过程,把人类创作的试错成本降到最低。这个其实就已经在很多领域可以极大的降低人力投入,把以前因为人力投入过多导致不可能的工作开展下去,例如复杂蛋白质的设计就属于这类工作范畴。
- “科研试错工作(实验试错、结构设计、甚至公式推导)”
- “设计试错工具(工程结构、电子电路)”
- “日常模板化工作的模仿(邮件、财报、新闻、论文等等)”
这里模拟试错的效率就是算法模型设计的效率。但是始终AI还是模仿流程,没法真正的做创作,因为究其根本,语言模型还是在做复述而不是创作。如果我们可以把全世界做信息创造者创造信息的输入给到模型,可以实现创作吗,我觉得这个可以替代掉重复性信息创造的工作,让创造者更加关注于创造新的信息。
那么对LLM来说,有哪些是能力边界之外的呢?
1. 非连续性场景:对于人类社会来说,有相当大量的场景实际上是非连续的,这也是为什么说LLM无法解决创作性问题的一个原因,例如我们可以发现LLM可以写论文,但是创作一个笑话却很困难,因为笑话往往是非连续性的,虽然笑话也具有一定的固定范式,但是LLM往往只能模仿这些范式:
2. 需要全局视角或者审视全局上下文情况的场景:因为GPT是单向语言模型,这意味着当GPT输出内容的时候,实际上无法像人一样,对已经输出的内容进行修正。
例如人可以在推理过程中,发现上文矛盾的地方,涂改修正推理路径,但是对于GPT来说只能硬着头皮继续解释错误,【幻觉】的出现我觉得和这个有脱不开的关系,有可能对于需要全局视野的事实,大家最后依旧会用到双向语言模型的技术,因为双向意味着可以检查和修正上下文,只是可能不是Bert那种判别式模型的形式,可能是类似过往的XLNET的双向自回归的思路开展,例如T5就是一种双向的语言模型,当然这个问题还是期待算法大佬的实践与思考分享。
3. 引用微软GPT4的报告内容做个结语:适用于LLM的例子包括写摘要、回答事实性问题、根据给定的韵律方案创作诗歌或解决遵循标准过程的数学问题。而对于不连续任务的例子包括解决需要公式的新颖或创造性应用的数学问题,编写笑话或谜语,提出科学假设或哲学论点,或创建新的写作流派或风格。(Sparks of Artifificial General Intelligence: Early experiments with GPT-4)
AI行业和一般的行业有一个巨大差异,在于真正理解AI和应用范围的人很少,客户一般情况下更是只了解一些具体应用的案例,这就导致AI行业找应用场景一直处于拿着锤子找钉子的状态。
一般AI行业的设计者都是先设想会有很多人在某某方向有很多应用场景,或者自己找一些侧面佐证数据,或者找几个关系好的客户聊一下意向,本质上其实是设计者先按自己的想法设计,然后再给市场推广告诉市场有什么什么用,期望市场接受。而一般其他行业客户对于自己的需求本身有比较明确的分析和预期,可以有相对明确的诉求,这一点和AI行业很不一样,AI行业客户往往等着设计者去介绍有什么样的特性,然后判断下自己是否可以用得上。
在大模型时代,这个问题得到缓解了吗?我觉得其实并没有,虽然大模型的火爆让很多人知道了如何简单的应用AI,但是如果要能够自主分析需求,依旧需要研读较多的基本资料,这一点可以说是AI的需求分析门槛了,即使在大模型时代,如果知识照猫画虎的看看新闻报道,依旧只能停留在简单的基本能力应用模仿上。
⑥ 大模型会有哪些方向
关于大模型的演进,经常提的是在五感信息方面扩展,比如在语言基础上叠加视觉多模态,或者叠加触觉类的动作能力。
我觉得这件事可以从世界信息的维度来看,虽然大模型都是在压缩世界知识,但是世界知识收集的维度有很多来源,比如互联网上的信息(统一归结为线上社交互动)、线下人与物之间的交互、线下的社交活动行为、人与商业服务实体的互动、商业关联实体间的互动等等。不同维度的信息需要搭建不同的数据收集通道,以及不同的数字化的方式,而大模型可以压缩的各个维度的世界知识越多,大模型可以输出的能力也就越丰富。在不考虑信息收集成本的前提下,大模型无限收集和压缩世界知识确实可以实现全知全能的信息复现能力。
对于国内来说,有另一层的问题,就是很多线下信息的线上化程度不足,比如国内的图书馆信息因为线上化的程度小,就没法像没过一样把这些信息全部输入大模型充分利用。这个有可能也会是一种机会,就像美国当年的加利福尼亚淘金热,淘金的人赚钱的没有多少,而送水、住宿、卖稿子的都赚的盆满钵满。另一方面,这种淘金热也直接让美国西部出现了新兴的城市圈,对现在的美国长期产生深远影响。我觉得可以预期就算大模型从业人员确实不会有很多人赚到钱,但是对于整个社会来说一定会产生长远的正向收益。
数据的重要性这件事,从最近OpenAI发布的“过程监督(PRM)”的训练方法也可以侧面看出数据的重要性。对于数据质量的要求越来越高,不止于最终结果,已经拓展到推理过程中。不过这也变现的导致数据的标注成本越来越高,大模型对于高质量数据的需求,随着大模型国产化的进程,市场空间一定会越来越大。
Let’s Verify Step by Step(https://arxiv.org/pdf/2305.20050.pdf)
第三个问题就是,国内的AI竞争格局来说,跟风扎堆现象很重。像CV四小龙当年最后落得变成各个客户算法池中的一员,这种竞争格局肯定是不希望在大模型上看到的。
打造一个基本能用的通用大型语言模型,可能只是人力和成本问题,在路线明朗的现在,难度上并不高,这也是给了行业扎堆的理由,用钱可以解决的问题一般都不会成为问题。
但是在国内的算法厂商和应用厂商之间,都会有一层中台系统,这个系统负责调度大模型的能力,以及进行业务的分配。实际上,最后真正掌握了中台系统建设和话语权的厂商,才是最后控制行业话语权的厂商,对大模型来说,往往没有AI能力的厂商对于大模型理解不充分,具备大模型能力的厂商又看不太起这种纯粹的力气活,我觉得这里面可能就看谁最先具备了“知识+投入决心”,谁就有可能是这盘棋的最后赢家。
除了上面的几个大问题之外,关于大模型的能力演进方向,我觉得微软总结的算是比较全面的,现在的各大国内公司在大模型内不断增加的功能和特性也都可以在里面看得到,加之我自己对于各个维度的一些理解,搬了过来:
- 置信度校准(Confifidence calibration):通过引用外部工具(例如搜索引擎)或者其他方式缓解幻觉问题,或者让模型判断什么时候对输出结果有信心,RAG的检索增强技术就是一种最常用的校准方式。
- 长时记忆(Long-term memory): 赋予模型需要长期记住的一些知识或者前提,例如解读历史的时候,需要对一些基本背景有一些了解,同时简化情景的一些假设往往才是讨论的前提。
- 持续学习(Continual learning): 这也是经常被谈及的通用人工智能准则,可以像人一样从经验中学习。
- 个性化(Personalization): 基于用户画像的个性化,这个概念对于国内来说可太熟了,放到交互上, 就是每个面向对象交互的各方各面都力求个性化。
- 计划与概念发散(Planning and conceptual leaps): 这个其实说的就是具备非连续性的能力,或者以人的思考方式来类比,就是具备脑暴那种发散性思考能力。
- 透明度、可解释性与一致性(Transparency, interpretability and consistency): 目前的GPT可以认为是事后解释,为自己的行为进行合理化,但是这种在行为学里明显会有“过度合理化”的问题,如何让解释性做在输出之前,让模型真正做到先解释思考再输出就是一个方向。COT可以认为是一个很好的开端,但是远远不够。
- 认知偏见和非理性(Cognitive fallacies and irrationality): 因为数据对大模型的巨大影响,人类社会一般的偏见,例如职业和性别的偏见就会影响大模型。
- 对敏感输入的挑战(Challenges with sensitivity to inputs): 目前的大模型的设计方式导致prompt内容十分敏感,但是如果我们缺乏专业的Few shot知识或者时间来去撰写它,是否也能让大模型对于输入很敏感。
另外,从目前对于大模型的个人分析,我觉得有几个方向也值得大模型的研究者关注:
- 思考的连续性:如果仔细对比GPT4和Chatgpt,可以发现两者最大的区别就在于GPT4的所有输出都是经过一系列连续步骤的思考的,而Chatgpt很多时候则是直接输出结果,这种直接输出的结果经常都是错误的。这就意味着思维链这种思考模式,以及这种连续性思考能力的不断深入的推理能力,可能是大模型进化需要具备的最重要的能力,我理解这也是为什么Openai做了过程监督(PRM)进一步强化这个过程。从表现来看,Chatgpt的输出永远都是不连贯的,像是一个在给自己的结果找理由的小孩,而GPT4则一定程度上实现了一步一步的连续性推理。
- 训练数据的范式:Chatgpt倾向于直接输出错误的结果(尤其在数学计算中),可能与训练数据中基本都是倾向于要给出答案的范式有关。在我体验的cluade和GPT的差异中,我也可以明显的感觉出来训练数据不同的范式倾向,倾向讨论问题还是倾向输出结果,倾向于与人协作补充信息还是坚持自己的看法不断找理由,我觉得设计者对于这些数据的定义倾向就决定了大模型的倾向。其中一个最明显的例子就是即使是GPT4强化了思考连续性,甚至给出了Few-shot,在很多数学计算中,还是会忽略计算过程直接给一个错误的结果,而如果让GPT把过程呈现出来,GPT就会输出正确结果。
- 动态规划能力:数学建模领域中,除了连续性的思考以及引用外部各领域物理学定律知识之外,还有一种重要的能力就是动态规划能力,可以实时的格局当下的情景做出当下的最优决策,即使以大模型的计算能力来说,这种能力对于处理现实的复杂问题也有明显的优势和好处。
- 大模型、人和环境的交互:鉴于我一直是人机合作的忠实支持者,我始终认为人机融合的交互方式,能够相互补位,并且能够与环境进行互动的理念才是发展的终极方向。
⑦ 建构大模型的生态
对于大模型来说,依据大模型的数据和调整方式,可以分为三种“基础大模型”、“微调行业大模型”、“大模型+Prompt插件”,分别对应了大模型中的三种数据“预训练数据+SFT”、“微调数据集”和“实时交互的Prompt”。三种模式分别有对应的应用场景和所需的最低成本投入,所以其实一般看一家做大模型的公司投入情况,大概就可以猜出他们的实现方案是用的哪一种,以及大概效果会怎么样。关于效果其实更多的是说模型对于语言的深层理解如何,单纯的模仿某种行业的场景进行回答,这个其实在较数B量级就可以做到,然而这种模仿小模型实际上做一些推理或者解决行业深度问题的时候就完全力不从心:
- 基础大模型:论证复现一个gpt需要多少钱的文章其实很多,大家可以自己去查,大致来说不到数亿的投入基本都说明这个厂商并没有在做自己的基础大模型;
- 行业应用模型:这个其实成本空间上下限就很大,Lora这种微调可以在几个小时几百块就微调出一个效果看起来很不错的行业应用,并且Lora可以不将大模型私有化部署,因为本质上只是一种外挂,并没有动到模型本身,和F-tune、P-tune很不同。但是如果采用Tuning的路线,往往从行业知识建立到定制优化需要数十人的团队来做,但是这种优化方式其实稳定性和应用潜力都会更高一些。
- Prompt插件:更多针对个人应用者,因为大模型对于Prompt高度敏感,所以给大模型一个prompt设定,大模型基本可以较好的完成绝大多数的个人问题。这也就导致大模型的插件(或者function)生态很强。
不论大模型(特指LM)如何强大,本质上依旧是一个预测下一个单词的语言模型,但是其对于语言的深刻理解,实际上赋予了它可以应用到各行各业的潜力。成本下降、轻定制、交互界面自然化这三件事实际上加速促进了这个进程,这一未来体系中,除了基础大模型的提供者之外,可能会有如下重要的参与者出现:
- 专家系统提供者:训练自己的expert模型,成为MOE架构下的专家系统之一,这种相对封闭生态模式类似于加入基础大模型的开放平台,成为服务供应商之一,按调用次数收费;
- 行业垂直应用:基于Finetune、P-tuning精调大模型的访问方式,以低成本实现垂直行业的应用;
- Lora开放生态:为什么单挑Lora出来了,因为现在非AI行业的产品都需要自己的定制方案,但是一般大模型都作为核心资产存在大模型厂商云端,而lora这种在大模型之外外挂微调的方式,就可以做到不影响原始大模型的基础上,开放出去进行微调,同时这种轻量级微调的成本也更低;
- Function开发者:大模型的一些问题也可以指望通过生态解决,例如GPT4最近推出的Function Call这种类似外挂知识+检索的方式,这个同时相当于赋予了大模型在语言之外可以直接“操作”的权利,作为提供这种接口的开发者有点像成为安卓或者IOS的开发者;
- 个人应用者:对于不希望与大模型定制做交互的普通应用者,可以以Prompt插件的方式在会话中访问大模型的某一部分能力,因为大模型对于Prompt具有极高的敏感性,仅仅Prompt提示以及in-context-learning就可以让大模型指定领域效果相当出众,所以才会有相当多人提及Prompt工程师的出现。
图片摘自C站社区,随便找了一张图
实际上,我认为后面大模型调整的界面有可能也会越来越UI化,就像SD的webui“AUTOMATIC1111”,通过戳戳点点实现模型调整,当然其实这并不意味着不需要具备算法知识了,以图像生成举例,相当多的SD微调模型都是一些基础模型的简单衍生,真正调整的人依旧需要“面向模型debug”,只是把别人告知的参数直接生套在任何场景上,效果必然不佳。
另一方面,大模型的一些典型问题,例如知识幻觉,相当多的论文解决知识幻觉的思路也是加入知识外挂检索环节,这些生态必然对大模型的应用丰富性有增益。但是究其本质,我觉得这些问题还是需要大模型本身去解决问题,例如单向语言模型无法回顾和修改上文输出,导致推理过程错误,这种是否就应该考虑双向语言模型的发展方向。
⑧ 大模型的评估方法
大模型的评估原则和小模型没有本质区别,依旧是“评估模型性能的离线指标”和“评估实际业务场景的业务指标”,两种方式结合。但是实际上因为大模型的规模和通用性,评估大模型实际上是一件更加复杂的事情,这方面有相当多的论文提出了各种指标作为评价依据,还有一些提出了很多主观性指标例如“攻击性”“不确定性”“毒害性”等等,但是在这之中,微软对于GPT4的测试方法我觉得是最为合理的。
对于离线指标:
- 除了模型基本性能的准召、F1、AUC等等各项指标之外,针对每一项子任务可以采用对应的指标例例如文本生成类的BLEU、ROUGE等等,图像类的CIDER、METEOR、SPICE等等。
- 另外针对于每种子任务,目前专门测试集在逐步完善。例如BIG-BENCH(https://github.com/google/BIG-bench/tree/main/bigbench/benchmark_tasks)上面有214多种各个维度的任务数据集,这些测试集都可以用来测试大模型在某个维度的具体效果如何。
对于业务指标:这里不讨论类似CTR(点击率)这种上线后用户操作反馈的指标。
对于类似BIG-BENCH这种集合来说,我感觉其实对于真正测试大模型的效果可能过于简单了,更像是测试大模型覆盖了哪些子任务的子任务测试集,类比的话我感觉更像是功能测试集,而不是效果测试集。
实际上BIG-BENCH中很多都是类似【俄语问答】、【上下文冲突】等等具有明确的正确错误概念的任务。例如上面图片中是我翻阅了我认为相对正误边界模糊一些的【Sufficient Information】的任务中的一些示例,依旧可以看出问题其实相对于现实真实问题来说,测试集中的问题边界清晰度高得。
例如现实问题中不会出现“我有一些书,我丢了一半,我现在还有几本书”这种显性缺失的情况,而更可能是我上面以GPT4的会话能力举例的“今天我是第一天上班,我应该穿什么衣服”,要解答这个问题实际上需要至少知道“个人性别身高体重”、“公司着装规定”、“个人着装偏好”、“天气情况”等等前置信息才能给出答案,甚至还需要考虑不同国家地区的文化差异。
而这些隐含信息LLM是否能够判断出来是缺失的,我觉得这种问题才是真正能够测试大模型能力的问题。
上面的阐述的核心观点在于,我认为目前还没有人提出一个真正可以测试大模型各个方面真实能力的测试集合。它可能需要像专家测试初学者的人类一样,以专业者的视角提出各种深度的问题组成一个测试集合来进行测试。
我很希望聚合各领域专家的知识,创造这种公开的能力测试集,以能真正推动大模型在实用上更进一步。实际上,大模型在很多的真实事务场景中都表现并不好,另一个典型的例子是如果我让大模型写一份年终总结,大模型甚至会把楼下包子店的小李也放进去,大模型不认为有主次的概念,我觉得这些真实场景的模型能力都有待加强。
因此我其实十分推崇Miscrosoft对于大模型的测试评估方案,针对大模型的认知学、数学、情感等等各个领域以评估人类心智的题目方式来对大模型进行测试评估,这种方式是更加合理的。《Sparks of Artificial General Intelligence: Early experiments with GPT-4 》这篇测试确实写的很好,我觉得与其我断章取义,不如去看下原文https://arxiv.org/pdf/2303.12712.pdf。
另一层面,对于大模型真实应用场景的业务指标,需要像微软一样以领域专业人士测试人类的方式,来构造对应的测试集合和数据指标,以来评估大模型某一方面的能力,当然这首先可能需要测试人员成为这一领域的入门专家,了解如何以一个专家的视角来审查大模型的能力水平。
四、后记
1. 以另一个视角对大模型扯点别的
因为最近年初对于法律领域也稍微涉猎了一些功利主义“最多数人最大善”的问题,这些启发我从另一个层面的思考大模型这件事:
- 大模型本身依旧是效率的化身,效率是否总是有益的?这件问题其实很有意思,比如如果我们以电商减少了线下人与人之间的社交场景来看待电商,就会发现在生产大于消费的时代下,电商实际上对于社会整体收入创造是减少的。那么对于大模型来说,其实也会有类似的情况,如果所应用的行业、甚至公司个体,整体是生产大于消费的阶段,那么再提效其实只会降低整体的产出收入总额。
- 大模型的高投入会带来一个问题,真正可以进入的玩家数量很少,普通人甚至提出一个自己的假设都没有办法去实施验证(普通人总没办法买一堆A100每天做Fintune甚至预训练来实验自己的想法对吧)。这种格局实际上很容易导致垄断现象,对于商业而言,垄断的问题不在于寡头借助垄断地位赚高额利润,相反,过去的垄断行业巨头都倾向于不断提高产品效率和质量,而降低产品的售价。借助这种方式可以让后来的玩家进入门槛越来越高,对于大模型来说更是这样,当你花费了相当多的投资人的钱和时间,做出来一个东西,但是头部玩家已经把效果提升了一倍,成本压低了一倍,这个事情就完全没有价值。
2. 谈一谈后续计划
目前确定的一个计划是,这次文章虽然写了很长,但是因为过度压缩了,其实真正想展开谈的内容并没有展开谈,因此关于【对话】【写作】【情感】这些人类社会抽象问题的理解和实践思路,打算拿出来虚拟人设计的一些实践经验,和大家分享讨论下我对这些本质问题的一些理解。在我们的实践中,这些发现和理解每一条其实都让输出的效果产生了极大的变化。
再一个可能得计划是,因为自己一直保持着商业学习的兴趣,一直也希望和更多人探讨,只是这方面咨询公司和顾问大佬太多,我的观点也基本和大佬们雷同,说实话没啥信心能谈啥新东西,暂定看看再说吧。
在我写这篇文章的过程中,其实我也重新审视了下写作这件事,发现这篇是纯粹的分享类型的写作方式,要点穿插在文章内部,如果是科普文章或者教科书可能就会根据要点来组织文章,如果是汇报和总结就会按照总分组织文章,这种观察我觉得是大模型时代设计的重要动作。这些范式的定义行为决定了大模型对于【写作】这件事的理解是怎么样的,也就是所谓的“设计者意志”问题。
关于这篇文章,一开始也提了本质上只是个人抱着希望更多专业人士来找我交流探讨的目的写的。虽然大模型出现之后加了一些讨论群,但是群里充斥着基础的问题解答、新闻稿搬运,还有外行看热闹的讨论。让我对这些社群相当失望,关于大模型本身的运作机制,一些未来方向的实践,这些问题都需要:
- 一个高质量的讨论环境,这个环境应该具备一些基本要求,比如讨论人大模型的基本论文至少需要读过,当然可能是我没有接触到,如果有的话,希望能够进入圈子:
- 一个实验想法的环境,这个环境具备大模型基本的训练和调试资源,可以以相对低廉的复用成本进行各方向应用的尝试,这种实践的环境对于大模型来说实在宝贵;
这些变化对于偏好不确定性的人(比如我)来说,我觉得是一个十分有趣的变化。欢迎各位通过各种方式联系到我,期待与各位的交流与研讨。
本文由 @MrMa 原创发布于人人都是产品经理,未经许可,禁止转载。
题图来自 Unsplash,基于CC0协议。
该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务。
干货满满,正在研读
干货慢慢,正在研读
学习了
个人微信号:欢迎找我讨论
hopemrma