Learning Recommender Systems with Implicit Feedback via Soft Target Enhancementhttps://dl.acm.org/doi/pdf/10.1145/3404835.3462863
公式太长可以左右滑动
背景
通常在做多分类的时候,我们会采用softmax配合one-hot标签,最后结合交叉熵损失函数来进行优化。one-hot是对应类别的地方为1,其他地方都为0,文中称之为hard target。这种hard target的方法会忽略那些没有被观察到的反馈的作用,例如有的item没有被推荐,但是就说明user不喜欢该item吗?当然是不一定的,因此本文提出了soft target,以此考虑所有item的作用。
方法
推荐系统模型
通过上下文
来推荐item
。原始的hard target的情况,使用
表示上下文context为c是对应的标签i的one-hot。则其交叉熵损失为:
其中,
表示模型预测的情况。最小化交叉熵损失函数,相当于最小化负对数似然。可以得到下面的等式变换:
其中
表示用户对item的偏好。这就是本文的总体思想,就是用soft target和hard target结合,来得到新的标签,利用soft target引入未反馈的item的作用,但是具体的实现方式将在后续给出。
SoftRec 的优化框架
在soft target中需要满足一个约束,就是整个soft target向量中,目标item的排名应该是最高的。给出如下定义:定义soft target
,其中
,并且
。这样就使得原本one-hot中都为0的地方,现在都是非0的概率反应用户对这些item的偏好。从标签平滑正则得到启发,得到本文的平滑方式:
将原始hard target q和soft target d按照超参数
结合得到新的标签q'。其中
,将原有损失函数改为后得到下式,其中第一部分是传统的交叉熵损失,第二部分是soft target引导的交叉熵损失。
通过KL散度与熵的关系,可以改写上式为:
其中H(d)为常量。当
时,相当于优化传统的交叉熵损失函数。以上就是总体的损失函数了,接下来是具体实现。
SoftRec实例
想直接得到最优的soft target是很难的,但是可以用已有的数据和模型来模拟得到。本文通过三个层面,来得到soft target。
Item-Based Strategy
本文基于item流行度分布(item popularity distribution)来生成soft target。item流行度定义为
,其中
表示item i被所有用户的点击频率,通常它的分布是非均匀分布的,一般是指数分布或幂分布。本文就是希望将流行度分布作为soft target来促进推荐系统的性能,那么根据定义我们现在需要将流行度进行标准化,但是会存在一个问题,就是直接对流行度进行标准化后,argmax得到的位置和one-hot对应的位置可能不一样,因此将item的流行度分布标准化如下式,
其中
表示温度系数,对原有的流行度分布进行缩放。然后得到新的损失函数为下式,
User-Based Strategy
这部分是从user的信息中构建soft target。利用周边的邻居信息来生成soft target,这需要解决2部分问题:1.如何得到用户上下文信息的邻居信息;2.如何将这个邻居信息融入模型中。对于第一个问题, 将每个用户的历史交互视为他预先存在的特征。在二部图中通过Item2vec 将每个item嵌入到潜在向量空间中,然后获得每个用户的嵌入。然后利用余弦相似度查找周围的相似向量,文中采用了更高效的搜索方法(具体方法参考论文的参考文献)。对于第二个问题,采用CSN来捕获邻居中的知识。如图,将当前的上下文信息和其邻居信息作为输入,然后匹配两个输入的预测尽量相近,从而更新网络参数。
对于给定的上下文c,和他的邻居信息c',可以得到两个输出
和
,其中
是
的复制,并且
不更新,从图中也可以看出,只更新
。和item-based类似,为了保证输出的向量p的argmax和ont-hot对应上,采用下式对其进行平滑处理。
最终得到新的损失函数为:
Model-Based Strategy
基于模型的方法是采用知识蒸馏(教师-学生模型)。用预训练的教师网络T学习得到的输出
作为每一个训练实例的soft target。还是同样的问题就是softmax得到的输出argmax得到的位置需要对应于one-hot,因此仍然用平滑的方法对其进行平滑
得到新的损失函数如下式: