推荐系统实战(八)-冷启动(上)

news2024/11/15 22:57:07

一、冷启动基本描述

(一)冷启动与新用户新物料

冷启动针对的是对缺少消费记录的新用户、新物料的推荐。

新用户不仅包含初次使用应用的用户,还包含安装很久但是处于低活跃状态的用户。

(二)部分经典算法无法支持新用户新物料

比如Item2Vec中,没有在训练集出现过的物料无法给出embedding。

再比如DIN和SIM,基于用户历史行为序列做attention,在新用户上就无用武之地。

(三)经典简单的策略解决冷启动

针对新用户,根据用户属性推荐或者推荐最热门的物料。

二、Bandit算法

Bandit算法不是单一算法,而是一个庞大的算法家族。

思路简单描述就是通过一系列实验,将新用户的兴趣和优质的新物料挖掘出来。

(一)多臂老虎机问题

Bandit算法得名于多臂老虎机Multi-Armed Bandit(MAB)。

1、Bandit之于新用户

对于新用户来说,不同的兴趣分类相当于MAB的手杆,而用户的反馈、点击就相当于MAB吐出来的金币。希望通过有限次的拉动手杆(与兴趣交互),得到足够多的正反馈,摸清用户兴趣。

2、Bandit之于新物料

对于新物料而言,候选物料集中的每个物料相当于MAB的手杆,用户的反馈、点击就相当于MAB吐出来的金币。通过有限次的物料交互,挖掘出能够得到最多正反馈的物料,确定为优质物料。

3、Bandit最简单最朴素的做法

Bandit最简单、最朴素的做法就是将N次“拉动”的机会划分成探索(explore)和开发(exploit)两类。

①探索

探索就是给予每个手柄n次拉动机会,统计每个手柄n次拉动的平均收益。

②开发

开发就是找出每个手柄n次拉动的平均收益最大的那个手柄,剩下的机会全部用来拉动该手柄。

而这样做的缺点也很明显。当探索次数过少时,统计出来的平均收益误差较大;当探索次数过多时,留给开发的“拉动”机会就少了。

(二)Eplison Greedy

1、Eplison Greedy思想

Eplison Greedy不再是划分前后两个阶段,而是将探索和开发按照一定概率交替进行

探索的概率是\epsilon,那么开发的概率就是1-\epsilon。随机生成一个数和\epsilon进行比较,比\epsilon大就进行开发,比\epsilon小就进行探索。

衰减\epsilon的实验中,\epsilon的大小会在实验后期逐渐变小,保证前面探索,后期注重于学习到的知识。

固定\epsilon的实验中,\epsilon的大小会在实验过程中不变,保持探索和开发的平衡。

2、Decay Eplison Greedy

Decay Eplison Greedy就是1中描述的衰减Epsilon。

  • 前期\epsilon较大,有助于探索各拉杆的平均收益。
  • 后期\epsilon较小,这时候各拉杆的平均收益已经比较稳定了,找到的最大平均收益的置信度更高,鼓励算法充分利用探索出来的最大平均收益的拉杆赚取收益。

(三)UCB

1、UCB思想核心

考虑到以平均收益为指标并不全面,因此推出了Upper Confidence Bound(UCB,最大置信区间上界)算法。

UCB思想核心是,为每个选择计算出上置信区间的宽度,最后再选择置信区间上界最大的选项。这一方法将探索和利用结合起来,使得既有可能性选择了当前看似最优的选项,又不忽视对其他选项的探索。

第i根手柄的收益上限如下所示:

第一项是第i个手柄的平均收益,第二项是上置信区间的宽度。

t是总尝试次数,n_i是第i个拉杆的尝试次数。第二项能体现出来收益潜力,n_i越小,不确定性越高,越值的探索。

c是平衡收益均值和收益潜力之间的权重,后期逐渐减小(探索减少)。

从上述公式能看出来一个拉杆的收益上限高只有两种可能:平均收益高(此时选择上限高的拉杆,是在开发)或收益潜力高(此时选择上限高的拉杆,是在探索)。

2、UCB伪代码流程描述

①初始化每个选项的尝试次数(次数为1)还有总收益(只进行1次的总收益)。

