【NLP大模型】词嵌入的空间表示与应用

文章目录

    • 一、语义特征空间
    • 二、引入新维度:皇室
    • 三、语义特征向量的用途
    • 四、向量运算类比
    • 五、词嵌入的维度和应用
      • 词嵌入的应用
    • 六、测量欧几里得距离
      • 向量
      • 计算向量和欧几里得距离
    • 七、使用点积测量相似度
    • 八、创建词嵌入

一、语义特征空间

考虑“男人”、“女人”、“男孩”和“女孩”这几个词。其中两个表示男性,两个表示女性。另外,两个表示成年人,两个表示儿童。我们可以将这些词绘制为图形上的点,其中 x x x轴表示性别, y y y轴表示年龄:

在这里插入图片描述

性别和年龄被称为语义特征:它们代表每个单词的部分含义。如果我们将每个特征与数值尺度相关联,那么我们可以为每个单词分配坐标:
单词 性别 年龄 男人 1 7 女人 9 7 男孩 1 2 女孩 9 2 \begin{array}{ccc} \text{单词} & \text{性别} & \text{年龄} \\ \hline \text{男人} & 1 & 7 \\ \text{女人} & 9 & 7 \\ \text{男孩} & 1 & 2 \\ \text{女孩} & 9 & 2 \\ \end{array} 单词男人女人男孩女孩性别1919年龄7722

我们可以根据新词的含义将其添加到情节中。例如,“成人”和“儿童”应该放在哪里?“婴儿”呢?或者“祖父”?

在这里插入图片描述

单词 性别 年龄 祖父 1 9 男人 1 7 成人 5 7 女人 9 7 男孩 1 2 儿童 5 2 女孩 9 2 婴儿 5 1 \begin{array}{ccc} \text{单词} & \text{性别} & \text{年龄} \\ \hline \text{祖父} & 1 & 9 \\ \text{男人} & 1 & 7 \\ \text{成人} & 5 & 7 \\ \text{女人} & 9 & 7 \\ \text{男孩} & 1 & 2 \\ \text{儿童} & 5 & 2 \\ \text{女孩} & 9 & 2 \\ \text{婴儿} & 5 & 1 \\ \end{array} 单词祖父男人成人女人男孩儿童女孩婴儿性别11591595年龄97772221

练习:如何表示“祖母”、“祖父母”、“青少年”和“八十多岁”这几个词?

答案:性别坐标很明显。我们可以根据已经定义的单词的值推断出年龄坐标:

在这里插入图片描述

单词 性别 年龄 祖母 9 9 祖父母 5 9 青少年 5 4 八十多岁 5 10 \begin{array}{ccc} \text{单词} & \text{性别} & \text{年龄} \\ \hline \text{祖母} & 9 & 9 \\ \text{祖父母} & 5 & 9 \\ \text{青少年} & 5 & 4 \\ \text{八十多岁} & 5 & 10 \\ \end{array} 单词祖母祖父母青少年八十多岁性别9555年龄99410

二、引入新维度:皇室

现在让我们考虑“国王”、“王后”、“王子”和“公主”这几个词。它们具有与“男人”、“女人”、“男孩”和“女孩”相同的性别和年龄属性,但它们的意思并不相同。为了区分“男人”和“国王”、“女人”和“王后”等,我们需要引入一个使它们不同的新语义特征。我们称之为“皇室”。现在我们必须在三维空间中绘制这些点:

在这里插入图片描述

单词 性别 年龄 皇室 男人 1 7 1 女人 9 7 1 男孩 1 2 1 女孩 9 2 1 国王 1 8 8 王后 9 7 8 王子 1 2 8 公主 9 2 8 \begin{array}{cccc} \text{单词} & \text{性别} & \text{年龄} & \text{皇室} \\ \hline \text{男人} & 1 & 7 & 1 \\ \text{女人} & 9 & 7 & 1 \\ \text{男孩} & 1 & 2 & 1 \\ \text{女孩} & 9 & 2 & 1 \\ \text{国王} & 1 & 8 & 8 \\ \text{王后} & 9 & 7 & 8 \\ \text{王子} & 1 & 2 & 8 \\ \text{公主} & 9 & 2 & 8 \\ \end{array} 单词男人女人男孩女孩国王王后王子公主性别19191919年龄77228722皇室11118888

每个单词都有三个坐标值:性别、年龄和皇室。我们将这些数字列表称为向量。由于它们表示语义特征的值,我们也可以将它们称为特征向量。

三、语义特征向量的用途

