word2vec的整理

1. 概述

        word2vec源于Mikolov于2013年发布的一篇文章,主要包括skip-gram和cbow两个模型。分别为基于中心词预测上下文,和基于上下文预测中心词。接下来将从训练过程来比较skip-gram和cbow的区别。并于最后介绍word2vec经典的两个训练技巧。

2. 训练过程

1.skip-gram

        skip-gram的中心思想是根据中心词来预测上下文信息。假设滑动窗口大小为k,则对于每个中心词center,模型会训练(k-1)轮,来预测k-1个不同的上下文的词。总的时间复杂度为O(kv)

        但也正是由于这k轮的预测,每个中心单词会得到充分的训练,因此,即使是一些低频的词,skip-gram模型也能训练出较好的效果。

2. CBOW

        CBOW的中心思想是通过窗口的上下文来预测每一个中心单词。总的时间复杂度为O(v)。除此之外,由于输入的是这k-1个单词的平均,所以对于高频单词会有较好的一种表示,但是低频单词可能就得不到充分的训练了。

        by the waybert借鉴的就是CBOW的思想,但由于bert训练预料的庞大,消除了CBOW训练不充分的问题。

3. 重要结果

        结果:通过word2vec可以训练出较好的word embedding。即是输入时的look up table。

        一个问题:为什么不是输出时的w?

        1. 在transformers中输出时的look up table一般设置为和输入相同。但是在这里,由于这两恶搞都是可训练的,因此设置为不同。而一般用输入的w的原因在于(个人理解):

        1.输入的场景更符合embedding的场景;

        2.输出时一般采用了层次softmax来加速计算,所以embedding的维度和词表大小是不对应的。

4. 加速训练的技巧

1. 层次softmax

        通过构建哈夫曼树(哈夫曼树的有效路径最短,模型的计算量最少),使得计算softmax时,不需要对词表大小的矩阵进行softmax,每一层只需要计算少量的softmax,最终将时间复杂度由O(v)降低到了O(log v)。

2. 负采样

        在梯度反向更新的时候,通常我们要计算词表中每个词的loss,然后进行更新。而负采样的思想在于,我们每次只采样loss最大的几个单词进行梯度的bp传播。这样也能大大地降低模型的计算量。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值