②设置N次尝试,每轮尝试遍历所有选项,找到收益上界最高的选项进行一次交互反馈。

③更新上一步找出的选项的尝试次数(+1)和总收益(加上新的交互反馈得到的收益)。

UCB算法示意

(四)概率匹配

概率匹配probability matching也将开发和探索合二为一。

1、主要思想

某个手柄被选择的概率与该手柄当前的平均收益成正比。

2、公式

\tau是调节探索和开发的温度系数。当\tau比较小的时候,公式的结果越集中于平均收益最大的手柄,倾向于开发;当\tau比较大的时候,公式的结果越倾向于平均分布,倾向于探索。

(五)Bayesian Bandit

选择Beta分布来描述每个选项的平均收益的Bayesian Bandit算法被叫做thompson sampling(汤普森采样)。

1、Bayesian Bandit主要思想

假定每个选项的平均收益遵守先验概率p(\overline R(i)),若干次实验以后,每个选项收到反馈组成了反馈序列D_i;则第i个选项的平均收益的后验概率p(\overline R(i)|D_i) \propto p(D_i|\overline R(i))p(\overline R(i))。从每个选项的后验概率中抽样,选择数值最大的那个选项去拉动。

2、Bayesian Bandit流程描述

  • 首先初始化每个选项的平均收益遵守先验概率分布为Beta(1,1)(是平均分布)。

  • 开始若干次尝试,每次尝试都从每个选项的Beta分布中采样一个随机数,选择数值最大的那个选项中的物料进行交互,将交互反馈结果记录,修改相应选项的Beta分布。

3、Bayesian Bandit具体例子

  • 假定平均收益为平均点击率,初始化每个兴趣分类(拉杆)的先验概率分布为Beta(1,1)。Beta(α,β)中α表示点击次数,β表示未点击次数。初始化为Beta(1,1)是均匀分布,此时从该分布中采样一个随机数的概率是相等的,可能是0.1,可能是0.9,都有可能。
  • 开始若干次尝试。每次尝试都从每个兴趣分类的分布中采样一个随机数,比如从兴趣A中随机采样的数值大小为0.4(代表可能的点击率),从兴趣B中随机采样的数为0.5。于是选择数值大的兴趣B拉动,按照人工筛选或者大数据统计等方式,筛选出兴趣B中的优质物料推荐给用户交互,记录下用户的反馈。
  • 利用用户的反馈更新相应兴趣选项的Beta分布,比如用户点击了上一步推荐的物料,那么此时兴趣B类的点击次数更新为2,概率分布更新为Beta(2,1)。此时随机采样B的beta分布,获取的数值大小偏大(代表更可能点击)。
Thompson Sampling示意

(六)上下文Bandit 

1、上下文无关Bandit与上下文Bandit

  • 上下文无关Bandit:是指在做出选择时,不考虑任何额外的上下文信息(如用户特征、时间或位置等),仅根据手柄(或选项)本身的历史表现来进行决策。换句话说,每个手柄的收益分布只与该手柄相关,而与其他外部因素无关。
  • 上下文Bandit(Contexual Bandit):认为每个手柄的平均收益分布并非是固定不变的,会根据上下文的不同而改变。

2、LinUCB

LinUCB是一种上下文Bandit算法,被Yahoo用来推荐新闻。每个新闻被当做一个手柄,而手柄的平均收益分布会根据用户的不同而变化。

①公式

r_t,a是第t次推荐新闻a时的收益(比如点击与否,阅读时长等)。

x_t,a是第t次推荐新闻a时的上下文,包括用户特征、物料特征、环境特征等。

θ_a是新闻a独有的权重,是根据其交互历史单独训练出来的。

②求解最优权重θ_a

在获取新闻a若干次的上下文特征和真实反馈后,利用真实反馈与期望收益做一次岭回归,求导后可解得最优权重θ_a。

为了平衡探索和开发,引入α,第二项是上置信区间长度。最后找到收益置信区间上界最大的新闻进行推荐。

三、元学习Meta Learning

(一)元学习简介

喂入元学习的基本数据不再是一条条样本,而是一个个Task。每个Task包含一个训练集(support set)和一个测试集(query set)。