通过计算词嵌入向量之间的距离,可以判断单词之间的相似性。例如,“男孩”与“女孩”的相似度要高于“王后”,因为“男孩”到“女孩”的距离小于“男孩”到“王后”的距离。测量距离的方法有几种:

  1. 特征数量法:计算单词不同的特征数量。“男孩”和“女孩”仅在一个特征(性别)上不同,而“男孩”和“王后”在所有三个特征(性别、年龄和皇室)上都不同。这是一种粗略的测量相似性的方法。
  2. 欧几里得距离:由于每个单词都由坐标值表示,因此更好的方法是计算这些点之间的欧几里得距离,这可以使用勾股定理来完成。例如:
    • “男孩”和“女孩”之间的距离为 8.0 8.0 8.0
    • “男孩”和“王后”之间的距离为 11.75 11.75 11.75

语义距离:语义距离是衡量词语相关性的一种方法。通过计算词嵌入向量之间的语义距离,可以更准确地评估单词之间的关系。

解决词语类比问题:词嵌入还可以用于解决词语类比问题。通过向量运算,可以发现类似的关系。例如,通过计算“男孩”与“女孩”的关系,可以推测“国王”与“王后”的关系。

四、向量运算类比

类比表达了概念之间的关系。例如,“男人之于国王,相当于女人之于_____”。要得出答案,我们首先要找到男人和国王之间的关系。我们可以通过计算“国王” - “男人”来以数字方式做到这一点。我们分别减去每个坐标,得到 ( 1 − 1 ) \mathbf{(1 - 1)} (11) ( 8 − 7 ) \mathbf{(8 - 7)} (87) ( 8 − 1 ) \mathbf{(8 - 1)} (81) [ 0 , 1 , 7 ] \mathbf{[0, 1, 7]} [0,1,7]。然后我们将其添加到“女人”,再次分别处理每个坐标,即 ( 0 + 9 ) \mathbf{(0 + 9)} (0+9) ( 1 + 7 ) \mathbf{(1 + 7)} (1+7) ( 7 + 1 ) \mathbf{(7 + 1)} (7+1) [ 9 , 8 , 8 ] \mathbf{[9, 8, 8]} [9,8,8]。最后,我们找到最接近结果的单词,即“女王”,或 [ 9 , 7 , 8 ] \mathbf{[9, 7, 8]} [9,7,8]
单词 性别 年龄 皇室 国王 1 8 8 男人 1 7 1 王者 0 1 7 女人 9 7 1 国王 - 男人 + 女人 9 8 8 女王 9 7 8 \begin{array}{cccc} \text{单词} & \text{性别} & \text{年龄} & \text{皇室} \\ \hline \text{国王} & 1 & 8 & 8 \\ \text{男人} & 1 & 7 & 1 \\ \text{王者} & 0 & 1 & 7 \\ \text{女人} & 9 & 7 & 1 \\ \text{国王 - 男人 + 女人} & 9 & 8 & 8 \\ \text{女王} & 9 & 7 & 8 \\ \end{array} 单词国王男人王者女人国王 - 男人 + 女人女王性别110999年龄871787皇室817188
我们还可以用图形表示词语类比。对于“男人”和“国王”的关系,我们从“男人”画一个箭头指向“国王”。接下来,我们复制这个箭头,保持相同的方向和长度,但现在从“女人”开始。然后我们看看箭头指向哪里,并寻找最接近的单词:

在这里插入图片描述

这种方法不仅直观地显示了单词之间的关系,还展示了如何使用向量运算来解答词语类比问题。通过这种方式,我们可以在向量空间中发现单词的语义关系,并且这种方法在自然语言处理中的应用非常广泛。

五、词嵌入的维度和应用

随着词嵌入向量的维度增加,我们能够表示更多的语义特征。虽然两个或三个语义特征可以表示一些单词,但它们往往不足以捕捉复杂的语义关系。例如,“黄瓜”、“微笑”或“诚实”等单词的表示需要更高维度的空间。

高维特征空间

要表示典型的 50,000 个单词的英语词汇的复杂性,通常需要数百个特征。手动设计所有这些特征并为每个单词分配准确的坐标是非常繁琐的工作。因此,我们使用词嵌入技术来自动创建这些特征空间。

自动生成特征空间

我们可以通过将大量文本(例如整个维基百科或大量新闻文章)提供给机器学习算法来让计算机自动创建特征空间。算法通过分析单词与其他单词的共现关系来发现单词之间的统计关系,并在自己设计的语义特征空间中为单词生成表示。这些表示称为词嵌入,典型的嵌入可能使用 300 维空间,每个单词由 300 个数字表示。

