NLP-词汇表征与词嵌入

学习吴恩达老师的AI课程笔记,详细视频课程请移步https://mooc.study.163.com/smartSpec/detail/1001319001.html

在之前的学习中,通常通过one-hot的方式对句子中的各个词汇进行编码 也就是通过one-hot的方式对每一个词汇建立一个矩阵,该矩阵中只有一个1,其他均为0.
但这种方式并不利用模型的学习。
例如模型已经学会了对一个句子:我想喝一杯橘味(). 模型已经能够正确预测出在空白处为 ‘果汁’。 但对于一个新的语句 如我想喝一杯苹果味()。模型又需要重新进行学习才能正确的预测。

对于这种情况 通常我们会采取另一种方式。(词汇表征)
在这里插入图片描述

例如上图 我们会对 一个词 进行相关性的分类 例如Man与Food分类相关性不高,而Apple和Orange与其相关性很高。
这样 我们的分类有多少种 我们的词汇的向量就会有多少个维度。
而且 此时的向量中与之前的one-hot的形式不同。
这样在模型再遇到如上的预测问题时,当模型碰到苹果 它会认为其与Food/(与Orange)相关性很高.其学习能力也会更强。

词嵌入

在词汇表征中如果我们的分类时300种 即有300个维度 而每一个词也将被嵌入到这个300维的向量中的某一个点。

使用词嵌入的方式:
1.下载已经使用大量文本训练的词嵌入(维度可能很高)
2.将自己维度较低的词嵌入到1中(维度降低到我们需要的维度)
3.由于我们是将自己的分类方式嵌入到他人已经建立的分类中,可能会存在一些不适,在这一步可以进行适当的微调。(通常无限微调)

运用词嵌入可以使模型再学习的时候发现词与词直接的相近关系。
也即词嵌入具有类比推理的能力。

如何进行类比推理?

在机器学习中学习过t-SNE流行学习算法。
t-SNE算法思想:找到数据的一个二维表示,尽可能的保持数据点之间的距离。t-SNE首先给出每个数据点的随机二维表示,然后尝试让在原始特征空间中距离较近的点更加靠近,原始特征空间中相距较远的点更加远离。t-SNE重点关注距离较近的点,而不是保持距离较远的点之间的距离(他试图保存那些表示那些点比较靠近的信息)。

在我们对词汇进行词汇表征之后 我们能够得到一个高维的向量来表征这个词汇的信息。 然后我们会使用t-SNE的方式对这个高维的向量进行降维(二维)。

然后 我们便可以在二维空间中处理词汇与词汇之间的距离关系(距离越近也就代表两个词汇的词意也越相近)

在这里插入图片描述
如 由图中的man和woman 来推测出king对应的词汇。 我们便可以根据man和woman之间的距离 然后找到一个和king相同距离的词来与之对应。

右式又可以变换为 sim(e, e(king)-e(man)+e(woman)) 我们要使这个近似度的值最小。

余弦相似度:
上式:sim(e, e(king)-e(man)+e(woman))在这里插入图片描述
————余弦相似度公式

公式其实就是计算两个向量的内积,其值越大 证明两个向量越相似。 结合COS函数可以理解 两个向量的夹角越趋近于0(即两个向量越相似) 此时cos函数的值会很大 而如果两个向量的夹角趋向于180度(此时两个向量相似度也越差) 则cos函数的值也会很小。