用大白话讲清楚,大模型里的Next Token Prediction究竟是什么?

写在最前

大家或许多少有所耳闻,如今大数据驱动的机器学习(尤其是基于神经网络的)模型,是需要经过「训练」得到的。

这个「训练」过程,通俗来讲很像是学生做题 ,而大模型(LLM)的训练更是分了好几个不同的阶段。

接下来用尽可能通俗的白话来介绍名为「预训练」的第一阶段。

NTP(Next Token Prediction)

先引入一个简单的概念:token

你可以暂时粗略地理解为中文里的下一个汉字,或英文里的下一个单词,值得注意的是标点符号也算在内。

而大模型的预训练阶段其实一直在重复着同一个任务,那就是在已知某个句子的前n个token的情况下,预测下一个token。

这也是为何这个训练任务被称之为「Next Token Prediction」(以下简称NTP)。

举个例子:

刘德华是香港著名的_

如果让我们来判断下一个token最适合填什么,比较常见的选择可能会是:「歌(手)」,「演(员)」,「艺(人)」等等。

假设填入的是「艺」,那么我们将得到:

刘德华是香港著名的艺_

这时候继续往下填的话,大概率会是「人」。

乍一看是不是很像在做完形填空题,没错,NTP其实就是一种特殊的「完形填空」。

特殊的「完形填空」

稍稍回忆下中学时做过的英语完形填空,大概是长这个样子的:

... The professor was very __ 8 __ and decided to study it further. ...

(8) A. glad B. surprised C. worried D. happy

我们根据空位的「上下文」(可能是所在句子、段落甚至整篇文章),从给定候选项中选择一个最恰当的答案。

而再回过头来看NTP任务的设定,其特殊就在于填空时我们总是只能看到「左边的上文」,也就是前面说了什么,而没有任何「下文」的约束。

此外也没有限定候选项,这个看似很小的差别却恰恰引发了巨大的变化,并且奠定了大模型多样化生成能力的基础。

首先,由于没有了下文和候选项的约束,预测结果的多样性会大大提高,哪怕是同一个上文也可以有多种 next token 的结果,有点像单选变多选的感觉。

其次,没有下文的束缚之后 ,next token的预测可以无止境地进行下去,只要每次将新预测的token和上文拼接起来做下一次预测即可。

这在专业术语里我们称之为「自回归」,这个特性其实并没有直接体现在训练中,而是在应用阶段,后文会再提到。

现在「出题方式」确定了,那么预训练的「题库」从何而来呢?

其实稍稍想想就会发现题目随处可得,因为一切文字的记录都可以生成 NTP 的「完形填空」。

只需要取一段文本并在任意位置截断,断点左侧作为上文,断点右侧第一个字作为答案,其余内容扔掉,我们就得到了一道填空题(训练数据):

哈利·波特是一部脍炙人口的魔幻小说系列作品,主角是一个名叫哈利·波特的年|巫师,他在11岁的时候才发现自己是巫师。

按照这样的方式,任何文本数据不论类型、语种,都能够生成大量的训练数据。

OpenAI几乎爬取了互联网上能够获取的全部文本语料,可想而知由此构建的「题库」是多么庞大。

刷,我刷,我刷刷刷

接下来,大模型就开始了漫长的「刷题」之路:预测对了得分,错了扣分。

(如果了解损失函数概念的话,就会知道上面这个加减分的比喻其实并不准确,这里纯粹是为了便于理解)。

随着模型预先初始化时的参数量不同,这个过程耗时几周到几个月不等(取决于硬件条件和数据量)。

完成之后,我们便得到了第一阶段训练的成果——一个具备了超强文本生成能力的基础大模型。

你可以把这个阶段的它认为是一个十分会「接话」的「话唠」,只要给出任意的上文,它都可以进行下一个token的预测。

而配合上面提到的「自回归」方法,理论上我们可以让它一直预测生成下去。

加上每次的预测它其实都可以给出多个最可能的next token,那么如果我们每轮都在多个候选的基础上继续,就可以发散出许多丰富多样的生成结果。

下面是一个直观的图示(画图太费劲,这里就偷懒从论文里扒了个英文的图来借用了🤣)。

量变引发的质变

巨量的「题库」是大模型生成能力习得的关键之一,另一个关键是模型的参数量(大家不妨简单地类比为脑神经元的数量)。

当这二者都具备一定的规模时模型才能涌现出卓越的能力,这也是大模型之「大」的由来。

至于这个现象的原因,就要涉及到大模型的「Scaling Law」理论,这里就不展开了,后面有机会再介绍。

今天的大模型小讲堂就到这里啦,觉得有收获的话,不妨点赞收藏加个关注吧,让更多的人能「秒懂AI」。

### 大模型简介 大模型之所以被称为“大”,不仅因为其使用的数据集规模庞大,更重要的是这些模型拥有大量的参数。这种大规模使得它们能够捕捉到更为复杂的数据特征并具备更强的学习能力[^1]。 #### 数据量与多样性的重要性 为了构建有效的大模型,训练所用的数据集不仅要足够大,而且应当涵盖广泛的内容领域。例如,在自然语言处理方面,理想的训练材料应包括但不限于在线书籍、新闻报道、学术论文以及社交平台上的交流内容等多样化的文本资源[^2]。 #### 功能特性 除了依赖于庞大的数据支持外,真正意义上的大模型还需满足两个重要条件: - **创新能力**:即能够在已有知识基础上创造出新颖而合理的输出; - **泛化性能**:意味着该类模型可以在不同场景下稳定工作而不局限于特定任务或环境。 #### 参数的作用 在大模型中,参数扮演着至关重要的角色。作为模型内部可调整的变量集合,参数存储了从训练数据中学到的信息。随着参数数量的增长,模型对于输入刺激响应的方式变得更加精细和灵活,进而提高了整体的表现水平。 ```python import torch.nn as nn class LargeModel(nn.Module): def __init__(self, input_size, hidden_layers, output_size): super(LargeModel, self).__init__() layers = [] current_size = input_size # 构建多层神经网络结构 for next_layer_size in hidden_layers: layers.append(nn.Linear(current_size, next_layer_size)) layers.append(nn.ReLU()) current_size = next_layer_size layers.append(nn.Linear(current_size, output_size)) self.model_structure = nn.Sequential(*layers) def forward(self, x): return self.model_structure(x) ``` 此代码片段展示了一个简单的大型深度学习模型框架定义过程,其中`hidden_layers`列表中的元素数目代表隐藏层数目及其宽度(即每层节点数),这直接影响到了最终形成的参数总量大小。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喵懂AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值