当前位置: 代码迷 >> 综合 >> skip-gram; 负采样
  详细解决方案

skip-gram; 负采样

热度:68   发布时间:2023-12-15 00:53:20.0

skip-gram是上一个博客中所说的Word2vec 的方法,他们都是使用模型来训练一个嵌入矩阵E。

skip-gram

假设有一句话为 i like playing basketball.  那么skip-gram 要做的就是在这句话中选择出一个上下文词,假设这个词为playing。 然后再给定一个数字n(窗口),在上下文词的前n个词与后n个词。中间选择出目标词。 比如假如数字给定为2的话。playing前面的两个词为 i   和 like。后面的两个词只有一个basketball.。 那么我们的目标词就在这三个词之间选择。可以得到以下单词组合

playing    i

playing     like

playing    basketball 

根据这个组合来训练一个模型。

                                                      

其中input为context的one-hot化向量, out-put 是一个和one-hot向量维度一样的一个概率向量。 概率最大的元素所在的位置,就是target单词在语料库所在的位置。  这个模型并不是为了预测精确度,而是为了训练隐层里面的参数矩阵,作为嵌入矩阵。

负采样:

skip-gram方法最难之处在于,训练一个网络的时候,最后使用softmax。这样就加大了参数量与运算开销。为了解决这个问题负采样方法就应运而生了。

比如有一句话 i have  a glass of orange juice.

在这句话中选择一个上下文单词, 假设这个单词为orange

然后再从预料库中随机选择出单词。作为orange的负样本,标签为0。在预料库中选择单词一般都与单词的频数相关的。

然后再从这句话中选择一个单词(juice)作为正样本,标签为1。

那么就得到以下数据组合

                                                  

将 context和word经过one-hot化之后作为模型输入项,输出端口由segmoid函数。输出两个概率。这样相对于softmax就大大减少了参数量。 我们训练这个模型的目的依然是为了获取隐层的参数矩阵。作为嵌入矩阵。

 

 

  相关解决方案