词嵌入的应用

  1. 类比推理:词嵌入可以支持各种类比推理,例如:
    • 复数形式:例如,“hand”与“hands”的类比可以推导出“foot”与“feet”。
    • 过去时态:例如,“sing”与“sang”的类比可以推导出“eat”与“ate”。
    • 比较:例如,“big”与“small”的类比可以推导出“fast”与“slow”。
    • 国家与首都:例如,“France”与“Paris”的类比可以推导出“England”与“London”。
  2. 神经网络输入:词嵌入是神经网络的关键输入,尤其是用于理解整个句子甚至段落含义的复杂神经网络。这种类型的网络称为 Transformer 神经网络。两个著名的 Transformer 网络是 Google 的 BERT 和 OpenAI 的 GPT-3。BERT 现在用于处理许多 Google 搜索任务。

通过这些高维的词嵌入,计算机能够更准确地理解和处理自然语言,从而提高各种语言处理任务的效果。

六、测量欧几里得距离

前面研究了测量两个单词之间距离的方法。计算它们之间不同的特征数量是一种过于粗略的测量方法,因为它无法区分小值差异和大值差异。我们考虑的替代方法是欧几里得距离。要解释计算该距离的公式,首先需要了解向量的知识。

向量

我们一直将单词绘制为语义空间中的点,我们也将这些点称为向量。在数学中,向量被绘制为箭头,它由长度和方向组成。单词可以绘制为从原点开始到点结束的箭头。因此,单词“child”可以绘制为从原点 [ 0 , 0 ] \mathbf{[0, 0]} [0,0] 到点 [ 5 , 2 ] \mathbf{[5, 2]} [5,2] 的箭头。以下是我们二维语义空间中绘制为向量的所有单词:

在这里插入图片描述

计算向量和欧几里得距离

我们可以通过绘制一个向量来比较两个单词,然后测量其长度。从“boy”到“infant”的向量可以通过从“infant” [ 5 , 1 ] \mathbf{[5,1]} [5,1] 开始并减去“boy” [ 1 , 2 ] \mathbf{[1,2]} [1,2] 来计算,得到向量 [ 4 , − 1 ] \mathbf{[4, -1]} [4,1]。向量 [ x , y ] \mathbf{[x, y]} [x,y] 的长度由公式 x 2 + y 2 \sqrt{\mathbf{x}^2 + \mathbf{y}^2} x2+y2 给出,其中 \sqrt{} 是平方根函数。因此,从“boy”到“infant”的向量长度为 17 \sqrt{17} 17 ,或大约 4.12。这是两个单词之间的欧几里得距离。以下是从“boy”到所有其他单词的向量及其长度:

在这里插入图片描述

与“男孩”的距离 向量 长度 祖父 [ 0 , 7 ] 7 男人 [ 0 , 5 ] 5 成人 [ 4 , 5 ] 6.4031 女士 [ 8 , 5 ] 9.4340 男生 [ 0 , 0 ] 0 孩子 [ 4 , 0 ] 4 女孩 [ 8 , 0 ] 8 婴儿 [ 4 , − 1 ] 4.1231 \begin{array}{ccc} \text{与“男孩”的距离} & \text{向量} & \text{长度} \\ \text{祖父} & \mathbf{[0, 7]} & 7 \\ \text{男人} & \mathbf{[0, 5]} & 5 \\ \text{成人} & \mathbf{[4, 5]} & 6.4031 \\ \text{女士} & \mathbf{[8, 5]} & 9.4340 \\ \text{男生} & \mathbf{[0, 0]} & 0 \\ \text{孩子} & \mathbf{[4, 0]} & 4 \\ \text{女孩} & \mathbf{[8, 0]} & 8 \\ \text{婴儿} & \mathbf{[4, -1]} & 4.1231 \\ \end{array} 男孩的距离祖父男人成人女士男生孩子女孩婴儿向量[0,7][0,5][4,5][8,5][0,0][4,0][8,0][4,1]长度756.40319.43400484.1231

可以看到,与“boy”最接近的词是“child”,但是“infant”也只是稍微远一点。

相同的欧几里得距离公式也适用于高维空间。三维向量 [ x , y , z ] \mathbf{[x, y, z]} [x,y,z] 的长度为 x 2 + y 2 + z 2 \sqrt{\mathbf{x}^2 + \mathbf{y}^2 + \mathbf{z}^2} x2+y2+z2

欧几里德距离是一种非常合理的距离测量方法,但它并不是词向量的首选距离测量方法。相反,使用点积进行计算,这是一种相似性测量方法,而不是距离测量方法。值越大表示单词越相似。

七、使用点积测量相似度

