为什么大模型能记住 dataset 里几万亿字的内容,却记不住和用户聊天时两三万字的 context?

2023-12-14 19:25:05 +08:00
 drymonfidelia
3906 次点击
所在节点    程序员
28 条回复
allenzhangSB
2023-12-14 19:40:00 +08:00
淘宝数据库里有都已经有几亿个商品, 为什么一个订单不能添加上一个商品?
OMGJL
2023-12-14 19:50:51 +08:00
简单且模糊的说,ai 模型就是一个 N 维空间,每一个词都有自己在这个空间里对应的位置,根据输入信息的词组合 找到距离最近的对应词。

换个说法,你学会查词典目录 不等于 你会这个词典里每一个字
stimw
2023-12-14 20:02:58 +08:00
对于大模型来说,
- 几万亿字的内容:这是训练数据集,在训练过程中最终会固化为数十亿个参数,形象来说就是“长期记忆”。
- 聊天时两三万字:也就是你说的 context ,模型在推理时只能处理有限的输入空间,这跟模型的架构、推理能力、内存要求都有关系,形象来说就是“短期记忆”。

所以他不是真的记住了几万亿字的内容。对于单次推理来说,它也不是真的记住了两三万字的 context ,而是每次推理都要“查看”一遍 context 。
drymonfidelia
2023-12-14 20:06:18 +08:00
@stimw 把 context 转换为只对这个 session 有效的参数有什么难度?
drymonfidelia
2023-12-14 20:06:34 +08:00
@drymonfidelia 说错了,应该是难点在哪里
lt0136
2023-12-14 20:10:46 +08:00
所以 fine-tune 就是把短期记忆变成长期记忆?
ShadowPower
2023-12-14 20:12:35 +08:00
@drymonfidelia 样本太小,而且很难找出让模型记住这句话所需要调整的关键权重。

训练阶段会输入各种各样的数据,权重的调整方向是根据这些多样的数据算出的平均值。
如果只有小样本训练的话,会过拟合,而且会破坏原有知识的关键权重,导致灾难性遗忘。
Ericcccccccc
2023-12-14 20:16:21 +08:00
这就好像, 搜索引擎搜全网的内容飞快, 你用邮箱的搜索功能慢的要死.
thinkershare
2023-12-14 20:17:02 +08:00
并不是记不住,而是记得越多,下一次回答就要从头重新扫描一个当前的上下文,这会导致计算量极大,因此一个上下文越长,它的会速度就会越来越慢,越来越慢,至于为啥不能固化上一次的权重,当然是因为成本,如果算力足够,不计成本,当然可以记住你一个人的全部上下文。
thinkershare
2023-12-14 20:18:09 +08:00
可以记住一个人的上下文,并不意味着可以记住全球几千万的,因为每个人的上下文是不能交叉的。
vToExer
2023-12-14 20:20:19 +08:00
的确如果采用 decoder 结构的模型,那么只需要记住 context vector ,就算是保存了当前 session 的状态,下次请求时也不需要把之前的聊天记录全部传过来,只需要拿 user_id 查表得到 context vector 就能恢复状态。

这样做用户侧来看感觉是最合理的。至于 openAI 没这么做的原因,我能想到的是一方面节省查表的开销,另一方面调 api 时多收点 token 费用,不知是否还有其它技术原因
ShadowPower
2023-12-14 20:25:46 +08:00
@vToExer 那玩意巨大,存储成本太高了
GeekGao
2023-12-14 20:55:13 +08:00
我觉得本质是因为内存和推理时间都大大增加了。现有商业模式下,ROI 不成正比,因而没必要增加 context 长度到成本无法承受的临界点,除非技术上有突破。
vToExer
2023-12-14 21:06:50 +08:00
@ShadowPower 有理。看了下单条 context 大小应该是 seq_len * embedding_size ?如果按一般的 1024*768 存放单精度浮点相当于 3M 长度字符了,也就是在 8k 上下文场景下的约 400 轮聊天记录,差距很明显
felixlong
2023-12-14 21:22:13 +08:00
@drymonfidelia 训练和推理需要的计算量不是一个量级的。
stimw
2023-12-14 21:34:55 +08:00
@drymonfidelia #4 这些参数的作用是为了让模型“理解”或者说“适应”你的 context 并且拟合出回答,不是为了记忆的。其次实时根据 context 去 fine-tune 不说效果咋样,这个行为在目前本身就不现实。
redocxz
2023-12-14 21:39:19 +08:00
它能记住前者是因为它在大量的数据集上训练了

(这说明学习就需要重复重复再重复
june4
2023-12-14 21:46:57 +08:00
数据集几万亿字又不是都清楚记住,相当于视频有损压缩得妈都不认识了
laqow
2023-12-14 21:55:10 +08:00
模型没有记住任何东西,它只是学会了怎样的输入输出能让你产生它记住了什么的感觉而已
johnsona
2023-12-14 21:58:36 +08:00
因为自回归的误差会累积 预测的下一个词本来可能就有误差 再用来预测误差会累积
预测一小时后的天气容易 预测 300 天后的天气不容易

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1000457

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX