热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

AdversarialPersonalizedRankingforRecommendation

目录概主要内容基础对抗扰动对抗训练细节代码HeX.,HeZ.,DuX.andChuaT.Adversarialpersonalizedrankingforrecommendatio

目录




  • 主要内容

    • 基础

    • 对抗扰动

    • 对抗训练

    • 细节



  • 代码


He X., He Z., Du X. and Chua T. Adversarial personalized ranking for recommendation. In International ACM SIGIR Conference on Research and Development in Information Retrieval (SIGIR), 2018



对抗训练在 MF 上的一个应用, 区别是考虑的是对参数 \(\theta\) 的扰动. 所以更多的其实是偏泛化性, 而不是鲁棒性.


主要内容


基础

一般的 Matrix Factorization (MF) 方法可以理解构建


\[P = \{\bm{p}_u\}_{u \in \mathcal{U}}, Q = \{\bm{q}_i\}_{i \in \mathcal{I}},

\]

然后通过


\[\hat{y}_{ui} = \bm{p}_u^T \bm{q}_i

\]

进行偏好预测.

对于上述 \(\Theta = \{P, Q\}\) 的构造有不同的方法可以实现, 作者所考虑的是 BPR (Bayesian Personalized Ranking):


\[\tag{1}

\min_{\Theta}\: L_{BPR}(\mathcal{D}|\Theta) = \sum_{(u, i, j) \in \mathcal{D}} - \ln \sigma(\hat{y}_{ui} - \hat{y}_{uj}) + \lambda \|\Theta\|^2.

\]

其中


\[\mathcal{D} := \{(u, i, j)| i \in \mathcal{I}_u^+, j \in \mathcal{I} \setminus \mathcal{I}_u^+ \},

\]

\(\mathcal{I}_u^+\) 表示那些曾经和用户 \(i\) 发生过交互的物品的集合.

当我们把 \(\sigma(\hat{y}_{ui} - \hat{y}_{uj})\) 看成是概率


\[\mathbb{P}(i \succ j | u),

\]

即用户 \(u\) 在物品 \(i, j\) 前选择 \(i\) 而非 \(j\) 的概率, 那么 (1) 自然成为了一个似然损失.


对抗扰动

和普通的在图像上的对抗扰动不同, 作者考虑在参数 \(\Theta\) 上的扰动, 即


\[\Delta_{adv} := \arg \max_{\|\Delta\|_2 \le \epsilon} L_{BPR}(\mathcal{D}|\Theta + \Delta).

\]

一般来说, 当 \(\epsilon\) 比较小的时候, 模型的结果应该相差不大, 但是实际情况是:

模型在训练集上的确对于扰动不敏感, 但是在测试集, 即没见过的样本上表现相当糟糕. 所以可以认为现有方法所训练出来的模型是非常鲁棒的.


对抗训练

故本文提出以下的对抗训练, 用于增强鲁棒性:


\[L_{APR} (\mathcal{D}|\Theta) = L_{BPR}(\mathcal{D}|\Theta)

+\lambda L_{BPR}(\mathcal{D}|\Theta + \Delta_{adv}) + \lambda_{\Theta} \|\Theta\|_2^2. \\

\]

在实际中, \(\Delta_{adv}\) 是利用 FGSM 估计得到的:


\[\Delta_{adv} = \epsilon \frac{\Gamma}{\|\Gamma\|_2}, \: \Gamma= \frac{\partial L_{adv}}{\partial \Delta}, \\

L_{adv}(\mathcal{D}|\Delta) = \sum_{(u, i, j) \in \mathcal{D}} \ell_{adv} ((u, i, j) | \Delta), \\

\ell_{adv}((u, i, j)|\Delta) := -\lambda \ln (\sigma(\hat{y}_{ui}(\hat{\Theta} + \Delta)- \hat{y}_{uj}(\hat{\Theta} + \Delta) )).

\]