给定两个向量 [ x 1 , y 1 ] \mathbf{[x_1, y_1]} [x1,y1] [ x 2 , y 2 ] \mathbf{[x_2, y_2]} [x2,y2],它们之间的欧几里得距离为 ( x 1 − x 2 ) 2 + ( y 1 − y 2 ) 2 \sqrt{(\mathbf{x_1 - x_2})^2 + (\mathbf{y_1 - y_2})^2} (x1x2)2+(y1y2)2 。点积更简单,即 x 1 ⋅ x 2 + y 1 ⋅ y 2 \mathbf{x_1 \cdot x_2 + y_1 \cdot y_2} x1x2+y1y2点积与两个向量之间角度的余弦成正比,公式: u ⋅ v = ∥ u ∥ ∥ v ∥ cos ⁡ ( θ ) \mathbf{u} \cdot \mathbf{v} = \|\mathbf{u}\| \|\mathbf{v}\| \cos(\theta) uv=u∥∥vcos(θ)。但为了使其成为一个合理的相似度度量,我们必须首先对向量进行轻微调整。考虑原始向量之间的角度:

原始词向量

在这里插入图片描述

单词 向量 祖父 [ 1 , 9 ] 男人 [ 1 , 7 ] 成人 [ 5 , 7 ] 女士 [ 9 , 7 ] 男生 [ 1 , 2 ] 孩子 [ 5 , 2 ] 女孩 [ 9 , 2 ] 婴儿 [ 5 , 1 ] \begin{array}{ccc} \text{单词} & \text{向量} \\ \text{祖父} & \mathbf{[1, 9]} \\ \text{男人} & \mathbf{[1, 7]} \\ \text{成人} & \mathbf{[5, 7]} \\ \text{女士} & \mathbf{[9, 7]} \\ \text{男生} & \mathbf{[1, 2]} \\ \text{孩子} & \mathbf{[5, 2]} \\ \text{女孩} & \mathbf{[9, 2]} \\ \text{婴儿} & \mathbf{[5, 1]} \\ \end{array} 单词祖父男人成人女士男生孩子女孩婴儿向量[1,9][1,7][5,7][9,7][1,2][5,2][9,2][5,1]
在上图中,“男孩”(栗色向量)和“成人”(黄色向量)之间的角度较小,而“男孩”和“儿童”(蓝色向量)之间的角度较大。然而,“男孩”与“儿童”在语义上的相似度显然更高,因为“男孩”与“儿童”在性别坐标上的差异微小,而与“成人”在性别和年龄坐标上都有显著的差异。

所有的向量最初都是从原点出发的。为了使角度成为更有用的相似度度量,我们需要将这些向量的起点移动到所有点的中心。我们可以通过以下步骤实现这一点:

  1. 计算所有点的平均值。
  2. 从每个点中减去该平均值,使得这些点的中心位于原点。

通过这种方式,某些词的特征值将变为负数,其他词的特征值则变为正数,使得所有点的平均值为零。虽然这种调整不会改变欧几里得距离的测量结果(因为所有点都移动了相同的量),但它会显著影响点积的计算。

这种调整后,词向量的位置和角度将更准确地反映单词之间的相似度。

零均值二维向量

在这里插入图片描述

单词 向量 祖父 [ − 3.500 , 4.375 ] 男人 [ − 3.500 , 2.375 ] 成人 [ 0.500 , 2.375 ] 女士 [ 4.500 , 2.375 ] 男生 [ − 3.500 , − 2.625 ] 孩子 [ 0.500 , − 2.625 ] 女孩 [ 4.500 , − 2.625 ] 婴儿 [ 0.500 , − 3.625 ] \begin{array}{ccc} \text{单词} & \text{向量} \\ \text{祖父} & \mathbf{[-3.500, 4.375]} \\ \text{男人} & \mathbf{[-3.500, 2.375]} \\ \text{成人} & \mathbf{[0.500, 2.375]} \\ \text{女士} & \mathbf{[4.500, 2.375]} \\ \text{男生} & \mathbf{[-3.500, -2.625]} \\ \text{孩子} & \mathbf{[0.500, -2.625]} \\ \text{女孩} & \mathbf{[4.500, -2.625]} \\ \text{婴儿} & \mathbf{[0.500, -3.625]} \\ \end{array} 单词祖父男人成人女士男生孩子女孩婴儿向量[3.500,4.375][3.500,2.375][0.500,2.375][4.500,2.375][3.500,2.625][0.500,2.625][4.500,2.625][0.500,3.625]
现在,“男孩”和“儿童”向量之间的角度比“男孩”和“成人”之间的角度小得多,这符合预期,因为“男孩”和“儿童”在性别坐标上只相差 4,而“男孩”和“成人”在性别坐标上相差 4,在年龄坐标上相差 5。但仍然存在一个问题。两个向量的点积并不完全是它们之间角度 θ \mathbf{\theta} θ 的余弦;它与余弦成比例。给定两个向量 u \mathbf{u} u v \mathbf{v} v u ⋅ v \mathbf{u \cdot v} uv 的确切值是:
cos ⁡ ( θ ) ⋅ ∣ ∣ u ∣ ∣ ⋅ ∣ ∣ v ∣ ∣ \cos(\mathbf{\theta}) \cdot ||\mathbf{u}|| \cdot ||\mathbf{v}|| cos(θ)∣∣u∣∣∣∣v∣∣
其中 ∣ ∣ u ∣ ∣ ||\mathbf{u}|| ∣∣u∣∣ 是向量 u \mathbf{u} u 的长度,即它与原点的欧几里得距离。如果我们希望点积恰好等于余弦,我们需要对向量进行归一化,使它们的长度为 1。我们通过将每个向量的坐标除以向量的长度来实现这一点,即,给定一个向量 u = [ x , y ] \mathbf{u = [x, y]} u=[x,y],其长度 ∣ ∣ u ∣ ∣ = x 2 + y 2 ||\mathbf{u}|| = \sqrt{\mathbf{x^2 + y^2}} ∣∣u∣∣=x2+y2 ,我们可以构造一个指向同一方向但长度为 1 的单位向量,即 u / ∣ ∣ u ∣ ∣ \mathbf{u}/||\mathbf{u}|| u/∣∣u∣∣ [ x / ∣ ∣ u ∣ ∣ , y / ∣ ∣ u ∣ ∣ ] \mathbf{[x/||u||, y/||u||]} [x/∣∣u∣∣,y/∣∣u∣∣]

