谷歌开源下一代推荐系统模拟器:RecSim NG
![v2-071e132c7353c2be34deb925be1bf617_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/fc2a0f0dcac83004cef5e37a7284455d.jpeg)
![v2-2be0f0e19459aaea1653c4554fc05171_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/d63e26a13b0eff280581f25d932147c4.png)
推荐系统是连接用户与各种在线内容的主要接口,因此必须克服用户流行度的问题,这样可以保证公平地为他们服务。为此,在2019年我们发布了RecSim,这是一个用于创建模拟环境的可配置平台,希望它可以促进推荐系统中RL算法(解决顺序决策问题的标准ML方法)的研究。然而,随着技术的进步,解决仿真与实际应用之间的差距变得越来越重要,确保模型灵活且易于扩展,实现用户动态的概率推断,并提高计算效率。
![v2-440fb21981a35ab46c2db922381abaad_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/4156d1c5bcb24993511be78e1b34e322.jpeg)
为了解决这些问题,我们最近发布了RecSim NG,用于推荐系统研究和开发的“下一代模拟器”。RecSim NG是对一组用例的响应,这些用例在将仿真应用于真实世界问题时已成为重要的挑战。它解决了仿真与实际应用之间的差距,确保了模型的灵活性和易扩展性,支持用户动态的概率推理,并提高了计算效率。
![v2-c18992be7ef898815115cdde7b9bca7c_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/4757fd84c5a90d2d578697f1b0d1090d.png)
RecSim NG是一个可扩展的、模块化的、可微的模拟器,用Edward2和TensorFlow实现。它为agent行为规范提供了一种功能强大的通用概率编程语言。RecSim NG在两个方面显著扩展了RecSim的建模能力。
- 首先,StoryAPI允许模拟任意数量的参与者(例如,推荐器、内容消费者、内容生产者、广告商)相互作用的场景。这使得整个推荐者生态系统的灵活建模成为可能,而不是通常的孤立用户推荐者交互设置。
- 其次,我们引入了一个行为构建块库,它与Keras层非常相似,实现了建模原语,这些原语可以被组装起来快速构建复杂的模型。遵循面向对象的范例,RecSim NG使用实体模式来封装控制各种agent行为(如用户满意度)的共享参数,并使用模板以抽象代理“individuality”而不复制不变行为的方式简明地定义大量agents。
除了典型地使用模拟器生成蒙特卡罗样本外,RecSim NG还直接支持各种其他形式的概率推理。尽管领域知识和直觉是建模任何推荐问题的关键,但要弥合所谓的“sim2real”差距,所需的仿真逼真度只能通过将模拟器的模型与观测数据进行校准来实现。对于数据驱动的仿真,RecSim-NG使得实现各种模型学习算法变得容易,如期望最大化(EM)、生成对抗训练等。
RecSim NG中还提供了概率推理和latent变量模型学习工具,支持自动微分和跟踪。RecSim NG公开了一小部分Edward2程序转换,这些转换是为特定于仿真的任务定制的。它的对数概率模块可以根据仿真得到的概率图形模型来估计轨迹的概率。这与TensorFlow运行时提供的自动微分一起,可以在模拟本身中实现最大似然估计和模型学习。RecSim NG可以很容易地利用张量流概率提供的马尔可夫链蒙特卡罗(MCMC)机制来进行后验推理和latent变量模型学习。
例如,描述潜在用户属性(例如偏好、意图、满意度)如何转化为观察数据(例如点击、评分、评论)的模拟模型可以“反向运行”,即,由推荐系统生成的真实观测数据可用于识别潜在用户属性的最可能配置,进而可用于评估用户体验的质量。这允许将仿真模型直接集成到完整的数据科学和模型开发工作流中。
评估推荐器生态系统健康,即推荐策略对总体满意度、集体公平性和安全性等方面的长期影响,需要模拟大型多智能体系统,以便合理地再现生态系统不同参与者之间的相互作用。这与概率推理任务的计算负载一起,需要一个高效的仿真运行时。对于计算性能,RecSim NG提供了一个基于TensorFlow的运行时,用于在加速硬件上运行仿真。该模拟利用了TensorFlow的AutoGraph编译器提供的所有优化,包括加速线性代数(XLA),模拟将自动利用主机上所有可用的内核以及专用硬件(如果相应地运行),如张量处理单元(TPUs)。核心RecSim NG体系结构是后端独立的,允许在其他计算框架(如JAX或PyTorch)中开发应用程序。
![v2-c0b472e029c4bb0b523d857a67472f72_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/03a321bdb3f86a426b039257e0e3a347.png)
为了演示RecSim NG的功能,我们在一个风格化的推荐者ecosystem1中提出了一个非常简化的用户和内容提供者之间的多agents交互模型。该模拟捕获了推荐系统的动态,该系统通过向用户推荐一段时间内用户和内容提供商的内容项目列表来调解用户和内容提供商之间的交互。我们采用了一个简化的用户模型,其中每个用户都有一个静态的、可观察的“用户兴趣向量”。该向量确定了用户与推荐商品的亲和力,然后将其用作选择模型的输入,该选择模型确定了用户从推荐列表中选择的商品。用户对任何选定商品的效用只是他们对该商品的亲和力,可能受到高斯噪声的干扰。
推荐系统的目标是在一个固定的时间范围内最大化所有用户的累积用户效用。然而,生态系统效应使这非常具有挑战性,因内容提供商的行为而出现。与用户一样,每个提供者都有一个“兴趣向量”,它提供的内容项围绕这个“兴趣向量”集中,反映了提供者的一般专业知识或倾向。提供商有自己的激励机制来提供内容:他们的效用是由最近用户选择的商品数量来衡量的。此外,效用更高的提供者生成或提供更多的商品,增加了用户(和推荐者)可以选择的“catalog”。
我们在此设置中比较了两种不同的推荐策略。
- 标准的“myopic”策略,对于任何用户,它总是推荐对该用户具有最大预测亲和力的商品。在这样的政策下,提供商的行为有可能引发“富起来”的现象:最初吸引用户的提供商在随后的时期生产更多的商品,这就增加了吸引更多未来参与的可能性。随着时间的推移,可用商品逐渐集中在“主流”内容提供商周围,对整体用户效用产生了负面影响。
- 第二个推荐策略知道这些提供者动态,它通过提升服务不足的提供者来抵消这些动态。虽然是一个简单的启发式策略,但是提供者感知策略在扩展的范围内增加了总体用户效用。
模拟中的代理数量很大,我们使用RecSim NG提供的可重用建模块对用户和内容提供者进行模板化。
![v2-9f8fdabf8c0e01b8a66123ce4f71e2ff_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/b19c726b428a456009fc8a5c44087110.png)
我们希望RecSim-NG能使研究者和实践者更容易为推荐系统开发、训练和评估新的算法,特别是用于优化扩展范围内的系统行为、捕获复杂的多智能体交互和激励的算法,或者两者兼而有之。我们还调查了越来越现实的用户模型的发布,这些模型可以作为研究社区的基准,以及使用RecSim NG促进“sim2real”传输的方法。
谷歌开源下一代推荐系统模拟器-RecSim NG