候选采样函数生成类别子集。类别子集需要送给候选采样损失函数计算损失,最小化候选采样损失便能训练模型。TF 提供下面两个候选采样损失函数。这两个采样损失函数的参数和返回值是一致的, 具体参数和返回值可以移步 TF 文档。 1. tf.nn.sampled_softmax_loss 这个函数通过 模型的交叉熵损失。候选类别子集由采样类别 和真实类别 组成,即 。模型最后一层输出是 , 经过 softmax 激活函数转成模型输出的概率得出 。 因为只有候选类别子集 , 没有类别全集 L,我们无法计算 ,进而计算交叉熵损失。通过候选类别子集,我们只能计算 。那么怎么优化相关的损失函数,我们又得到什么呢?。
其中 K 是和 y 无关的数。我们得到概率计算公式和交叉熵损失。
最小化 J 训练模型。 2. tf.nn.nce_loss NCE Loss 和 Sampled Softmax Loss 的出发点是一致, 都是想使得模型输出 。它们的不同点在于 Sampled Softmax Loss 只支持 Single-Label 分类,而 NCE 支持 Multi-Label 分类。候选类别子集 由采样类别 和真实类别 组成,即 。对于候选类别子集中的每一个类别,都建立一个 Logistic 二分类问题,其损失函数为
最小化 J 训练模型。