点击下面卡片关注我呀,每天给你送来AI技术干货!

干货

作者:一元

来自:炼丹笔记

Denoising Implicit Feedback for Recommendation!

简 介

我写完这篇文章的时候发现十方已经写过一版了.......参考如下:

十方:别滥用隐式反馈了,模型学偏了!

本篇内容细节会涉及的更多一些,大家可以再次温故一遍,个人觉得非常有意思的一篇工作。

现实推荐问题的建模中,我们会使用大量的隐反馈来缓解了数据稀疏的问题,不过缺点也非常明显:

  • 隐反馈在反映用户的实际满意度方面不够清晰。

例如,在电子商务中,很大一部分点击并不能转化为购买,许多购买最终都会得到负面评价。

隐反馈的噪声特性目前研究的工作相对较少。本文则探讨了去噪内隐反馈推荐训练。我们发现:

  • 含噪声的内隐反馈会产生严重的负面影响,即拟合含噪声的数据会阻碍推荐者学习实际的用户偏好。

我们的目标是识别和剪枝噪声交互,提高推荐训练的有效性。通过观察正常的推荐器训练过程,我们发现噪声反馈在早期阶段通常具有较大的损失值。受此启发,我们提出了一种新的训练策略,称为自适应去噪训练(ADT),它能自适应地剪除训练过程中的噪声干扰。具体来说,我们设计了两种自适应损失公式:

  1. 截断损失,即在每次迭代中丢弃具有动态阈值的大损失样本;

  2. 加权损失,自适应地降低大损失样本的权重。

我们在广泛使用的binary cross-entropy loss使用,并在三个有代表性的推荐器上测试了所提出的ADT策略,并取得了很好的的效果。

方 法

问题定义

我们令:


























  • 表示用户




    对于商品




    的预估喜好程度,模型参数为






















  • 表示用户




    对于商品




    的真实喜爱程度;

给定数据集,我们需要学习







实践中,因为噪音交互的存在,将会误导模型对于用户喜好的学习。为了能更好的学习,我们需要尽可能去降低隐式反馈的影响。

Adaptive Denoising Training

此处我们已经训练了loss提出了ADT来预估



































,为了减少FP交互的影响,ADT动态的剪枝硬交互,(大损失),在训练的时候,特别地,ADT选择对大的loss进行丢弃或者重新加权的方式来减少训练目标的影响。本文设计两种方法来构建损失函数来降噪训练。

  • Truncated Loss:这是用动态阈值函数将硬交互的损失值截断为0;

  • Reweighted Loss:在训练过程中,它自适应地分配与较小权重的硬交互。

1.Truncated Cross-Entropy Loss






是预定义的阈值, T-CE损失从训练中移除了一些正向的交互。在实践中,当我们固定




的时候,训练效果并不是非常好,因为随着训练的增加,我们是损失会不断下降。

所以我们将




变为







, 此处我们依据drop rate







来设计







,此处的




为训练迭代。









  • 有一个上界,丢弃的交互比例应该受到控制,防止数据丢失;











  • ,应该允许在开始的时候所有的交互被输入模型;









  • ,应该从0到上界增加,这样模型可以学习并且将true-positive和false-positive交互慢慢分开;

最终,我们的drop rate函数如下:






































  • 是上界,




    是超参,来调整步获得最大的丢失率。

2. Reweighted Cross-Entropy Loss











  • 是权重函数,来调整交互对于训练目标的贡献。











应当有下面的一些特点:

  • 在训练的时候动态调整权重;

  • 该函数应当可以减少硬交互的影响;

  • 权重减少的程度可以轻易调整适用于拟合不同的模型和数据集;

此处我们将权重定义为:









































  • 是一个超参。











满足:

  • 在训练的时候能生成动态权重;

  • 非常大的CE损失乘上小的权重会被降低;

  • 超参数




    动态控制hard和easy交互的权重gap。

为了避免大损失值的负相互作用对优化的影响,权重函数被修正为:

这样,就可以降低false-negative交互的影响。

由于完全依赖推荐系统来识别FP交互作用,ADT的可靠性可能会受到质疑。

