更改

添加1,028字节 、 2025年6月9日 (一) 17:52
小
第118行: 第118行:  
'''负采样(Negative Sampling):'''
 
'''负采样(Negative Sampling):'''
   −
负采样的核心思想在于将原始问题转换成一个二分类问题,让模型只区分正样本和负样本,例如在Skip-gram中,对于一个中心词 <math>w_t</math> 和一个正确的上下文词 <math>w_o</math>,正确的上下文词被称为正样本。同时人为给出错误的上下文文本 <math>w'_{o_i}</math>,也就是负样本。负样本的采样一般按照词频<math>U</math>的<math>3/4</math>次方作为采样概率,即:
+
负采样的核心思想在于将原始问题转换成一个二分类问题,让模型只区分正样本和负样本,例如在Skip-gram中,对于一个中心词 <math>w_t</math> 和一个正确的上下文词 <math>w_o</math>,正确的上下文词被称为正样本。同时人为给出错误的上下文文本 <math>w'_{o_i}</math>,也就是负样本。负样本的采样一般按照词频 <math>U</math> 的 <math>3/4</math> 次方作为采样概率,即:
    
<math>
 
<math>
第140行: 第140行:  
'''层次 Softmax(Hierarchical Softmax):'''
 
'''层次 Softmax(Hierarchical Softmax):'''
   −
层次softmax的核心思路是构建一个霍夫曼树,每个叶节点代表一个词汇,而预测一个词汇就是沿着树走的一条路径,对应的也就是一个不断重复的二分类问题,目标函数就可以变化为:
+
层次softmax的核心思路是根据词汇的词频构建一个霍夫曼树,每个叶节点代表一个词汇,而预测一个词汇就是沿着树走的一条路径,对应的也就是一个不断重复的二分类问题,因此每个目标词汇 <math>w_t</math> 都会被编码为一串二进制编码:
 +
<math>code(w_t)=(b_1, b_2, \ldots, b_L), b_i \in {0,1}</math>
 +
而这条路径上的非叶子节点被记为 <math>n_1, n_2, \ldots, n_L</math>。因此,在Skip-gram中,给定中心词 <math>w_t</math>  与上下文词 <math>w_o</math> 之后,上下文词的条件概率就变成了:
 +
 
 +
<math>P(w_o \mid w_t) = \prod_{i=1}^L(w_o) \sigma (|1-b_i|\mathbf{v}_{n_i}^\top\mathbf{v}_{w_t})</math>
 +
 
 +
其中<math>\mathbf{v}_{n_i}</math>是路径节点的向量,相当于原始输出矩阵<math>W'</math>。损失函数为最大化词对的出现概率:
 +
 
 +
<math>\mathcal{L} = - \sum_{(w_t, w_o) \in D} \log P(w_o \mid w_t)</math>
 +
 
 +
同样,层次softmax也可以应用于CBOW中,条件概率中的目标词词向量更换为了上下文词汇的平均词向量:
 +
 
 +
<math>
 +
P(w_t \mid \text{context}) = \prod_{i=1}^{L(w_t)} \sigma\left( [1 - b_i(w_t)] \cdot \mathbf{v}_{n_i}^\top \mathbf{h} \right)
 +
</math>
 +
 
 +
由此也能够得到对应的损失函数。
    
=='''应用领域'''==
 
=='''应用领域'''==
130

个编辑