14.2.1 负采样
一些本人的理解如下:
事件\(D|w_c,w_o\)的意思是以\(w_c\)作为中心词,\(w_o\)是否来自其上下文,若\(D=1\)则表示来自,否则表示不来自
式\((14.17)\)也比较好理解,两个词向量的内积可以衡量两个的相似程度(长度以及夹角)
文中“正样本的事件”指的是\(D=1\);“词向量等于无穷大”指的是如果模型直接令所有词向量的每个元素的值都是无穷大的时候,式\((14.18)\)就最大了,但是这个样子显然没有意义
负采样的思想是基于我们可以人为设定似然函数。以前的似然函数只包含了“出现了什么”(\(D=1|w_c,w_o\)),我们还可以添加项“没有包含什么”(\(D=0|w_c,w_o\))
总的来说,所以负采样的逻辑是:如果直接用softmax对跳元模型进行优化,那么计算量太大了,所以现在要减少计算量;减少计算量的方法是将softmax换成sigmoid函数;而如果只进行了这种转换,我们就只考虑了正样本,此时我们的任何词元的词向量都是正无穷;为了解决这个问题,我们就又引入负样本,从而让正负样本之间平衡。
update 2025.3.5
感觉这么理解应该更好:每个词都有两个向量,一个是中心词向量,另一个上下文向量。那么式\((14.16)\)的那个\(\text{Sigmoid}\)函数直接就理解为\(w_o\)是\(w_c\)的上下文词的概率(注意,\(\text{Sigmoid}\)本来就可以当成向量理解,我们就不要再去管等号左边了);然后负采样的目标比跳元模型更进一步,除了最大化正样本出现的概率,还要最大化负样本不出现的概率,于是就有式\((14.20)\)

浙公网安备 33010602011771号