目前已有的许多工作已经指出了大损失和噪声相互作用之间的联系,并解释了潜在的因果关系:

  • 深度模型的“记忆”效应。也就是说,深度模型将首先在初始训练阶段学习简单而干净的模式,然后逐渐记住所有交互,包括嘈杂的交互。因此,在早期阶段丢失深层模型有助于滤除噪声交互。

另一个问题是,放弃硬交互会限制模型的学习能力,因为有些硬交互可能比简单交互更具信息量。事实上,正如先前关于课程学习的研究[2]中所讨论的,噪声数据中的硬交互可能会混淆模型,而不是帮助模型建立正确的决策面。因此,它们可能导致较差的泛化。它实际上是去噪和学习之间的折衷。

实 验

1.试验效果

由于ADT在训练过程中删减了许多交互,因此我们探讨了ADT是否会因为交互商品稀疏而影响非活动用户的偏好学习。

  • 我们可以观察到,在所有情况下,所提出的ADT策略都比正常训练获得了稳定的性能增益,验证了ADT对非活跃用户也是有效的。

2.深度分析

  • False-positive交互作用的CE损失值逐渐增加,而总体训练损失逐渐稳定下降。增加的Loss表明推荐参数没有在False-positive交互作用上得到优化;

  • T-CE识别和丢弃这种交互作用的能力,False Positive交互作用的CE损失也呈现下降趋势,表明推荐系统仍然适合这种交互作用。

  • 它们的损失值仍然大于真实的训练损失,这表明用R-CE损失分配较小权重的假阳性交互是有效的。它会阻止模型快速拟合它们。

我们可以得出这样的结论:

  • 两种方式都减少了false-positive交互作用对推荐模型训练的影响,这也解释它们比正常训练的好的原因。



















  • , 效果最好,如果











    超过0.4,效果会显著下降;

  • 调整




    在不同的数据集上,Reweighted Loss是一致的,当




    范围从0.15到0.3。

小 结

本文探讨了去为推荐模型训练去除隐式反馈的方法。我们发现了噪声隐式反馈的负面影响,并提出了自适应去噪训练策略来降低其影响。本文描述了两种损失函数:

  • 截断损失;

  • 重新加权损失。

这两种方式都是通用的,可以应用于不同的推荐损失函数、神经推荐器和优化器。在本文的工作中,我们将这两个方式应用于广泛使用的二元交叉熵损失,并在三个数据集进行了实验,这两个方式能有效地减少了噪声干扰隐式反馈,在三个数据集上都取得了非常好的效果。

参考文献

  1. Denoising Implicit Feedback for Recommendation

说个正事哈

由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:

(1)点击页面最上方深度学习自然语言处理”,进入公众号主页。