当我们将这些点转换为单位向量时,它们看起来如下,因此它们都位于半径为 1 的圆上:

零均值二维单位向量

在这里插入图片描述

单词 向量 祖父 [ − 0.6247 , 0.7809 ] 男人 [ − 0.8275 , 0.5615 ] 成人 [ 0.2060 , 0.9785 ] 女士 [ 0.8844 , 0.4668 ] 男生 [ − 0.8000 , − 0.6000 ] 孩子 [ 0.1871 , − 0.9823 ] 女孩 [ 0.8638 , − 0.5039 ] 婴儿 [ 0.1366 , − 0.9906 ] \begin{array}{ccc} \text{单词} & \text{向量} \\ \text{祖父} & \mathbf{[-0.6247, 0.7809]} \\ \text{男人} & \mathbf{[-0.8275, 0.5615]} \\ \text{成人} & \mathbf{[0.2060, 0.9785]} \\ \text{女士} & \mathbf{[0.8844, 0.4668]} \\ \text{男生} & \mathbf{[-0.8000, -0.6000]} \\ \text{孩子} & \mathbf{[0.1871, -0.9823]} \\ \text{女孩} & \mathbf{[0.8638, -0.5039]} \\ \text{婴儿} & \mathbf{[0.1366, -0.9906]} \\ \end{array} 单词祖父男人成人女士男生孩子女孩婴儿向量[0.6247,0.7809][0.8275,0.5615][0.2060,0.9785][0.8844,0.4668][0.8000,0.6000][0.1871,0.9823][0.8638,0.5039][0.1366,0.9906]
点积和欧几里得距离度量产生的结果相似但不完全相同。例如,基于欧几里得距离,“男孩”与“儿童”的距离比与“婴儿”的距离略近,但查看上图中的单位向量,“男孩”和“婴儿”之间的角度略小于“男孩”和“儿童”之间的角度。

本演示中使用的词向量以及真实 AI 系统使用的词向量都是具有零均值的单位向量,就像上面的点一样。同样的规范化技术适用于更高维度的向量,例如,对于三维语义向量,这些点位于单位球面(半径为 1 的球面)的表面上,如下所示:

零均值三维单位向量

在这里插入图片描述

