Large Language Models for Next Point-of-Interest Recommendation

本文是LLM系列文章,针对《Large Language Models for Next Point-of-Interest Recommendation》的翻译。

用于下一个兴趣点推荐的大型语言模型

摘要

下一个兴趣点(POI)推荐任务是在给定用户的历史数据的情况下预测用户的下一次POI访问。基于位置的社交网络数据通常用于下一个POI推荐任务,但也面临挑战。一个经常被忽视的挑战是如何有效地使用基于位置的社交网络数据中存在的丰富上下文信息。以前的方法受到其数值性质的限制,未能解决这一挑战。在本文中,我们提出了一个使用预训练的大型语言模型来应对这一挑战的框架。我们的框架允许我们以原始格式保存异构的基于位置的社交网络数据,从而避免上下文信息的丢失。此外,由于包含了常识性知识,我们的框架能够理解上下文信息的内在含义。在实验中,我们在三个真实世界的基于位置的社交网络数据集上测试了我们的框架。我们的结果表明,所提出的框架在所有三个数据集中都优于最先进的模型。我们的分析证明了所提出的框架在使用上下文信息以及缓解常见的冷启动和短轨迹问题方面的有效性。我们的源代码位于:https://github.com/neolifer/LLM4POI

1 引言

2 相关工作

3 问题定义

### 面向方面的多头混合专家模型在顺序推荐系统中的实现与应用 #### 模型概述 面向方面(Facet-Aware)的多头混合专家(Mixture-of-Experts, MoE)模型旨在通过捕捉不同用户行为模式下的特定偏好来提高个性化推荐的效果。该方法利用多个子网络(即专家),每个专注于处理不同类型的信息片段或特征集,从而能够更细致地区分用户的兴趣点[^1]。 #### 架构设计 此架构由以下几个主要组件构成: - **输入层**: 接收来自序列化交互数据流作为输入; - **嵌入层(Embedding Layer)**: 将离散特征转换成连续空间内的低维表示形式; - **MoE 层 (Mixture of Experts Layers)** : 包含若干并行工作的专家模块以及一个门控机制(Gate Mechanism),用于决定哪些专家应该被激活参与预测过程;值得注意的是,在这里引入了aspect-aware的概念,意味着不同的专家可以针对具体的应用场景学习到更加专业的知识; - **融合层(Aggregation Layer)** :负责汇总各个活跃状态下的专家输出结果,并最终形成整体性的评分估计值; - **损失函数(Loss Function)** 和优化器(Optimizer): 定义目标并通过反向传播调整参数以最小化误差。 ```python import torch.nn as nn from transformers import BertModel class FacetAwareMHMoERecommender(nn.Module): def __init__(self, num_experts=8, hidden_size=768, aspect_embeddings=None): super().__init__() self.bert = BertModel.from_pretrained('bert-base-uncased') self.expert_layers = nn.ModuleList([nn.Linear(hidden_size, hidden_size) for _ in range(num_experts)]) self.gate_layer = nn.Linear(hidden_size, num_experts) self.aspect_embedding = nn.Embedding(len(aspect_embeddings), hidden_size) def forward(self, input_ids, attention_mask, aspects): bert_output = self.bert(input_ids=input_ids, attention_mask=attention_mask)[0][:, 0, :] gate_weights = nn.functional.softmax(self.gate_layer(bert_output), dim=-1) expert_outputs = [expert(bert_output + self.aspect_embedding(aspects)) for expert in self.expert_layers] output = sum(w * o for w, o in zip(gate_weights.unbind(-1), expert_outputs)) return output ``` 上述代码展示了如何构建这样一个基于BERT预训练语言模型初始化编码部分,并结合自定义的MoE结构来进行物品推荐的任务实例。其中`aspects`代表了当前会话所涉及的具体领域或者话题类别信息,这有助于增强系统的理解和响应能力。 #### 使用说明 为了有效部署这个框架,开发者需要准备如下资源: - 用户历史记录及其对应的标签/评价分数; - 文本描述或者其他辅助材料帮助理解上下文环境; - 明确划分好的方面列表,以便于指导各路专家的学习方向。 完成准备工作之后,按照常规机器学习项目流程执行即可——先对全量样本做初步探索分析,接着依据业务需求选取合适的评估指标体系开展实验验证工作直至找到最优配置方案为止。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UnknownBody

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值