(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。

感谢支持,比心

投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。

方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。

记得备注呦

点击上面卡片,关注我呀,每天推送AI技术干货~

整理不易,还望给个在看!

隐式反馈的去噪,模型取得巨大提升!相关推荐

  1. 用隐式反馈做推荐模型,你做对了吗

    现在大家都习惯用隐式反馈来学习推荐模型,并作用于线上推荐系统(十方也不例外).大量的隐式反馈数据确实缓解了数据稀疏的问题,但是这些数据很多并没有反馈用户真正的需求.拿电商举例,大量的点击,并不会带来支 ...

  2. 隐式反馈的去噪,模型取得巨大提升

    Denoising Implicit Feedback for Recommendation! 本篇内容细节会涉及的更多一些,大家可以再次温故一遍,个人觉得非常有意思的一篇工作. 现实推荐问题的建模中 ...

  3. 用于推荐的隐式反馈去噪

    ** 用于推荐的隐式反馈去噪 ** 摘要 隐性反馈的普遍存在使得它们成为构建在线推荐系统的默认选择.虽然大量的隐式反馈缓解了数据稀疏问题,但缺点是它们在反映用户的实际满意度方面不够干净.例如,在电子商 ...

  4. 【矩阵分解六】处理隐式反馈-加权正则矩阵分解法WRMF (weighted regularized matrix factorization)

    改进点(跟前几篇的SVD比): 一句话总结:当数据样本只有隐式反馈时,以前的数据建模方式便不再适用.原因:1.隐式反馈中默认只有正样本(one-class问题):2.未观测到的样本默认为负样本(显然不 ...

  5. 类型转换:隐式转化(算数转换,整型提升,混合提升,赋值转换),强制转换【C语言】

    类型转换 隐式转化 算数转换 整型提升 混合提升 赋值转换 强制转换 编译器使用注意 小结 类型转换 隐式转化 不需要人为参与而产生的默认转称为隐式转化. 隐式转化,是计算机语言实现层面最难的,指针是 ...

  6. 《推荐系统实战》读书笔记——在隐式反馈系统中如何给商品打分

    之前看过的一本<pratical recommender systems>的读书笔记,这本书讲了很多网上看不到的,很实际的工程方面的考虑,规则为主,算法为辅.现在网上铺天盖地都是高大上的排 ...

  7. 隐式马可夫模型(hidden markov model,HMM)

    马可夫的有关知识整理 1.马可夫性 就是强调一个将来的状态和现在状态的一种无关性."将来"和"过去"无关的这种特性就是强马尔科夫性. 2.马可夫夫过程 既然上面 ...

  8. php 隐式路由,关于Laravel 7 的简单隐式路由模型绑定

    搜索热词 Laravel 的下一个主要发行版本 ,你可以直接在路由定义中自定义隐式路由模型绑定: Route::get('/posts/{post:slug}',function (Post $pos ...

  9. [转] 爱情的隐式马尔可夫模型(Love in the Hidden Markov Model)

    首先感谢原英文作者Tom Yeh的精彩描述,生动地讲述了HMM模型的原理,在此我斗胆用我自己的语言用中文修改描述一次. 感兴趣的可以点击这里下载latex生成的pdf 版本. 男生和女生分别是来自不同 ...

  10. laravel 模型里自定义属性_关于Laravel 7 的简单隐式路由模型绑定

    Laravel 的下一个主要发行版本 ,你可以直接在路由定义中自定义隐式路由模型绑定: Route::get('/posts/{post:slug}', function (Post $post) { ...

最新文章

  1. ThinkPHP5.0中Redis的使用和封装(原创)
  2. 无事“自动驾驶”,有事“辅助驾驶”?
  3. Kdevelop的简单使用和调试_JunJun~的博客-CSDN博客_kdevelop使用教程
  4. Freescale 基于IMX536处理器的Dialog DA9053电源管理参考设计
  5. Buuctf(pwn) ciscn_2019_n_5
  6. python3获得命令行输入的参数
  7. Java后台获取前端传递的日期解析不了
  8. 数据挖掘—朴素贝叶斯分类算法(Java实现)
  9. 远程管理服务器的具体操作方法
  10. 计算机科学中的逻辑学术,简述逻辑学在计算机科学中的应用
  11. Ubuntu 18.04 安装中文输入法
  12. poi数据导入arcgis,结合POI数据的道路自动选取方法
  13. django ajax获取数据类型,Django:使用Ajax获取模板中的数据库对象值
  14. 7-3 服务器统一出错处理
  15. 编写一个程序,将 d:\java 目录下的所有.java 文件复制到 d:\jad 目录下,并将原来文件的扩展名从.java 改为.jad。...
  16. python爬虫qq音乐_Python爬虫-QQ音乐无损音乐地址解析
  17. 华为电脑管家PcManager多屏协同功能破解
  18. Python神经网络模型和预测
  19. linux ubuntu下网络调试助手(GUI)工具
  20. 移动端UI设计尺寸规范以及iPhone尺寸大小

热门文章

  1. 移动端的click事件延迟触发的原理是什么?如何解决这个问题?
  2. 洛谷1004方格取数
  3. Knockout v3.4.0 中文版教程-6-计算监控-可写的计算监控
  4. iOS FFmpeg 优秀博客(资源)集锦
  5. 3-8-循环队列-栈和队列-第3章-《数据结构》课本源码-严蔚敏吴伟民版
  6. java-设计模式(行为型)-【命令模式】
  7. 选择排序(C++/Java实现)
  8. 第一个冷门与真正的死亡之组
  9. mysql中null与“空值”的坑
  10. 记某站被搜索引擎入侵