单词 向量 祖父 [ − 0.5426 , 0.6412 , − 0.5426 ] 男人 [ − 0.7191 , 0.4576 , − 0.5230 ] 女士 [ 0.7741 , 0.4168 , − 0.4764 ] 男生 [ − 0.6971 , − 0.5070 , − 0.5070 ] 女孩 [ 0.7543 , − 0.4642 , − 0.4642 ] 国王 [ − 0.5570 , 0.5064 , 0.6583 ] 君主 [ 0.0676 , 0.4730 , 0.8785 ] 女王 [ 0.6608 , 0.3558 , 0.6608 ] 王子 [ − 0.5846 , − 0.4252 , 0.6909 ] 公主 [ 0.6484 , − 0.3990 , 0.6484 ] 孩子 [ 0.0733 , − 0.5866 , − 0.8066 ] 婴儿 [ 0.0642 , − 0.7057 , − 0.7057 ] \begin{array}{ccc} \text{单词} & \text{向量} \\ \text{祖父} & \mathbf{[-0.5426, 0.6412, -0.5426]} \\ \text{男人} & \mathbf{[-0.7191, 0.4576, -0.5230]} \\ \text{女士} & \mathbf{[0.7741, 0.4168, -0.4764]} \\ \text{男生} & \mathbf{[-0.6971, -0.5070, -0.5070]} \\ \text{女孩} & \mathbf{[0.7543, -0.4642, -0.4642]} \\ \text{国王} & \mathbf{[-0.5570, 0.5064, 0.6583]} \\ \text{君主} & \mathbf{[0.0676, 0.4730, 0.8785]} \\ \text{女王} & \mathbf{[0.6608, 0.3558, 0.6608]} \\ \text{王子} & \mathbf{[-0.5846, -0.4252, 0.6909]} \\ \text{公主} & \mathbf{[0.6484, -0.3990, 0.6484]} \\ \text{孩子} & \mathbf{[0.0733, -0.5866, -0.8066]} \\ \text{婴儿} & \mathbf{[0.0642, -0.7057, -0.7057]} \\ \end{array} 单词祖父男人女士男生女孩国王君主女王王子公主孩子婴儿向量[0.5426,0.6412,0.5426][0.7191,0.4576,0.5230][0.7741,0.4168,0.4764][0.6971,0.5070,0.5070][0.7543,0.4642,0.4642][0.5570,0.5064,0.6583][0.0676,0.4730,0.8785][0.6608,0.3558,0.6608][0.5846,0.4252,0.6909][0.6484,0.3990,0.6484][0.0733,0.5866,0.8066][0.0642,0.7057,0.7057]

点积比欧几里得距离更受欢迎,主要有两个原因。首先,点积需要更少的算术运算。对于 300 维向量,点积需要 599 次运算(300 次乘法加上 299 次加法),而欧几里得距离需要 899 次运算,因为它包括 300 次减法。其次,点积正是神经网络中的神经元所计算的:它将其权重向量与输入向量进行点积。

八、创建词嵌入

构建词向量的算法有很多种。这里我们介绍第一种算法,称为带负采样的 Skip-gram (SGNS)。

步骤 1:组建文本语料库

我们可能会选择维基百科文章、新闻报道集或莎士比亚全集。语料库决定了我们要使用的词汇量和单词的共现统计,因为不同的写作风格会以不同的方式使用单词。

步骤 2:选择词汇量 M \mathbf{M} M

如果我们包括人名和地名,大型语料库可以包含一百万个不同的单词。其中许多单词很少出现。为了使嵌入任务易于管理,我们可能决定只保留频率最高的单词,例如,我们可能会选择语料库中最常出现的 50,000 个单词。过滤掉频率最低的单词还可以消除拼写错误,例如,“graet”应该是“great”、“grate”或“greet”。在此阶段,我们还需要决定如何处理标点符号、缩写、下标和上标、特殊字符(如希腊字母或商标符号)以及其他大写字母。

步骤 3:选择上下文窗口大小 C \mathbf{C} C

如果我们使用大小为 C = 2 \mathbf{C=2} C=2 的上下文窗口,我们将查看五个单词块。也就是说,对于语料库中的每个单词,我们将把它左边的 2 个单词和右边的 2 个单词视为其上下文。

步骤 4:汇编共现词典

通过逐个单词地浏览语料库,并向前和向后查看 C \mathbf{C} C 个单词,我们可以确定每个目标单词在其上下文中出现的单词。例如,当 C = 2 \mathbf{C=2} C=2 时,给定文本“Thou shalt not make a machine in the likeness of a human mind”,共现词典将如下所示:

thou    -> shalt, not
shalt   -> thou, not, make
not     -> thou, shalt, make, a
make    -> shalt, not, a, machine
a       -> not, make, machine, in, image, of, human, mind
machine -> make, a, in, the
in      -> a, machine, the, image
the     -> machine, in, image, of
image   -> in, the, of, a
of      -> the, image, a, human
human   -> of, a, mind
mind    -> a, human

请注意,单词“a”在语料库中出现了两次。它的上下文在词典中组合在一起。实际上,语料库会比这大得多,每个单词都会出现多次,从而形成更丰富的上下文。

步骤 5:选择嵌入大小 N \mathbf{N} N

以便每个单词由 N \mathbf{N} N 个数字的列表表示。 N \mathbf{N} N 的典型值为 300,尽管小嵌入可能每个单词仅使用 100 个数字,而大嵌入可能使用 700 个或更多。较大的 N \mathbf{N} N 值可以编码更多信息,但嵌入需要更长的计算时间和更多的内存来存储。

步骤 6:制作两个表格

每个表格包含 M \mathbf{M} M 行和 N \mathbf{N} N 列。每行代表一个单词。例如,如果我们有 50,000 个单词的词汇表并正在构建 300 个元素的嵌入,则表格的大小将为 50 , 000 × 300 \mathbf{50,000 \times 300} 50,000×300。一个表格 E \mathbf{E} E 用于我们尝试嵌入的目标单词。第二个表格 U \mathbf{U} U 用于用作上下文单词的单词。使用较小的随机数初始化两个表格。

