目录:

[toc]

1. 提出背景

电商场景下,需要同时优化GMV和CTR,但这两个优化目标并不是严格相关的,甚至是冲突的。当CTR/GMV最优时,另一个可能是次优甚至是不好的。

因此,该问题可以看作是寻找帕累托最优的问题来处理。现有的帕累托优化方法有两种,一种是启发式搜索(heuristic search),缺点是不能保证帕累托最优;另一种是标量化方法(scalarization),缺点是需要手动指定权重。

帕累托最优(Pareto Optimum):也称为帕累托效率(Pareto Efficiency)。形象解释的话,在该状态下,“从此以后,非损人不能利己”。

作者在KKT条件下提出PE-LTR(Pareto-Efficient Learning to Rank),有LTR过程优化多个目标。

2. PE-LTR

该算法偏向于理论证明,本节先对算法整体步骤进行描述,然后对其中的关键步骤进行推导。

2.1 算法描述

定义多目标问题的目标函数:

其中,$ L_i(\theta)$ 为单目标的损失函数,$w_i$ 为该目标的权值,满足$\sum_{i=1}^Kw_i=1,w_i \geq c_i$。

用SGD更新参数$\theta$ :

通过 PECsolver算法 更新 k 个 $w_i$,算法如下;

定义帕累托最优条件(Pareto Efficient Condition):

将$w_i=\hat w_i+c_i$代入,得到等价的松弛问题:

通过 求解定理 (后面推导中给出) 和投影,得到非负最小二乘问题:

通过求解最小二乘问题,得到所有 $w_i$ 的值。

聚合得到损失:

2.2 基于KTT的求解定理推导

上文中的公式

可以改写为:

拉格朗日函数:

偏导数为0,得:

可以改写为:

得解:

3. 实验结果

3.1 实验数据

开源了一个数据集:EC-REC,包含展现、点击、购买三种标签,700w条。

3.2 实验结果

对照方法:

LambdaMART:一种LTR方法,实验中只考虑点击来排序,不考虑购买。

LETORIF :最大化 GMV 的LTR方法,采用 price*CTR*CVR 进行排序, CTR 和 CVR 由两个单独模型预测。

MTL-REC :即ESMM,排序模型也是 price*CTR*CVR,底层emb共享。

CXR-RL :使用强化学习技术来优化 CXR(CTR和CVR的组合),从而实现 CTR 和 CVR 之间的平衡。

PO-EA :一种多目标优化方法,用演化算法生成权重,寻找帕累托有效的解。

PO-EA-CTR ,PO-EA-GMV: 由 PO-EA 生成的两个解决方案,分别针对 CTR 和 GMV。

PE-LTR-CTR,PE-LTR-GMV: 由 PE-LTR 生成的两个解决方案,分别针对 CTR 和 GMV。

评价指标:

用NDCG,MAP评估CTR;

用改造的G-NDCG,G-MAP评估GMV;

实验结果:

在低CTR损失下,最优化了GMV,整体效果最佳;

相较于ESMM,PE-LTR用一个模型联合学习点击和购买,而ESMM用两个模型来学习点击和购买,后者可能会导致不一致性;

4. 代码复现

帕累托最优本身等价于对任务赋予合理的权值,不改变模型。单加权取得两位数的指标收益,有些夸张,不确定是否存在计算陷阱问题;所以对原文进行复现。

4.1 求解定理实现

输入:权值w,阈值c,梯度矩阵G

说明:完成论文中附录定理的求解,得到 hat_w

def pareto_step(w, c, G):

"""

ref:http://ofey.me/papers/Pareto.pdf

K : the number of task

M : the dim of NN's params

:param W: # (K,1)

:param C: # (K,1)

:param G: # (K,M)

:return:

"""

GGT = np.matmul(G, np.transpose(G)) # (K, K)

e = np.mat(np.ones(np.shape(w))) # (K, 1)

m_up = np.hstack((GGT, e)) # (K, K+1)

m_down = np.hstack((np.transpose(e), np.mat(np.zeros((1, 1))))) # (1, K+1)

M = np.vstack((m_up, m_down)) # (K+1, K+1)

z = np.vstack((-np.matmul(GGT, c), 1 - np.sum(c))) # (K+1, 1)

hat_w = np.matmul(np.matmul(np.linalg.inv(np.matmul(np.transpose(M), M)), M), z) # (K+1, 1)

hat_w = hat_w[:-1] # (K, 1)

hat_w = np.reshape(np.array(hat_w), (hat_w.shape[0],)) # (K,)

c = np.reshape(np.array(c), (c.shape[0],)) # (K,)

new_w = ASM(hat_w, c)

return new_w

4.2 有效集求解非负最小二乘

输入:求得的解hat_w,阈值c

说明:根据ASM和阈值的约束,求解得到满足条件的 new_w

from scipy.optimize import minimize

from scipy.optimize import nnls

def ASM(hat_w, c):

"""

ref:

http://ofey.me/papers/Pareto.pdf,

https://stackoverflow.com/questions/33385898/how-to-include-constraint-to-scipy-nnls-function-solution-so-that-it-sums-to-1

:param hat_w: # (K,)

:param c: # (K,)

:return:

"""

A = np.array([[0 if i != j else 1 for i in range(len(c))] for j in range(len(c))])

b = hat_w

x0, _ = nnls(A, b)

def _fn(x, A, b):

return np.linalg.norm(A.dot(x) - b)

cons = {'type': 'eq', 'fun': lambda x: np.sum(x) + np.sum(c) - 1}

bounds = [[0., None] for _ in range(len(hat_w))]

