type
tags
category
icon
password
Multi-select
优先级
重要度
状态 2
预计结束时间
添加日期
URL
状态
分类(人工)
总结(AI 摘要)
status
LLM笔记摘要
最近阳了,正好把一个欠了很久的债—看Andrej Karpathy 的 LLM 的讲解视频 给还了。
真的非常的精彩,在看完之余觉得不过瘾,就补充了这一篇摘要。
强烈推荐观看原视频 ‣
虽然时长 3 个半小时,绝对会让你大呼过瘾~
/
阶段一:预训练阶段
整个阶段主要围绕着的是如何处理这些数据,以及机器能理解的是什么样的,补全了另一个视角。
1.1 下载简单处理后的原始语料
数据基本都是爬虫抓取而来,但抓取的时候很脏,需要简单处理
- url 过滤:我们只想要纯文本,还要过滤一些有害的 url(比如垃圾网站、成人网站)
- 文本过滤:去掉一些有害的内容
- 语言过滤:比如只保留英文的
- 其他处理比如删除个人信息、地址等内容
处理完之后可以得到下图中的纯文本


1.2 文本序列化


机器很难读懂文字,所以用代号来取代文字
看右图,就是将英文单词转为了序列号的“数字”,这里应该叫 token
注意这里并非一个英文单词一个 token,句子 "unbelievably good" 可能会被分成
["un", "##believab", "##ly", "good"]
这几个子词Token。这样做的好处是可以有效处理未知词汇和复杂词形。
关于序列化的详细内容,从下图可以看到,空格、大小写都会让 token 发生变化。
可以理解为不管哪种形式的文本,背后都有对应的 token 显示。



下面是一段文本序列化之后的样子


1.3 神经网络训练
左边的为上下文
中间通过神经网络训练会给出下一个token可能的概率
通过概率的排序进行召回,然后输出
这一切都是随机的,每次输入之后可能回复都是不同



从上面可以看到,神经网络是有几十亿甚至上万亿的参数的,这个参数是如何调整的呢
事实上模型会经过数十万甚至上亿次的迭代,每次迭代都是在更新模型权重然后生成一个内容
这个阶段不需要人工标注,只是网络在自己找寻每个 token 之间的相关度(从已有的文本中)
从第一步的无序到最后可以说梦话(没有逻辑但是连贯的话)
这个阶段模型只是在凭借记忆去记住一些片段,就像你读书一样,看了几遍会背了。只是不知道应该如何去使用。


上下文容量、模型参数指的都是在这个阶段进行的。
上下文指的是给 XX 输入,输出 YY,整体的容量
模型参数指的是神经网络的训练参数,参数越大、上下文越大,需要的迭代轮数越多,也越废资源。
这个阶段要花非常久(可能要几个月),后续都会很快(可能只有几天)。
阶段 二:监督学习阶段
2.1 如何教会模型人类的东西
通过监督学习,输出一系列高质量的例子,让大模型学习。

这里通过固定的开始和结尾让模型知道这是一个问题序列,然后直接将原文丢入(可以看到这是一维的,单纯的丢原始问题)

在这里会将左边的问题进行序列化,让模型可以看懂
训练的语料如下图
大模型前期,这些语料是各行各业的专家给出的案例,包括对该模型性格、审美、模型自我认知都是在这一阶段训练的。
后期更多的是通过模型蒸馏,比如喂给新训练的模型语料不是从专家得到而是从其他的大模型,让他们给出问答对

2.2 幻觉是如何产生的

训练阶段 模型了解了 who is XX 的句式
然后在测试的时候,虽然人名是假的,网上没有资料,但根据概率还是在胡乱编


上面两个图可以看到,每次回答都是不同的
2.3 如何减轻幻觉
方案 1:在模型中增加因为不知道而拒绝回答的案例,让模型学会说 no
当然这是站在模型训练的角度,让他自己提升;
对我们而言,前期用的最多的就是回答的时候跟模型说:“如果你不知道不要瞎说”,也可以解决

方案 2:让模型学会调用工具
同样是在训练的时候,让模型学会一个《 SEARCH_START》XXX《 SEARCH_END》XXX 【】的结构,这其实只是一种约定,怎么定义都行。模型就会知道这种情况调用搜索工具,然后将回答内容填充到【】中。
当然你也可以直接选择启用搜索,这样就会默认先搜索。

2.4 模型如何学会思考?
比如有一个数学问题,怎样的回答才是认为最好的?
就把这些例子当成一维的答案,告诉大模型,hi,我认为这个是好的,你应该这么学习。


为什么一开始数学不好,因为她只是在这样的猜数字而已,一开始并没有很多的中间计算过程的。
后续是如何变好的呢,事实上他并没有去执行计算(因为模型不擅长心算),而是写了一段代码,最后交给计算器去完成了,这种在大模型里就很好做了,不需要关心数字,只需要关心处理的过程如何。这很好被模型去学习。

跟数学一样的,模型不擅长拼写,不擅长数,因为这个跟大模型的运作原理(基于 token 的预测)是不同的,只能借助工具调用来完成。

为什么 9.11 比 9.9 大呢,可能是因为模型学习了圣经,在圣经中 9.11 是章节,在9.9 之后。真的很有意思。这些共同导致模型一定会有幻觉。
更有意思的是,在模型思考中坚信 9.9更大,而不是 9.11。似乎模型的思考过程都是假像。。。


阶段 三:强化学习
3.1 为什么需要强化学习
看左边的图,想象一下你在上学:
预训练:对应一系列的背景知识,告诉你这是什么问题
监督学习:专家会给出解决这个问题的方法
强化学习:对应的是课后小练习(题目不同,但类型相似。以此提升泛化能力)


对于监督学习来说,无法超过人类,只是无限逼近。
但是对于强化学习,是可以超过的,想象一下 alphago 在围棋上。

3.3 在很难量化的领域,如何应用强化学习呢?
RLHF:基于人类反馈的强化学习
比如写作(写个笑话之类的)
方法也很简单,一开始让人给排序,哪个更好笑。(不让人来创作,而是去评分,只做排序)
但是强化学习要迭代成百上千万次,不可能都是人类来标注;
这个时候通过前面几十次的人工标注,训练了一个小模型,用来模拟人类的判断标注,以此生成了一个评估器。
接下来就是大模型的强化学习模拟器和评估器之间的事了,都是机器,不断迭代,直至更好。


- 作者:xingyan
- 链接:http://blog.xingyan.me/article/22064cad-d821-800d-89bd-c3584625cffa
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。