A:278. 第一个错误的版本#
你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。
假设你有 n 个版本 [1, 2, ..., n],你想找出导致之后所有版本出错的第一个错误的版本。
你可以通过调用 bool isBadVersion (version) 接口来判断版本号 version 是否在单元测试中出错。实现一个函数来查找第一个错误的版本。你应该尽量减少对调用 API 的次数。
示例 1:
输入:n = 5, bad = 4
输出:4
解释:
调用 isBadVersion (3) -> false
调用 isBadVersion (5) -> true
调用 isBadVersion (4) -> true
所以,4 是第一个错误的版本。
示例 2:
输入:n = 1, bad = 1
输出:1
var solution = function (isBadVersion: any) {
return function (n: number): number {
for (let i = 1; i <= n; i += 1) {
if (isBadVersion(i)) {
return i;
}
}
return n;
};
};
提交结果为:
Time Limit Exceeded
22/24 cases passed (N/A)
从逻辑上是能通过的,待会打卡完再改成二分法试试。
参考答案里的二分法,更好的解法是:
var solution = function (isBadVersion: any) {
return function (n: number): number {
let left = 0
let right = n
while (left <= right) {
let middle = Math.floor((left + right) / 2)
if (isBadVersion(middle) && !isBadVersion(middle - 1)) {
return middle
} else {
isBadVersion(middle) ? (right = middle - 1) : (left = middle + 1)
}
}
return -1
}
}
一般在一个有序数组中识别某个位置时,使用二分法可以快速缩小搜索范围。
R:Open challenges in LLM research#
作者注意到 LLM 当前急切需要解决的 10 个问题,其中幻觉和上下文学习是当前讨论最多的,作者自己最关注的问题是多模态、新架构还有降低 GPU 要求,增加可选择性。
降低和测量模型幻觉#
对一些创建场景来说,幻觉可能是特性,但对大多数场景来说,幻觉是 bug。因此减缓和测量模型幻觉是当前的一个流行的研究方向。当前也有一些临时性的方案来降低幻觉,比如在 Prompt 中增加更多上下文、CoT、自一致性等,具体在文章中有更多引用和介绍。
改进上下文长度和上下文构建#
绝大多数问题都需要配合上下文才能很好地回答,因为模型需要在 Prompt 的上下文中学习到相关的信息,这个过程叫做 “context learning”。
上下文长度对 “检索增强生成”(Retrieval Augmented Generation) 来说是尤其重要的。RAG 要生效需要两个阶段:1. 分块:收集需要用到的全部文档,把文档分块然后存储到向量数据库中;2. 查询:当查询输入进来时,也进行 embedding 向量化,然后与向量数据库里的数据进行相似性检索。
LLM 支持的上下文长度越长,越多可能相关的分块文本就可以被塞到上下文中,就能得到越好的生成效果。
传入 Context 的内容也不一定越多越好,还要考虑模型能处理多少以及处理效率,因此并行的另一条路是优化 Prompt 自身,使其更容易被 LLM 处理,从而提高效率,这条路径叫作 “Prompt Engineering” 或 Prompt 构建。
和其它模态的数据协作#
之所以要考虑多模态,首先是因为在许多场景里需要处理的是多模态的数据,其次头部的 LLM 已经很大程度利用了文本相关的数据,如果还想提升就要超出文本领域,发挥多模态数据的价值。
作者对于多模态模型可能能让视力障碍者能更好地看到互联网和现实世界感到非常兴奋。
让 LLM 更快更便宜#
GPT-3.5 刚出来的时候大家都很担心它的延迟和价格,但仅过去半年,社区里就已经能用 GPT-3.5 2% 的内存得到相同性能的模型了。作者在多年前的书里写下了模型优化和压缩的几个重要技术:1. 模型量化;2. 知识蒸馏;3. 低秩因式分解 *(不清楚和 LoRA 是不是一个东西)*;4. 模型裁剪。这些技术今天仍然重要和流行。
设计模型新架构#
Transformer 是一个 2017 就有的架构,这个架构还能持续领先多久也是一个疑问。
要超越持续优化了 6 年的 Transformer 架构不是一件易事,需要考虑现在人们关注的比如规模化应用、硬件资源等问题。Transformers 在谷歌设计之初只是在 TPU 上才能快速运行,后来才在 GPU 上做了优化。
开发 GPU 替代品#
自 2012 年的 AlexNet 深度学习神经网络以来,GPU 就成了这个领域支配性的硬件。
GPU 资源的紧张大家都能感受到,因此过去十年也有一些公司试图创造 AI 需要的新硬件,比如谷歌的 TPU、Graphcore 的 IPU 等,还有对量子计算上的期待、光子芯片的探索等。
让 Agent 真正可用#
Agent 是可以行动的 LLM,比如浏览网络、发邮件,相较其它方向这个方向还比较新。
由于这个方向的新奇,人们对它很是狂热,相关的 Github 仓库 Auto-GPT 是最受欢迎的仓库中的第 25 名,还有 GPT-Engineer 也是一个非常受欢迎的仓库。
尽管人们的热情很好,也有相当一部分人怀疑 LLM 是否可靠,是否能够信任 LLM 把行动交给它处理。
一个最近涌现出来的案例是用 LLM 进行社会学研究,斯坦福大学做了一个实验:定义一个 Agent 想举办一个情人节 party,Agent 接下来两天里自主做了派对邀请、结识新朋友等模拟行为。
这个方向的一个著名公司是 ADept,他们去年演示了如何让 Agent 浏览网络并在 Salesforce 中添加一个新账号。
从人类偏好中学习#
RLHF (人工反馈强化学习) 是一个用来对齐人类的很好的技术,但有一点 hacky。作者认为人们能找到更好的让模型对齐人类的方法。
RLHF 存在的一些问题有:
- 如何数字化 (量化) 表示人类的偏好?
目前人类偏好是通过比较来确定的,人工标注 A 和 B 哪个更好,但无法体现好了多少。 - 人类偏好是什么?
Anthropic 围绕 3H (Helpful, Honest, Harmless) 来测量它们的模型,Deepmind 试图生成让大多人满意的响应。
那我们究竟是想要什么样的模型呢?是可以表明立场的还是回避争议性话题的? - 谁的偏好是 “人类偏好”,有考虑文化、地区和政治因素吗?
很难获取到代表所有潜在用户偏好的训练数据,比如 OpenAI 没有雇佣 65 岁以上的标注人员,标注人员主要是菲律宾和孟加拉人。
社区主导的数据也仍然可能有偏见,比如 OpenAssistant 数据集有 90.5% 的响应者都是男性。
改善与 LLM 对话界面的效率#
从 ChatGPT 以来,就有关于适合广泛任务的对话界面该是什么样的讨论。
然而这并不是什么新讨论,在许多国家尤其是亚洲国家,聊天界面作为超级应用的入口已经被用了十年了。
16 年就有一些讨论认为应用程序已死,聊天机器人才是未来。
作者喜欢聊天机器人这种界面的原因有三点:
- 聊天机器人是一个没有接触过计算机的人也能快速学习的界面设计;
- 聊天机器人易于交互,如果手不方便还可以语音输入;
- 聊天机器人足够健壮,你可以发送任何请求给它。
但是作者认为聊天机器人也有一些需要改进的地方:
- 每轮只能输入一条信息
这不是和朋友发消息的方式,有时我们的输入是分段的、多类型的 (图片、定位、链接等),或者就是不想输入一大段话 - 多模态输入
在多模态方面,大部分精力都放在了构建更好的模型上,只有很少的精力被投入到了构建更好的用户界面上 - 把生成式 AI 加入到你的工作流里
例如你想问一个关于如何处理你正在处理的图表列的问题,应该可以对着那个列直接问问题 - 编辑和删除信息
如何在聊天会话中编辑和删除信息来改进整个对话
为非英语语言构建 LLM#
当前英语优先的 LLM 在表现、延迟和速度方面并不能很好地在其它语言上工作。
也有人在其它语言方面作努力,比如 Symato 在越南语方面的努力,但也有人基于一下原因认为这个方向没有意义:
- 这更像是一个资源投入问题而不是研究问题,我们已经知道了要怎么做的方法,只是没有资源投入到其它语言里,即使投入了数据也不足;
- 更悲观的人认为未来多语言会消失,互联网上将只有英语和普通话两种语言。
LLM 对语言学习的影响仍不清楚,它是让人们更快地学习新语言还是消除人们学习新英语的需求?
T:Notepal 同步读书笔记#
这是一个浏览器扩展,可以同步微信读书笔记到其它软件。
S:采铜法则#
当我们评价一个事情值不值得去做、应该花多少精力去做的时候,应该抛弃单一的视角,而是分从两个不同的维度来看,一是该事件将给我带来的收益大小(认知、情感、物质、身体方面的收益皆可计入),即「收益值」;二是该收益随时间衰减的速度,我称为「收益半衰期」,半衰期长的事件,对我们的影响会持续地较久较长。
Reference: