购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.2.1 词嵌入

由于计算机无法直接处理文本数据,因此需要将其转化为计算机能够处理的数值数据。词嵌入是一种将文本数据转化为数值数据的技术,能够将输入序列中的每个词转换为一个向量,体现该词的语义信息。词嵌入的核心思想在于模型为输入序列中的每个词生成一个向量,并将这些向量进行合并,以表示输入序列的语义信息。这一设计使模型能够更有效地捕捉输入序列中的语义信息,从而提升模型的表达能力。

计算机究竟是如何将文本数据转换为数值数据的?一种简便的方法是使用One-Hot编码。One-Hot编码是一种将文本数据转换为数值数据的技术,它能够将输入序列中的每个词转换为一个向量,以表示该词的语义。One-Hot编码的核心思想是:模型为输入序列中的每个词生成一个向量,然后将这些向量组合起来,用于表示输入序列的语义。我们可以通过一个例子来解释One-Hot编码的原理。假设我们有一个词典,每个词都有一个编号,可以用一个向量表示每个词,其中每个维度对应一个词,示例如图2-2所示。

图2-2 文字转换为编码概念的示例

该方法存在一定的局限性,无法有效捕捉词语之间的语义联系,因为其仅对词语进行独立处理,未考虑词语之间的相似性。

为了解决此问题,我们可以采用词嵌入技术。语义相似的词在词嵌入空间中的距离较近,而语义不同的词在词嵌入空间中的距离较远。

词嵌入技术将每个词映射到一个连续的向量空间中,使词与词之间的语义关系能够更准确地捕捉。例如,语义相似的词在词嵌入空间中的距离较近,而语义不相似的词在词嵌入空间中的距离则较远。假设我们有一个简易的文本库,其中仅包含以下内容。

我喜欢养狗狗。

他喜欢养猫咪。

他喜欢种树。

通过对文本进行预处理,得到词汇表:“我”“喜欢”“养”“狗狗”“他”“猫咪”“种”“树”。我们可以使用词嵌入技术将这些词转换为向量,并在二维空间中可视化这些向量,效果如图2-3所示。

图2-3 词嵌入映射到二维空间中的示意图

词嵌入是如何实现这种效果的呢?我们可以将词嵌入视为一个学习问题,通过神经网络模型构建词语的概率预测模型。接下来,通过一个简单示例展示词嵌入的工作原理。

(1)环境准备及初始化数据

以下代码用于展示词嵌入的基础数据处理流程。

以上代码包括以下几个方面的内容。

1)数据处理:将原始文本分割成单词,并转换为一系列(当前词,下一个词)对。这些对作为模型的输入和输出(目标),用于在模型训练过程中分析每个词与下一个词的概率分布。

2)词汇表:所有唯一单词构成一个词汇表,每个单词被赋予一个唯一的索引。

3)随机种子:设置随机种子以确保结果的可重复性。这一点很重要,因为在深度学习中,随机种子的设置能够保证模型的训练结果是可重复的。但是由于我们的数据集太过于简单,且受不同编程系统环境的影响,每个人实际测试时可能会得到不同的结果。

(2)模型定义

1)嵌入层:模型的第一层,将单词索引转换为固定大小的密集向量。这些向量是可学习的,随着训练的进行,向量会被更新以更好地捕捉单词间的语义关系。

2)线性层与激活函数:嵌入向量依次经过两个线性层和ReLU激活函数,构成模型的隐藏层,提升模型的非线性表达能力。

3)输出层:最后一个线性层将隐藏层的输出映射到一个和词汇表大小相同的向量上。这个向量通过log_softmax函数转换成概率分布,表示在给定当前词的情况下,下一个词是词汇表中每个词的概率。

(3)训练过程

对于每个(当前词,下一个词)对,将当前词的索引作为输入,通过模型的前向传播生成下一个词的概率分布。使用负对数似然损失函数(NLLLoss),将模型预测与真实的下一个词进行比较,计算损失值。通过反向传播和梯度下降法(使用SGD优化器)调整模型参数(包括嵌入向量),以减少损失。

(4)词嵌入的可视化

训练完成后,提取每个单词的嵌入向量,并在二维空间中进行可视化。这些嵌入向量在空间中的位置应反映单词之间的语义关系,如相似单词被映射至彼此接近的位置。

以上代码主要用于描述词嵌入模型设计和训练的主要流程,它仅仅从实验角度展示了词嵌入模型的基本原理和训练过程。在实际应用中,词嵌入模型的训练过程会更加复杂。例如,本例中有多个细节可进一步优化。

❑ 数据的预处理过程忽略了如何处理停用词、标点符号等问题。没有体现大段文字的分词处理。

❑ 在模型训练过程中,本例传递的是单个单词的索引(通过context_idx)。然而,在处理自然语言处理任务时,尤其是使用嵌入层时,通常处理的是一批数据而非单个数据。这种方式可以提高训练效率,也是大多数深度学习框架预期的数据处理方式。本例仅为演示目的,处理单个数据已足够,但在实际操作中并非最佳实践。

❑ 在模型训练过程中,使用了简单的SGD优化器。在实际应用中,可能会采用更复杂的优化器,如Adam或RMSprop。这些优化器通常能更快收敛,并能更有效地处理梯度消失或梯度爆炸问题。

❑ 通常训练过程中还包括验证步骤,用于评估模型在未见数据上的表现,从而监测并防止过拟合。本例未涵盖该部分内容。 dHSZswrcUEs6NWALQDAHfpJDZ+aE4EQZX8G5fnR2Xm53PLOfUlJ0EWf8dtSUKeGp

点击中间区域
呼出菜单
上一章
目录
下一章
×