步骤 7:训练过程

在整个训练语料库上滑动一个大小为 2 C + 1 \mathbf{2C+1} 2C+1 的窗口,每次移动一个词。对于窗口中间位置的每个目标词 t \mathbf{t} t,在嵌入表 E \mathbf{E} E 中查找其向量 e \mathbf{e} e。对于出现在窗口其他位置的每个上下文词 u \mathbf{u} u,在上下文表 U \mathbf{U} U 中查找其向量 u \mathbf{u} u。计算点积 e ⋅ u \mathbf{e \cdot u} eu 并将结果通过非线性压缩函数(称为“S 型”或“逻辑”函数)运行,该函数产生 0 到 1 之间的输出值。如果输出小于 1,则使用称为梯度下降学习的技术对向量 e \mathbf{e} e u \mathbf{u} u 进行微小调整;该技术也用于训练神经网络。对所有上下文词重复该过程。这些是正面例子。我们还需要一些负面例子。随机选择 5 到 10 个词汇单词,我们的上下文词典表明这些单词从未出现在目标词的上下文中。应用与上述相同的过程,但现在我们希望压缩后的点积值为 0 而不是 1。相应地对嵌入和上下文向量进行细微调整。我们重复此过程,遍历整个语料库,重复 3 到 50 次。

步骤 8:嵌入表 E \mathbf{E} E 现在包含所需的嵌入

上下文表 U \mathbf{U} U 可以丢弃。


参考:Word Embedding Demo: Tutorial
推荐:

  • python 错误记录
  • python 笔记
  • 数据结构

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/872239.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

33页PPT免费下载 | 2024企业数据资产化及数据资产入表白皮书

一、前言 2024年01月,财政部《关于加强数据资产管理的指导意见》,通过加强和规范公共数据资产基础管理工作探索公共数据资产应用机制,促进公共数据资产高质量供给,有效释放公共数据价值,为赋能实体经济数字化转型升级…

Java用JDBC链接mysql

一、什么是JDBC: 是Java平台上的标准数据库访问技术。它提供了一套API(应用程序编程接口),允许Java应用程序与各种类型的数据库进行交互,包括关系型数据库(如MySQL、Oracle、SQL Server等)和非关…

【日记】艾尔登法环终于玩完了(348 字)

正文 昨天打了一天游戏。法环差不多通关了。最终 boss 艾尔登鼻涕虫实在打不过,两个人开挂打了。艾尔登之兽老是马拉松,这谁顶得住,追都追不上。据兄长说,这游戏大概还有 50%-60% 的内容没玩,不过就这样吧,…

解决VMware虚拟机在桥接模式下无法上网的问题

解决VMware虚拟机在桥接模式下无法上网的问题 windows11系统自动启动了热点功能,开启热点可能会干扰虚拟机的桥接设置。 方法一:windows11可以提供网络热点服务 方法二:手动指定桥接的物理网卡 方法一:关闭热点功能 优点&#xff…

MYSQL 四、mysql进阶 10(数据库其它调优策略)

一、数据库调优的措施 1.1 调优的目标 尽可能节省系统资源 ,以便系统可以提供更大负荷的服务。(吞吐量更大)合理的结构设计和参数调整,以提高用户操作响应的速度 。(响应速度更快)减少系统的瓶颈&#xff…

13 循环神经网络—序列模型,语言模型

目录 1.序列模型序列数据统计工具自回归模型马尔可夫模型因果关系前向算法举例(根据过去的事件推测未来的事件)方案 A -马尔科夫假设方案 B -潜变量模型总结代码实现 使用马尔科夫假设 训练一个MLP2.文本预处理常见的文本预处理步骤代码实现3.语言模型**使用计数来建模**N 元…

VUE前端HTML静默打印(不弹出打印对话框)PDF简单方案

前言 在做打印功能的时候,以前大部分客户端都是用C#做的,静默打印(也就是不弹出打印对话框)比较简单。 但是使用浏览器作为客户端,静默打印(也就是不弹出打印对话框)做起来就比较困难。困难的…

29.【C语言】自定义函数

1、自定义详解 *提示&#xff1a;先看第12,19篇 例&#xff1a;写一个程序交换两个变量的值 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> void swap(int x, int y) {int z 0;z x;x y;y z; } int main() {int a 10;int b 20;swap(a, b);printf("%d…

让AI语言模型自由飞翔:LangChain框架的奇妙世界

今天&#xff0c;我将为大家揭开一项令人激动的技术——LangChain。想象一下&#xff0c;如果能将人工智能的强大能力与我们日常使用的数据和工具无缝连接&#xff0c;那将开启怎样崭新且无限的可能&#xff01; LangChain&#xff0c;一个专为大型语言模型设计的框架&#xf…

