词嵌入模型
文章目录
词汇表征(Word Representation)
使用one-hot表示的缺点
1.如果要表示的词语个数比较多的话,one—hot会很占空间。
2.如"I want a glass of orange ()“与"I want a glass of apple ()”,填入的词语可以是juice,如果第一句话模型学习到的词语是juice,但是因为词语是one—hot向量表示,所以orange与apple之间的关系同orange与其他词并没有相对拉近,所以不利于模型的泛化。
特征化的表示
所以我们开始使用特征化的向量进行词语的表示,比如词语相对性别的关系:man可能为1,woman就是-1,king就是0.95,queen就是-0.97,而apple与orange没有性别可言。比如词语相对高贵:king与queen就相对分值较高。
假设最后的特征一共有300个,那么对于一个词语的表述就是使用一个300维的特征向量,而且orange与apple的词语表示会十分接近。
这样的表示方法就是词嵌入
。
使用词嵌入的步骤
1.第一步,先从大量的文本集中学习词嵌入
。一个非常大的文本集,或者可以下载网上预 训练好的词嵌入模型,网上你可以找到不少,词嵌入模型并且都有许可。
2.第二步,你可以用这些词嵌入模型把它迁移
到你的新的只有少量标注训练集的任务中, 比如说用这个 300 维的词嵌入来表示你的单词。这样做的一个好处就是你可以用更低维度的特征向量代替原来的 10000 维的 one-hot 向量
,现在你可以用一个 300 维更加紧凑的向量。尽管 one-hot 向量很快计算,而学到的用于词嵌入的 300 维的向量会更加紧凑。
3.第三步,当你在你新的任务上训练模型时,在你的命名实体识别任务上,只有少量的标记数据集上,你可以自己选择要不要继续微调,用新的数据调整词嵌入。实际中,只有这个第二步中有很大的数据集你才会这样做,如果你标记的数据集不是很大,通常我不会在微调词嵌入上费力气。
词嵌入的特性
词嵌入的另外一个重要特性就是它还能帮助实现类比推理
。意思就是模型已经知道了man对应的单词是woman,那么king对应的单词是什么?类比推理就是用来得出queen的算法。
这个类比推理的主要方法就是基于向量的加减法
。
这个结果表示,man 和 woman 主要的差异是 gender(性别)上的差异,而 king 和 queen 之间的主要差异,根据向量的表示,也是 gender(性别)上的差异。
每一个词语经过词嵌入之后的表示方式是向量,在寻找词语queen的过程中,算法要计算的公式是 e m a n − e w o m a n ≈ e k i n g − e w e_{man}-e_{woman}\approx e_{king}-e_{w} eman−ewoman≈eking−ew,我们希望 e w e_{w} ew表示的单词是queen。将 e w e_w ew单放到等式的一边变为$e_{w} \approx e_{king}-e_{man}+e_{woman} $,于是我们需要一个能判断式子两边相似度的函数
————余弦相似度。
余弦相似度
为了测量两个词的相似程度,我们需要一种方法来测量两个词的两个嵌入向量之间的相 似程度。给定两个向量𝑢和𝑣,余弦相似度定义如下:
C o s i n e S i m i l a r i t y ( u , v ) = u , v ∥ u ∥ 2 ∥ v ∥ 2 = c o s ( θ ) CosineSimilarity(u,v)=\frac{u,v}{\Vert u\Vert_2 \Vert v\Vert_2 }=cos(\theta) CosineSimilarity(u,v)=∥u∥2∥v∥2u,v=cos(θ)
其中𝑢,𝑣是两个向量的点积(或内积), ∥ u ∥ 2 \Vert u\Vert_2 ∥u∥2是向量𝑢的范数(或长度),并且𝜃是向量𝑢和𝑣之间的角度。这种相似性取决于角度在向量𝑢和𝑣之间。如果向量𝑢和𝑣非常相似,它 们的余弦相似性将接近1;如不相似,则余弦相似性将取较小的值
。
嵌入矩阵
将词嵌入具体化时,实际上是具体化一个嵌入矩阵。
加入我们的词汇表中含有10000个单词,每个单词使用一个300维的向量表示,那么嵌入矩阵的形状为300 * 10000
,之前我们使用每个单词的one-hot的形状为10000*1,将两者相乘即为300维的向量,表示当前单词的嵌入向量
。
通过嵌入矩阵和one-hot向量相乘的方式,实际上是很耗资源的,我们在实际项目中,需要使用一个单独的函数算法
快速的寻找到嵌入矩阵的某列。
Word2Vec
Skip-Gram 模型
Skip-Gram 模型是给定输入词语来预测上下文。
从距离目标词一定词距内随机选取一个词作为目标词的上下文词
,构造一个监督学习问题。这样的话我们就是学习一个映射关系(比如orange为10000个单词中的第6257个单词,而juice是第4834个,于是就是要学习一个6257->4834的映射。)
设 e c = E O c e_c=EO_c ec=EOc表示输入的上下文词的嵌入向量,则预测不同目标词的