• 对比学习《Selfsupervised Learning for Largescale Item Recommendations》


    背景

    在推荐系统中存在用户行为稀疏的问题,特别是在召回阶段,用户有过交互的item只占非常少的一部分,只有这部分数据我们能用来训练,但是serving时要serving全库item,这可能会导致倾向热门的item,特别是对冷启动非常不友好。这篇论文引入来在CV、NLU中取得成功的对比学习方法,通过一个辅助任务来帮助主任务模型和底层embedding得到更充分的训练。

    方法

    这篇论文的重点就在于辅助任务的样本是如何构造的?损失函数是如何设计的?

    辅助任务样本的构造方法(论文中也被称为数据增强)

    主要的步骤就是 mask + dropout

    对于一个样本我们会mask掉它的部分embedding,然后随机dropout掉部分embedding,这两步操作可以看作样本的一次变换

    同个样本经过不同变换得到的两个样本构成正例

    不同样本经过不同变换得到的两个样本构成负例

    在这里有两种mask方法:

    1. 随机mask

    2. 线随机选取一个feature,然后选取和它互信息最大的一半feature一起mask

    损失函数设计方法

    我们会在一个batch内计算损失,最大化同个样本经过不同变换后得到的两个样本之间的余弦距离,最小化不同样本经过不同变换后得到的两个样本之间的余弦距离

    联合训练

    论文中会把这个主任务和辅助任务一块训练,损失函数是:

    主任务和辅助任务可以共享部分/全部 embedding 和 nn 参数 

  • 相关阅读:
    第六篇 面向对象
    第四篇 函数
    基本http服务性能测试(Python vs Golang)
    七种常见经典排序算法总结(C++)
    461. Hamming Distance and 477. Total Hamming Distance in Python
    2. Add Two Numbers——Python
    21. Merge Two Sorted Lists —— Python
    求两个数字的最大公约数-Python实现,三种方法效率比较,包含质数打印质数的方法
    20. Valid Parentheses
    Python列表去除重复元素
  • 原文地址:https://www.cnblogs.com/xumaomao/p/15922498.html
Copyright © 2020-2023  润新知