小白程序员轻松入门大模型:趣解Transformer的关键一步——词嵌入与位置编码

发布时间:2026/7/21 10:48:52
小白程序员轻松入门大模型:趣解Transformer的关键一步——词嵌入与位置编码 本文深入浅出地解析了Transformer模型如何理解词义和词序。首先介绍了词嵌入的概念即如何将每个词转换成有意义的数字向量帮助模型捕捉词义。接着针对Transformer一次性处理所有token而忽略顺序的问题提出了位置编码的解决方案。通过使用不同频率的正弦和余弦函数组合为每个位置生成独特的编码既保留了词的含义又赋予了模型位置感知能力。这种简单而有效的编码方式是Transformer模型理解序列数据的关键一步。Transformer 热潮。你最近在网上接触到的一切都源于此。你可能没意识到但只要用过 ChatGPT、GitHub Copilot 或其他 LLM 厂商的产品你就已经在用 Transformer 了。这套架构是现代 AI 背后的引擎。而这一切都始于 2017 年的一句话“注意力就是你所需要的一切。”这是一个石破天惊的时刻重塑了我们对序列建模的思考方式。不再有 RNN 那种缓慢的逐步处理也不再有 LSTM 那样的短期记忆难题。时至今日“Transformer”变形金刚大概是科技圈里含义最被滥用的词了抱歉了擎天柱。那么与 RNN、LSTM 相比Transformer 到底是怎么工作的这正是 Transformer 系列后续博客要讲的内容。PS有兴趣阅读原文吗从 arXiv 下载。RNN 和 LSTM 第一部分和第二部分回顾。在第一部分我们认识了 RNN——一种带记忆的神经网络。它一次处理一个输入靠传递隐藏状态来记住过去。可即便是中等长度的序列它也难以应付训练还慢得让人头疼。第二部分介绍了 LSTM一次巧妙的升级引入门控和双记忆路径修好了最严重的问题让序列建模真正能用了——至少在序列变长之前是这样。两者背后的核心理念是顺序是天生内置的。正因为网络必须逐步处理数据它从设计上就理解了顺序。说*“国王和王后”和说“王后和国王”不是一回事说“狗在沙发上”和说“沙发压在狗身上”*也不是一回事。Transformer 则是另一类网络。它一次性处理全部数据这对速度是好事但——除非我们给网络一个理解顺序的工具否则它根本意识不到*“沙发压在狗身上”*有多荒谬。这正是本文的意义所在。在谈注意力或任何花哨机制之前得先弄清 Transformer 究竟是怎么知道每个词在哪儿的——就从词嵌入和位置编码讲起。为什么我们今天只讨论嵌入和位置而不是直接深入混乱先把一件事说清楚。靠一篇博文根本不可能讲清整个 Transformer 架构。硬要这么干的人多半是在写教科书——要么就是暗暗憎恨自己的读者。如图所示Transformer 由多层运转的部件组成词嵌入位置编码多头自注意力层归一化前馈层残差连接等等如果你是新手这张图看着可能像电影《盗梦空间》里的场景盒子套着盒子箭头射向四面八方……而驱动 ChatGPT 的那个东西就藏在里面某处。今天我们讲位置编码顺带提一下词嵌入。这两者正好坐在 Transformer 的入口每一个输入都要先经过它们。在注意力、多头投影这些花哨操作登场之前它们就是模型理解文本的方式。那就从 Transformer 流水线的第一步说起我们为什么一开始就需要词嵌入。在确定位置之前我们需要嵌入。机器不懂语言只懂数字。所以第一步是把每个词转换成模型能处理的东西一个数字向量。这种数值表示采用向量形式——一组捕捉词义的数字。这些向量就是所谓的词嵌入紧凑、可学习的表示刻画了一个词的含义。可以把词嵌入理解成网络给每个词发的一张“有意义的指纹”。不像独热向量在那里“王后”和“国王”毫无关联词嵌入会把相似的词在高维空间里安排得彼此靠近。一个简单的例子想象每个词都活在一个二维空间里。真实模型里更像是 512 维——但眼下二维就够用了。下面是几个示例向量数值为求简单是编的dog : [0.50, 0.30] couch : [0.10, 0.90] king : [0.95, 0.20] queen : [0.93, 0.25] and : [0.40, 0.60] on : [0.35, 0.62]注意“国王”和“王后”靠得很近离“和”很远而这两个词之间的距离又比“沙发”和“狗”更远。也许它在区分人、动物和物体或者机器自己学到的某种实体关系。有了词嵌入网络就能开始推理相似性、类比这些东西了。这些数字编码是怎么生成的今天先不讲那本身就是一个大话题。眼下你只需记住两点1. 词被转换成数字2. 这些数字本身给了机器一个起点让它开始在语义上把词联系起来。既然已经瞥见了词嵌入层的作用接下来就设想一个假设场景位置编码根本不存在。没有位置信息的问题。嵌入告诉你那里有什么但没告诉你它在哪儿。接下来我们盯住下面这句话狗坐在沙发上多亏了嵌入模型已经隐约知道“狗”和“沙发”有点关系。它甚至可能“懂得”这两者比“国王”和“王后”更相关——后者在语义上很接近却活在一个完全不同的主题世界里。于是模型知道“狗”和“沙发”是一对。但它知道的也就这么多了。如果只靠词嵌入模型并不在乎“狗”在“沙发”之前还是之后。它会把下面这串东西看成一组飘在空间里的词语义上成簇结构上却彼此脱节[The, dog, sat, on, couch]LSTM 本身就内置了“位置”信息。拿 LSTM 来对比。它一次读一个 token每一步更新隐藏状态。这种缓慢的、一步一步的特性其实是个优点它把顺序焊进了模型里。LSTM 会学到“狗坐在沙发上”很常见而“沙发坐在狗身上”就……有点怪了。Transformer没有这种优势。它一次性看到所有 token。这对速度和并行是好事对追踪顺序却是灾难。除非我们另作说明否则“couch sat dog on”和其他任何排列一样“合理”。这就需要用到位置编码了。它们给每个 token 一种位置感不只是这个词是什么还有它落在句子里的什么位置。这正是那个缺失的要素让模型能说出“狗在沙发之前——而不是反过来。”所以词嵌入帮模型知道“狗”和“沙发”算是朋友比“国王”和“王后”更亲近但真正告诉它谁先到场的是位置编码。而这一点区别决定了一切。一个糟糕的位置编码示例Transformer 究竟是如何利用位置信息的好我们把 Transformer 的架构图请回来图里可以看到输入和输出嵌入层是和位置编码层相加的。就这么简单不过是向量相加。我们拿一个最朴素的例子验证一下。简单示例其中位置编码只是一个全为 0 的向量假设我们的位置向量全是零。给词嵌入加上一个全 0 向量什么都不会变二维图上的点纹丝不动。embedding(couch) [0, 0] embedding(couch)于是数学测试过了语言测试却没过。显然得往词嵌入里加点东西才行。那么——如果把真实的位置传进编码向量里呢使用实际位置是个坏主意看下面的例子。我们把 token 索引加进位置编码向量里。Position 1 → [1, 1] Position 2 → [2, 2] Position 3 → [3, 3] ...看出问题了吗你正在盖过词嵌入。大多数词嵌入都很小取值通常落在 [0, 1] 区间。可一旦你的位置向量写着[200, 200]模型就不再关心这个词是什么意思……而只盯着它在哪儿。语义信号被彻底淹没了。看下面这张带有新位置的二维图。由于这些位置向量太强会发生这么几件事**1. *“couch”*原本在 *“dog”*左边但因为它移动了 6 格现在跑到“dog”右边去了**2. 想想位置被表示得多强你会看到 *“couch”*排在“dog”之后——这恰好和原句一致。3. 但由于位置嵌入压过了语义嵌入网络可能净学些奇怪的东西。学习到的位置嵌入真的那么糟糕吗未必——GPT-2 和 BERT 用的就是可学习的绝对位置向量效果很好。真正有害的是给模型一个幅度盖过词嵌入的位置信号或者模式太简单比如[k,k,k,…]。 那么好的位置编码应该具备哪些特点呢两点1. 唯一性每个位置必须有独一无二的编码。2. 平衡编码得足够强才有意义但又不能太强以致抹掉词本身的含义。这正是位置编码必须走的钢丝。那么什么样的向量能做到这时正弦和余弦就登场了。正弦和余弦解法。《注意力就是你所需要的一切》论文中提出了一种复杂但令人惊叹的解决方案。为了编码位置信息作者写道我们使用不同频率的正弦和余弦函数 […] 选择这个函数是因为我们假设它能让模型更容易学会按相对位置来关注因为对任意固定偏移量kPEposk都可以表示成PEpos的线性函数。并给出了下面这个公式别担心我们马上会看到这个解法没那么吓人。建立直觉正弦/余弦向量是什么样子的先把上面那些公式忘掉一秒钟。回到高中想想正弦和余弦函数长什么样。在下图里我画了1. 正弦和余弦的理论曲线。2. 我把我们的例句放在 x 轴上作参照。3. 我还用一个红色散点和一条淡淡的竖线标出了那个理论词位假设“狗”的位置 2与曲线的交点。这样会得到一张类似下面的表把这些画出来每个词现在都有了一个小小的“波形 ID”。你已经在编码顺序了——而且很温和。如果把这个二维 [sin, cos] 向量当作位置编码最终的二维图会是这样层叠波浪为什么它的神奇之处真的有效现在回到论文怎么说。虽然听起来很绕但实际上比听上去简单多了。与其只用一对正弦/余弦就像上面那样不如叠很多对上去——每一对的频率略有不同。下面是一个六维向量的层叠示例对应我们的玩具短语*“狗坐在沙发上”*每一对各占位置编码向量的一个独立维度。于是对于d_model 6你会得到3 个正弦波低频、中频、高频3 个余弦波分别匹配每个正弦波它们共同为每个位置构成一道独特而平滑的特征签名。需要多少个波它们的波长分别是多少论文里明确使用的波数由dmodel决定也就是每个 token 向量的宽度比如 2017 年的论文用的是dmodel 512而新模型很可能轻松超过这个数。根据上面给出的公式每个偶数维2i配一个正弦对应的奇数维2i1配上匹配的余弦。因此i取遍dmodel/2d个索引 → 也就是这么多个频率 / 波长。例如在我们的 6 维玩具示例里dmodel6所以我们造了 3 对波长。至于波长如果把分母还原成波长会得到于是最短波长是 2π指数为 0 时最长是 2π⋅10000指数为 1 时。这意味着波长按几何级数增长让模型既拿到非常精细、也拿到非常粗粒度的位置信号。比如高频波长有的追踪细小的变化token 到 token。低频波长有的捕捉长距离的漂移token 4 与 token 40。为什么正弦和余弦解法效果如此出色✅ 1. 唯一位置编码多个正弦/余弦函数组合在一起确保每个位置都得到一个不同的向量。✅ 2. 可控幅度因为正弦和余弦始终在 -1 到 1 之间叠加的总信号永远不会太大。位置向量只是轻轻推一下词嵌入而不是把它推下悬崖。 结果你保留了词的含义同时给了它一种身处句子中某个位置的感觉。总结一下Transformer 在开始之前需要什么在 Transformer 能关注任何东西之前在它开始计算加权和、或寻找词与词的关系之前它需要两样东西1. 知道每个词意味着什么。词嵌入负责这件事。它把每个 token 锚定在一个丰富的语义空间里——“国王”挨着“王后”“狗”离“猫”比离“沙发”更近。*2. 知道每个词在哪儿。位置编码负责这一件。它注入一种柔和的、有节奏的结构——让模型明白“狗坐在沙发上”和“沙发坐在狗身上”*不是一回事。如何学习大模型 AI 由于新岗位的生产效率要优于被取代岗位的生产效率所以实际上整个社会的生产效率是提升的。但是具体到个人只能说是“最先掌握AI的人将会比较晚掌握AI的人有竞争优势”。这句话放在计算机、互联网、移动互联网的开局时期都是一样的道理。我在一线科技企业深耕十二载见证过太多因技术卡位而跃迁的案例。那些率先拥抱 AI 的同事早已在效率与薪资上形成代际优势我意识到有很多经验和知识值得分享给大家也可以通过我们的能力和经验解答大家在大模型的学习中的很多困惑。我们整理出这套AI 大模型突围资料包✅ 从零到一的 AI 学习路径图✅ 大模型调优实战手册附医疗/金融等大厂真实案例✅ 百度/阿里专家闭门录播课✅ 大模型当下最新行业报告✅ 真实大厂面试真题✅ 2026 最新岗位需求图谱所有资料 ⚡️ 朋友们如果有需要《AI大模型入门进阶学习资源包》下方扫码获取~① 全套AI大模型应用开发视频教程包含提示工程、RAG、LangChain、Agent、模型微调与部署、DeepSeek等技术点② 大模型系统化学习路线作为学习AI大模型技术的新手方向至关重要。 正确的学习路线可以为你节省时间少走弯路方向不对努力白费。这里我给大家准备了一份最科学最系统的学习成长路线图和学习规划带你从零基础入门到精通③ 大模型学习书籍文档学习AI大模型离不开书籍文档我精选了一系列大模型技术的书籍和学习文档电子版它们由领域内的顶尖专家撰写内容全面、深入、详尽为你学习大模型提供坚实的理论基础。④ AI大模型最新行业报告2025最新行业报告针对不同行业的现状、趋势、问题、机会等进行系统地调研和评估以了解哪些行业更适合引入大模型的技术和应用以及在哪些方面可以发挥大模型的优势。⑤ 大模型项目实战配套源码学以致用在项目实战中检验和巩固你所学到的知识同时为你找工作就业和职业发展打下坚实的基础。⑥ 大模型大厂面试真题面试不仅是技术的较量更需要充分的准备。在你已经掌握了大模型技术之后就需要开始准备面试我精心整理了一份大模型面试题库涵盖当前面试中可能遇到的各种技术问题让你在面试中游刃有余。以上资料如何领取为什么大家都在学大模型最近科技巨头英特尔宣布裁员2万人传统岗位不断缩减但AI相关技术岗疯狂扩招有3-5年经验大厂薪资就能给到50K*20薪不出1年“有AI项目经验”将成为投递简历的门槛。风口之下与其像“温水煮青蛙”一样坐等被行业淘汰不如先人一步掌握AI大模型原理应用技术项目实操经验“顺风”翻盘这些资料真的有用吗这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理现任上海殷泊信息科技CEO其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证服务航天科工、国家电网等1000企业以第一作者在IEEE Transactions发表论文50篇获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。资料内容涵盖了从入门到进阶的各类视频教程和实战项目无论你是小白还是有些技术基础的技术人员这份资料都绝对能帮助你提升薪资待遇转行大模型岗位。以上全套大模型资料如何领取