专栏名称: 图灵教育
是好书,把我们联系在一起
目录
相关文章推荐
半导体行业联盟  ·  美国副总统:确保最强AI芯片 美国制造! ·  昨天  
半导体行业联盟  ·  何小鹏与任正非会面 ·  昨天  
半导体行业联盟  ·  中芯国际CEO赵海军:2025年我们担心2件事 ·  15 小时前  
半导体行业联盟  ·  拒供在华客户:美国威胁泛林集团(Lam)! ·  15 小时前  
半导体行业联盟  ·  读懂张忠谋,就读懂了世界半导体 ·  4 天前  
51好读  ›  专栏  ›  图灵教育

ChatGPT原理大白话解析,这次终于搞懂了!

图灵教育  · 公众号  ·  · 2025-01-18 11:20

正文

我们熟知,ChatGPT 能聊天画图,能编程啃论文。 那么,这个聊天机器人到底是怎么学会与人类交流的呢?

经过这段时间的琢磨+翻阅各种资料,也终于明白了个大概,今天尽量用白话给大家说得明白些。

ChatGPT 是怎么学习的?
先说说 ChatGPT 的核心部分:GPT(全称是Generative Pre-trained Transformer,里面的 P 和 T 我们一会儿会讲到),这是一个由 OpenAI 开发的大语言模型(LLM)。
接下来,理解 ChatGPT 的原理得先了解它的核心架构。ChatGPT 的核心架构是 Transformer(也就是 ChatGPT 中的 T), 一种神经网络架构。 有关 Transformer 可以看这篇: 一文读懂 Transformer,工作原理与实现全解析
好比人类大脑的工作方式:神经网络由大量的“神经元”组成,这些神经元相互连接形成一个庞大的网络,经过学习和记忆大量的文本信息来理解生成复杂的人类语言。在这个网络结构里, 参数(Parameters)就像是模型的脑细胞,帮助模型记住和理解语言模式。参数越多,模型的表达能力就越强,就像一个人学的知识越多,思维就越丰富一样。 每个参数在模型中都有特定的作用。比如某些参数可能专门用于识别句子结构,另一些参数则是用于理解上下文关系,让模型能够捕捉细微的语言模式和复杂的语义关系
而 GPT-3.5 模型有近百亿个这样的参数,就像一个超级大脑。
( 这里补充讲讲 ChatGPT 用到的神经网络和之前有啥不同,对细节没兴趣的可略过此段:首先, 自注意力(Self-Attention)机制是 Transformer 模型中的核心。 Transformer 架构是 17 年谷歌团队发表的 Attention is All You Need 这篇论文引入的,这篇炸裂之作其实等于彻底改变了之前 NLP 模型的设计:现在在每一层中,模型使用自注意力机制(Self-Attention)来捕捉句子中单词之间的关系,理解上下文。
它的原理就是把输入序列的每个元素转换为三种向量:查询(Query)、键(Key)、值(Value),然后每个元素的查询向量会与序列中其他所有元素的键向量进行点积运算,产生一个注意力分数(Attention Score)。
这些分数决定了在生成输出时,每个元素应该给予其他元素多少“注意力”。 这种计算方式允许模型同时处理输入序列中的所有位置,从而捕捉距离远的单词或概念之间的关系,无论它们在文本中的位置如何。 这是与传统神经网络方法(如 RNN 或 LSTM)最大的不同之处,对长文本的处理尤其受用,让模型可以高效并行处理数据。
而以前的循环神经网络 (RNN) 是从左到右这么阅读的,也就是说,当相关的单词或概念在原文中彼此相邻时,这种方法还凑合,但当它们位于句子的两端时就很费劲了。就因为它必须按顺序阅读,导致阅读处理效率不高。)
聊完结构,接着来讲讲模型的预训练阶段,也就是ChatGPT 中的 P(pretraining)。
大模型的训练主要分为以下 3 个关键阶段: 预训练 微调 优化 ,这三个阶段就好比大厨养成的几个关键步骤:先是大量阅读食谱和不同基础料理,然后针对某种菜系精修,最后不断通过食客的反馈精进厨艺。
在 GPT 出现之前,大多数 NLP 模型都是使用「监督学习」进行训练的,也就是依赖人工标注文本数据,比如:给句子标注语法结构、命名实体、动物照片等等,这些类型的训练数据虽然有效,但制作成本极高,需要大量的人力和时间来标注数据。
而 GPT 则通过无监督学习掌握语言的基本结构和语义,即通过输入大量互联网有记载的文本,如各种网站、书籍资料、文章论坛等来理解字词语句之间的关系模式,就像一个小孩通过不断地听和读来学习说话和写作。(GPT4 / 4o 的训练方式也类似,不过引入了多模态处理能力,能够学习和处理图像和音频等多种形式的数据)。
我们再来看看模型是怎么看懂句子的。
首先,模型对数字的理解力和处理效率更高。因此,模型会把一句话按照词或字符的边界进行切分(这就是分词的概念)比如,当你输入一个句子:我在一个月黑风高的夜晚,模型会首先将这个句子分成一个个独立的字符,这句话可以切分成‘一个’,‘月黑风高的’,‘夜晚’。然后每个字符都会被映射成一个唯一的数字 ID,供模型记忆学习。然后,自注意力技术让模型能够自动注意到输入句子中最重要的部分。比如,在句子“我在一个月黑风高的夜晚”中,“月黑风高”和“夜晚”对于理解整个句子的语义很关键,自注意力机制会让模型自动特别关注这些词。
另外,ChatGPT 还加入了位置编码,这是一种告诉模型每个词在句子中位置的方式。这样,模型就不仅知道了词的意义,还知道了它们在句子中的相对位置。
(在官网上可以尝试 tokenize 一句话,很直观地感受分词与字词的长度以及表现形式的不同)
好了, 重点来 了! ChatGPT 到底是如何与我们进行“对话”的?
总的来说, 其核心原理就是:预测下一个词!ChatGPT 的核心任务非常直接——预测接下来会出现的词。
那么,ChatGPT 是如何决定在一句话中下一个最合适的词是什么的?
当 ChatGPT 面对问题时,它的第一步是理解问题并决定如何回答。为了选择下一个词,它会从之前的训练中调用信息,预测哪些词最有可能构成一个合适、有信息量的回答。
在 ChatGPT 中,每一步处理之后,模型会得到一个向量,这个向量包含了所有可能的下一个词的信息,这时候,softmax 函数就像是一个“智能转换器”,它的任务是将这些个词向量转换成一个概率分布。这里就用到了概率分布的概念。 (非战斗人士可再次选择性撤离)
概率分布是一个统计术语,用来描述某件事发生的可能性。 简单来说,概率分布就是 ChatGPT 决定“接下来说什么”的一种计算方式。 softmax 函数会将任何一组数值转换成概率分布,使得每个数值都被转换成一个介于 0 到 1 之间的概率,高分数的词将被转换为更高的概率,而低分数的词转换为更低的概率。
OK,怎么理解这个“转换”?这个转化是怎么发生的?
假设我们处理后得到的向量是一个数值列表,其中每个数值对应输入文本后可能跟随的一个词。例如,对于“今天天气真XX”,我们可能得到一个包含数千个分量的向量,每个分量对应词汇表中一个词。 然后 Softmax 函数会查看这个向量的每个分量,然后用一个数学公式转换这些数值为概率。
这个公式大概长这样:
这个公式的意思就是,每个分量先被指数函数处理(作用是放大分量间的差异),然后通过所有处理过的分量的总和来归一化,确保所有的概率加起来是 1。得到了这个概率分布后,模型就可以根据每个词的概率来选择下一个词,选择概率最高的词作为输出。
通过 softmax 函数处理后,每个词都有了一个明确的概率,表明它成为句子中下一个词的可能性。ChatGPT 然后选择概率最高的词,将其添加到回答中。这个过程不断重复,直到整个回答构建完成。
这个函数把人类对回答的 “重要性” “合适性” 的考量转换为具体的概率。
这种方法使得 ChatGPT 在提供回答时更加贴近人类的思维方式,同时也保证了生成回答的多样性和创造性。
但是,问题来了。
预训练完成后,如果你问 ChatGPT 一个具体的问题,比如“我怎么学习数据科学?”,它可能还是会给出不着调的答案,比如“你可以先学习数据再学习科学。”
那么,确保 ChatGPT 不给出太过于匪夷所思的答案就非常重要了!也就是需要确保 ChatGPT 不只是随机地猜测下一个单词,而是能生成更符合人类期望的回答。
这时候就需要进行 微调 (Fine-tuning)。
所以,为了让 ChatGPT 的回答更接近人类的期望,这里会使用一种叫做 RLHF(Reinforcement Learning from Human Feedback,可以翻译成基于人类反馈的强化学习)的方法。简单来说,就是让一些“人类模型评委” 来问 ChatGPT 问题,然后根据这些回答的好坏进行评分,再利用这些评分来训练一个奖励模型。这个奖励模型会告诉 ChatGPT 哪些答案是好的,哪些是不好的,从而不断引导模型在未来给出更好的回答。
这个 RLHF 过程大致是这样的:首先,我们让 ChatGPT 根据它已有的训练生成一些回答。比如我们给它一个问题“如何学习 Python 编程?”
它可能生成多种不同的回答。
接下来,想象这些回答被展示给一群人类评估员,这些评估员会根据回答的 相关性、准确性、可读性 等方面给予评分。例如,如果 ChatGPT 给出的回答是“去报名一个编程课”,这可能会得到较高的评分;而如果它回答“去买台新电脑”,就会得到较低的评分。有了这些评分后,我们就可以构建一个奖励模型。
奖励模型的任务就是根据刚才这些人类评价的结果来学习判断哪些回答是好的,哪些是不好的。也就是把问题和回答扔进去,然后模型会模拟这些评委的偏好输出一个奖励分数,分数越高说明回答越符合人类的期望。最后,再使用这个奖励模型来训练 ChatGPT。在这个阶段每当 ChatGPT 生成一个回答,奖励模型都会评估这个回答并给出一个分数。然后,ChatGPT 会根据这个分数来调整自己,周而复始。 通过 RLHF,ChatGPT 就能慢慢从会“说”,到能够“沟通”。 这里简单展开解释一下 RLHF 常用算法PPO,非细节怪可再次选择性撤离本段......)
PPO 是一种在强化学习领域中十分流行的算法,特别适用于需要处理大量参数的复杂环境,如大规模语言模型和游戏 AI 等。它能够帮助训练算法在探索(尝试新的行为)和利用(利用已知的行为)之间找到平衡,常被用来解决策略梯度方法中策略更新步骤过大导致训练不稳定的问题。PPO 是通过限制策略更新前后的差异来实现这一点,大概分为两种方法:
1. 截断的重要性采样 (Clipped Surrogate Objective):PPO 最常见的形式是使用一个截断的目标函数,这个函数会限制策略更新的步幅。简单来说,PPO 算法会计算出一个“重要性权重”来反映新策略与旧策略的相对概率。然后,这个重要性权重会被“截断”,使得其值保持在一定的范围内(比如,0.8 到 1.2 之间)。 这种截断操作就保证了新策略不至于与旧策略差异太大,保证了大模型回答的稳定性。
2. 自适应 KL 惩罚系数 (Adaptive KL Penalty Coefficient):另一种方法是通过在目标函数中加入一个KL散度项来直接控制策略更新。KL 散度是一种度量两个概率分布差异的方法,通过调整 KL 散度的惩罚系数,可以精细控制策略更新的幅度,从而保持新旧策略之间的接近性。 这两种方法都是为了确保新策略不会偏离旧策略太远,从而维持学习过程的稳定性。
另外,温度参数(Temperature Scaling)在生成模型中可以被用来控制输出的随机性:温度较高时,模型生成的回答会更加多样化但没那么准确;温度较低时,生成的回答会比较保守,也就是倾向于重复训练数据中常见的回答。调整温度可以帮助找到生成回答的“创造性”与“准确性”之间的平衡点。)
就好比在网易云翻日推时,系统会确保推给你的歌尽量符合你的品味,也会偶尔在日推混入其他流派的好歌,保证一定的“推荐创新性。
以上,“预训练”,“微调”,“优化”三个阶段就是模型的工作重要过程,当模型不断在这三个阶段往复,ChatGPT 也就能不断迭代,变快变好变强。
你可能已经发现,大模型生成输出的整个过程实际上就是在所有可能的输出上形成一个概率分布,所有可能的输出取决于当前的语料和认知。
回答的多样性也反映了现实世界的不确定性,这也是大模型幻觉不完全可控的原因。(果然,科学的尽头是玄学!)那么进一步想,如果训练数据中某些信息被有意过多表示,或者选择性缺失,模型就会固执地坚持错误的判断。—— 它并不是有意为之,而是因为它的“视界”被训练数据(认知)所左右了。

