胡侃 AI Agent

先前龙虾爆火,让 AI Agent(以下简称 Agent) 的概念盛极一时,在热潮慢慢褪去的当下,作为数字员工的 Agent,其哪一项核心因素最影响我们持续使用它们呢 ? 于我而言,应该就是 Agent 的准确率了.

想象你有一位真实的人类员工,你想让他完成一项复杂的任务,如果员工很’靠谱’,那么你会很放心的让他全权负责,自己等着验收结果就行;如果员工不那么’靠谱’,那么你会时不时的去审计员工进度,整个过程自己可能会比较累;如果员工不’靠谱’,那么你可能宁愿自己干,也不会把任务交给他去处理.

而上面所说的’靠谱’,简单说来其实就是做事的成功率高,如果说一个人特别靠谱,那么我们可以简单理解其做事的成功率接近 100% ~

当然,这里我简化了’靠谱’的定义,但对于 Agent 来说,我觉得只要其准确率够高,那它就是’靠谱’的,很多事情我都会愿意让它去做.

那么 Agent 的准确率的现状如何呢 ? 让我们一步步的来看下 ~

众所周知,目前的 LLM(大语言模型) 本质上就是在按照概率分布做文字接龙,所以天生就会有一定的出错概率,并且其出错概率针对不同类型的问题也是动态变化的(并且还受提示词等因素的影响),这里我们暂且简化一下,就认为 LLM 对于任一问题处理的成功概率都是一致的,为固定数值.

有没有办法提高这个成功概率呢 ? 方法有很多,最耳熟能详的一个方法当然就是训练新模型了,让模型的基础能力越来越强,目前这个赛道也是卷的飞起,各类模型你方唱罢我登场,让人眼花缭乱;另一个方法就是使用所谓的’专家’模型,简单理解我觉得意思就是使用特定模型解决特定问题;另外的还有诸如工具调用,增强提示,推理引导之类的方法,总之经过各类优化,最后我们还是可以简单认为模型对于任一问题处理的成功概率(优化后)都是一致的,可以设为 PssP_{ss}Pss.

然后就是 Agent 基于 LLM 来解决某一任务了,假设这项任务被拆解成了 N 步,让我们来算算最终任务的成功率(设为 PesP_{es}Pes)是多少 ?


Pss

Pss

...

Pss

Start

Step1

Step2

StepN

End


由于步骤间是串联关系,所以最终任务的成功率(PesP_{es}Pes)是各步骤的成功概率之积 :

Pes=Pss∗Pss∗Pss∗...∗Pss⏟N个=(Pss)N P_{es} = \underbrace{P_{ss} * P_{ss} * P_{ss} * ... * P_{ss}}_{N 个} = (P_{ss})^N Pes=NPssPssPss...Pss=(Pss)N

由于 PssP_{ss}Pss 肯定是小于 1 的,所以任务步骤拉的越长,准确率就会持续降低,有没有办法改善呢 ? 一条路自然是缩小 N 的数值,我们可以想办法整合一些步骤,不过这个方式限制性比较大,因为不是所有问题都能够方便的进行步骤整合;另一条路则是尝试提高单步骤的成功概率.

说到这里你可能会有疑惑 : 单步骤的成功概率不就是 PssP_{ss}Pss 吗 ? 先前我们已经预设(简化)了它是一个固定的成功概率,怎么到了这里又可以进一步提高了 ?

当然, PssP_{ss}Pss 确实是一个固定的预设概率,我们不会去改变它,但是我们还是可以进一步提高单步骤的成功概率,方法就是给单个步骤引入检查和循环机制,简单来说就是对于原始步骤的输出,再用 LLM 做一次正确性检查,如果不通过就重新执行,流程大概就是这样 :


Loop

Pss

Pss

...

Pss

Step2

Step2'

Start

Step1

StepN

End


让我们来重新算一下最终任务的成功概率 :

