NLP--Embedding

词向量

One-Hot Encoding

要点
词汇表的大小|V|=N, 用N维的向量表示一个词,每个词的one-hot中1 11的位置就对应了该词在词汇表的索引。
缺点
无法反映词之间的相似度,因为使用one-hot方法表示的词向量,任意两个向量的积是相同的都为0

word2vec

要点

word2vec包括Skip-Gram(SG) 和CBOW:
SG模型:根据中心词(target),来预测上下文(context)
CBOW模型:根据上下文(context),在预测中心词(target),即使用规定窗口范围内的context的平均(或求和),来预测target

SG和CBOW区别:对context取平均,当CBOW求和的是时候,本质上和SG没有区别,得到的结果是一样的。

CBOW对context取平均,影响:

  • 训练速度更快,从训练集的样本数量来说,CBOW的样本数量比SG样本数量少得多。假设有n个target,窗口大小为w(target左右取w个context word),那么SG的样本数量接近22∗w∗n,而CBOW的样本数量近似为n
  • 训练的效果不同。Mikolov的话意译过来就是:SG适用于相对少量的训练数据,对于稀有词的效果更好(可以得到表征能力很好的embedding)。CBOW比SG的训练速度快了几倍,而其常用词的表征的效果要比SG好一点。

原始的word2vec的问题以及解决办法

  • 最后SoftMax层计算量过大:
    优化: 改用层次Softmax(Hierarchical Softmax)、负采样;
  • 高频但意义不大的Stop Word充斥训练样本:
    优化: 对于训练原始文本中遇到的每一个单词,他们按照一定概率保留,保留的概率与单词的频率成反相关;
    超参的选择对Word2Vec的效果影响
  • 对高频词进行下采样(sub-sampling)可以提高精度与速度,其对应的sample参数通常在 1e−3 到 1e−5之间,默认 1e−3
  • 负采样参数选择: 对于小规模数据集,选择5-20个negative words会比较好,对于大规模的数据集,采用2-5个negative words
  • 通常来说embedding维度越高,效果越好,但不总是这样;
  • 窗口大小SG通常是10个,CBOW通常是5个
posted @ 2022-07-05 11:48  酷酷的排球  阅读(210)  评论(0编辑  收藏  举报