本文承接上文打包票!前端和小白一定能明白的人工智能基础概念,强烈建议大家阅读一下,文章采用层层递进的超级白话的方式,让我们了解机器学习,神经网络和深度学习的关系和概念。
前言
实在是受够了很多文章写给小白的大模型工作原理的文章,看了还是觉得很多文章内部毫无逻辑可言,所以我觉得自己弄清楚后,写下这些留给跟我对这些文章同样一头雾水的伙伴!
从语言模型说起
首先大模型一定要有自己的语言模型,才能理解人类语言的基本逻辑关系,并且输出对应的回答也是我们能看懂的。那大模型的语言模型是什么呢?如何做到好像类似 ChatGPT、DeepSeek 这样的聊天 ai 似乎理解我们人类语言似的,真的是这样吗?
先说答案,其实不是,这个语言模型简单来说就是:"预测下一个语素"(统计语言模型)。
什么意思呢,大家在使用输入法打字的时候,是不是很多时候,当你打一个字或者词的时候,输入法会帮你预测你下一个字是什么,这就是预测下一个元素,比如'鸡你太_',如果你是小黑子,就可能出现什么字呢,你猜猜。。。
你可能会疑惑: 我去,这么暴力?这还是 ai 吗?看起来不太聪明的样子?!回答就是,你还真别小看这个模型,小小手机能收集你的语言习惯,同理是不是当你给 ai 足够的训练资料的时候,ai 能学习到大部分人的语言习惯呢?
很多人肯定还是疑惑,人类语言这么巧妙,这种粗暴的方式真的有效?我们举个例子
假设这样一句话:他放下了书,因为它太_。
在太后面可能是太重,可能是太难等等常见搭配,也就是当大模型猜测,是重或者难的时候,很可能前面表达的内容表达的是一种让人很不舒服的感觉,也是从某种角度理解了重和难在现实中的意思。
我们再来想一下,这个"太"字,在大模型见过的语料够多后,它也慢慢发现,原来"太"这个字后面经常跟形容词,这算不算某种程度上学习到了人类语言的语言规律呢?
但这里问题来了,基本的词性,比如一个词是形容词,还是名词,计算机是不是开始就要对我们输入的问题进行分词?然后理解分词的词语,然后建立一套模型,让这些词语之间建立联系,这样才能在自己输出"太"字的时候,知道后面往往跟 难 、重 或者其它意思?
在解释如何建立联系的之前,我们必须弄清楚计算机本身是如何处理文本的!
计算机如何处理文本
计算机本质上就是计算器,它只能计算,无法理解文本,例如字母a,在ascii编码中,在计算机中用97来表示,比如让计算机算 字母a 和b的大小,只不过是在计算机内部比较了97和98的大小而已。
同理,大模型也需要把文字转为数字来处理(为什么?因为计算机只能计算数字!),例如"人"在计算机中如何表示,是不是可以这样,用一个数字填充的数组:[0,175,60,20]
- 数组第一位,0代表男生,1代表女生
- 数组第二位,175代表身高
- 数组第三位,60表示体重
- 数组第四位,20表示年龄
这样就在 4 个维度描述了一个人,假设有这样一个数据,[0,170,50,20] ,在四维空间中其实跟上一个人产生了联系,也就是某些维度上是相近的。
因为现实世界特别复杂, 所以一个词的维度有非常多。我们这里只是很粗暴的用了 4 个维度,正常大模型可能认为一个词的维度能上千或者上万,这取决于大模型自己的算法如何理解这个世界。
现在解决了如何把文字转换为数字让计算机处理的问题,接下来新的问题又来了。如何给某个词设置合适的向量值。
这个专术语叫嵌入(Embedding),目的提取文本的特征,这里有特定的算法来解决,因为我也不是这方面专业人员,这里不做过多介绍,有兴趣的同学可以去搜索词袋模型,TFFIDF。
在给这些词语标注特定向量值的过程,使用的技术方法不同,最终效果也不同,比如 ChatGPT 使用了一种叫做"上下文词向量表示法",这个方法标注的每个词的向量值不仅取决于这个单词本身,还取决于这个词在不同上下文中的意思。
例如 苹果 这个词讨论水果和电子产品(苹果手机)时的含义是完全不一样的。这就是很多文章说的自注意力机制。
那解决了基本词语在计算机中如何展示,并且映射现实语义的情况下,我们就该开始训练大模型能解决实际用户提出的问题了。
gpt 这个词就是根据上面我们说的模型原理命名的缩写 ,p 就是 pre--trained,预训练的意思,也就是要通过大量语料来给它学习,然后通过训练让其找到语言中很多词语搭配的规律。然后生成答案,这就是 gpt中字母 g 的意思,generative的意思。
也就是说,我们要开始 预训练 了。
预训练
我们刚才说了,这种统计语言模型,是靠猜下一个字是什么来生成文字给用户的。这个训练的目的,就是让大模型知道"在什么情况下,下一个字应该是什么"。
所以预训练的过程,还会不断调整 向量 的值。
什么是预训练?
想象一下,我们要培养一个文学大师:
预训练 = 让这个大师博览群书的阶段
在这个阶段,我们给模型喂食海量的文本数据 ------包括维基百科、新闻文章、小说、科技论文、论坛讨论等等。但注意:这时候我们不教它完成任何具体任务,比如回答问题或者写邮件。
我们只让它做一件事:不断地猜下一个字。
预训练的具体过程
arduino
输入:"今天天气真"
目标输出:"好" // 模型要猜出这个字
输入:"人工智能是"
目标输出:"未" // 接着猜"来"等
输入:"中国的首都是"
目标输出:"北" // 接着猜"京"
就这样,模型在数万亿个这样的例子上进行训练,逐渐学习到:
- 语法规则:"的"后面通常跟名词
- 常识知识:"北京是中国的首都"
- 逻辑推理:"因为下雨,所以..."后面可能是"带伞"、"取消活动"
- 文体风格:论文和社交媒体的语言风格差异
总而言之,不断地猜下一个字的过程中,逐渐掌握基本的语言规律和表达能力。
预训练之后,还会有些一些调整,这时候尤其是人为的标注,可以极大让纠正和优化大模型的向量值。
如果你看过我上一篇文章,一定要理解权重这个概念,其实chatGPT的训练过程,同样是在调节权重:
上文写到:
训练就是不断调整 w,使得模型能正确分类。
这就是 ChatGPT 的训练过程(预训练)!
ChatGPT 训练时:
- 输入大量文本
- 预测下一个词
- 如果预测错了 → 调整权重 w
- 重复 trillions 次 → 得到现在的能力
那 ChatGPT 和基础的神经网络学习哪方面区别很大呢?
我们之前说了 ChatGPT(chat是聊天的意思)中 G 和 P 我们解释了,有人会说还有个 t 呢?它代表的是 transformer 的意思。这个 tranformer 就是与普通神经网络最大的区别。
ChatGPT 为什么突然这么聪明?
我们前面一直在说:大模型预测下一个字,用的是"上下文词向量表示法",也就是一个词在不同上下文里的含义不同。
问题来了:
模型如何知道"上下文"?
也就是说,它怎么知道一句话里哪些词应该互相影响?
这就是 transformer 出场的时刻了。
GPT 里的 T = Transformer ,它是这十年来让所有大模型突然变强的"关键武器",可以说是整个大模型爆发的核心技术。
下面我们用最简单方式讲明白它到底在干嘛。
Transformer 解决了一个什么痛点?
在 Transformer 出现之前,模型主要靠 RNN/LSTM 来看上下文,但它有两个大毛病:
- 只能从前往后一个字一个字读,速度慢
- 距离远的词,很难建立联系
举例:
我买了一本书,它特别好看。
这里:
- "它" 指的是 "书"
- "好看" 也和 "书" 对应
但在旧模型里,这种"跨很多词"的关系会被稀释掉,也就无法联系上下文来理解长句子的意思。
Transformer 说:
我一次性看整句话,不是一个字一个字扫!
并且我会计算句子里每个字对每个字的重要程度。
这能力就是传说中的 ------ 自注意力机制(Self-Attention)
什么是自注意力机制?
你可以把一整句话想象成一桌开会的人。
例如一句话:
"他放下了书,因为它太重。"
在 Transformer 的"会议"里,这些词会互相发消息:
- "它" 会问所有词:"我到底指的是谁?"
- "重" 会问:"我应该描述哪个名词?"
- "放下" 会问:"发生这个动作的原因是什么?"
然后 Transformer 会给这些联系打分,比如:
- "它" → "书":权重很高(说明它指书)
- "重" → "书":权重很高(说明重描述书)
- "因为" → "放下":权重很高(说明因果关系)
这套"你影响我,我影响你"的机制,就是自注意力。
一句话总结:
自注意力机制让模型自动找出句子里哪些词对当前词最重要
这就是 Transformer 的本事!
GPT 的 G(生成)和 P(预训练)解决了"怎么学语言",
但 Transformer(T)解决了"怎么理解上下文"。
有了 Transformer,模型不再是"瞎猜下一个字",
而是能基于全句、全段、全篇来猜。
这就是 ChatGPT 看起来像"能理解你"的原因。
小结
我相信文章内容虽然没有很多专业人士高大上的描述,但用于入门 ai 基础知识,算是足够白话了!感谢大家!
我的 ai 学习记录