min_out = minimize(_fn, x0, args=(A, b), method='SLSQP', bounds=bounds, constraints=cons)

new_w = min_out.x + c

return new_w

4.3 完整代码

通过简单实验,发现帕累托最优容易在迭代过程中收敛到阈值,如果不设置阈值,则容易最后优化一个单独的任务。

ktt算法 约化_推荐系统的多目标优化(4)-PE-LTR相关推荐

  1. ktt算法 约化_矩阵特征与特征向量的计算

    矩阵特征与特征向量的计算 第三章第三章 矩阵特征与特征向量的计算矩阵特征与特征向量的计算3.1 引言引言在科学技术的应用领域中,许多问题都归为求解一个特征系统.如动力学系统和结构 系统中的振动问题,求 ...

  2. ktt算法 约化_深度学习面试题

    1.列举常见的一些范数及其应用场景,如L0,L1,L2,L∞,Frobenius范数 答:p39-p40 ;还有p230-p236有regularization的应用 2.简单介绍一下贝叶斯概率与频率 ...

  3. ktt算法 约化_答:那些深度学习《面试》你可能需要知道的

    本文是问题"那些深度学习<面试>你可能需要知道的"的回答,答案均以英文版Deep Learning页标标记. 1.列举常见的一些范数及其应用场景,如L0,L1,L2,L ...

  4. 【Matlab多目标优化求解】粒子群算法求解智能微电网多目标优化问题【含源码 383期】

    一.代码运行视频(哔哩哔哩) [Matlab多目标优化求解]粒子群算法求解智能微电网多目标优化问题[含源码 383期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 ...

  5. 多目标优化算法_阿里提出多目标优化全新算法框架,同时提升电商GMV和CTR

    论文作者| Xiao Lin,Hongjie Chen 等 编译 | 吴少杰 编辑 | Natalie AI 前线导读: 在推荐系统中,多目标优化一直是热门话题,阿里针对推荐中的多目标优化问题提出了一 ...

  6. ktt算法 约化_svm算法 最通俗易懂讲解

    最近在学习svm算法,借此文章记录自己的学习过程,在学习很多处借鉴了z老师的讲义和李航的统计,若有不足的地方,请海涵:svm算法通俗的理解在二维上,就是找一分割线把两类分开,问题是如下图三条颜色都可以 ...

  7. 【蚁狮算法】基于具有自适应边界与最优引导的莱维飞行蚁狮优化算法(ABLALO)求解单目标优化问题matlab代码

    1 简介 针对蚁狮算法存在探索与开发能力不平衡的缺点,提出了具有自适应边界与最优引导的莱维飞行改进算法.首先蚁狮调整边界范围,蚂蚁做莱维飞行,以此平衡探索与开发能力;其次较差蚁狮做高斯变异,并通过自适 ...

  8. 多目标优化算法_【实验室论文】基于多种群协同演化的约束多目标优化算法

    欢迎关注智能优化与学习实验室 在很多实际问题中,例如科学.工程设计等领域,衡量一个方案的好坏难以用一个指标来判断,需要用多个目标来刻画,且实际问题通常带有约束条件,这类问题被称为约束多目标优化问题,高 ...

  9. 差分进化算法python 指派问题_多目标优化算法

    本书实用性强,摒弃工具书中难懂的理论讲解,通过使用具体数值实例进行浅显易懂的讲解,保证大学低年级学生凭借现有的数学基础知识也可以完全理解书中介绍的网络数学模型和遗传算法的解法.书中丰富的数值实例能够加 ...

最新文章

  1. Py之Xlrd:Xlrd简介、安装、使用方法(读取xlsx文件的shee表头名/总行数/总列数、每一行的内容、指定列的内容)之详细攻略
  2. 华为NIP网络***检测系统
  3. React 解决鼠标移入子元素触发父元素的mouseout事件
  4. keil5用jlink不到芯片_洛达芯片检测
  5. iOS-Senior20-Map定位
  6. 华为成立德国实验室属实 但并非为5G牌照
  7. 随想录(risc cpu的那些事)
  8. maven父子工程 + springboot
  9. 理解乐观锁、悲观锁、共享锁、排他锁、表锁、行锁
  10. 计算机三级网络技术-----DHCP报文分析
  11. 如何用Excel绘图好看的折线图
  12. Eterm协议破解,Java后端二次开发,实现ERP系统提取票号
  13. python判断输入回车_python判断回车
  14. MATLABR2012a如何激活
  15. 5G通信技术书籍分享(持续更新)
  16. 卖二手车及过户的小经验
  17. 欧盟新法将个人隐私放在首位
  18. TensorFlow2.0保存模型
  19. IAR for MSP430 7_12在线调试不能打断点解决方法
  20. 程序员怎样才能达到编程的最高境界

热门文章

  1. Flash读取xml奥秘
  2. rgb565和rgb555的文件头区别_Windows可执行文件格式
  3. python排序函数set_【Python】排列组合itertools 集合set
  4. 多分类神经网络与原子核
  5. 芬兰计算机研究生申请表,芬兰的研究生申请技巧
  6. 【Paper】2020_异构无人机编队防御及评估策略研究_左剑凯
  7. 【控制】《多智能体系统一致性与复杂网络同步控制》郭凌老师-第6章-Lurie 型动态网络的簇同步
  8. 【控制】系统典型环节及其拉氏变换并绘制阶跃响应曲线和脉冲响应曲线
  9. 【Android工具】Cx文件管理器,Cx File Explorer安卓samba客户端
  10. 【arduino】在Arduino上运行FreeRTOS操作系统,freeRTOS入门教程helloword