原先 Step2 的成功率是 PssP_{ss}Pss,由于加入了额外的一步 Step2’(假设其成功率也是 PssP_{ss}Pss) ,那么最终第二步(包含 Step2 和 Step2’ 两个步骤)的成功率(设为 Pss′P_{ss}'Pss)为(简化计算) :

Pss′=1−(1−Pss)∗(1−Pss)=1−(1−Pss)2 P_{ss}' = 1 - (1 - P_{ss}) * (1 - P_{ss}) = 1 - (1 - P_{ss})^2 Pss=1(1Pss)(1Pss)=1(1Pss)2

让我们来简单计算一下 Pss′P_{ss}'PssPssP_{ss}Pss 之间的大小关系 :

Pss′−Pss=1−(1−Pss)2−Pss=(1−Pss)−(1−Pss)2=(1−Pss)(1−(1−Pss))=(1−Pss)Pss>0∵Pss∈(0,1) \begin{align*} P_{ss}' - P_{ss} &= 1 - (1 - P_{ss})^2 - P_{ss} \\ &= (1 - P_{ss}) - (1 - P_{ss})^2 \\ &= (1 - P_{ss})(1 - (1 - P_{ss})) \\ &= (1 - P_{ss})P_{ss} > 0 && \because P_{ss} \in (0, 1) \end{align*} PssPss=1(1Pss)2Pss=(1Pss)(1Pss)2=(1Pss)(1(1Pss))=(1Pss)Pss>0Pss(0,1)

可见最终的成功率 Pss′P_{ss}'Pss 要高于原始的成功率 PssP_{ss}Pss.

更一般的,如果我们总计引入 M 次 LLM 处理操作,即并联多个 LLM,那么相关步骤的最终成功率(设为 Pss(M)P_{ss}^{(M)}Pss(M))变为(简化计算) :

Pss(M)=1−(1−Pss)∗...∗(1−Pss)⏟M个=1−(1−Pss)M P_{ss}^{(M)} = 1 - \underbrace{(1 - P_{ss}) * ... * (1 - P_{ss})}_{M 个} = 1 - (1 - P_{ss})^M Pss(M)=1M(1Pss)...(1Pss)=1(1Pss)M

对应的概率大小关系(Pss(M)P_{ss}^{(M)}Pss(M)PssP_{ss}Pss)有 :

Pss(M)−Pss=1−(1−Pss)M−Pss=(1−Pss)−(1−Pss)M=(1−Pss)(1−(1−Pss)M−1)>0∵Pss∈(0,1) \begin{align*} P_{ss}^{(M)} - P_{ss} &= 1 - (1 - P_{ss})^M - P_{ss} \\ &= (1 - P_{ss}) - (1 - P_{ss})^M \\ &= (1 - P_{ss})(1 - (1 - P_{ss})^{M - 1}) > 0 && \because P_{ss} \in (0, 1) \end{align*} Pss(M)Pss=1(1Pss)MPss=(1Pss)(1Pss)M=(1Pss)(1(1Pss)M1)>0Pss(0,1)

同样的,我们也可以比较一下 Pss(M)P_{ss}^{(M)}Pss(M)Pss(M−1)P_{ss}^{(M - 1)}Pss(M1) 的成功率大小 :

Pss(M)−Pss(M−1)=1−(1−Pss)M−(1−(1−Pss)M−1)=(1−Pss)M−1−(1−Pss)M=(1−Pss)M−1Pss>0∵Pss∈(0,1) \begin{align*} P_{ss}^{(M)} - P_{ss}^{(M - 1)} &= 1 - (1 - P_{ss})^M - (1 - (1 - P_{ss})^{M - 1}) \\ &= (1 - P_{ss})^{M - 1} - (1 - P_{ss})^M \\ &= (1 - P_{ss})^{M - 1}P_{ss} > 0 && \because P_{ss} \in (0, 1) \end{align*} Pss(M)Pss(M1)=1(1Pss)M(1(1Pss)M1)=(1Pss)M1(1Pss)M=(1Pss)M1Pss>0Pss(0,1)

上式意味着更多的处理步骤会带来更高的成功率(成功率的增长程度会越来越小),但是这样做也是有代价的,因为更多的处理步骤需要花费更多的计算成本(算力,时间等),这仍然是一个需要权衡的问题,与之类似的方法还有很多(譬如让模型每次生成输出后固定做一次反思等等),但各类方法对于成功概率的影响我觉得都是类似的,总的来说都可以提高成功率,但是也都有边际递减的问题.


AI 行业目前如火如荼,但人心(包括 AI 行业的从业者)却总有些凉,因为总是会有些被淘汰的焦虑,颇为矛盾拧巴.

但不管怎么说,目前以 数据驱动 为底层范式的 AI 模型确实解决了很多过去以 规则驱动 方式所无法解决的问题,至于这个范式最终能够走多远,目前还不得而知,尽管 AI 行业目前让人五味杂陈,但能够亲眼见证这个’时代大局’的变革发展(哪怕它最后归于平淡甚至衰落)也算是一件有趣的事了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值