每个任务训练好模型后,测试得到该任务的loss(这被称为任务内学习)。所有任务的loss之和是总损失,这用到了一个batch内的所有数据,被称为跨任务学习。

Meta Learning示意

(二)MAML

1、MAML的两个特点

  • 模板配置仅限于初值,MAML 不关心具体任务的模型配置,而是专注于找到一个通用的参数初值 θ,从这个初值出发,模型可以快速适应不同的新任务。
  • 损失函数要求对模板配置的参数初值可导,从而能够通过梯度下降求解出最佳θ,使得模型在这个初始点上能够通过少量的梯度更新迅速适应新任务。换句话说,MAML 不直接学习解决某个特定任务的参数,而是学习如何为多个任务提供一个好的起点。

2、MAML解决小样本训练问题的两个思路

  • 通过若干组任务学习出一套高质量的参数初值θ。
  • 当面对一个新任务,由这段高质量的参数初值出发,经过少量样本的迭代,得到适合新任务的最优参数。

3、MAML两阶段优化

  • 任务级优化:通过几次迭代优化,从初始参数θ开始,得到每个任务的最优参数。
  • 元任务优化:元任务优化的目标就是从初始参数θ开始迭代优化,使它在每个任务上表现都良好。元任务损失是各任务损失之和。

4、MAML具体例子

如下图所示,第一个批次是任务A。此时先完成任务级优化,任务A从初始参数\phi_0开始,梯度下降得到当前任务A的最优参数\theta^*_A

接下来进入第二个阶段,完成元任务优化,元任务从初始参数\phi_0开始,进行元梯度下降,更新初始参数的新值\phi_1。第二个批次任务是任务B,过程以此类推。

MAML训练迭代过程示意

5、MAML与冷启动问题

MAML面对新用户时,将新用户当做一个task;面对新物料时,将新物料当做一个task。元学习利用老用户和老物料训练出来一套最优参数初值,此时应用于新用户新物料可以快速收敛到最佳状态。

(三)MAML针对推荐场景的改造

1、应用范围改造

  • 直接复用的参数:DNN权重和常规特征(比如性别等)的embedding,可以直接复用老用户/老物料的。
  • 需要学习的最优初值:只有每个新用户的userID和新物料的ItemID,是需要学习出一套最优初值的。

2、优化目标改造

MAML在推荐场景下的唯一任务就是学习出ID embedding的参数初值\phi

以新用户举例的两阶段:

①cold-start:新用户第一次对系统发出服务请求,此时系统中没有该用户的ID embedding,因此相应的参数初值\phi就代替该用户的ID embedding喂给模型。

②warm-up:在第一次交互反馈的基础上,以参数初值为起点,经过一次梯度下降得到了新用户ID embedding的新值。

如下图所示,虽然经过一次梯度下降,在任务1和任务2上优化得到的参数和损失比较满意,但是对于参数初值而言并未达到最佳初值状态。

因此要做的第二个改进就是要同时兼顾模型在\phi\theta^*处的性能。

 MAML损失函数曲线

3、生成方式改造

对于新用户、新物料的ID embedding,传统的MAML倾向于生成一个全局向量作为参数初值。

但是在实际场景中,新用户可以通过一些问卷调查的方式获取其兴趣爱好、性格等信息,新物料也可以通过内容分析获得一些标签信息,并非一张白板。

因此,可以通过设置一个用户/物料基本信息的函数,来对用户和物料的ID embedding进行初始化。

(四)Meta-Embedding

以新物料的Meta-Embedding举例。

主要分为两个阶段:预训练阶段和元学习阶段。

在预训练阶段,利用老物料信息训练出一个CTR模型F。e_i是ItemID embedding,a_i是常规特征embedding,u是用户。

需要优化F的参数包括以下两个方面:

  • ID embedding,需要一个获得一个最佳参数初值。
  • 常规特征的embedding和DNN权重。

进入元学习阶段,利用老物料模拟冷启动阶段寻找最佳初值。

1、应用范围改造

对预训练得到的模型参数θ保留,但是预训练阶段的ItemID Embedding e_i要丢弃。在元学习阶段,要通过参数初值\phi的函数得到ItemID Embedding,G_i表明不同类型的物料有不同类型的映射方式。

2、优化目标改造

冷启动分为cold-start和warm-up两个阶段。

(1)随机取样

在物料i的训练集中,随机采样两个大小为K的样本集。

(2)cold-start

cold-start阶段由于没有物料i的item ID embedding信息,因此采用参数初值和相应的映射函数得到物料的embedding,再计算相应的BCE loss。优化的是模型在参数初值\phi的表现,也就是优化物料在系统中的第一次体验。

(3)warm-up阶段

warm-up阶段是在第一次的基础上,经过梯度下降得到新的embedding,再计算二元交叉熵损失。

元学习的总损失是上述两阶段的损失加权和。

3、生成方式改造

对于新物料而言,一些常规特征是可以加以利用来获得ID embedding最优初值的。

通过一个映射函数实现:

要优化的参数就变成了w。

实现流程如下:

  • 将物料i的常规特征a_i中各个feature field先embedding,再pooling成一个向量。
  • 将各个field的embedding拼接成一个大向量。
  • 将拼接成的向量喂入上面的浅层网络进行简单的线性映射(权重是w),就得到了ID embedding的个性化初值。

其中比较特别的是,各个feature field的embedding矩阵直接复用预训练模型中的,无需再次训练。

个性化初值生成函数

4、部署

Meta-Embedding训练完成后,单独部署成一个服务,用于在线预测和训练。

  • 预测:新物料没有ID embedding信息,个性化的最优初值可以充当cold-start阶段的embedding,给用户较好的新使用体验。
  • 训练:第一次,个性化的最优初值可以充当cold-start阶段的embedding;第二次,根据一次梯度下降可以得到新的ID embedding,优化新物料第二次被服务的体验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2086195.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024年【安全员-C证】新版试题及安全员-C证复审模拟考试

题库来源:安全生产模拟考试一点通公众号小程序 2024年【安全员-C证】新版试题及安全员-C证复审模拟考试,包含安全员-C证新版试题答案和解析及安全员-C证复审模拟考试练习。安全生产模拟考试一点通结合国家安全员-C证考试最新大纲及安全员-C证考试真题汇…

二叉搜索树进阶之红黑树

