cbow 和 skip 解析

 

CBOW(continue bag of words)

cbow 和 skip 解析_第1张图片

取滑动窗口大小为C的词,词汇表大小为V,构成输入的one_hot向量,W(c,v)矩阵,经过一个全连接层,W(v,n),将V维的one hot 向量映射到N 维空间上

再然后,用一个参数为W(n,v)的全连接层,将原来的N维空间,映射到C维空间,去预测中心词的概率。

前向结构:

1. input_layer C个V维的向量。

2.input_layer  --->  hidden_layer 全连接,将C个V维向量转化成C个N维的向量

3.activation(input_layer) 将C个N维向量均值为1个N维向量

4.activation(hidden_layer) ----> output_layer 全连接层,将1个N维向量转化成1个V维向量

5.activation(output_layer) 将1个V维向量,softmax,取argmax,得到一个one_hot.

这样训练后,得到的W(v,n) 和 W(n,v)即为我们所熟知的词向量

 

SKIP-GRAM

与CBOW类似,只是用1个词预测上下文。

前向结构:

1. input_layer 1个V维的向量。

2.input_layer (look up) 将1个V维向量W(v,1)通过look up 找到W(v,n)中的W(n,1)相当于W(v,1)乘上W(v,n)的转置矩阵,得到W(n,1)

3.hidden_layer ----> output_layer, 全连接层,W(n,1)乘上W(v,n)得到W(v,1)

5.activation(output_layer) 将1个V维向量,softmax,取argmax,得到一个one_hot.

(1对1的预测,预测多次)

 

训练的优化:

目标函数:-log(Wc|Wo),求最小值

两种方法,层次softmax 和 负采样

1,层次softmax

利用huffman编码,层次Softmax使用一种二叉树结构来表示词典里的所有词,V个词都是二叉树的叶子结点,而这棵树一共有V−1个非叶子结点。

cbow 和 skip 解析_第2张图片

 

-log P(w|Content(w)) = -\sum_{i=1}^{n}{p_i}

pi即为从根节点到目标叶子节点的每个二分类的概率。

 

2.负采样

原本的softmax概率将所有除了中心词意外的词,分为负例,所以计算复杂度较高,

而负采样则随机选取一些非中心词,作为负例,将词表大小的影响转换成常数。

 

 

具体算法推荐该篇博客:https://blog.csdn.net/love_linney/article/details/72860275

 

 

 

 

 

 

你可能感兴趣的:(AI)