MetaSplit Meta-Split Network for Limited-Stock Product Recommendation
从腾讯的PLE之后,很少看到有亮眼的在模型结构上做创新的推荐算法了,大多数的paper还是聚焦于某个独特的业务场景。不过这也合理,推荐算法不像CV,和业务的强绑定导致在业界很难做出本质上的创新。最近看到的一篇闲鱼出品的孤品建模就是一种强业务属性的paper。
首先定义一下孤品和新品的区别,孤品和新品都属于长尾商品,但有几点不同:
新品会随着时间而活动足量曝光和交互,孤品由于库存少,质量越好卖得越快下架也越快,导致积累不了太多的用户交互数据
占比,在闲鱼app上,新品较少,孤品占比一半多。
难点收敛性:浅库存商品的存在使得物品和消费者之间的互动变得更加稀疏,导致其Embedding在模型训练过程中收敛速度较慢甚至无法收敛。然而对于ID-based的推荐模型而言,一张训练良好的ID Embedding表可以大大提高模型的推荐能力。因此,浅库存商品的存在对推荐系统中排序模型的训练带来了巨大挑战。
公平性:浅库存、深库存商品在用户历史行为序列中的共存使得用户兴趣建模过程变得复杂,尤其是在序列建模常用的注意力机制过程当中。如表1所示,浅库存的稀疏交互特点,往往会导致其在计算注意力权重的时候被 ...
When Search Meets Recommendation
现代在线服务提供商(如在线购物平台)通常提供搜索和推荐(S&R)服务,以满足不同的用户需求。很少有有效的方法可以有效的利用S&R服务中的用户行为数据。大多数现有方法要么只是单独处理S&R行为,要么通过聚合来自两种服务的数据来联合优化它们,忽略了S&R中用户意图是有着明显的不同这个前提条件。在这篇论文中,我们提出了一种Search-Enhanced的架构,将用户的搜索意图用于序列推荐。具体来说,SESRec利用用户的搜索query以及item的交互来计算其embedding的相似度,这里使用了两个独立的transformer编码器去学习上下文的表达。然后设计了一个对比学习任务作为学习到的相似和不相似的表达的监督。最后,我们通过三个角度(即上下文表示、包含相似和不相似兴趣点的两个分离行为)使用注意力机制提取用户兴趣。
Learning Disentangled Search Representation for Recommendation
背景目前,随着互联网数据的大量增加,仅使用推荐系统或搜索引擎不能满足用户的信息需求。因此,许多社交媒体平台(如YouTube和TikTok)为用户提供 ...
他山之石————推荐系统中的跨域建模
推荐系统是在线服务的重要组成部分,特别是对于电子商务平台而言。在推荐系统中,转化率(CVR)预测对于优化电子商务的总交易额目标至关重要。然而,CVR存在众所周知的样本选择偏差(SSB)和数据稀疏性(DS)问题。虽然现有的方法ESMM和ESM2通过建模用户行为路径来训练所有展示样本,但是此方法也只是通过构建在某个特点场景下的行为路径来解决DS问题,而在实际的推荐系统中,面临的往往是有着不同性质的场景之间的样本稀疏问题。
这段时间梳理了几篇针对解决跨域建模等一系列问题的几篇论文,在这里整理一下。
全域学习《Entire Space Learning Framework: Unbias Conversion Rate Prediction in Full Stages of Recommender System》
方法为了解决推荐链路中的样本选择偏差问题和数据稀疏问题,我们提出了基于全域学习的信息流推荐全链路无偏学习解决方案,重新构建了概率空问,充分利用了推荐系统的漏斗结构,直接建模了漏斗结构中上一阶段汳回结果到正样本的概率,使得训练与预测在推荐系統中一致,从而消除样本选择偏差;同时模型引入 ...
Optimizing Feature Set for Click-Through Rate Prediction
背景点击率预测在真实世界的商业推荐系统和在线广告系统中一直是一项至关重要的任务。它的目的是预测某个用户点击推荐项物品(如电影、广告)的概率。CTR预测的标准输入主要由一组组织为特征字段的分类特征组成。例如,在CTR预测中,每个样本包含一个特征字段性别,字段性别可能包括男性、女性和未知三个特征值。原文链接
点击率预测(CTR)模型将特征转换为潜在向量,并枚举可能的特征交互作用以改进性能,基于输入特征集。因此,在选择最佳特征集时,我们应考虑特征和它们之间交互的影响。但是,大多数先前的工作都集中在特征字段选择或仅根据固定特征集选择特征交互方面进行研究。前者将搜索空间限制在特征字段上,这太粗略了,无法确定微妙的特征。他们也没有过滤无用的特征交互,导致计算成本更高,模型性能降低。后者从所有可用特征中识别有用的特征交互,导致特征集中存在许多冗余特征。在这篇论文中,我们提出了一种名为OptFS的新方法来解决这些问题。为了统一特征和它们之间的选择,我们将每个特征交互的选择分解为两个相关特征的选择。这种分解使得模型可通过各种特征交互操作进行端到端训练。通过采用特征级别的搜索空间,我们设置一个可学习门,以 ...
强化学习笔记5————AC与PPO
关于AC,很多书籍和教程都说AC是DQN和PG的结合,虽然正确但从这个角度去看不便于理解,安装我们之前的思路,PG利用带权重的梯度下降方法更新策略,而获得权重的方法是蒙地卡罗计算G值。蒙地卡罗需要完成整个游戏过程,直到最终状态,才能通过回溯计算G值。这使得PG方法的效率被限制。那我们可不可以更快呢?相信大家已经想到了,那就是改为TD。
Actor-Critic什么是AC但改为TD还有一个问题需要解决,就是:在PG,我们需要计算G值;那么在TD中,我们应该怎样估算每一步的Q值呢?
熟悉的问题:其实这个问题我们在学DQN的时候也遇到过。 熟悉的套路:我们用上万能的神经网络解决。
也就是说,Actor-Critic,其实是用了两个网络:
两个网络有一个共同点,输入状态S: 一个输出策略,负责选择动作,我们把这个网络成为Actor; 一个负责计算每个动作的分数,我们把这个网络成为Critic。
TD-error注意:这是AC的重点。很多同学在这里会和DQN搞乱,也就是容易产生误解的地方。在DQN预估的是Q值,在AC中的Critic,估算的是V值。你可能会说,为什么不是Q值呢?说好是给动作评价呢 ...
强化学习笔记4————DQN与策略梯度(PG)
之前了解了Qlearning的基本思路,在Qlearning中,我们有一个Qtable,记录着在每一个状态下,各个动作的Q值。Qtable的作用是当我们输入状态S,我们通过查表返回能够获得最大Q值的动作A。也就是我们需要找一个S-A的对应关系。这种方式很适合格子游戏。因为格子游戏中的每一个格子就是一个状态,但在现实生活中,很多状态并不是离散而是连续的。而且当例如在GYM中经典的CartPole游戏,杆子的角度是连续而不是离散的。在Atari游戏中,状态也是连续的。遇到这些情况,Qtable就没有办法解决。我们刚才说了Qtable的作用就是找一个S-A的对应关系。所以我们就可以用一个函数F表示,我们有F(S) = A。这样我们就可以不用查表了,而且还有个好处,函数允许连续状态的表示。这时候,我们深度神经网络就可以派上用场了。因为我们之前说过,神经网络就可以看成一个万能的函数。这个万能函数接受输入一个状态S,它能告诉我,每个动作的Q值是怎样的。
Deep Qlearning模型结构
假设我们需要更新当前状态St下的某动作A的Q值:Q(S,A),我们可以这样做: 1. 执行A,往前一步,到达 ...
Segment Anything
随着最近大模型在NLP领域的大展神威,CV届对比起来略显沉闷了一点,不少人好奇,CV相关的大模型也不少(VIT,CLIP),那为什么没有出现类似大模型在NLP领域展示出来的“涌现”能力呢? 知乎上有一个问题感觉很好:为何 CV 里没有出现类似 NLP 大模型的涌现现象?,这里我认为有一个答案说得不错:
CV处理的是自然世界信息,信息往往离散、semantic密度低;而NLP处理的是文本,它抽象程度极高,semantic密度极高。文本既能承载真实存在的信息(“Earth is a planet in the solar system”),也能表述逻辑、情感(“I like this dog because it’s cute“),还能非常方便地和人类进行交互,在某种程度上和人类以很简单的方式互相”理解“。
虽然能够一统CV的大模型没有出现,但是在细分领域,似乎已经有模型做到了类似的事情。
今天介绍的这一篇face book的论文Segment Anything是一个用于图像分割的新任务、模型和数据集。在他刚出来的那一天,知乎等平台就已经高呼CV已死。为了这个项目,作者创建了迄今为止最 ...
强化学习笔记3————Qlearning和SARSA
前面我们学习了如何使用蒙地卡罗(MC)和时序差分(TD)方法来更新一个节点的V值,注意这里的节点指的是状态节点$S_t$,但是在实际的情况中,我们更希望的是知道在该状态下,进行不同的动作$Q$获得的Q值,这样只要知道某个状态下所有动作值的奖励值,也就是知道了具有最高奖励值的是哪个动作,然后直接采取这个动作就行。
TD之于Q值估算
我们现在用上TD的思路。我们在 $St$,智能体根据策略pi,选择动作$A_t$,进入$S{(t+1)}$状态,并获得奖励R。 如果你之前对V和Q的理解足够深,那么不难理解上面这张图。$V(St+1)$的意义是,在 $S_{(t+1)}$ 到最终状态获得的奖励期望值。 $Q(S_t,A_t)$ 的意义是,在$Q(S_t,A_t)$到最终状态获得的奖励期望值。 所以我们可以把$V(S_t+1)$看成是下山途中的一个路牌,这个路牌告诉我们下山到底还有多远,然后加上R这一段路,就知道 $Q(S_t,A_t)$ 离山脚有多长的路。
但在实际操作的时候,会有一个问题。 在这里我们要估算两个东西,一个是V值,一个是Q值。
人们想出的办法就是,用下一个动作的Q值,代替V值。 ...
强化学习笔记2————蒙地卡罗与时序差分
上一节中我们介绍了马尔科夫链和在强化学习中Q值和V值的定义,那么在实际训练的时候,我们怎么去计算一个节点的Q值或者V值呢,这就要提到著名的蒙地卡罗算法(mc)和时序差分算法(td)
蒙地卡罗原理蒙地卡罗的算法原理并不难理解,下面这张图可以很好的概括。
具体来说,蒙地卡罗的算法流程分为以下几个步骤:
我们把智能体放到环境的任意状态;
从这个状态开始按照策略进行选择动作,并进入新的状态。
重复步骤2,直到最终状态;
我们从最终状态开始向前回溯:计算每个状态的G值。
重复1-4多次,然后平均每个状态的G值,这就是我们需要求的V值。
首先我们要理解每一次我们算的G值的意义。G值的意义在于,在这一次游戏中,某个状态到最终状态的奖励总和(理解时可以忽略折扣值)
第一步,我们根据策略往前走,一直走到最后,期间我们什么都不用算,还需要记录每一个状态转移,我们获得多少奖励r即可。
第二步,我们从终点往前走,一遍走一遍计算G值。G值等于上一个状态的G值(记作G’),乘以一定的折扣(gamma),再加上r。
当我们进行多次试验后,我们有可能会经过某个状态多次,通过回溯,也会有多个G值。 重复我们刚 ...
强化学习笔记1————马尔科夫链与Q值和V值
最近工作上的事情比较少,有时间来学一下自己一直比较感兴趣的强化学习,之前多次有想法去系统的学习一下,但都因为其他事情中断了,这次打算趁着这段时间比较空闲,把强化学习入个门,为了督促自己学下去,开个坑记录一下,争取用1-2周完成这个系列。
网上的教程大多数原自David Silver大神的课程(B站链接),各种翻译水平层次不齐,看到不好的教程直接把人劝退。在广泛的搜罗后发现知乎有一位大神的讲解很好,本系列也是结合视频以及他的文章所做的学习笔记。原文链接
马尔科夫链谈起强化学习就一定离不开马尔科夫链,就像谈起神经网络就离不开神经元一样。作为在大学《随机课程》里面就接触到过的概念,这里理解起来还是比较容易的的,这里的简要的回顾一下。
70年代的时候,数学家们为了更好的研究强化学习问题,提出了重要的假设——马尔科夫性(Markov property),它讲的是系统的下一个状态$S_{t+1}$仅与当前状态$S_t$有关,而与之前的所有状态无关,即:
P[s_{t+1}|s_t]=P[S_{t+1}|s_1,s_2,...s_t]这个公式强大的地方在于我们可以把历史全部甩去,只对当前状态负责任 ...