文章名称
Self-supervised Learning for Alleviating Selection Bias in Recommendation Systems
核心要点
文章旨在解决推荐系统的Selection Bias。依作者观察,不同用户的评分结果(或反馈结果)受到选择性偏差的影响程度是不同的。因此,提出一种自监督学习的框架,引入评分分布校准损失。利用少量随机试验数据,迭代的选取“种子”用户。迫使相似用户中,有偏差的用户的评分分布接近无偏差的用户的评分分布,从而消除选择性偏差的影响。
方法细节
问题引入
Selection Bias是推荐系统常见的一种bias,影响模型在未观测数据上的表现(也就是泛化能力)。原有解决这一问题的方法,如EIB和IPS都严重依赖于插值模型和倾向性得分模型的预估准确性。
通过观察数据,作者发下不同用户的评分结果受到选择性偏差的影响程度不同,而这个影响直接反映在评分分布上,具体偏差如下图所示。其中,用户A和D没有收到偏差的影响,而其他用户则严重偏离了真实分布.
我们定义,推荐模型(可以是评分也可以是排序模型)为,完整的评分矩阵为,观测到的评分为,推荐模型的预测评分矩阵的。可以用如下公式衡量推荐模型的预估准确性。
通常我们是无法获得完整评分矩阵的,可以利用随机试验获得的MAR的评分来进行无偏评估,评估方法如下图所示。
因此,作者把推荐模型的目标形式化为,给定观测数据,最小化。
具体做法
原有的推荐模型采用最小化经验风险(MSE或者其他损失函数)的方法来学习模型参数。如前所述这样的直接学习法会受到选择性偏差的影响。由于不同用户受到偏差影响的程度不同,我们可以利用受影响程度较小(模型预测较准确的)用户的评分分布去校准受影响程度较大(模型预测偏差较大)的用户的评分分布。收集到MAR数据重点用户可以被认为是没有收到偏差影响的用户,1)把他们作为种子用户提取评分分布特征,2)在受到偏差影响的用户(称为非种子用户)中寻找与种子相似的用户,3)并利用SSL框架校准这些非种子用户,循环这个过程。
某个用户对所有物品的评分预测可以表示为,其中为物品的标号。是一个函数把用户的评分映射到评分分布。为了能够对函数求导,不可以使用离散(频次)函数或者分布特征函数(如均值方差?其实感觉可以用这个方式)。作者提出了以核函数的形式进行评分分布特征建模,具体建模如下图所示,其中是kernel的数量(或者特征函数的数量),表示平滑的程度。
由于种子用户在MAR测试数据集上的预估准确度较高。因此,我们利用用户在该数据集上的表现来进行种子用户的筛选。如果模型对某些用户评分预估的MAE小于给定的超参数预支,我们认为这些用户属于种子用户,具体可以形式化为如下公式。
因此其他用户为非种子用户。利用评分分布特征点来衡量分布的相似程度,度量公式如下图所示。
进而,可以利用如下图所示的SSL损失来校准非种子用户的评分分布。
随着评分模型参数的不断更新(不断学习),更多的用户在MAR上获得准确度预估结果,更多的非种子用户转换为种子用户。为了加快模型收敛,我们先在观测数据上用MSE与预训练模型。随后,1)评估所有用户的预估准确度,并划分种子和非种子用户;2)为非种子用户寻找相似的种子用户;3)计算SSL损失\mathcal{L}_{SSL};4)计算MSE损失,得到完整的损失;5)更新评分模型;6)在验证集上验证预估准确程度。循环上述步骤直到验证集上的性能在个epoch内都没有提升。
代码实现
文章的伪代码如下图所示。
心得体会
无法用分布特征函数?
个人理解,其实可以利用均值、方差等特征分布函数来从种子用户的评分结果中提取评分分布特征,(VAE不就是这样的模型?)。只是这样会导致评分分布数固定的(参数化模型相比非参数化模型的劣势)。