[BLOG] AGI 未来展望
2023 AI 元年差不多也接近尾声了。回望一下,从年初ChatGPT 的 hypes/vibes 不断刷屏,到各种多模态模型的惊艳表现,让大家有一种 “科技奇点” 已经到来,AGI即将实现的感觉;AI领域欣欣向荣的希望,伴随着就业市场低迷,通胀/经济衰退的悲观环境,让人有一种魔幻的感觉。
LLM 是正确的技术路线吗?
Deep Learning 的成功,真的是可以总结为 “大力出奇迹”。从 AlexNet 开始,到现在的 GPT-4,都是在不断地增加模型的参数量,增加训练数据量,增加计算资源,来提升模型的性能。AI 模型没有实现任何传统意义上的“算法”。没有人知道这些 Model 内部的一层又一层的 embedding mapping 到底是在干什么,但是这些东西叠在一起就是有效果。
这种 “大力出奇迹” 的方法,是不是就是正确的方法呢?我之前一直觉得不是,但是重新想想,不好说。从直觉上来说,AI 模型应该可以 归因(causal reasoning), 可以根据inputs,用一些逻辑的方法 (symbolic representation + formal logic),推理出想要的结果。
但是,直觉上的 “最优解” 大概率不是最好的,尤其是针对复杂系统,因为latent variables 太多了。引用某游戏里面台词:“proper things are usually uncommon”。生活很多你习以为常的事情,其实都是不合理的,但是你不会去思考,因为你已经习惯了,然后下意识的觉得 “合理” 了。这个问题没有答案。“合理/正确” 是一个非常主观的概念。能爬到山顶的任何方法都是正确的,无论你是坐直升机上去,还是铺轨到山顶,然后坐火车上去。
LLM/GPT 颠覆硬件架构?
前段时间经常听人讨论,想用 GPT 模型取代 OS/底层固件,让人可以直接说话来操作 计算机/硬件。这想法从硬件的角度来说 其实挺荒谬的,但是如果抛开技术不谈,也有一些讨论价值
Natural Language 是对世界的抽象,而机器的编程接口 (API, ISA, etc) 是对硬件功能的抽象。两者抽象的Scope 不一样,但是只要在Scope 做一些限制,就可以让两者对应起来。
Andrej Karpathy 最近同样提到了这个想法,他说 LLM is more of an OS than word predictor. 尽管他图的意思其实是说 “LLM是一个 computer system” – LLM/GPT4 是 20Hz tokens/s CPU, Context window 是 RAM, 然后 Retrieval augmented generation (RAG) 是 File System。这个说法是个完美的 market gimmick,距离真正的 OS/PC 硬件还差得远。
反过来想一想,GPT作为一个上层应用,居然要反噬/颠覆 他的底层硬件架构?当然这在现实中也不少见。像最初的 gcc compiler 是用 assembly 写的,然后 gcc compiler 用 C 重写了自己;或者像人从基因中衍生出来,但是最后却要改造基因
当然 GPT 并不是完全一样,因为它本身只是一个 probabilistic token predictor, 而不是一个 deterministic 的编译器,如果有办法把 GPT 的输出“稳定”转化成的底层硬件 protocol (ISA, API,甚至 wire signals),那么这种 “上层应用颠覆底层架构” 的设想说不定是可以实现的。
LLM 的随机性和幻觉
很多人都说 LLM 是第四次工业革命,但是实际上 LLM 更应该是一种信息革命;还有一点非常重要的是,跟其他革命性技术不同的地方是,LLM 的可控性太差。而调节 LLM 可控性的方法 (Fine-tuning, Pre-Training) 成本太高,而且不一定有效。
其实 LLM 和人非常神似了。人每一天都在源源不断的接受 training,自我矫正,然后在“正确”的反馈激励下,不断改进。如此积累 10000 个小时,才能成为某个领域的专家。人在做事情的时候存在大量的随机性,你的大脑 Default Mode Network (DMN) 不断空转,产生杂念和灵感。
作为一个机器,我们不想要随机性。但是需要要创造一个能应对 复杂环境的 AI Agent,随机性是必须的。但是只有随机性还不够,最好还能有一套(基于embeddings的)逻辑系统
但是 LLM 的 re-training 太贵了,即使有self-supervised training 的方法,极大的减少了数据标注量,但是仍然需要大量的计算资源,然后还需要大量的时间。想要像人一样,每天不断的在环境中学习,甚至和其他个体交互学习,目前来看是不可能的。
可控的 GPT
我不认为 GPT 可以完全消除 hallucination,相反的,有 hallucination 其实是一件好事。我们可以考虑 GPT 外围系统的可能性,在更高的层次上,用更可控的手段去减少 hallucination。比方说
- 使用 GPT or non-GPT 的 MoE + rule-based post-processor 的 hybrid system
- 用一个 GPT 来做 “meta-learning”,来控制其他 GPT 的输出
- 在中间层 embeddings 或者 sampler 上做限制/变换 来增加可控性(类似于prefix tuning)
一旦有了更高的可控性,更低的训练成本,人们就更有可能(大规模)制造出(便宜的)硅基生命。 这些办法都是在 GPT 的基础上,会不会有更好的 AI 模型?也不好说。
[11/24] 更新,今天刚发现一篇来自Google/OpenAI 的论文做了一样的事 idea 被 scoop 了 lol:“Controlled Decoding from Language Models” https://arxiv.org/pdf/2310.17022.pdf
AI 时代的 Software Stack
传统的 编程语言/编译器/操作系统/硬件架构 的软件栈,是为了解决 “如何控制机器做事情” 的问题。而 AI 时代的软件栈,需要满足新的需求,即 “如何让机器在人的监督下,自动做事情”。这个需求的变化,会导致软件栈的变化。
我们需要新的软件架构,让 AI 根据 “自然语言输入” 生成定制软件,生成的软件可以记录用户使用的过程,然后再次学习,不断改进,自我演化。
现有流行的编程语言,c/c++/rust (system programming) 或者是 python/lua/ruby (scripting language), 都是 imperative language,并且本身的 semantics 距离 natural language 太远。同时这些语言中,Graphic UI 的支持也不够好,很难用来做 “可视化编程”。所以我觉得 AI 时代的编程语言,应该是一种 “可视化编程语言”,同时也是一种 “接近自然语言的编程语言”。
我这段时间一直在设想一种 新的声明式的 DSL,作为 GPT 和传统 OS 之间的中间件,完成各种操作的流程化,自动化
- GPT 友好: 普通用户可以用自然语言来描述程序逻辑,然后 GPT 生成的 DSL 程序。
- 简单:具有可读性,方便普通用户手写/修改。
- 可交互的 runtime
- 要能够记录用户的操作,反馈给 AI,从而不断改进自身。
- 可以根据需求生成 UI; 用户可以不需要做复杂的 UI 设计
AI 的终极 ToC应用
ChatGPT 已经足够成功,但是他还远没有达到 Google Search 或者 TicTok的高度,无论是从用户粘性,还是从用户注意力的角度来说。就我个人而言,我用 GPT 帮我代写很多东西。但是在用搜集信息的时候,我还是更喜欢用 Google Search,因为 GPT 的输出无法验证真伪,同时没有配图,没有交互UI,复杂概念理解起来很不直观。
还有一个观点,就是 GPT 是一种 “主动型” 应用,相比于 TicTok 这种直接把 “porn” 和 “猎奇” 内容推送到你面前的应用不同,GPT 要求用户主动输入,然后才能得到输出。这种 “主动型” 应用,对于用户的要求更高,用户需要有一定的知识储备。而现实情况是,绝大多数用户甚至都不能很好的用文字表达自己的需求,很多人都用不好 Google Search,更别说用 GPT 了。
怎么样 “把饭嚼碎了,送到用户嘴里,再帮他咽下去”?最好的做法可能是配合 AR 眼镜去自动捕捉当前的场景,用户的 eye movement,甚至 brain activity (e.g., EGG or MRI),然后根据这些信息,判断用户需要什么,然后自动推送到眼前。这样的话用户就不要再绞尽脑汁去描述自己的需求了。所有都是 AI 安排好的,用户只需要 “跟随” 就可以了。