当前位置:网站首页>【多模态】《TransRec: Learning Transferable Recommendation from Mixture-of-Modality Feedback》 Arxiv‘22
【多模态】《TransRec: Learning Transferable Recommendation from Mixture-of-Modality Feedback》 Arxiv‘22
2022-07-25 11:11:00 【chad_lee】
《TransRec: Learning Transferable Recommendation from Mixture-of-Modality Feedback》 Arxiv’22
NLP和CV领域预训练与大模型已经非常流行,涌现出BERT、GPT-3、ViT等,实现了one4all范式,也就是一个通用大模型服务于几乎所有下游任务。但是推荐系统在该方向发展缓慢,模型的可迁移性范围有限,通常只适用于一个公司内部的业务场景,无法实现广义上的可迁移性和通用性。
文章首先指出了:这主要是因为RS过度依赖用户ID与物品ID信息,基于ID的协同过滤范式使得RS脱离复杂的内容建模,并且DL+GCN又使得CF的性能经历了一段提升期,已经主导了推荐系统领域。但是基于ID的RS的性能已经出现了严重瓶颈,逼近天花板了,而且ID本身的不可共享性导致几乎没有迁移性。
因此提出从ID回到基于内容的推荐,实现大规模混合模态的通用推荐系统。
混合模态场景

通用推荐的实现是基于一个常见的推荐场景,即用户的物品交互行为由**混合模态(MoM: Mixture-of-modality)**的物品组成,用户交互的物品可以是文本(text)形式,视觉(vision)(图像/视频等)形式,或两种模态形式都存在。本文先在MoM的source domain下预训练模型,这样可以迁移到任何domain的下游任务。
数据集是QQ浏览器的新闻推荐场景,7天的记录。
TransRec

Item Encoder
首先item encoder是预训练的BERT和ResNet-18,即上图黄绿色块。
对于文本item i,将word token序列 t = [ t 1 , t 2 , … , t k ] \boldsymbol{t}=\left[t_{1}, t_{2}, \ldots, t_{k}\right] t=[t1,t2,…,tk]输入BERT,然后经过self- attention pooling得到文本item的最终表征:
Z i , t = SelfAtt ( BERT ( t ) ) Z_{i, t}=\operatorname{SelfAtt}(\operatorname{BERT}(\boldsymbol{t})) Zi,t=SelfAtt(BERT(t))
对于图片item i,将ResNet的输出的feature map过一个MLP,得到图片item的最终表征:
Z i , v = MLP ( ResNet ( v ) ) . \boldsymbol{Z}_{\boldsymbol{i}, \boldsymbol{v}}=\operatorname{MLP}(\operatorname{ResNet}(\boldsymbol{v})) \text {. } Zi,v=MLP(ResNet(v)).
User Encoder
用户则由他的物品交互序列来表示,所以User Encoder的输入是用户交互过item的embedding,然后用BERT(记为 B E R T u BERT_u BERTu)获得用户交互序列的表征,作为用户的embedding,从而和item embedding计算相似度,这里的BERT是单向的,采用最后一个item的输出作为序列的表征:
S u = Z u + P u U u = E u ( S u ) = BERT u ( S u ) \begin{aligned} &\boldsymbol{S}^{u}=\boldsymbol{Z}^{u}+\boldsymbol{P}^{u} \\ &\boldsymbol{U}^{u}=E_{u}\left(\boldsymbol{S}^{u}\right)=\operatorname{BERT}_{\mathrm{u}}\left(\boldsymbol{S}^{u}\right) \end{aligned} Su=Zu+PuUu=Eu(Su)=BERTu(Su)
训练方法
两阶段预训练
User Encoder 预训练
以自监督的方式对user encoder进行预训练。具体来说,采用从左到右的生成预训练来预测用户交互序列中的下一个item,即预训练单向BERT使用 softmax 交叉熵损失作为目标函数
y ~ t = Softmax ( RELU ( S ′ t W U + b U ) ) L UEP = − ∑ u ∈ U ∑ t ∈ [ 1 , … , n ] ( y t log ( y ~ t ) ) \begin{aligned} &\tilde{\boldsymbol{y}}_{t}=\operatorname{Softmax}\left(\operatorname{RELU}\left(\boldsymbol{S}^{\prime}{ }_{t} \boldsymbol{W}^{\boldsymbol{U}}+\boldsymbol{b}^{\boldsymbol{U}}\right)\right) \\ &\mathcal{L}_{\text {UEP }}=-\sum_{u \in U} \sum_{t \in[1, \ldots, n]}\left(\boldsymbol{y}_{\boldsymbol{t}} \log \left(\tilde{\boldsymbol{y}}_{\boldsymbol{t}}\right)\right) \end{aligned} y~t=Softmax(RELU(S′tWU+bU))LUEP =−u∈U∑t∈[1,…,n]∑(ytlog(y~t))
这里的 W U , b U W^U, b^U WU,bU 之后是丢弃的,因为是用内积作为相似度匹配的。 S ′ t S^{\prime}{ }_{t} S′t 是序列的表征。
End-to-End双塔训练
同时训练item encoder和user encoder,目的和之前的混合专家类似,为了让文本和图片的特征encoder尽快适应当前domain。利用 Contrastive Predictive Coding (CPC) 方法训练,思想如上图所示,将一条序列分成两段,根据前一段预测后一段所有item,因此和协同过滤的任务场景一样:
L C P C = − ∑ u ∈ U [ ∑ t = n + 1 n + l log ( σ ( r u , t ) ) + ∑ g = 1 j log ( 1 − σ ( r u , g ) ) ] \mathcal{L}_{\mathbf{C P C}}=-\sum_{u \in U}\left[\sum_{t=n+1}^{n+l} \log \left(\sigma\left(\boldsymbol{r}_{\boldsymbol{u}, \boldsymbol{t}}\right)\right)+\sum_{g=1}^{j} \log \left(1-\sigma\left(\boldsymbol{r}_{\boldsymbol{u}, \boldsymbol{g}}\right)\right)\right] LCPC=−u∈U∑[t=n+1∑n+llog(σ(ru,t))+g=1∑jlog(1−σ(ru,g))]
g g g是随机采的负样本。
实验

