• 对负采样(negative sampling)的一些理解


    负采样(negative sampling)通常用于解决在训练神经网络模型时计算softmax的分母过大、难以计算的问题。但在LightGCN模型论文的BPR LOSS中,负采样的概念可能与传统的softmax分母问题不完全一样。

    在LightGCN模型中,不同于传统的协同过滤方法或基于矩阵分解的模型,它采用了一种轻量级的方式来学习用户和物品的嵌入表示。LightGCN的损失函数中包含了BPR损失(Bayesian Personalized Ranking),该损失函数用于推动模型更好地区分用户对已观察到的物品和未观察到的物品的兴趣。这是通过负采样来实现的。

    具体来说,负采样在这里用于生成未观察到的物品(负样本),以便在BPR损失中比较已观察到的物品和未观察到的物品之间的差异。通过随机或其他采样策略,从未观察到的物品中选择一些物品作为负样本,然后计算它们与已观察到的物品之间的兴趣差异,如公式(15)所示。这有助于模型学习更好地排名观察到的物品高于未观察到的物品。
    在这里插入图片描述
    公式(15)代表了LightGCN模型中的损失函数,这是基于贝叶斯个性化排名(Bayesian Personalized Ranking,BPR)的损失函数。

    首先,让我们看一下公式中的符号和变量:

    LBPR 是BPR损失函数。
    M 是用户的数量。
    u=1 到 M 是用户索引的范围。
    i ∈ Nu 表示用户 u 观察到的物品 i 的集合。
    j ∈ N/ u 表示用户 u 没有观察到的物品 j 的集合,,“j ∈ N/ u” 这一步的目的是选择未与用户 u 直接交互的物品 j。换句话说,它表示从所有可能的物品中选择那些不在用户 u 的交互历史中的物品作为负样本。这是负采样的一部分,目的是与已观察到的物品 i 进行比较,以计算 BPR 损失,以便推动模型更好地区分用户对已观察到的物品和未观察到的物品的兴趣。在协同过滤和推荐系统中,通常存在大量未被用户交互过的物品(item),而用户的历史交互数据只包含了少量物品。如果要考虑所有可能的未交互物品来计算 BPR 损失,这将导致计算成本非常高,因为负样本的数量可能远远大于正样本(用户已交互的物品)的数量。因此,为了降低计算成本,推荐系统通常采用负采样策略,从未交互的物品中随机选择一部分作为负样本,然后使用这些负样本来计算 BPR 损失。这样可以在保持模型训练有效性的同时降低计算复杂性。就有一种我觉得是以部分代替整体的感觉。
    ui 是模型预测用户 u 对物品 i 的兴趣。
    uj 是模型预测用户 u 对物品 j 的兴趣。
    σ(x) 是Sigmoid函数,它将实数映射到 (0, 1) 的范围内。
    λ||E(0)||2 是正则化项,用于控制模型的复杂度。
    BPR损失函数的目标是鼓励模型使观察到的物品的预测兴趣高于未观察到的物品的预测兴趣。这可以通过计算差异的负对数概率来实现。具体来说,对于每个用户 u,我们计算了观察到的物品 i 和未观察到的物品 j 之间的差异,然后通过负对数概率来量化这种差异。

    式子中的第一项 -ln σ(ŷui - ŷuj) 是计算差异的部分。这里,σ(x) 是Sigmoid函数,它将模型预测的兴趣值映射到 (0, 1) 的范围内。ŷui - ŷuj 表示用户 u 对物品 i 和物品 j 的预测兴趣之差,通过Sigmoid函数将其映射到概率空间。因此,-ln σ(ŷui - ŷuj) 表示观察到的物品 i 的预测兴趣高于未观察到的物品 j 的负对数概率。

    第二项 λ||E(0)||2 是正则化项,用于防止过拟合。这里,E(0) 是模型的第0层的嵌入矩阵,正则化项通过惩罚嵌入矩阵的大小来控制模型的复杂度。

    综上所述,公式(15)是基于BPR思想的损失函数,用于训练LightGCN模型。它的目标是通过最小化差异的负对数概率来鼓励模型提高对观察到的物品的预测兴趣,同时使用正则化项来防止过拟合。这有助于LightGCN模型学习用户和物品之间的嵌入表示以进行推荐任务。

    虽然负采样主要用于处理类似于传统softmax分母问题的难以计算的问题,但在这里它的目的是与BPR损失结合使用,以提高推荐质量,而不仅仅是减少计算复杂性。因此,在这个上下文中,负采样是一种用于训练推荐模型的技术,用于优化BPR损失。

  • 相关阅读:
    mysql某批量更新导致死锁
    喜报 | 博睿数据两项发明专利获得国家知识产权局授权,累计发明专利11项
    前端知识案例学习1-css实现滚动贴合
    Spring框架系列(8) - Spring IOC实现原理详解之Bean实例化(生命周期,循环依赖等)
    不花钱就能完美解决大型离散非标设备生产行业企业信息化
    [LINUX]linux基本指令大总结
    Python综合案例(动态柱状图)
    useEffect
    NVIDIA Grace Hopper架构深度解析
    【数据结构-进阶】二叉搜索树
  • 原文地址:https://blog.csdn.net/qq_45732909/article/details/133428822