前言: 在上文我们已经学习了AVL树的相关知识以及涉及的四种旋转的内容,但是AVL树追求平衡导致旋转操作过多,一些情况下影响性能,由此我们就来了解一下二叉搜索树的另外一个分支,红黑树。 (倘若对旋转知识…

詹娜奥尔特加看到自己青少年时期露骨AI照片后删除了推特:“这太恶心了”

詹娜奥尔特加看到自己青少年时期露骨AI照片后删除了推特:“这太恶心了” 2024-08-25 23:07 发布于:河北省 21 岁的奥尔特加承认她仍在学习如何保护自己,一种有帮助的方法是“尽可能避免使用手机”。 这位女演员表示,看到“剪…

算法: 双指针

题目:环形链表 题目讲解: 判断环 要判断链表是否有环,可以使用快慢指针的方法。快指针每次走两步,慢指针每次走一步。如果链表有环,快慢指针最终会相遇;如果没有环,快指针会先到达链表末尾。 …

该部署公钥无权限拉代码

从阿里云云效的代码库中执行git pull时报错如下: git pull该部署公钥无权限拉代码 fatal: Could not read from remote repository.Please make sure you have the correct access rights and the repository exists.原因是该代码库在云效上未启用密钥,…

【Material-UI】Select 组件中的 `Auto width`、`Small Size` 和 `Other Props` 详解

文章目录 一、Select 组件概述1. 组件介绍2. Select 组件的基本结构 二、Auto width 属性详解1. Auto width 的作用2. Auto width 属性的基本用法3. Auto width 的实际应用场景 三、Small Size 属性详解1. Small Size 的作用2. Small Size 属性的基本用法3. Small Size 的实际应…

三分钟总结开源流程表单的优势特点

实现流程化办公,可以借助低代码技术平台、开源流程表单的优势特点。作为当前较为理想的平台产品,低代码技术平台凭借够灵活、好操作、可视化界面的优势特点,得到了通信业、医疗、高校等很多行业客户朋友的喜爱与支持。今天一起来看看开源流程…

vue2.0纯前端预览附件方法汇总

vue2.0纯前端预览附件方法汇总 一、使用iframe预览1.使用 Office 在线查看器2.XDOC文档预览服务XDOC官网地址:[https://view.xdocin.com/](https://view.xdocin.com/) 二、vue-office具体效果可以参考: [https://501351981.github.io/vue-office/examples/dist/#/docx](https:/…

linux下使用xargs批量操作

1、创建测试文件: for i in {1..4}; do touch $i.gz; done;2、将所有gz文件重命名为.gz.log2文件 ls | xargs -I {} sh -c mv {} {}.log2 3、将所有.log2文件改回为.gz文件 ls | xargs -I {} sh -c mv {} $(echo {} | sed "s/\.log2//g" ) 4、将所有的…

优先级队列面试题详解

题目链接: . - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/smallest-k-lcci/description/ 解题思路&#x…

新华三H3C HCL配置IS-IS基本配置

实验目标 完成本实验,应该能够达到以下目标。 ●掌握如何在路由器进行单区域IS-IS的基本配置 ●掌握如何在路由器上查看IS-IS路由表、邻居信息 ●掌握如何在路由器上查看IS-IS的LSDB信息 实验拓扑 IP地址表 实验任务 单区域配置: 在本实验任务中,需要在路由器上…

STM32标准库HAL库——MPU6050原理(卡尔曼滤波和DMP库处理数据)和代码

目录 陀螺仪相关基础知识: 陀螺仪数据处理的三种方式: 加速度计,陀螺仪的工作原理: 陀螺仪在智能车中的应用: MPU6050原理图和封装图: ​编辑 硬件IIC和软件IIC的区别: 相同点 不同点 …

MagiskBoot编译解包打包boot.img

版权归作者所有,如有转发,请注明文章出处:https://cyrus-studio.github.io/blog/ 编译环境准备 1. Windows下启用开发者模式,因为需要 symbolic link 支持 2. 安装 python3.8,并配置PATH环境变量 # 查看python版本信…

kali——sqlmap的使用

目录 前言 sqlmap在kali中的使用 检测注入点 产看所有数据库 查看当前网站使用的数据库 产看数据表 查看字段 查看字段数据 查看数据库用户 查看所有用户 获取数据库用户密码 查看用户权限 判断当前数据库用户是否是管理员 批量自动化扫描 post请求注入 cookie…

html+css+js网页设计 婚庆类型 金夫人婚庆5个页面

htmlcssjs网页设计 婚庆类型 金夫人婚庆5个页面 网页作品代码简单,可使用任意HTML编辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作)。 获取源码 …

时序预测 | 基于WTC+transformer时间序列组合预测模型(pytorch)

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 WTCtransformer时间序列组合预测模型 WTC,transformer 创新点,超级新。先发先得,高精度代码。 预测主模型transformer也可以改其他WTC-former系列,比如WTC-informer/autoformer等等…

STM32ADC(逐次逼近型)

1 ADC Analogto DigitalConverter 1 模拟信号转换器数字信号 2 幅度上是离散的(也就是把自然界的信息转换成单片机里面的信息) 2 12位逐次逼近型ADC 1 采样深度是指:用多少位二进制数来表示一个采样点 ADC的采样深度越深 转…

Prometheus之Blackbox监控

Prometheus之Blackbox监控 部署Blackbox 下载地址 https://github.com/prometheus/blackbox_exporter这里使用amd64架构的软件包,根据自己设备架构选择 右键复制链接地址 下载软件包 wget https://github.com/prometheus/blackbox_exporter/releases/download/v0…

海绵城市雨水监测系统

海绵城市雨水监测系统主要有:数据采集、无线数据传输、后台云服务、终端平台显示等部分组成。系统通过前端数据采集水质(ss\cod\浊度、PH等)、雨水雨量、流量、水位、土壤湿度、气象等数据。通过无线数据传输通讯(4G、5G、以太网、…

电力电容器一般用多久更换

电力电容器的更换周期取决于多个因素,包括其工作环境、使用条件、维护情况等。一般情况下,电力电容器的更换周期可以参考以下几个方面: 一、标准使用寿命 1、普通电力电容器: 使用寿命:通常为 8 到 15 年。这个范围可…