Zero-Shot Recommendations with Pre-Trained Large Language Models for Multimodal Nudging
论文与代码详细解读
论文和代码分析报告
一、论文核心创新点与代码实现
1. 核心创新点:
- 背景及问题:
当前多模态推荐系统在匹配不同类型的内容(如文本、图像等)时面临特征分布差异大、语义理解复杂等挑战。而通过零样本学习解决跨模态匹配问题,可避免大量标注数据的需求,具有广泛应用潜力。 - 核心贡献:
- 提出了基于预训练大型语言模型 (LLM) 的零样本多模态推荐方法,统一对不同模态的内容进行表征。
- 通过语义嵌入计算实现用户偏好与内容特征之间的精准匹配,无需额外模型训练。
- 设计了一个合成轻推环境,涵盖用户人口统计数据、文本消息和活动相关图像。
2. 创新点与代码实现的对应关系:
-
文本、图像和用户的嵌入表征统一化:
- 论文描述: 所有模态的输入被转换为文本形式,利用 LLM 模型生成语义嵌入。
- 代码实现:
- 函数
get_embedding
使用 OpenAI 的text-embedding-ada-002
模型计算文本的语义嵌入。 - 函数
get_embedding_user
将用户的年龄、性别、种族信息,以及“喜欢”或“不喜欢”的活动,映射为统一的嵌入表示。 - 文件
caption_generation.ipynb
使用 BLIP-2 模型将图像转换为描述性文本,为语义嵌入提供输入。
- 函数
-
嵌入归一化与相似度计算:
- 论文描述: 针对多模态嵌入分布不均的问题,采用归一化方法调整嵌入的中心。
- 代码实现:
- 函数
center_embeddings
对每种模态的嵌入进行中心化。 - 函数
get_prefs
通过点积计算用户、文本和图像三者之间的相似度。
- 函数
-
跨模态推荐生成:
-
论文描述: 用户、消息和图像三元组之间的偏好得分通过嵌入的语义相似性计算得出。
-
代码实现:
-
函数
get_prefs
对每个用户计算偏好分布,并筛选出前k
个推荐结果。 -
具体实现中对三元组得分计算公式如下:
prefs[i][j] = np.dot(user_emb, message_emb) + np.dot(user_emb, image_emb) + np.dot(message_emb, image_emb)
-
推荐结果按得分排序后,通过概率分布(Softmax)调整权重。
-
-
二、代码创新空间与潜在应用
1. 潜在创新点:
-
(1) 动态用户建模:
-
现有问题: 用户嵌入仅基于静态人口统计信息及简单的兴趣偏好,缺乏动态变化的建模能力。
-
创新思路:
-
引入历史行为数据建模(如时间序列或上下文感知机制)。
-
使用 Transformer 编码器动态捕捉用户偏好的时间演化趋势。
-
代码位置:
get_embedding_user
函数。 -
示例修改:
def get_embedding_user(user, wl=.2, wd=.2, historical_data=None): demo = f'{user.Age} year old {user.Race.lower()} {user.Gender.lower()}' emb = get_embedding(demo) # 动态更新偏好 if historical_data: historical_emb = historical_model(historical_data) emb += historical_emb return emb
-
-
-
(2) 加强图像与文本的匹配机制:
-
现有问题: 图像描述仅基于简单的生成式文本,没有进一步语义分析。
-
创新思路:
-
引入跨模态对齐机制(如 CLIP 模型),计算图像和文本在统一空间中的匹配程度。
-
代码位置:
caption_generation.ipynb
文件。 -
示例修改:
from transformers import CLIPProcessor, CLIPModel clip_model = CLIPModel.from_pretrained("openai/clip-vit-base-patch32") clip_processor = CLIPProcessor.from_pretrained("openai/clip-vit-base-patch32") def compute_clip_similarity(image, text): inputs = clip_processor(images=image, text=text, return_tensors="pt") outputs = clip_model(**inputs) return outputs.logits_per_image
-
-
2. 应用价值:
- 多领域潜在应用:
- 医疗健康领域:推荐个性化健康建议。
- 在线教育领域:匹配学习资源与学生偏好。
- 智能家居领域:推荐用户行为模式相关的操作或设备调整。
三、后续研究方向与故事化描述
1. 后续研究方向:
- 个性化的多模态偏好学习: 使用知识图谱或上下文增强模型(如 T5)结合用户偏好与内容特征。
- 跨模态对齐的动态轻推策略: 引入强化学习动态调整推荐策略,适应用户行为变化。
- 基于隐私保护的推荐系统: 使用联邦学习技术实现多模态数据隐私保护。
2. 场景故事化描述: Imagine you’re in a bustling city, overwhelmed with digital notifications. You’ve spent hours glued to screens, and an app gently nudges you:
“Why not explore the vibrant outdoors? Try cycling through the park—it’s a great workout and a refreshing escape from the digital noise.”
You dismiss it initially but are drawn to the accompanying photo of a cyclist in a serene park. The recommendation resonates—it’s tailored to your age, preferences, and current state of mind. You pick up your bike and set off, finding joy in the simplicity of nature.
This is the power of personalized multimodal recommendations: a small nudge leading to meaningful actions.
四、比较与结论
1. 优势对比:
- 零样本学习避免标注数据需求,相比传统方法更灵活。
- 基于 LLM 的嵌入表征能力,提升跨模态匹配精度。
- 强调“轻推”作为应用场景,贴近实际需求。
2. 存在的局限性:
- 依赖于预训练模型性能,对嵌入生成器选择敏感。
- 缺少对冷启动用户的更深入建模。
3. 总结: 这篇论文通过创新性的零样本多模态推荐方法,解决了跨模态内容匹配的难题,并在数字轻推领域展示了显著的潜力。未来在动态建模和隐私保护方面的优化,将进一步推动该领域的发展。
论文完整介绍
研究背景
- 多模态推荐系统的重要性: 在当前的信息过载环境下,推荐系统通过分析用户偏好,帮助用户从海量内容中筛选相关信息。传统推荐系统往往处理单一模态(如文本、图像或表格数据),无法充分利用多模态数据(如结合用户信息、文本描述、图像等)。
- 零样本学习的潜力: 针对推荐系统中需要大量标注数据的痛点,零样本学习无需额外训练数据即可完成推荐任务,能够快速适应新模态或新任务。
研究目标
本文的主要目标是构建一个基于零样本学习的多模态推荐系统,通过预训练的大型语言模型(LLM),对用户、文本消息和图像进行统一表征,从而实现跨模态内容的匹配与推荐。该方法被应用于一个模拟的“数字轻推”场景,即通过推荐离线活动来帮助用户减少屏幕时间。
研究方法
- 多模态表征:
所有模态的数据(用户信息、文本消息、图像)均被转换为文本描述,通过预训练的 LLM(如text-embedding-ada-002
)生成语义嵌入。 - 统一归一化处理:
对多模态嵌入进行归一化,使得用户、文本、图像嵌入的分布中心一致,便于相似度计算。 - 跨模态匹配与推荐:
通过点积计算用户、文本和图像三元组之间的偏好得分,基于得分排序为每位用户推荐最合适的消息和图片组合。
实验设置
- 数据集构建:
本文使用合成数据集,其中包括:- 用户人口统计信息(性别、年龄、种族)及偏好(喜欢或不喜欢的活动)。
- 离线活动相关的文本消息(如鼓励用户从事健身、阅读等活动)。
- 与活动相关的图像及其描述。
- 实验评估:
通过评估推荐结果的适当性,检验方法是否能够有效匹配用户偏好与内容。
研究结果
- 推荐质量:
在模拟的多模态轻推环境中,该方法的推荐结果中有 83% 满足适当性标准,仅有 8% 的推荐不匹配。 - 关键结论:
- 基于 LLM 的语义嵌入可以实现零样本跨模态推荐。
- 提出的轻推方法展示了生成式 AI 在推荐系统中的潜力。
数据集的读取与处理
论文中的数据集由以下几部分组成,分别存储在 CSV 文件中,通过 Pandas 进行读取和处理。
1. 用户数据 (users.csv
)
-
结构:
Age
: 用户年龄。Gender
: 用户性别。Race
: 用户种族。Likes
: 用户喜欢的活动(用分号分隔)。Dislikes
: 用户不喜欢的活动(用分号分隔)。
-
读取与处理:
import pandas as pd users = pd.read_csv('./data/users.csv', dtype='str', index_col=0) users['embedding'] = users.apply(get_embedding_user, axis=1) # 调用函数生成嵌入
2. 文本消息数据 (messages.csv
)
-
结构:
Message
: 鼓励用户参与离线活动的文本消息。
-
读取与处理:
messages = pd.read_csv('./data/messages.csv', index_col=0) messages['embedding'] = messages['Message'].apply(get_embedding) # 使用 text-embedding-ada-002 生成嵌入
3. 图像数据 (images.csv
)
-
结构:
Caption
: 图像的描述文本(由 BLIP-2 模型生成)。
-
读取与处理:
images = pd.read_csv('./data/images.csv', index_col=0) images['embedding'] = images['Caption'].apply(get_embedding) # 生成描述文本的嵌入
关键数据处理函数
1. 生成嵌入
-
核心功能:
利用 OpenAI 提供的嵌入模型text-embedding-ada-002
,将文本转化为语义向量。 -
代码实现:
def get_embedding(text): result = openai.Embedding.create(input=text, model='text-embedding-ada-002') return np.array(result.data[0].embedding)
2. 用户嵌入
-
核心功能:
将用户的基础信息(年龄、种族、性别)和偏好(喜欢/不喜欢的活动)整合为统一的语义嵌入。 -
代码实现:
def get_embedding_user(user, wl=.2, wd=.2): demo = f'{user.Age} year old {user.Race.lower()} {user.Gender.lower()}' emb = get_embedding(demo) # 积极调整(喜欢的活动) for like in user.Likes.split(';'): emb += wl * get_embedding(like) # 消极调整(不喜欢的活动) for dislike in user.Dislikes.split(';'): emb -= wd * get_embedding(dislike) return emb
3. 嵌入归一化
-
核心功能:
调整嵌入向量,使其分布中心一致,以便后续的相似度计算。 -
代码实现:
def center_embeddings(df): emb_center = df['embedding'].mean() df['embedding'] = df['embedding'].apply(lambda emb: emb - emb_center)
总结
- 数据集读取: 数据存储在 CSV 文件中,通过 Pandas 读取并利用预训练模型生成语义嵌入。
- 核心流程: 用户信息、文本消息和图像的描述均被转化为统一的嵌入表示,通过归一化和点积计算推荐得分。
- 方法优势: 零样本学习避免了额外训练数据的需求,结合生成式 AI 和多模态表征,为推荐系统领域提供了新的解决方案。
这篇论文中的用户数据、文本消息数据和图像数据,三者的组合是为了实现一个跨模态推荐系统,具体目标是:为每位用户推荐一组包含文本消息和图像的内容组合,鼓励用户参与离线活动。
推荐任务目标
-
核心任务:
通过用户数据(如年龄、性别、兴趣偏好等)、与线下活动相关的文本消息,以及这些活动的图像描述,计算三者之间的相似度,为每位用户生成最匹配的**(文本消息 + 图像)**组合,鼓励用户减少屏幕时间,参与离线活动。 -
推荐的内容类型:
-
文本消息:
提供针对某一活动的鼓励性描述,例如:
“尝试骑自行车吧!你会感受到微风拂面,同时还能强身健体。”
-
图像: 与活动相关的视觉内容,例如显示一个人在山间骑行的图片。
-
-
推荐结果:
每位用户获得一个定制的推荐列表,其中每个推荐由一条文本消息和一张相关图像组成。
推荐的逻辑与计算
推荐系统的核心是找到用户嵌入、文本消息嵌入和图像嵌入之间的最佳匹配。这通过以下步骤实现:
1. 数据嵌入生成
-
用户数据嵌入:
-
用户的人口统计信息(年龄、性别、种族)被描述为自然语言。
-
用户的兴趣偏好(喜欢/不喜欢的活动)用语义嵌入表示。
-
例如,30 岁的用户嵌入可能是:
“30 岁的亚洲女性,喜欢瑜伽和阅读,不喜欢跑步和徒步。”
-
-
文本消息嵌入:
-
每条消息直接用语义嵌入表示。例如:
“尝试骑自行车吧!你会感受到微风拂面,同时还能强身健体。”
-
-
图像嵌入:
- 图像先通过 BLIP-2 模型生成描述性文本(例如,“一个人在骑自行车”),然后用语义嵌入表示。
2. 偏好得分计算
推荐系统通过计算用户与文本消息、图像的嵌入相似度,生成三者之间的偏好得分。
得分公式如下:
偏好得分
=
User Embedding
⋅
Message Embedding
+
User Embedding
⋅
Image Embedding
+
Message Embedding
⋅
Image Embedding
\text { 偏好得分 }=\text { User Embedding } \cdot \text { Message Embedding }+ \text { User Embedding } \cdot \text { Image Embedding }+ \text { Message Embedding } \cdot \text { Image Embedding }
偏好得分 = User Embedding ⋅ Message Embedding + User Embedding ⋅ Image Embedding + Message Embedding ⋅ Image Embedding
- 公式解读:
- 用户嵌入与文本消息嵌入的点积,衡量用户兴趣与消息内容的匹配程度。
- 用户嵌入与图像嵌入的点积,衡量用户兴趣与图像内容的相关性。
- 文本消息嵌入与图像嵌入的点积,衡量消息与图像是否语义一致。
3. 推荐生成与排序
- 对每个用户,计算所有**(文本消息, 图像)**组合的偏好得分,结果是一个二维矩阵,行表示文本消息,列表示图像。
- 使用 Softmax 对偏好得分归一化,将其转换为一个概率分布。
- 根据得分排序,为每位用户选择前 k 个推荐。
示例推荐结果: 假设用户是 25 岁的男性,喜欢跑步和徒步,不喜欢瑜伽,系统可能推荐:
-
文本消息:
“尝试徒步旅行吧!享受自然风光,同时锻炼身体。”
-
图像:
显示一个人在山林间徒步的图片。
推荐内容的意义
这种推荐系统的目标是通过多模态内容(文本 + 图像)的结合,为用户提供一个直观的、个性化的轻推体验:
- 文本: 提供具体建议,强调活动的益处(如锻炼身体、提升心情)。
- 图像: 提供视觉吸引力,增强说服力和情境感。
- 用户数据: 确保推荐的内容符合用户的兴趣和特定背景。
数据的设计与生成
论文中的数据是合成的模拟数据,具体来源如下:
1. 用户数据
-
生成方法: 利用 GPT-4 生成人口统计信息和兴趣偏好。
-
示例数据:
Age Gender Race Likes Dislikes 25 Male Asian Hiking;Biking Yoga;Meditating
2. 文本消息数据
-
生成方法: 利用 GPT-3.5 按活动类别生成鼓励性消息。
-
示例数据:
Message “尝试骑自行车吧!你会感受到微风拂面,同时还能强身健体。” “参加园艺活动吧!它能让你放松并感受大自然的美。”
3. 图像数据
-
生成方法:
- 从 Pexels 网站获取活动相关图片。
- 使用 BLIP-2 模型生成图像描述。
-
示例数据:
Caption “一个人在骑自行车。” “一个人在修剪花园。”
总结
- 推荐内容: 用户数据提供偏好信息,文本消息给出建议,图像增强视觉吸引力。
- 应用场景: 通过多模态推荐,鼓励用户减少屏幕时间,参与健康的离线活动。
- 方法优势: 依托零样本学习,无需额外训练即可实现跨模态匹配,适应性强。
论文中的方法不需要对多模态内容(用户数据、文本消息、图像)进行额外的标注或训练,而是直接使用预训练的大型语言模型(LLM)生成语义嵌入,并通过这些嵌入的相似性计算实现推荐。这正是零样本学习的核心思想:利用预训练模型的通用能力,无需特定任务的训练即可完成预测任务。
完整例子:多模态推荐的过程
以下是一个完整的推荐过程示例,展示如何结合用户数据、文本消息和图像进行多模态推荐。
1. 数据输入
(1) 用户数据
假设用户的基本信息如下:
- 年龄:30 岁
- 性别:女性
- 种族:亚洲
- 喜欢的活动:瑜伽、阅读
- 不喜欢的活动:跑步、徒步旅行
(2) 文本消息数据
以下是系统中存储的几条文本消息:
-
消息 1:
“尝试瑜伽吧!它可以帮助你放松心情,提升专注力。”
-
消息 2:
“阅读一本好书吧!你将沉浸在知识的海洋中,享受宁静的时光。”
-
消息 3:
“尝试跑步吧!这是保持健康和探索户外的好方式。”
(3) 图像数据
以下是对应活动的图像及其描述:
-
图像 1:
描述文本:“一个人在练瑜伽。”
图片:瑜伽动作的图片。 -
图像 2:
描述文本:“一个人在安静地阅读。”
图片:安静环境下阅读的场景。 -
图像 3:
描述文本:“一个人在户外跑步。”
图片:一个人晨跑的照片。
2. 嵌入生成
-
用户嵌入:
用户信息通过get_embedding_user
转换为语义嵌入:“30 岁的亚洲女性,喜欢瑜伽和阅读,不喜欢跑步和徒步旅行。”
-
文本消息嵌入:
每条消息通过get_embedding
转换为嵌入:- 消息 1 嵌入:反映瑜伽相关的语义信息。
- 消息 2 嵌入:反映阅读相关的语义信息。
- 消息 3 嵌入:反映跑步相关的语义信息。
-
图像嵌入:
每张图像的描述文本通过get_embedding
转换为嵌入:- 图像 1 嵌入:反映瑜伽相关的语义信息。
- 图像 2 嵌入:反映阅读相关的语义信息。
- 图像 3 嵌入:反映跑步相关的语义信息。
3. 偏好得分计算
对于用户与每组**(文本消息, 图像)**组合,计算以下偏好得分:
偏好得分
=
User Embedding
⋅
Message Embedding
+
User Embedding
⋅
Image Embedding
+
Message Embedding
⋅
Image Embedding
\text { 偏好得分 }=\text { User Embedding } \cdot \text { Message Embedding }+ \text { User Embedding } \cdot \text { Image Embedding }+ \text { Message Embedding } \cdot \text { Image Embedding }
偏好得分 = User Embedding ⋅ Message Embedding + User Embedding ⋅ Image Embedding + Message Embedding ⋅ Image Embedding
具体示例:
- 组合 1(消息 1 + 图像 1):
- 用户喜欢瑜伽,因此用户嵌入与瑜伽相关文本和图像的相似度较高。
- 偏好得分:高。
- 组合 2(消息 2 + 图像 2):
- 用户喜欢阅读,因此用户嵌入与阅读相关文本和图像的相似度较高。
- 偏好得分:高。
- 组合 3(消息 3 + 图像 3):
- 用户不喜欢跑步,因此用户嵌入与跑步相关文本和图像的相似度较低。
- 偏好得分:低。
4. 推荐结果生成
通过 Softmax 对偏好得分进行归一化,将其转换为概率分布后,选择得分最高的组合作为推荐结果。
-
推荐 1:瑜伽相关内容
-
文本消息:
“尝试瑜伽吧!它可以帮助你放松心情,提升专注力。”
-
图像:
瑜伽动作的图片。
-
-
推荐 2:阅读相关内容
-
文本消息:
“阅读一本好书吧!你将沉浸在知识的海洋中,享受宁静的时光。”
-
图像:
阅读场景的图片。
-
5. 推荐的最终展示
用户看到推荐的内容如下:
-
推荐组合 1:瑜伽
-
图片:瑜伽场景的照片。
-
消息:
“尝试瑜伽吧!它可以帮助你放松心情,提升专注力。”
-
-
推荐组合 2:阅读
-
图片:阅读场景的照片。
-
消息:
“阅读一本好书吧!你将沉浸在知识的海洋中,享受宁静的时光。”
-
用户点击推荐内容后,可进一步查看活动详情或相关建议。
总结:零样本多模态推荐的特点
- 无需额外训练:
直接利用预训练的 LLM 和生成模型,避免复杂的训练过程。 - 语义理解强:
通过文本描述,将多模态数据(用户、文本消息、图像)转换到同一语义空间,提升匹配效果。 - 个性化推荐:
基于用户信息和偏好,为每个用户生成特定的内容组合,提升推荐的相关性和吸引力。 - 应用场景丰富:
除了屏幕时间轻推场景,该方法还可推广到教育、健康管理和电子商务等领域。
扩展的实际场景描述
想象一个屏幕时间管理应用,用户设置了减少屏幕时间的目标。当用户长时间使用设备时,系统主动发送轻推通知:
-
通知示例:
“累了吗?放下手机试试瑜伽吧!让身体放松,让思绪清空。”
-
附加内容:
配上一张宁静的瑜伽场景图,激励用户立刻行动。
这种多模态推荐通过文字激励和图像引导,为用户提供一种视觉和语义结合的体验,引导他们迈出积极的一步。
偏好得分
=
User Embedding
⋅
Message Embedding
+
User Embedding
⋅
Image Embedding
+
Message Embedding
⋅
Image Embedding
\text { 偏好得分 }=\text { User Embedding } \cdot \text { Message Embedding }+ \text { User Embedding } \cdot \text { Image Embedding }+ \text { Message Embedding } \cdot \text { Image Embedding }
偏好得分 = User Embedding ⋅ Message Embedding + User Embedding ⋅ Image Embedding + Message Embedding ⋅ Image Embedding
的设计充分考虑到了以下两方面的需求:
1. 确保用户对图片和消息的偏好:
- 公式中的贡献部分:
- User Embedding⋅Message Embedding\text{User Embedding} \cdot \text{Message Embedding}User Embedding⋅Message Embedding:
这一项衡量用户与文本消息之间的语义匹配程度。比如,用户喜欢阅读,那么与“阅读一本好书”的消息匹配度会更高。 - User Embedding⋅Image Embedding\text{User Embedding} \cdot \text{Image Embedding}User Embedding⋅Image Embedding:
这一项衡量用户与图片内容的匹配程度。例如,用户喜欢瑜伽,那么展示瑜伽相关的图片会更符合用户偏好。
- User Embedding⋅Message Embedding\text{User Embedding} \cdot \text{Message Embedding}User Embedding⋅Message Embedding:
- 作用:
这两个部分共同确保推荐内容符合用户的兴趣喜好,不会仅仅因为图片或消息本身的吸引力而忽略用户偏好的整体相关性。
2. 确保图片和消息的内容一致性:
- 公式中的贡献部分:
- Message Embedding⋅Image Embedding\text{Message Embedding} \cdot \text{Image Embedding}Message Embedding⋅Image Embedding:
这一项衡量文本消息和图片之间的语义一致性。比如,“尝试跑步吧!”的消息嵌入与显示跑步场景的图片嵌入会有更高的匹配分数,而与其他活动(如阅读)的图片匹配度会较低。
- Message Embedding⋅Image Embedding\text{Message Embedding} \cdot \text{Image Embedding}Message Embedding⋅Image Embedding:
- 作用:
这一项强制消息与图片在语义上保持一致性,从而避免“跑步消息配对瑜伽图片”这类不合理组合的发生。
3. 综合效果:
- 用户偏好:
User Embedding • Message Embedding 和 User Embedding • Image Embedding 确保推荐的内容符合用户兴趣。 - 内容一致性:
Message Embedding • Image Embedding 确保消息和图片是语义相关的。
公式整体: - 将三者结合在一起,既匹配用户的兴趣,又确保推荐的消息和图片在语义上的一致性,从而实现多模态推荐的有效性和合理性。
例子分析
假设用户喜欢“阅读”,不喜欢“跑步”。以下是两组内容的得分计算:
- 组合 1:消息"尝试阅读吧!你会享受宁静的时光。" + 图片"一个人在阅读。"
- 用户与消息:User Embedding • Message Embedding ≈ 0.9 \approx 0.9 ≈0.9 (用户喜欢阅读消息)。
- 用户与图片:User Embedding • Image Embedding ≈ 0.8 \approx 0.8 ≈0.8 (用户对阅读图片偏好高)。
- 消息与图片:Message Embedding • Image Embedding ≈ 0.85 \approx 0.85 ≈0.85 (消息和图片内容一致)。
总偏好得分:
0.9+0.8+0.85=2.550.9 + 0.8 + 0.85 = 2.550.9+0.8+0.85=2.55
组合 2:消息“尝试跑步吧!探索户外的美好风景。” + 图片“一个人在阅读。”
- 用户与消息:User Embedding • Message Embedding
≈
−
0.5
\approx-0.5
≈−0.5 (用户不喜欢跑步消息)。
用户与图片:User Embedding • Image Embedding ≈ 0.8 \approx 0.8 ≈0.8 (用户对阅读图片仍然喜欢)。
消息与图片:Message Embedding • Image Embedding ≈ − 0.2 \approx-0.2 ≈−0.2 (消息和图片语义不一致)。
总偏好得分:
−0.5+0.8−0.2=0.1-0.5 + 0.8 - 0.2 = 0.1−0.5+0.8−0.2=0.1
推荐结果
- 组合 1 的总偏好得分远高于组合 2 。
由于 Message Embedding • Image Embedding 在组合 2 中表现为负值, 表明文本消息和图片内容不匹配, 因此即使用户喜欢图片, 系统也会避免推荐这样的不一致组合。
总结
这个偏好得分公式通过结合用户与内容的相似性(User-Message 和 User-Image)以及内容之间的语义一致性(Message-Image),能够:
- 确保推荐的内容与用户兴趣匹配;
- 避免文本消息和图片内容不相关的情况。
因此,这种方法有效地解决了用户兴趣匹配和多模态内容一致性的问题,是一个合理且实用的设计。