• 推荐系统(12)—— 消除偏差


    1、推荐系统偏差概述

    1. Selection Bias

      选择偏差主要来自用户的显式反馈,如对物品的评分。由于用户倾向于对自己感兴趣的物品打分,很少对自己很少对自己不感兴趣的物品打分,造成了数据非随机缺失(Missing Not At Random, MNAR)问题,观察到的评分并不是所有评分的代表性样本,于是产生了选择偏差。

      解决:数据填充(Data Imputation);倾向分数等。

    2. Conformity Bias

      一致性偏差是说,用户对物品的评分受用户所在的群体影响,与群体里的其他用户的评分趋于一致,即使这个评分与自己的感受不相符。这导致用户的评分并不总是能反应该用户的真实偏好。

      解决:对社会群体或流行度效应进行建模等。

    3. Exposure Bias

      曝光偏差主要来自用户的隐式反馈,如点击。用户只能看到一部分系统曝光的物品,并作出点击等反应。但是数据中不包含的交互并不一定代表用户不喜欢,还有可能是用户不知道该物品。

      解决:启发性置信权重;采样(Sampling)等

    4. Position Bias

      位置偏差是指,用户倾向于与推荐列表顶部的物品产生交互(点击、购买等),尽管这些物品可能是不相关的或不是最符合偏好的。这导致交互的物品可能并没有很高的相关性。

      解决:点击模型(Click models);倾向分数等

    5. Popularity Bias

      推荐系统数据存在长尾现象,少部分流行度高的物品占据了大多数的交互。推荐模型基于这些数据训练时,通常给流行度高的物品高分,给流行度低的物品低分,这就导致流行度高的物品更频繁地出现在数据中。流行度偏差会降低推荐系统的个性化水平,并导致推荐结果的不公平。

      解决:正则化(Regularization);对抗学习(Adversarial learning);因果图(Causal graph)等

    6. Unfairness

      不公平是指系统不公平地对待某些个人或群体,而偏袒其他用户。如在有些岗位推荐系统中,相比于男性而言,女性可能会更少地被推荐高薪或职业指导服务等广告,造成了性别不公平。

      解决:再平衡(Rebalancing);正则化;对抗学习;因果建模(Causal modeling)等

    7. Feedback Loop Amplifies Biases

      真实的推荐系统通常会形成一个恶性循环,从而扩大各种偏差。以流行度偏差为例,推荐系统的反馈回路会导致流行度高的物品更加流行,而流行度低的物品变得更不受欢迎,这种效应会降低推荐结果的多样性,导致用户的同质化。

      解决:通过收集随机数据或强化学习等方式打破循环。

    8. Inductive Bias

      并不是所有的偏差都是有害的。归纳偏差指通过作出一系列假设,使得模型能更好地学习目标函数进而完成推荐任务。很多假设对推荐模型效果提升都是有帮助的,如MF算法将用户和物品的交互估算成二者向量的内积。

    解决方案:推荐系统去偏进展概述

    2、位置偏差解决思路

      推荐系统中存在各种选择偏差,包括已知的和未知的。位置偏差就是其中一种,用户往往倾向于点击排在前面的item,但这不一定是用户当时最想看的。下图是统计位置1到9的ctr相对分布,位置越靠前,ctr越高,位置越靠后,ctr越低。这是由用户的偏好和位置偏差共同造成的。如果能够消除位置偏差,将用户偏好和偏差独立开来,将有助于提升模型的推荐质量。

    解决方法:

    (1)训练时把位置作为输入特征,预测时,或者将位置特征设置为常量,或者设置缺失。

      过往也有一些工作来解决位置偏置的问题。最常见的做法是将位置特征作为一个模型训练的一个特征,而在线上预测时,所有候选广告使用相同的位置特征输入。这种方案实现较为简单,但是线上预测时,选择不同的位置,得到的推荐结果会存在差异,结果往往是次优的。

    (2)shallow tower

      2019.09, Recommending What Video to Watch Next: A Multitask Ranking System

      论文提出的方法是如下图所示。在主模型之外,另外添加一个浅层网络或线性网络,输入位置特征,设备特征,以及其他能够带来位置偏差的特征,输出为bias分量。在主模型的输出层,例如CTR预估输出logit,激活函数之前,加上浅层网络的bias分量。训练的时候,每条曝光样本的位置特征都参与训练。文中有提到,随机丢掉10%的特征,防止模型过度依赖位置特征。不过我不确定,这里所说的10%的特征,是位置特征,还是主模型的输入特征。预测的时候,可以丢掉浅层网络,或者将浅层网络的位置特征都置为缺失。另外,需要对位置特征和设备信息做特征组合,原因是在不同的设备上会观察到不同的位置偏差。

     

      下图反映了不同位置的偏差,位置越靠前,位置带来的偏差越小,位置越靠后,偏差越大,因为越靠后,用户更有可能看不到。 

     

      完整的模型结构如下图所示。模型对每一个任务都做预估,最后将所有任务的预估值做加权得到最终的分数,作为排序的依据,比较麻烦的是,权重需要人工调参。训练的时候,消除位置偏差的浅层网络只需要加到CTR预估值即可,因为位置偏差只会影响用户是否看到并点击,对其他行为不影响。相比于一般的embedding+MLP的网络结构,上图模型只是将DNN部分替换为MMoE网络,对embedding部分并不影响。

     (3)PAL

    2019.09,PAL: A Position-bias Aware Learning Framework for CTR Prediction in Live Recommender Systems

      PAL将点击率预估值按照条件概率分解为,在某个位置被用户看到的概率,乘以看到之后物品x被点击的概率,计算公式和网络结构如下图所示。网络结构同样也是在主模型之外添加了一个辅助网络,只输入位置相关特征。训练的时候,将两个模型的输出预估值相乘;预测的时候,只使用主模型的结果,丢掉辅助网络。和youtube的做法有相似之处。

      华为提出的PAL框架将广告被点击的概率分为两个因素:广告被用户看到的概率和用户看到广告后点击的概率。论文做了进一步的假设:用户是否看到广告只跟广告的位置有关系;同时,用户看到广告后,是否点击广告与位置无关。因此整个框架也是包含两个部分,如下图所示。在线上预测时,只需要部署右边的网络,所得到的点击率就是消除了位置偏置后的点击率。这种方案的缺点是假设太强,将问题过于简化了,没有充分考虑位置偏置与用户特征、上下文特征以及候选item之间的关系。

    (4)DPIN

      假设有J个候选广告、K个位置,每次计算的耗时为C,那么预测J个广告在K个位置的整体时间复杂度为O(JKC),这显然是线上扛不住的。因此论文将整个DPIN拆解为了三个模块,分别是base module、deep position-wise interaction module和position-wise combination module,如下图所示。接下来对这几部分module进行分别介绍。

    快手推荐方式:

    https://www.zvstus.com/article/news/1/4e347ffffe889eece1621f3c43540000.html

    学习笔记:https://pnyuan.github.io/blog/recsys/%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%20-%20DNN%20for%20YouTube%20Recommendations/

    https://mp.weixin.qq.com/s/Y3A8chyJ6ssh4WLJ8HNQqw

    参考文献:

    推荐系统去偏进展概述

    深度位置交互网络

    DPIN 深度位置-美团

    双塔模型修正

  • 相关阅读:
    AngularJs之ng-repeat的用法
    JavaBean转换为XML的源码
    JS插件之——ztree
    JS插件之——bootstrap-suggest.js
    oracle异常记录
    Java 中常用缓存Cache机制的实现《二》
    缓存、缓存算法和缓存框架简介
    oracle数据库高级应用之《自动生成指定表的insert,update,delete语句》
    Oracle语句优化之一
    android 7.0 多渠道打包
  • 原文地址:https://www.cnblogs.com/eilearn/p/14876637.html
Copyright © 2020-2023  润新知