注: 作者训练的时候实际上用的是 mini-batch 的 \(\mathcal{D}'\) 替代 \(\mathcal{D}\).


细节



  1. 模型用标准训练后的模型进行初始化;

  2. embedding size: 64; (但实验发现是越大越好, 作者没有探索 \(>64\)的情况)

  3. optimizer: Adagrad;

  4. batch size: 512;

  5. \(\epsilon=0.5, \lambda = 1\).


代码

[official]



推荐阅读
  • 本文探讨了如何使用Scrapy框架构建高效的数据采集系统,以及如何通过异步处理技术提升数据存储的效率。同时,文章还介绍了针对不同网站采用的不同采集策略。 ... [详细]
  • 本文介绍了使用Python和C语言编写程序来计算一个给定数值的平方根的方法。通过迭代算法,我们能够精确地得到所需的结果。 ... [详细]
  • 本文由chszs撰写,详细介绍了Apache Mina框架的核心开发流程及自定义协议处理方法。文章涵盖从创建IoService实例到协议编解码的具体步骤,适合希望深入了解Mina框架应用的开发者。 ... [详细]
  • C/C++ 应用程序的安装与卸载解决方案
    本文介绍了如何使用Inno Setup来创建C/C++应用程序的安装程序,包括自动检测并安装所需的运行库,确保应用能够顺利安装和卸载。 ... [详细]
  • Android 开发技巧:使用 AsyncTask 实现后台任务与 UI 交互
    本文详细介绍了如何在 Android 应用中利用 AsyncTask 来执行后台任务,并及时将任务进展反馈给用户界面,提高用户体验。 ... [详细]
  • 本文详细介绍了PHP中几个常用的数组回调函数,包括array_filter、array_map、array_walk和array_reduce。通过具体的语法、参数说明及示例,帮助开发者更好地理解和使用这些函数。 ... [详细]
  • egg实现登录鉴权(七):权限管理
    权限管理包含三部分:访问页面的权限,操作功能的权限和获取数据权限。页面权限:登录用户所属角色的可访问页面的权限功能权限:登录用户所属角色的可访问页面的操作权限数据权限:登录用户所属 ... [详细]
  • 本文介绍了如何使用 Python 的 Pyglet 库加载并显示图像。Pyglet 是一个用于开发图形用户界面应用的强大工具,特别适用于游戏和多媒体项目。 ... [详细]
  • 题目描述:Balala Power! 时间限制:4000/2000 MS (Java/Other) 内存限制:131072/131072 K (Java/Other)。题目背景及问题描述详见正文。 ... [详细]
  • Gradle 是 Android Studio 中默认的构建工具,了解其基本配置对于开发效率的提升至关重要。本文将详细介绍如何在 Gradle 中定义和使用共享变量,以确保项目的一致性和可维护性。 ... [详细]
  • 本题提供了一个区间数组 intervals,其中每个区间 intervals[i] 包含两个整数 [starti, endi],并且所有 starti 值各不相同。任务是找到每个区间的右侧区间,即存在一个区间 j 满足 startj >= endi 并且 startj 是尽可能小的。返回一个数组,该数组包含每个区间右侧区间的索引;如果没有合适的右侧区间,则返回 -1。 ... [详细]
  • 本文探讨了Linux环境下线程私有数据(Thread-Specific Data, TSD)的概念及其重要性,介绍了如何通过TSD技术避免多线程间全局变量冲突的问题,并提供了具体的实现方法和示例代码。 ... [详细]
  • Canopy环境安装与使用指南
    《利用Python进行数据分析》一书推荐使用EPDFree版本的环境,然而随着技术的发展,目前更多人倾向于使用Canopy。本文将详细介绍Canopy的安装及使用方法。 ... [详细]
  • 本文提供了一个关于AC自动机(Aho-Corasick Algorithm)的详细解析与实现方法,特别针对P3796题目进行了深入探讨。文章不仅涵盖了AC自动机的基本概念,还重点讲解了如何通过构建失败指针(fail pointer)来提高字符串匹配效率。 ... [详细]
  • 使用Python构建网页版图像编辑器
    本文详细介绍了一款基于Python开发的网页版图像编辑工具,具备多种图像处理功能,如黑白转换、铅笔素描效果等。 ... [详细]
author-avatar
良心無悔1314_878
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有