美文网首页
word2vec-简要介绍

word2vec-简要介绍

作者: wzhixin | 来源:发表于2018-06-25 23:38 被阅读10次

    刚刚看完一篇公众号的写的文章,写的挺好的,现在来分享一下心得

    1什么是word2vec?

    在机器学习当中,通常的输入是模型可以识别的数字,对于文字,模型是无法识别的,输入的每个单词模型只能知道这个单词是由什么字母组成的,但是不知道具体的含义。1)为了解决输入的问题,大家采用了one-hot编码的方式。就像是一本词典,每一个单词对应着在这本词中的第几页第几行。但是这样做机器也没法识别不同词语之间的含义,例如苹果、香蕉都是表示水果的词语,这两者应该比较接近。2)所以为了解决语义的问题,出现了word-Embedding的方式,将整个预料库看作一个多维的空间,将语义接近的词语的位置嵌入到比较接近的位置。

    2怎么做词嵌入

    如果是想训练一个模型用来预测输入一段文字之后接下来会输入一个什么样的词就要用这个词的前面几个单词(挨着的)作为输入,或者用这个词的前几个和后几个作为输入。但是如果是只想训练得到这个词模型的话,就可以使用skip-gram的方式,挑选这个词附近(不用挨着)的某个词作为输出y这个词本身作为输入x,已经证明了这样的方式也能得到比较好的效果。

    那么是怎么训练这个模型呢


    image.png

    就是计算在p(t|c)在已知输入为c的条件下出现单词t的概率(就是单词表当中每个词的概率)。这个概率就等于这两个单词出现的值(经过一系列的运算),除以输入为c和单词表中所有词的组合值的和。然后使用对数损失函数来进行评判。根据这个损失函数通过神经网络的反向传播的方式对隐藏层的权重进行更新。

    skip-gram-model

    就是通过随机选取目标词附近的窗口的词作为y,我们希望这个模型预测出来的也是这个y的one-hot编码。
    另外我们可以选取多个y,然后分别计算每个y的损失函数加起来。


    image.png

    cbow

    连续词袋模型,将目标词作为y,选取该词附近的词作为输入,可以选取多个x(一般做法是把多个x相加后求平均作为输入),然后训练模型。


    image.png

    算法的优化:

    image.png

    1)分级softmax:对于每个词都需要将这个词和所有词进行计算,可以使用分级的softmax,计算时可以对通过这个方法可以将时间缩短为log(n)级别,另外这颗树不是一颗平衡二叉树,而是将常见的词汇放到的树的顶层。
    [图片上传中...(image.png-6df6f4-1529938841141-0)]

    2)负采样:负采样主要是将一段输入中的某个单词以及该词周围的一个单词同作为输入,并标记为正样本,再用该词和词典中的k个词作为负样本,这样最终预测的目标就是这个两个词作为输入,预测两个词是否是在一段文字当中,这样做的好处是将原先需要计算整个词典V的softmax减少了只用计算k个词。因为我们只需要得到这个模型而不用准确准确率。

    参考文献:https://mp.weixin.qq.com/s/aeoFx6sIX6WNch51XRF5sg
    吴恩达-deep-learning.ai

    相关文章

      网友评论

          本文标题:word2vec-简要介绍

          本文链接:https://www.haomeiwen.com/subject/memyyftx.html