赞
踩
N-gram模型
对句子或单词的所有长度为N的子句或子字符串进行操作,如2-gram中,对“girl”的字符串为“gi”,“ir”,"rl"进行操作,通常有操作如下:
CBOW模型
是把单词的高维稀疏的one-hot向量映射为低维稠密的表示的方法。
模型架构如下:
(此处有图)
{ x 1 , x 2 , . . . , x c − 1 , x c } \{x_1,x_2,...,x_{c-1},x_c\} {x1,x2,...,xc−1,xc}
h = 1 C ∑ i = 1 C x i W h = \frac{1}{C}\sum_{i=1}^C x_iW h=C1i=1∑CxiW
V o u t = h W ′ = [ u 1 , u 2 , . . . , u V ] V_{out}=hW'=[u_1,u_2,...,u_V] Vout=hW′=[u1,u2,...,uV]
y i = e x p ( u i ) ∑ j = 1 V e x p ( u j ) y_i=\frac{exp(u_i)}{\sum_{j=1}^V exp(u_j)}\\ yi=∑j=1Vexp(uj)exp(ui)
[1]中提出了FastText模型,类似CBOW模型,使用n-gram特征代替单个词的特征,提取序列信息,效果与深度学习分类器持平,但速度快得多。其模型架构如下:
m i n − 1 N ∑ i = 1 N y i l o g ( f ( B A x i ) ) 其 中 , x i 为 第 i 个 文 档 正 则 化 / 规 范 化 后 的 特 征 向 量 ( b a g o f f e a t u r e s ) A 和 B 是 两 个 权 重 矩 阵 min-\frac{1}{N}\sum_{i=1}^N y_ilog(f(BAx_i))\\ 其中,x_i为第i个文档正则化/规范化后的特征向量(bag\ \ of\ \ features)\\ A和B是两个权重矩阵 min−N1i=1∑Nyilog(f(BAxi))其中,xi为第i个文档正则化/规范化后的特征向量(bag of features)A和B是两个权重矩阵
NCE loss(noise-contrastive estimation),噪声对比估计。
在词向量的生成过程中,用的loss函数是NCE或negative sampling,而不是常规的softmax。在《learning tensorflow》这本书中,作者这样说道:but it is sufficient to think of it (NCE) as a sort of efficient approximation to the ordinary softmax function used in classification tasks。由此看来,NCE是softmax的一种近似,但是为什么要做这种近似,而不直接用softmax呢?
当类别数很大时(CBOW中是单词数),softmax复杂度很高,为了更高效地进行,将softmax计算过程转化为二分类(LR)。具体地,将单词与真实类别的true pair、单词与随机类别的randomly corrupted pair送入分类器,待优化的分类器只需判断输入的pair是真或假即可。(主要思想与负采样和层次softmax相同)
Word2Vec slightly customizes the process and calls it negative sampling.
def nce_loss(weights, #[num_classes, embed_size]
biases, #[num_classes]
inputs, #[vocab_size, embed_size]
labels, #[vocab_size, num_true]
num_sampled, num_classes, num_true=1,
sampled_values=None,
remove_accidental_hits=False,
partition_strategy="mod",
name="nce_loss")
个人理解:对input中的每个词,选择对应的标签构成正样本对,再随机选择num_sampled个标签与该词构成负样本对。对每个单词对,在weights和biases中找到对应标签的w和b,用逻辑回归进行二分类,每个分类问题计算交叉熵
[1] Bag of Tricks for Efficient Text Classification
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。