作者:carloslin,腾讯 PCG 应用研究员
Embedding 技术目前在工业界以及学术界中应用非常广泛,关于 Embedding 的探索和应用从未停歇。Embedding 的训练方法主要分成 DNN 的端到端的方法以及序列学习的非端到端的方法,其中最经典的 word2vec 以及由此衍生出 sentence2vec,doc2vec,item2vec 等都属于非端到端的学习方法;本文主要介绍 Embedding 技术的非端到端学习方法在应用宝推荐场景的应用实践。
1.经典的 word2vec 模型
word2vec 模型的问世,极大的促进了 Embedding 技术的发展。下面我们先从 word2vec 模型切入,简单介绍一下 embedding 的推导过程。以业界最广泛使用的 Skip-gram+negative sampling 为例。
损失函数如下所示:
![ea7e39c6e4fc4fe6ba63332ad1f357b8.png](https://img-blog.csdnimg.cn/img_convert/ea7e39c6e4fc4fe6ba63332ad1f357b8.png)
其中 a 表示当前中心词,c 表示序列上下文词,Dp 为 window_size 中的词集合,Dn 为全局随机采样的负样本集合。损失函数中左半部分为正样本的损失函数项,右半部分为负样本的损失函数项。
为什么正样本和负样本能够通过加法的方式组合起来构成损失函数呢?首先,原始的 skip-gram 模型的损失函数(1)如下:
![a8076917754f3cbe062165d37640b9e5.png](https://img-blog.csdnimg.cn/img_convert/a8076917754f3cbe062165d37640b9e5.png)
其中 w 为中心词,c 为 w 的上下文单词,D 为训练集中 w 和 c 的 pair 对,θ 为需要学习的参数;我们可以把这个优化问题转化为一个分类问题,利用 softmax 函数展开后:
![57b9108b77fa21d5468382aae48e37fb.png](https://img-blog.csdnimg.cn/img_convert/57b9108b77fa21d5468382aae48e37fb.png)
我们得到如下格式的函数(2):
![f6650ad218adf444b48f021bc13ee17d.png](https://img-blog.csdnimg.cn/img_convert/f6650ad218adf444b48f021bc13ee17d.png)
其中 vc 和 vw 分别为中心词和上下文词的 embedding,C 为训练集中所有上下文单词的集合。接着我们可以对损失函数(1)进行 log 变换得到(3):
![8304b61ccff9b774960fc97ea5730948.png](https://img-blog.csdnimg.cn/img_convert/8304b61ccff9b774960fc97ea5730948.png)
由于需要对所有的上下文单词集合进行计算,公式(3)的计算复杂度非常高,所以 Negative sampling 的训练方式应运而生。Negative sampling 的思想本质上是一个二分类的问题,即预测(w, c)pair 是否存在训练集中。我们用公式:
![9a2f9b5dfeb9f18cb34deedd99ad9698.png](https://img-blog.csdnimg.cn/img_convert/9a2f9b5dfeb9f18cb34deedd99ad9698.png)
表示(w, c) 存在训练集的概率,相应的:
![eeb26f7df5a645d39ff8eedf38e720e7.png](https://img-blog.csdnimg.cn/img_convert/eeb26f7df5a645d39ff8eedf38e720e7.png)
表示(w, c)不存在训练集中的概率。此时的我们的损失函数(4)如下所示