基于ID的方法在各个domain上效果都不如基于模态内容的方法,预训练也要比直接训练的好。

文章还验证了数据对于模型的上限,越多的预训练数据对于TransRec的性能提升越大,在工业界中有源源不断的数据可以扩充。
边栏推荐
- Database integrity -- six constraints learning
- What is the difference between session and cookie?? Xiaobai came to tell you
- 矩阵的特征值和特征向量
- WIZnet W5500系列培训活动之“MQTT协议讲解和实践(接入OneNET)”
- JVM performance tuning methods
- Job interviews are always a second kill? After reading the seckill system notes secretly stored by JD T8, I have given my knees
- 【高并发】SimpleDateFormat类到底为啥不是线程安全的?(附六种解决方案,建议收藏)
- JS process control
- brpc源码解析(五)—— 基础类resource pool详解
- Experimental reproduction of image classification (reasoning only) based on caffe resnet-50 network
猜你喜欢

Review in the middle of 2022 | understand the latest progress of pre training model

JS process control

'C:\xampp\php\ext\php_zip.dll' - %1 不是有效的 Win32 应用程序 解决

WIZnet W5500系列培训活动之“MQTT协议讲解和实践(接入OneNET)”

toString()与new String()用法区别

Brief description of model deployment

硬件连接服务器 tcp通讯协议 gateway

Similarity matrix, diagonalization condition

Zero-Shot Image Retrieval(零样本跨模态检索)

JS中的函数
随机推荐
微星主板前面板耳机插孔无声音输出问题【已解决】
基于W5500实现的考勤系统
阿里云技术专家秦隆:可靠性保障必备——云上如何进行混沌工程
布局管理==PYQT5
Database integrity -- six constraints learning
Brpc source code analysis (VIII) -- detailed explanation of the basic class eventdispatcher
Teach you how to configure S2E as the working mode of TCP client through MCU
Web APIs (get element event basic operation element)
OneNET平台控制W5500开发板LED灯
如何解决“W5500芯片在TCP_Client模式下,断电重启之后无法立即连接到服务器”的问题
Web APIs(获取元素 事件基础 操作元素)
MySQL historical data supplement new data
brpc源码解析(三)—— 请求其他服务器以及往socket写数据的机制
WIZnet嵌入式以太网技术培训公开课(免费!!!)
Greedy problem 01_ Activity arrangement problem
LeetCode第303场周赛(20220724)
Go 垃圾回收器指南
[imx6ull notes] - a preliminary exploration of the underlying driver of the kernel
Attendance system based on w5500
JS数据类型以及相互转换