西安网站建设公,淮北论坛最新,wordpress 3.8.1 下载,地接做的网站本文详细解析了大语言模型从文本输入到预测输出的工作原理#xff0c;包括文本分词、词嵌入映射、注意力机制计算等核心步骤。通过这些机制#xff0c;LLM能够理解上下文并生成连贯响应。同时指出模型规模扩大能带来质的飞跃#xff0c;涌现出更多高级能力。 1. 将文本精简为…本文详细解析了大语言模型从文本输入到预测输出的工作原理包括文本分词、词嵌入映射、注意力机制计算等核心步骤。通过这些机制LLM能够理解上下文并生成连贯响应。同时指出模型规模扩大能带来质的飞跃涌现出更多高级能力。1. 将文本精简为有意义的单元作为人类通常我们是通过逐字阅读并弄清楚这些词语之间的关系来理解句子的含义。因此为了使大型语言模型模仿我们阅读文本的方式研究人员提出了分词Tokenization的概念词法分析是将任何文本片段分割成更小、更有意义的单元称为词元 Token的过程。 负责词元分析过程的模型称为分词器Tokenizer。如何创建分词器1、语料库选择这个过程从构建一个庞大且具有代表性的文本数据集开始供分词器学习。 语料库的质量和多样性直接影响分词器捕捉语言模式的准确程度。2、算法应用应用分词算法例如字节对编码Byte-Pair Encoding, BPE将文本分解成有意义的单元。BPE 从单个字符开始反复合并最常用的字符对直到达到所需的词汇量。3、创造词汇通过训练分词器构建最终的词元词汇表及其合并规则或概率。4、词元 ID 分配然后给词汇表中的每个词元都分配一个唯一的整数 ID这使得模型能够将文本转换为数字进行处理。“训练”一个分词器是指执行统计分析和构建词汇表它不涉及神经网络训练或可学习参数。使用 GPT-4o 分词器进行分词例如上图所示的分词过程正是 ChatGPT 的实现方式。我们可以看到词元可以是•完整单词“This”、“is”、“a”、“great”、“blog”、“about”•子词“token”、“##ization”•标点符号“.”在分词器的词汇表中我们还可以找到其他几种类型的标记例如特殊标记例如|endoftext|pad s/s。计算机需要各种不同的词元才能发现并对自然语言中那些原本很难捕捉到的模式进行建模。例如为前缀和后缀创建单独的词元有助于大语言模型LLM在训练过程中发现它们的含义以及人类使用它们的方式。这样在预测过程中模型就能准确地使用这些组成部分。现代语言学习模型如 GPT-40使用子词分词subword tokenizationrunning→[run,##ning]unbelievable→[un,##believe,##able]这种方法既高效又灵活。模型学习到“run”具有基本含义而“##ning”表示正在进行的动作。这样一来它甚至可以处理像“fast-running”这样的自造词。从词元到 ID现在我们已经了解了对任意文本进行分词的过程我们需要将其转换为计算机可以理解和处理的格式数字Numbers我前面提到过训练分词器时我们需要创建一个词汇表。就像人类一样词汇表是模型能够识别和使用的所有词元的集合。它本质上是模型的“字典”包含了它所知道的所有文本片段。例如Llama 3 模型的词汇表大小为 12.8 万个词元。词汇表中的每个词元都有一个唯一的 ID你可以当成是词元的身份证它表示传递给大语言模型的词元即只将词元 ID 传给大模型不传词元本身。使用 GPT-4o 分词器进行 ID 分词分词示例代码from transformers import AutoTokenizer model_nameQwen/Qwen3-1.7BtokenizerAutoTokenizer.from_pretrained(model_name)textThis is a great blog about Tokenizers.tokenstokenizer.tokenize(text)print(tokens)输出[This, Ġis, Ġa, Ġgreat, Ġblog, Ġabout, ĠToken, izers, .]这里有几个词元以空格标记 (Ġ) 开头Llama 和 Qwen 模型使用该标记Gemma 使用下划线_这是一个特殊字符添加到前面有空格“ ”的词元中。为什么要使用空格为了进一步帮助模型区分“artist”和“art”中的“art”注意单词前的空格确保单词边界在编码过程中保持完整。2. 将含义映射到数字空间现在我们有了词元也就是像 2500 代表“this”1078 代表“about”这样的整数 ID。但仅仅依靠数字并不能表达含义。这就需要用到**嵌入技术embeddings**了。嵌入是一个称为“向量”的数字列表它将每个标记定位在一个高维的“有意义的”空间中。从数学角度来说嵌入是维空间中的一个向量。在训练过程中嵌入模型会调整这些向量使得在相似上下文中使用的词语具有相似的坐标。两个嵌入向量的余弦相似度代表了它们的含义的“接近”程度。从上图中我们可以清楚地看到嵌入空间不仅仅是词元随机放置的空间而是每个词元的学习位置以及与其他词元的相对位置都具有隐藏的含义这对于 LLM 来说很有用。我通过使用常用的嵌入模型setence-transformers/all_MiniLM-L6-v2计算每个词的嵌入向量然后使用 UMAP 将嵌入向量转换到二维空间创建了上面的图像。UMAP 比 PCA 和 t-SNE 更适合这项任务因为它既保留了局部邻域关系如 t-SNE又保持了数据的全局几何形状。代码示例# 加载嵌入模型 modelAutoModel.from_pretrained(BAAI/bge-small-en-v1.5)# 获取词嵌入 defget_embedding(word):inputstokenizer(word,return_tensorspt)with torch.no_grad():outputsmodel(**inputs)returnoutputs.last_hidden_state.mean(dim1).squeeze()# 计算相似度 defcosine_similarity(a,b):returntorch.nn.functional.cosine_similarity(a,b,dim-1).item()# 计算嵌入向量 embeddings_loveget_embedding(love)embeddings_hateget_embedding(hate)embeddings_lovelyget_embedding(lovely)embeddings_hatefulget_embedding(hateful)# 计算并打印相似度结果print(Dimension of the embedding space: ,embeddings_love.shape)print(Similarity between love and hate: ,round(cosine_similarity(embeddings_love,embeddings_hate),3))print(Similarity between lovely and hateful: ,round(cosine_similarity(embeddings_lovely,embeddings_hateful),3))print(Similarity between love and lovely: ,round(cosine_similarity(embeddings_love,embeddings_lovely),3))print(Similarity between hate and hateful: ,round(cosine_similarity(embeddings_hate,embeddings_hateful),3))Dimension of the embedding space:torch.Size([384])Similarity between love and hate:0.549Similarity between lovely and hateful:0.459Similarity between love and lovely:0.7Similarity between hate and hateful:0.806“love”和“hate”以及“lovely”和“hateful”之间的相似度约为 0.5这意味着这些词语具有中等程度的方向相似性这是因为这些词语属于“感觉”或“情感”类别所以它们之间存在中等程度的相似性。另一方面“love”和“lovely”以及“hate”和“hateful”之间的相似度相当高因为这些词不仅在语义上接近而且在句法上也接近。我仍然觉得嵌入模型非常有趣花时间探索嵌入空间对于理解语言模型至关重要。3. 让模型付诸注意力现在模型已经拥有了承载意义的词元。但是要真正理解一个句子、一段文字甚至是一段代码它还需要掌握上下文context 换句话说它需要捕捉词语和它们在上下文中所扮演的角色之间的关系。为了实现这一目标研究人员发明了注意力机制Attention mechanism也就是谷歌提出的经典网络架构——Transformer论文原文 PDF 可在文末获取简单来说注意力机制是 LLM 中可训练的组件它决定在生成下一个词元时要关注哪些词元德国的首都是柏林突尼斯的首都是……它被称为自注意力self-attention因为它捕捉的是同一序列中元素之间的关系而不是交叉注意力cross-attention交叉注意力是将两个不同序列中的元素联系起来。下面的热图表示Transformer的核心即引入注意力机制的架构展示了每个词元Y 轴如何关注其他词元X 轴。使用 Llama 3.1–8b左和 GPT2右计算的最后一个 Transformer 模块的自注意力机制我们总是得到三角形的热图因为 LLM 是使用因果掩码的因果模型。这意味着对下一个词元的预测仅取决于它之前的词元输入词元或先前生成的词元。换句话说模型无法窥探未来的词元。相比之下像BERT这样的模型是非因果的这意味着它们可以关注单词两侧的标记但这超出了本系列的范围感兴趣的朋友可自行探究。需要注意的是自注意力机制的可解释性并非总能清晰地揭示模型在预测下一个词元时真正关注的是哪些词元。如上图“平均注意力分布”所示最受关注的词元通常是第一个词元 占据了超过 50%的总注意力。这当然有悖常理。第一个词元无论是否特殊对预测下一个词的上下文意义通常都很小。但别担心这是大语言模型LLM中一个众所周知的现象称为“注意力陷阱Attention Sink”。 它已被广泛研究 一些研究人员甚至认为它在现代语言学习模型中扮演着有益、有甚至是不可或缺的角色。这是一个比较高级的话题我们将在以后的文章中探讨。至少就我理解而言注意力机制的核心思想是通过关注其他相关词元帮助模型根据上下文优化每个词元的词嵌入。这样新的词嵌入就能尽可能准确地捕捉该词元在其上下文中的含义。油管大神频道 3Blue1Brown800 万粉丝对此有一个非常清晰简洁的解释我强烈推荐大家去看看。考虑到很多朋友的网络问题视频我已准备好文末获取。正是这一概念最终使 Transformer 超越了 RNN 和 LSTM 等较早的 NLP 架构。那么这种自注意力是如何计算的呢带注释的注意力方程对于每个词元该模型使用其嵌入向量“x”计算三个向量•Query (Q)Q x W_Q•Key (K)K x W_K•Value (V)V x W_V其中“W_Q”、“W_K”和“W_V”是权重矩阵是矩阵乘法运算符。然后使用上图中的公式计算注意力权重。每个词的“Query”Q在所有“Key”K中查找匹配项并使用这些匹配项将“Value”V组合成上下文感知的输出。直觉这就像问“在解读这句话时我还应该注意其他哪些词语”示例虚拟权重import torch import torch.nn.functional as F假设我们有以下输入“The capital of Tunisia”分词[“The”, “capital”, “of”, “Tunisia”]获取虚拟嵌入embed_dim4token_embeddingstorch.randn(4,embed_dim)#4tokens,4D embeddingsprint(Token embeddings:\n,token_embeddings)输出Token embeddings:tensor([[0.3374,-0.1778,-0.3035,-0.5880],[0.3486,0.6603,-0.2196,-0.3792],[0.7671,-1.1925,0.6984,-1.4097],[0.1794,1.8951,0.4954,0.2692]])在这个例子中我们将计算第二个标记“capital”的自注意力因此它只能关注 2 个词元 [“The”, “capital”]。# Were updating token at index1(capital)target_idx1# Due to causal masking,capitalcan only attend to tokens[0,1]allowed_indices[0,1]context_embeddingstoken_embeddings[allowed_indices]# shape:[2,4]print(f\nContext for token {target_idx} (indices {allowed_indices}):\n,context_embeddings)输出Contextfortoken1(indices[0,1]):tensor([[0.3374,-0.1778,-0.3035,-0.5880],[0.3486,0.6603,-0.2196,-0.3792]])现在我们有了嵌入接下来需要 QKV 权重矩阵d_k d_v 2 # small dimension for clarity (in gpt2 d_kd_v64) # Create dummy weights W_Q torch.randn(embed_dim, d_k) # [4, 2] W_K torch.randn(embed_dim, d_k) # [4, 2] W_V torch.randn(embed_dim, d_v) # [4, 2] print(\nW_Q:\n, W_Q) print(W_K:\n, W_K) print(W_V:\n, W_V)输出W_Q:tensor([[0.3239,-0.1085],[0.2103,-0.3908],[0.2350,0.6653],[0.3528,0.9728]])W_K:tensor([[-0.0386,-0.8861],[-0.4709,-0.4269],[-0.0283,1.4220],[-0.3886,-0.8903]])W_V:tensor([[-0.9601,-0.4087],[1.0764,-0.4015],[-0.7291,-0.1218],[-0.4796,-0.5166]])下一步是计算目标词元“capital”的 QKV 矩阵x_targettoken_embeddings[target_idx]x_contextcontext_embeddings Qx_target W_Q Kx_context W_K Vx_context W_Vprint(\nQuery (Q) for capital:,Q)print(Keys (K) for context:\n,K)print(Values (V) for context:\n,V)输出Query (Q) for capital: tensor([ 0.0664, -0.8109]) Keys (K) for context: tensor([[ 0.3078, -0.1311], [-0.1708, -0.5655]]) Values (V) for context: tensor([[-0.0119, 0.2743], [ 0.7181, -0.1850]])现在我们可以应用注意力公式# Compute attention scores: Q · K^T scores Q K.T print(\nRaw scores (Q · K):, scores) # Scale scaled_scores scores / (d_k ** 0.5) print(Scaled scores:, scaled_scores) # Softmax → attention weights weights F.softmax(scaled_scores, dim-1) print(Attention weights:, weights) print(Sum of weights (should be 1.0):, weights.sum().item())输出Raw scores (Q · K): tensor([0.1268, 0.4473]) Scaled scores: tensor([0.0897, 0.3163]) Attention weights: tensor([0.4436, 0.5564]) Sum of weights (should be 1.0): 1.0计算更新后的词嵌入向量output weights V print(\nNew contextualized representation for capital:, output)输出New contextualized representation for capital: tensor([0.3942, 0.0187])这就是因果模型中自注意力机制计算注意力的方式也是嵌入更新的方式我们上面进行的计算是在大语言模型LLM中的一个名为“注意力头Attention Head”的组件中完成的。 我之前提到过大多数 LLM 都使用基于 Transformer 的架构该架构包含一个多头注意力组件Multi-head attention component。 使用更多的注意力头可以让模型学习到更多的模式这张图展示了类似 GPT 模型的仅解码器 LLM 的完整架构。这是“Attention is all you need”论文中提出的基础架构但现代模型拥有更完善的架构。我们已经介绍了分词、词嵌入和注意力头的计算。然而这个架构包含更多组件但不用担心其他所有组件都非常简单在其他许多深度学习模型中也使用。以下是每个组件的简要说明•层归一化Layer Normalization, LayerNorm:对特征维度每个词元上的激活值进行归一化以稳定训练并提高收敛性。•线性密集层Linear (Dense) Layer这是一个标准的全连接层它对输入执行线性变换y xW b•前馈网络FFN/多层感知器MLP它通常由两个线性层组成中间有一个非线性激活函数通常为Linear → GELU/SiLU → Linear。•Softmax将原始 logits 向量例如来自注意力分数或最终输出转换为概率分布。4. 训练与推理训练阶段模型读取数万亿个单词并反复练习预测下一个词元。它正是通过这种方式积累知识但这极其昂贵需要海量数据、强大的 GPU 和大量时间。推理阶段当你给它一个提示词时它会利用它所学到的一切逐个词元、实时地生成响应。这速度快比训练更便宜而且是你与人工智能进行每一次聊天的基础。所以虽然该模型看起来好像能即时思考但实际上它只是在回忆训练期间看到的模式在对话过程中并没有发生新的学习。5. 规模的力量如果你把一个语言模型简单地扩大规模增加参数、增加数据它不仅仅只是略微改进而是会开始做一些没人教过它的事情。一个小型模型或许能帮你把话说完“天空是……”但遇到“17 × 24 等于多少”或者“用十岁小孩都能听懂的方式解释逆问题”就卡住了。但如果用数十亿个参数和更多的文本训练同一个模型扩大其规模它就能进行数学推理、编写可运行的代码或者根据指令切换语气和风格。这些功能并非工程师添加的而是随着模型的成长规模增大而突然出现。这并非偶然。存在可预测的缩放规律规模以及数据和计算能力翻倍性能却能以平稳、可衡量的方式得到提升。更大的模型更擅长构建更丰富、更灵活的语言内部运作方式图。当然越大并不总是越实用。你不需要一个拥有1000亿个参数的模型来写一条推文虽然我们都在这么做但是当你要求人工智能思考或创造新事物时规模才是完成任务的秘诀如何学习大模型 AI 由于新岗位的生产效率要优于被取代岗位的生产效率所以实际上整个社会的生产效率是提升的。但是具体到个人只能说是“最先掌握AI的人将会比较晚掌握AI的人有竞争优势”。这句话放在计算机、互联网、移动互联网的开局时期都是一样的道理。我在一线科技企业深耕十二载见证过太多因技术卡位而跃迁的案例。那些率先拥抱 AI 的同事早已在效率与薪资上形成代际优势我意识到有很多经验和知识值得分享给大家也可以通过我们的能力和经验解答大家在大模型的学习中的很多困惑。我们整理出这套AI 大模型突围资料包✅ 从零到一的 AI 学习路径图✅ 大模型调优实战手册附医疗/金融等大厂真实案例✅ 百度/阿里专家闭门录播课✅ 大模型当下最新行业报告✅ 真实大厂面试真题✅ 2025 最新岗位需求图谱所有资料 ⚡️ 朋友们如果有需要《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大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。资料内容涵盖了从入门到进阶的各类视频教程和实战项目无论你是小白还是有些技术基础的技术人员这份资料都绝对能帮助你提升薪资待遇转行大模型岗位。以上全套大模型资料如何领取