论文笔记:Large Language Models for Next Point-of-Interest Recommendation

SIGIR 2024

1 intro

  • 传统的基于数值的POI推荐方法在处理上下文信息时存在两个主要限制
    • 需要将异构的LBSN数据转换为数字,这可能导致上下文信息的固有含义丢失
    • 仅依赖于统计和人为设计来理解上下文信息,缺乏对上下文信息提供的语义概念的理解
  • ------>使用预训练的大语言模型来进行推荐
    • 允许在原始格式下保留异构的LBSN数据,从而避免上下文信息的丢失
    • 能够通过包含常识知识来理解上下文信息的内在含义

2 方法

2.1 轨迹提示

  • 当前轨迹块(current trajectory block)

    • 当前轨迹块中只包含当前用户的一条轨迹,且不含最后一个签到点
  • 历史轨迹块(historical trajectory block)

    • 在当前轨迹块和历史轨迹块中,为每条签到记录生成一个句子

      • 对每条签到记录 𝑞 = (𝑢,𝑝,𝑐,𝑡,𝑔),构造句子为:

        • time,用户 user id 访问了 POI 编号 poi id,该地点属于 poi category name 类别,其类别 ID 为 category id

        • 为节省 token 数量,没有将地理坐标(geo-coordinates)包含在句子中

        • 同时论文发现,未经特别地图数据微调的 LLM 无法很好地理解坐标信息

    • 历史轨迹块则可以包含来自当前用户及其他行为相似用户的多条轨迹,以应对轨迹短和冷启动问题

  • 指令块(instruction block)

    • 指令块用于引导模型关注目标任务,并提醒 POI ID 的取值范围
  • 目标块(target block)

    • 目标块用于微调和评估阶段,包含要预测的签到记录(时间戳、用户 ID、POI ID),但在推理阶段不会作为输入

    • 作者尝试将 POI 类别信息加入指令块和目标块,希望模型更关注 POI ID 与类别之间的关系,但实验显示效果提升不明显,可能模型已隐式学会这种关系。

2.2 键-查询对相似性计算

  • 为了从用户历史轨迹及其他用户轨迹中挖掘行为模式,提出了适用于自然语言轨迹格式的键-查询对相似度计算框架
    • 当前轨迹块中的轨迹被视为Key
    • 所有结束时间早于该 Key 的轨迹被视为Query
  • 计算所有 Key-Query 对的相似度,并从中选出与 Key 相似度较高的 Query,将其用于生成历史轨迹块内容
    • 每个 Key 和 Query prompt 输入到 LLM 编码器中,提取最后一层的表示向量
    • 对每组 Key 和 Query 计算余弦相似度,提取最高的top-k个Query

2.3 监督微调

在训练集中,将提示中的 <question> 部分送入预训练 LLM,而 <answer> 部分作为监督信号进行微调

LoRA+NormalFloat 4-bit量化+FlashAttention

3 实验

相关推荐
冬奇Lab7 小时前
Workflow 系列(03):状态管理——持久化、幂等性与版本绑定
人工智能·工作流引擎
冬奇Lab7 小时前
每日一个开源项目(第146篇):openpilot - 开源自动驾驶辅助系统,曾在 Consumer Reports 评测中超过特斯拉 Autopilot
人工智能·开源·自动驾驶
吴佳浩9 小时前
AI 工程师知识地图:模型格式、框架、部署工具一次讲明白
人工智能·aigc·ai编程
IT_陈寒9 小时前
Java的Date类又坑了我一次,改用时间戳真香
前端·人工智能·后端
码农胖大海9 小时前
AI额度不够用的解决方案
人工智能
后端小肥肠10 小时前
小红书虚拟商品怎么做?我先用 Skill 跑通了壁纸品类
人工智能·aigc·agent
feiyu_gao10 小时前
从零搭建个人 AI 工作台:一个管理者的 3 个月实验
人工智能·aigc·团队管理
程序员cxuan11 小时前
一句话,让你用上 GPT-5.6
人工智能·后端·程序员
机器之心11 小时前
AI圈刚开始谈Loop Engineering,两位95后博士已经盯上了人类闭环数据
人工智能·openai