(3)word2vec的那些东西

wrod2vec是对NNLM的一种改进,他去掉了激活层,减少了要训练的参数,效率肯定是提高了很多~一共有两个模型,Skip-gram和CBOW。

CBOW是输入附近的词求中间词,Skip-gram是给中间的词求附近的词。

Skip-gram

这个模型其实与NNLM差不多,只是一个简化而已。不过训练目标改变了。Skip-gram的终极目标不是训练一个准确的输出,而是为了获得隐层的权重矩阵,或者说词向量。这种模型一些人取名为“Fake Task”。就是让输出层只是一个调参的工具人而已。

在了解具体模型之前必须要了解这里提出的一个新概念(其实也不新):滑动窗口。这个滑动窗口提供了词与词之间的关系和语义,我认为是这个模型的精髓。其具体表示就是选择一个合适的框框大小window_size,选择输入词前后window_size大小的词进行组合。具体如图:

这样我们每次不是对一个单词进行训练,而是对单词组合进行训练。那神经网络就知道lazy dog和dog lazy的区别了!

模型

输入层 依旧是对单词采用One-hot编码,维度是词典的长度。到哪个词了就哪个词为1进行表示。如果我们的单词表长度为doc_len,那输入层的维度就是doc_len*1。到这里一切还是那么美好

隐层 这里我纠结了很久,最终才搞明白这里有一个超参数词向量的特征数。这个层的目的是用一个人为设定的特征量来表示一个值!!!现在一般都采用谷歌的想法,采用300个特征的词向量。所以隐层的尺寸就是300*doc_len。这里的隐层就是要产出我们最终要提取的东西啦,大佬一般称此为词向量。为了得到词向量我们将这两个矩阵相乘,最终得到1*300的词向量。

这里还有一个小tip,针对One-hot编码仅有一个位置为1的特点,我们将相乘的操作变成索引操作。比如你第200列为1,那我直接提取矩阵第200行的数作为结果就行,避免了大量的乘法运算。

经过训练我们得到想要的词向量,那我们还要继续往下走更新他

我们知道,每个词都有可能成为我们预测的词。所以我们要把1*300的词向量再与输出矩阵相乘,这个矩阵的尺寸为300*doc_len。这样简单一乘,就得到了1*doc_len。这样相乘的意义是将该词与词典中所有的词进行对比,求得相似度。

输出层 输出层就很简单啦,我们知道了相似度以后放入SoftMax层求得词典中所有词的概率。反向传播使用的是梯度下降法。

这里SoftMax层也有一个变种,就是采用哈夫曼树。不过这里只是作者在下一篇论文中写到的改进方法,最终在fastText得到展现,这里暂且不表。

CBOW

知道了Skip-gram也就知道了80%的CBOW,只是因为输入的词多了起来所以对他们取了个均值,其他的都一样。word2vec是如何得到词向量的? - 知乎大佬贴的PPT我觉得解释非常清晰

FastText

从出生开始,FastText就知道自己的意义是加速运算。所以这里对word2vec进行了很多改进和简化。模型结构如图:

不过与Word2vec不同的是,这个模型一般用来分类。 

输入:FastText采用n-gram的输入方式,比如apple就取“<ap”, “app”, “ppl”, “ple”, “le>”进行输入,其中<>表示开始和结尾。这样的好处是1、对低频词友好2、对于词典以外的新词也可以构建。其实这里实现了一个输入的共享,毕竟n-gram的个数是有限制的。理论上我可以无限拼接词汇。输入层就变成了单词+n-gram

隐藏层:对所有单词的向量进行叠加平均

输出层:这里又是采用了Hierarchical Softmax,把SoftMax变成了一颗哈夫曼树,引入了二分类简化了操作。具体如何实现fastText原理和文本分类实战,看这一篇就够了_【AI机器学习与知识图谱】的博客-CSDN博客_fasttext

大佬的博客写的非常清楚,数学渣就不班门弄斧了

最后我们再加上损失函数和优化器就可以啦

FastText是Word2vec的实用版,这里n-gram的使用更好的分辨了相似词,因为他的输入不再是One-hot,而是一个Embedding。因此用于分类在当年也是一个很棒的模型。

参考:

word2vec:

word2vec是如何得到词向量的? - 知乎

理解 Word2Vec 之 Skip-Gram 模型 - 知乎

Word2Vec介绍:直观理解skip-gram模型 - 知乎

FastText

Word2Vec介绍:直观理解skip-gram模型 - 知乎

fastText原理和文本分类实战,看这一篇就够了_【AI机器学习与知识图谱】的博客-CSDN博客_fasttext

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值