TG创建小程序交互APP登录以及机器人信息

1、搜索 BotFather &#xff0c;输入命令 /newbot 创建机器人。 2、修改机器人信息 /mybots 编辑名称 : 修改机器人名称 编辑关于: 修改关于 hayden yyds&#xff0c;修改以后打开机器人会出现在下图 编辑描述 : 机器人的描述 编辑描述图片 : 机器人的图片 编辑 Botpic…

瑞幸私域运营案例拆解

1. 私域运营概述 私域运营是一种以用户为中心的运营模式&#xff0c;通过建立和维护与用户之间的直接联系&#xff0c;实现品牌与用户之间的深度互动和长期价值挖掘。 1.1 私域流量定义 私域流量指的是企业通过自有渠道&#xff0c;如微信公众号、小程序、社群等&#xff0c…

【通信协议-RTCM】MSM语句(1) - 多信号GNSS观测数据消息格式

注释&#xff1a; RTCM响应消息1020为GLONASS星历信息&#xff0c;暂不介绍&#xff0c;前公司暂未研发RTCM消息类型版本的DR/RTK模块&#xff0c;DR/RTK模块仅NMEA消息类型使用 注释&#xff1a; 公司使用的多信号语句类型为MSM4&MSM7&#xff0c;也应该是运用最广泛的语句…

暑期备考2024上海初中生古诗文大会:单选题真题和独家解析

现在距离2024年初中生古诗文大会初选还有不到4个月&#xff08;11月3日正式开赛&#xff09;&#xff0c;我们继续来看10道选择题真题和详细解析。为帮助孩子自测和练习&#xff0c;题目的答案和解析统一附后。 本专题持续分享。 一、上海初中古诗文大会历年真题精选(参考答案…

探索IP形象设计:快速掌握设计要点

随着市场竞争的加剧&#xff0c;越来越多的企业开始关注品牌形象的塑造和推广。在品牌形象中&#xff0c;知识产权形象设计是非常重要的方面。在智能和互联网的趋势下&#xff0c;未来的知识产权形象设计可能会更加关注数字和社交网络。通过数字技术和社交媒体平台&#xff0c;…

等保测评是什么 怎么做

在信息安全日益受到重视的今天&#xff0c;等保测评已成为企事业单位不可或缺的安全合规活动。然而&#xff0c;对于等保测评的理解和实施&#xff0c;仍存在诸多误区。本文将对等保测评的周期、法律责任、网络环境、测评对象、费用及常见误区进行深入解析&#xff0c;以期帮助…

源码安装zabbix5.0.36完整版

源码安装zabbix5.0.36完整版 环境&#xff1a;CentOS Linux release 7.9&#xff0c;cpu:16&#xff0c;mem:32G软件包如下&#xff1a; zabbix-5.0.36.tar.gz mysql-8.0.28-linux-glibc2.17-x86_64-minimal.tar.xz nginx-1.6.2.tar.gz 1. 配置前准备 systemctl stop firewa…

[MySQL][表的增删查改][二][Retrieve][SELECT][WHERE]详细讲解

目录 1.Retrieve1.基本语法2.SELECT列1.全列查询2.查询字段为表达式3.为查询结果指定别名4.结果去重 3.WHERE条件1.比较运算符2.逻辑运算符3.示例 4.结果排序1.基本语法2.示例 5.筛选分页结果 1.Retrieve 1.基本语法 SELECT [DISTINCT] * | {column [, column] ...} [FROM ta…

基于pytesseract的OCR图片识别

简介 pytesseract是基于谷歌的tesseract的OCR包&#xff0c;支持识别一些简单的数字、字母、中文。 安装 安装引擎 下载地址&#xff1a;https://digi.bib.uni-mannheim.de/tesseract/ 一般是Windows 64位系统最新版&#xff1a; 如果要识别中文&#xff0c;注意选中中文…

【微服务】Spring Cloud Config解决的问题和案例

文章目录 强烈推荐引言解决问题1. 配置管理的集中化2. 配置的版本控制3. 环境特定配置4. 配置的动态刷新5. 安全管理敏感数据6. 配置的一致性 组件1. **配置服务器&#xff08;Config Server&#xff09;**2. **配置客户端&#xff08;Config Client&#xff09;** 配置示例配置…

十一、(正点原子)Linux异步通知

一、简介 我们首先来回顾一下“中断”&#xff0c;中断是处理器提供的一种异步机制&#xff0c;我们配置好中断以后就可以让处理器去处理其他的事情了&#xff0c;当中断发生以后会触发我们事先设置好的中断服务函数&#xff0c;在中断服务函数中做具体的处理。 Linux …