首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从蒸馏网络到推荐系统

一、背景

之前我们介绍过

蒸馏网络

的相关知识。知识蒸馏(Knowledge Distillation)是由Hinton等人于2015年提出的一个概念。它的核心思想是将一个复杂的教师网络(teacher network)来训练一个更简单的学生网络(student network),用更少的复杂度来获得类似的预测效果。具体图如下:

图1. 蒸馏网络

在图1中,我们用图片数据集来训练一个复杂的教师网络,同时我们再训练一个较为简单的学生网络,之后最小化两个模型的预测结果的分布,从而使学生网络达到和教师网络相似的预测效果,并且由于学生网络的参数较少,在预测时可以有更快的响应速度,因为我们可以将学生网络作为实际上线时使用的模型。

对于推荐系统而言,响应速度尤其重要,比如在购物网站上,如果预测结果有延迟对用户使用体验有很大的影响,因此我们需要在实际上线时采用尽可能精简的模型。本文的主旨即在于将知识蒸馏的思想用到推荐系统中。

二、方法

本文提出了一种排序蒸馏(Rank Distillation)的方法,它的大体流程如图2所示,整体而言方法和知识蒸馏一致,不同之处在于训练数据,之前是图像数据,本文中用的是搜索数据,包括查询词和文档,因此我们的目标是让学生网络预测的推荐序列(Top-k Ranking)和教师网络的推荐序列尽可能接近。

图2. 排序蒸馏

排序蒸馏的具体实现细节如图3所示。首先我们用带标签的数据去训练教师模型,同时继续用此数据去训练学生模型。完成这两步后,我们把不带标签的数据输入教师模型,得到关于查询词的前K个文档的排序,之后我们将这K个文档作为这些不带标签的查询词的已知信息(Ground truth)来训练学生网络,从而提高学生网络的性能。

图3. 排序蒸馏工作流程

那么如何用这K个文档来训练学生网络?对于教师文档给出的排序,我们希望对其中每个文档进行加权,具体策略如下:

1、对排序的位置加权。

对于靠前的文档,我们推断他们相对于靠后的位置更加重要,因此我们以下面的公式对其加权:

r是文档所在的位置,λ是用来控制分布尖锐度的超参。

2、对排序的差异性加权。

对位置排序存在一个问题,即针对每一组排序,他们之间对于文档的相关度不是均匀分布的。举个例子,在一个排序中第5个文档与查询词之间相关度很高,但在另一组排序中,第5个文档与查询词关系已经不大了,因此我们需要去建模这种差异。本文通过采样的方式来实现这个策略,具体算法比较复杂,有兴趣的可以参照原文。

3、混合加权策略。

该方法是对以上两种算法的结合,在实验中这个方法得到了最好的效果。

三、实验

本文采用的数据集是Gowalla和Foursquare,数据集分布如图4所示:

图4. 实验数据

该算法中的教师模型采用了Fossil(Factorized Sequential Prediction with Item Similarity ModeLs)和Caser(ConvolutionAl Sequence Embedding Recommendation model),教师模型采用尽可能多的参数来更好的拟合。对于学生模型,他的整体模型和教师模型一致,但在参数维度上比教师模型要小很多。实验结果如图5:

图5. 实验结果

Fossil-T代表教师模型,Fossil-RD是采用knowledge distillation的模型,Fossil-S是学生模型,可以看出,rank distillation有一定的效果,甚至超过了教师模型。

四、结论

本文的rank distillation其实类似于迁移学习transfer learning或者半监督学习semi-supervised learning,将此种方式用在推荐系统领域可以有效利用大量的无监督数据。

但本文的实验中选用的数据量在推荐系统领域算是一个小数据集,但这个模型本质上是对运算效率的提升,大数据集肯定会更有说服力。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181108G0UI6K00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券