END

【本文转载自公众号:DataCafe】

Reference

https://platform.openai.com/tokenizer

https://proceedings.neurips.cc/paper_files/paper/2017/file/3f5ee243547dee91fbd053c1c4a845aa-Reviews.html

https://www.nn-group.com/news/how-nn-uses-ai-to-check-fraud-risks-and-injury-claims/

https://chatgpt.com/g/g-BzrNI7EiD-nn-software




推荐阅读



《大模型应用开发极简入门:基于GPT-4和ChatGPT》

[比] 奥利维耶·卡埃朗,[法] 玛丽–艾丽斯·布莱特 | 著

何文斯 | 译

大模型应用开发极简指南,实战必读,了解 GPT-4 和 ChatGPT 的工作原理 2 小时上手开发,快速构建大模型应用并实践提示工程、模型微调、插件、LangChain 等,送配套代码。大模型一线创业者、应用技术专家联袂推荐:宝玉、张路宇、孙志岗、邓范鑫、梁宇鹏(@一乐)、罗云、宜博。

《深度学习入门:基于Python的理论与实现》

斋藤康毅 | 著







请到「今天看啥」查看全文


推荐文章
半导体行业联盟  ·  美国副总统:确保最强AI芯片 美国制造!
昨天
半导体行业联盟  ·  何小鹏与任正非会面
昨天
半导体行业联盟  ·  中芯国际CEO赵海军:2025年我们担心2件事
15 小时前
半导体行业联盟  ·  拒供在华客户:美国威胁泛林集团(Lam)!
15 小时前
半导体行业联盟  ·  读懂张忠谋,就读懂了世界半导体
4 天前