文章目录
- 1、文本从输入到输出,经历了什么?
- 2、数据流动过程是张量,如何知道张量表达的文本内容?
- 3、词转为张量、张量转为词是唯一的吗?为什么?
- 4、如何保证词张量的质量和合理性
- 5、总结
🍃作者介绍:双非本科大四网络工程专业在读,阿里云专家博主,专注于Java领域学习,擅长web应用开发,目前开始人工智能领域相关知识的学习
🦅个人主页:@逐梦苍穹
📕所属专栏:人工智能
🌻gitee地址:xzl的人工智能代码仓库
✈ 您的一键三连,是我创作的最大动力🌹
1、文本从输入到输出,经历了什么?
一串自然语言文本从输入到输出,经过了多个复杂的过程,涵盖了多种自然语言处理(NLP)技术和深度学习模型的工作。
具体流程可以分为以下几个主要步骤:
1️⃣ 输入的文本预处理(Preprocessing)
在文本被送入大语言模型之前,首先会进行预处理,以便模型能够有效地理解和处理这些文本。
这个阶段通常包括以下几个操作:分词(Tokenization)、标准化、词嵌入(Embedding)
通过词嵌入,可以将文本中的词语转化为机器可以理解的数值表示。
现代语言模型通常会使用像GloVe、Word2Vec或更复杂的上下文相关嵌入(如BERT中的transformer层输出的嵌入)。
词嵌入的张量值不是随机赋值的!
2️⃣ 语言模型的结构(Model Architecture)
大语言模型目前通常基于一种叫做Transformer的神经网络架构。
Transformer架构自2017年由Vaswani等人提出以来,成为了处理自然语言文本的主流技术。
- 输入编码(Encoding):每个token被转换为一个高维张量,并且这些张量会作为模型的输入。基于位置编码(Positional Encoding),Transformer能够感知词序列中单词的顺序,因为Transformer本身不具备序列信息处理的能力。
- 自注意力机制(Self-Attention):Transformer的核心机制是自注意力(Self-Attention),它可以使模型在处理每个token时,考虑到整个序列中其他token对当前token的影响。例如,在处理句子“我喜欢人工智能”时,模型会在计算每个词的表示时注意到“人工智能”这个词,并将其与其他词的关系进行编码。
- 多头注意力(Multi-Head Attention):这一机制让模型可以在多个子空间中并行计算不同的注意力权重,从而捕捉到更丰富的上下文信息。
- 前馈神经网络(Feedforward Neural Networks):Transformer中的每个层除了自注意力外,还包含一个前馈神经网络部分,用于进一步处理信息和增强模型的非线性能力。
- 层叠结构(Layer Stacking):Transformer架构通常由多个这样的自注意力层和前馈网络层堆叠组成。每一层的输出作为下一层的输入,从而逐步增强模型对文本的理解。
3️⃣ 语境建模与上下文理解(Contextual Understanding)
在语言模型的核心任务中,理解上下文是至关重要的。语言模型通常使用自回归(Autoregressive) 或 自编码(Autoencoding) 的方式来处理文本。
上下文捕捉:自注意力机制允许模型关注到输入文本的不同部分,从而构建一个全局的上下文表示。在处理较长的文本时,Transformer能够有效捕捉到长距离依赖。
4️⃣ 解码过程(Decoding)
在文本生成任务中,解码过程非常重要。
当模型根据输入文本生成输出时,它会依次根据上下文信息进行逐步预测。
- 采样(Sampling):模型在生成文本时会通过某种采样策略来选择下一个最可能的词。常见的策略包括贪婪解码(Greedy Decoding)、温度采样(Temperature Sampling)、Top-K采样、Top-P采样等,这些策略用来控制输出的多样性和流畅性。
- 概率分布(Probability Distribution):对于每一个token,模型会输出一个概率分布,表示每个可能的token作为下一个token的概率。最终生成的文本是根据这些概率逐步选择的。
5️⃣ 输出生成(Output Generation)
模型通过解码阶段产生最终的输出。
这些输出不仅仅是一个词语的序列,它们往往包含了对输入文本的复杂理解,并能够根据输入的上下文来生成符合语法和语义的合理回应。
6️⃣ 评估与反馈(Evaluation & Feedback)
虽然这部分通常不直接涉及在生成过程中,但现代的语言模型如GPT还会通过额外的监督学习或强化学习进行微调,进一步提高其输出的质量。比如,GPT-3及其后续版本通常会通过人类反馈进行强化学习(Reinforcement Learning from Human Feedback, RLHF),不断优化其生成的内容。
7️⃣ 总结
从输入到输出,一串自然语言文本在大语言模型中经历了多个复杂的步骤:从分词、嵌入表示、上下文建模,到自注意力计算,再到生成阶段的逐词预测。
2、数据流动过程是张量,如何知道张量表达的文本内容?
1️⃣ 张量的意义
在Transformer模型中,词语首先会被转化为嵌入张量(embedding vectors)。
这些张量并不直接包含文本的意思,而是通过训练得到的、具有高维度的数值表示。
换句话说,这些张量代表的是词的分布式表示,它们携带着关于词与其他词在大量语料中的关系和模式的信息。
每个词的嵌入张量是基于大规模的语料库(例如维基百科、新闻文章等)训练得来的,通过算法学习到词与词之间的相对位置、关联性和使用频率。
虽然这些嵌入张量本身没有明确的“意思”,但它们在高维空间中彼此之间是有结构的,反映了词语之间的语义关系。
2️⃣ 自注意力机制的作用
自注意力机制(Self-Attention)是模型理解这些张量如何与其他词语相关联的关键。
具体来说:
- 每个词的表示(张量)都会对整个句子中的其他词进行“关注”,这就是“注意力”机制。每个词在计算其表示时,会根据上下文中其他词的影响来动态调整它自己在当前上下文中的“权重”。
- 通过这种机制,模型可以理解“人工智能”与“我”或“喜欢”之间的关系。例如,在“我喜欢人工智能”中,模型会通过注意力机制将“人工智能”与“喜欢”建立联系,而不仅仅是将“人工智能”作为独立的词来看待。模型会根据整个句子的上下文关系来推断“人工智能”表示的概念。
3、词转为张量、张量转为词是唯一的吗?为什么?
首先要搞清楚:为什么文本能转换为张量,张量数据流动输出最终张量,为什么又能转换为特定的文本?
先说结论:张量的数值并不是随便赋值的,是经过模型进行表述的。
1️⃣ 词嵌入(Word Embedding)概述
词嵌入是一种将每个词转化为一个高维的、密集的张量表示的方法。这些张量在经过训练后,会捕捉到词之间的语义关系。
举个简单的例子,在没有经过嵌入之前,“人工智能”和“科技”这两个词在计算机看来是两个完全不同的符号(就是“人工智能”和“科技”这几个字本身)。但是,词嵌入的目标是将这两个词转换成张量,使得计算机可以理解它们之间的相似度。
2️⃣ 中文如何转化为张量
核心步骤是通过一个嵌入层将每个汉字或词语映射到一个 高维空间 中的张量表示。
这个过程通过大规模语料库的训练
来实现。
- 中文分词:中文是没有空格分隔的,因此首先需要通过分词工具将句子分割成一个个“词”或“子词”。例如,“我喜欢人工智能”可以分成“我”、“喜欢”、“人工智能”。
- 词张量表示:每个分出的词会映射为一个张量。例如,假设“我”这个词的张量表示是
[0.25, -0.30, 0.80]
,而“人工智能”这个词的张量表示是[0.45, 0.60, -0.10]
。
这些张量并不是随便赋值的,而是通过深度学习模型(比如Word2Vec、GloVe或BERT等)根据大量语料库训练出来的。
训练的目标是让相似意义的词语在张量空间中靠得更近,而语义差异较大的词则会距离较远。
3️⃣ 词张量生成的一般步骤:
1)语料库训练
- 首先是需要大量的文本数据作为训练语料库;
- 语料库可以包含书籍、文章、网页内容等,这些文本将提供词汇的上下文关系和词之间的语义关联。
2) 分词与上下文窗口
- 在训练过程中,模型会将文本分割成单词或子词;
- 对于每个词,模型会基于其周围的上下文词来训练;
- 例如,假设句子是“我喜欢人工智能”,在训练中,我们可以选择一个词(例如“人工智能”),然后通过它周围的词(例如“我”,“喜欢”)来预测该词
3) 训练模型生成张量
常见的两种训练方法是 CBOW (Continuous Bag of Words) 和 Skip-Gram,它们都是基于上下文词来生成目标词的张量表示。
详细原理讲解请看这篇:https://xzl-tech.blog.csdn.net/article/details/140942295
- CBOW(连续词袋模型):CBOW通过上下文词(周围词汇)来预测目标词。
- Skip-Gram:Skip-Gram的方式相反,模型通过一个目标词来预测它的上下文词。这种方式在处理低频词时尤其有效。
这两个模型都会通过迭代的方式,不断调整每个词的张量,使得相似的词(在语义上有相关性的词)在张量空间中距离较近,而不相关的词则距离较远。
- 嵌入矩阵的学习
通过这些训练,模型会得到一个嵌入矩阵,其中每一行代表一个词的张量。
这些张量会在高维空间中捕捉到词语的语义信 息,并且词语之间的距离(欧几里得距离或余弦相似度)反映了它们语义的相似性。
4️⃣ 为什么要将词转化为张量
将词转化为张量的原因主要有以下几点:
- 计算机无法理解文本:计算机只能处理数值数据,但自然语言是文本形式。通过将每个词转化为张量,计算机就能在数值空间中进行计算和处理。
- 高维张量能够表达语义:传统的one-hot encoding方法仅仅是将每个词表示为一个极其稀疏的张量,无法捕捉词语之间的关系。词嵌入能够将词的语义表示为一个密集的高维张量,这样相似意义的词语会有相似的张量表示,从而使得模型能够理解词语的含义。
- 计算效率:词张量不仅能减少维度(相较于one-hot encoding),还可以通过数学运算(如加法、减法、相似度计算等)来捕捉词语之间的关系,提升计算效率。
5️⃣ 每个词的张量是否唯一?如何保证的?
词张量并非绝对唯一,而是依赖于以下几个因素:
- 上下文的变化:如果使用不同的语料库或不同的训练参数(如窗口大小、维度等),同一个词的张量可能会有所不同。因为词的张量是通过上下文来学习的,语料库不同,词语的上下文信息不同,因此得到的词张量可能会有所差异。
- 模型的训练方式:不同的模型(如Word2Vec与BERT)会生成不同的词张量。Word2Vec生成的是静态词张量,即一个词的张量是固定的;而BERT等基于Transformer的模型生成的是动态词张量,根据上下文的不同,词的张量表示会有所不同。
6️⃣ 那么什么是静态词张量和动态词张量?
静态词张量和动态词张量是自然语言处理中两种主要的词张量表示方法。
它们之间的区别主要体现在词张量如何生成、如何使用上下文信息,以及是否根据不同的上下文调整张量。
静态词张量指的是每个词在整个语料库中的表示都是固定的,也就是说,不管这个词出现在什么样的上下文中,它的张量表示都是一样的。
静态词张量的生成方法
静态词张量是通过模型对大规模语料库进行训练来生成的,常见的静态词张量生成方法有:
- Word2Vec:Word2Vec是最著名的生成静态词张量的模型,它通过两种方式来学习词张量:CBOW(Continuous Bag of Words)和Skip-Gram。它会根据上下文中的词语来预测目标词,最终得到每个词的静态张量。
- GloVe:GloVe(Global Vectors for Word Representation)是另一种学习静态词张量的方法。它基于词语共现矩阵,通过矩阵分解的方式学习词的张量表示。GloVe模型也会为每个词生成一个固定的词张量。
静态词张量的特点
- 固定的词表示:每个词的张量表示在训练完成后是固定的,即不受上下文的影响。每次遇到“苹果”这个词,它的张量都是一样的,假设它的张量是
[0.45, 0.32, -0.10]
,无论是在“我吃苹果”还是“苹果公司”中,这个张量都不变。 - 依赖于大量的语料库:静态词张量的质量和语料库的丰富度密切相关。语料库越丰富,模型学到的词张量表示就越能捕捉到词汇的多种含义和关系。
- 语义相似性:静态词张量通过在语料库中学习到的共现关系,能够确保语义相似的词具有相似的张量表示。例如,“科技”和“技术”的张量会非常接近,而“科技”和“足球”则会有很大差异。
静态词张量的局限性
- 无法处理多义词:静态词张量的最大问题是无法处理多义词(Polysemy)。比如,“银行”可以指金融机构,也可以指河岸。在静态词张量中,“银行”这个词的张量是固定的,无论是在金融上下文中还是在自然环境中的含义。
- 缺乏上下文信息:静态词张量没有根据特定上下文来调整词的表示,这导致了它们无法灵活地适应不同的语境。
动态词张量(Contextual Word Embeddings)
动态词张量是根据上下文来动态生成的词张量。
在这种模型中,同一个词在不同的上下文中会有不同的表示,因此可以根据实际语境来调整词的张量。
动态词张量的一个典型代表是BERT
动态词张量的生成方法
动态词张量的生成依赖于深度学习模型,尤其是基于Transformer架构的预训练语言模型,如 BERT、GPT、RoBERTa、XLNet等。
以下是动态词张量生成的基本步骤:
- 输入:首先,模型会将输入文本分割成多个token,然后将这些token转化为初步的嵌入表示(即每个词的初步张量)。
- 上下文建模:然后,模型会利用自注意力机制(Self-Attention)和多层Transformer网络对上下文进行建模。通过这种方式,模型能够根据整个句子的语义来调整每个词的表示。例如,“银行”在“我去银行存钱”和“河岸旁的银行”中会有**不同的词张量表示**。
- 输出:最终,模型为每个词生成一个动态词张量,这个张量与上下文紧密相关。
动态词张量的特点
- 上下文相关:动态词张量会根据每个词在句子中的上下文来调整其表示。例如,BERT模型生成的“银行”张量会根据它出现在“我去银行存钱”中的语境而与“我在河边的银行走路”中的“银行”表示不同。
- 可以处理多义词:动态词张量非常适合处理多义词问题,因为它会根据不同上下文生成不同的词张量。例如,BERT模型会为“银行”在金融和自然环境中的不同含义生成不同的词张量。
- 基于Transformer模型:动态词张量的生成依赖于深度学习中的Transformer模型,通过多层的自注意力机制处理输入的上下文信息,从而为每个词生成丰富的上下文相关表示。
动态词张量的优势
- 灵活性和准确性:动态词张量能够灵活地根据句子的不同语境来调整词的表示,保证了语义的准确性。即使是同一个词,它也能够根据上下文给出不同的表示。
- 捕捉复杂的语法和语义:通过深度学习模型和Transformer架构,动态词张量能够捕捉到更复杂的语法和语义信息。尤其在长文本或复杂句子中,模型能够利用上下文中的其他词来准确理解目标词的含义。
动态词张量的局限性
- 计算复杂度高:生成动态词张量需要大量的计算资源,因为它依赖于复杂的深度学习模型,尤其是大规模的Transformer架构,计算和存储开销较大。
- 训练和推理时间长:相较于静态词张量,动态词张量的训练和推理过程要耗时得多,因为模型必须根据整个上下文来调整每个词的张量。
静态与动态词张量的比较
特性 | 静态词张量 | 动态词张量 |
---|---|---|
生成方法 | 基于固定的语料库和词汇表学习 | 基于上下文和深度学习模型动态生成 |
张量是否固定 | 是,每个词的张量是固定的 | 否,词的张量会根据上下文变化 |
处理多义词能力 | 较弱,无法根据上下文区分多义词 | 很强,可以根据上下文区分多义词 |
模型复杂度 | 较低,计算开销较小 | 较高,计算和存储开销较大 |
适用性 | 适用于较简单的任务,如词汇关系分析 | 适用于复杂的任务,如情感分析、问答等 |
示例模型 | Word2Vec, GloVe | BERT, GPT, RoBERTa, ELMo |
小结:
- 静态词张量:在模型训练后,每个词的张量固定,不会根据上下文进行调整,适合一些简单的任务,如词汇相似性计算。
- 动态词张量:根据上下文来调整词的表示,能够处理多义词和复杂的语境,适用于更复杂的任务,如情感分析、机器翻译、问答等。动态词张量的生成依赖于深度学习模型,尤其是基于Transformer的模型,因此计算开销较大,但其准确性和灵活性也远超静态词张量。
4、如何保证词张量的质量和合理性
词张量的质量和合理性是通过大量数据的训练和优化来保证的。
词嵌入模型通过不断调整权重和优化目标函数,来确保相似词语的张量尽可能接近。在
此外,语料库的多样性和质量直接影响最终词张量的质量。
大规模、多样化的语料库能帮助模型学习到更多的语言模式,生成更准确的词张量。
5、总结
词张量是通过机器学习模型根据上下文信息将每个词转化为一个高维张量表示的。这种转化使得计算机可以更好地理解文本中的语义关系。每个词的张量不是绝对唯一的,它依赖于训练语料库、模型和上下文。通过优化训练过程和调整模型参数,我们可以得到符合语义关系的词张量,从而更好地处理自然语言任务。