DL_基于Transformer端到端的模型设计和训练举例

基于Transformer架构的深度学习算法应用越来越广,特别是依托端到端的训练方法,由于优化了训练数据的生成方式,变的特别流行。以“基于Transformer的输入搜索文字,推荐电影”为例,我们将这个问题建模为一个文本到物品(Text-to-Item)的推荐任务。虽然原始Transformers是为序列到序列(Seq2Seq)任务(如机器翻译)设计的,但是其核心机制----自注意力和上下文建模能力----可以被灵活迁移到推荐系统中。下面具体展开其神经网络的训练。

一、任务定义

输入:用户输入的一段自然语言查询(如 “我想看一部浪漫又搞笑的爱情片”)
输出:推荐一个或多个电影(如《真爱至上》《初恋50次》)
本质:将文本语义与电影表征对齐,实现跨模态匹配(文本 ↔ 电影)

这属于 检索式推荐 或 语义搜索推荐,而非生成式推荐(不生成新电影,而是从候选库中选出最匹配的)。

二、模型架构设计(双塔 Transformer)

最常用且高效的方案是 双塔结构(Two-Tower Architecture):

[ 用户查询文本 ] → [ Text Encoder (Transformer) ] → 文本向量 q

[ 电影信息 ]    → [ Item Encoder (Transformer/MLP) ] → 电影向量 v_i

1. 文本编码器(Text Tower)

使用预训练 Transformer 编码器(如 BERT、DistilBERT)或从头训练的小型 Transformer;
输入:用户查询(tokenized 后);
输出:取 [CLS] token 的表示,或对所有 token 做平均/最大池化,得到固定维度的语义向量 q ∈ ℝ^d。

2. 电影编码器(Item Tower)

电影信息可包括:

电影标题(title)
类型(genres)
演员/导演
剧情简介(plot synopsis)
平均评分等元数据

这些信息可拼接成一段文本(如 “Love Actually | Romance, Comedy | Starring Hugh Grant”),然后同样用 Transformer 编码,得到电影向量 v ∈ ℝ^d。

也可对结构化字段分别嵌入后拼接,再通过 MLP 编码(若无丰富文本)。

3. 相似度计算

使用 点积 或 余弦相似度 衡量匹配度:
score(q,vi​)=q⊤vi​

三、训练数据构建

推荐系统通常没有直接的“正确答案”,需构造 正负样本对。
正样本(Positive):

用户搜索了 query q,并点击/观看/高评分了电影 m+;
或:人工标注“query 与电影相关”。

负样本(Negative):

随机采样未交互的电影(in-batch negatives 或全局采样);
更高级方法:难负例挖掘(hard negative mining),如用户看了但不喜欢的电影。

示例数据对:

    正例:("浪漫喜剧", 《真爱至上》)
    负例:("浪漫喜剧", 《异形》)

四、训练目标:对比学习(Contrastive Learning)

目标是让 正样本对的相似度高,负样本对的相似度低。

常用损失函数:

1. InfoNCE Loss(Noise Contrastive Estimation)

对于一个 query q 和其正样本 v+,以及 N−1 个负样本 {vj−​}:
L=−log∑k=1N​exp(q⊤vk​/τ)exp(q⊤v+/τ)​

τ 是温度系数(通常 0.05~0.1);
分母包含正样本 + 所有负样本;
在一个 batch 中,其他 query 对应的电影可作为负样本(in-batch negatives),高效利用数据。

2. Pairwise Ranking Loss(如 BPR)

L=−logσ(q⊤v+−q⊤v−)

五、训练流程(端到端)

准备数据:
    收集用户搜索日志 + 电影交互行为(点击、播放、评分);
    构造 (query, movie_id, label) 三元组。

文本预处理:
    Tokenize 查询和电影文本(使用 BERT tokenizer 等);
    截断/填充至固定长度。

模型前向传播:
    文本塔:q = text_encoder(query_tokens)
    电影塔:v = item_encoder(movie_tokens)
    计算相似度矩阵(batch 内所有 query 与所有 movie 的点积)

计算损失:
    应用 InfoNCE 或 BPR loss;
    反向传播更新两个塔的参数。

优化技巧:
    使用预训练语言模型(如 BERT)初始化文本塔,加速收敛;
    冻结部分层(如仅微调最后几层);
    负采样策略优化(如频率加权、难负例)。

六、推理阶段(部署)

训练完成后:

离线预计算所有电影的向量 vi​,存入向量数据库(如 FAISS、Milvus);
在线服务:
    用户输入 query;
    实时编码为向量 q;
    在向量库中做 近似最近邻搜索(ANN),返回 top-K 最相似电影。

优点:推理快,只需一次文本编码 + 向量检索。

七、实际案例参考

YouTube 的多模态推荐:结合视频标题、ASR 文本、用户查询;
Amazon 的商品搜索:用 BERT 双塔匹配 query 与商品描述;
Netflix 的语义搜索:支持“适合周末看的轻松电影”这类模糊查询。

总结:

组件说明
输入用户自然语言查询
输出推荐电影(从候选库中检索)
模型双塔 Transformer(文本塔 + 电影塔)
训练目标最大化正样本相似度,最小化负样本相似度
损失函数InfoNCE / BPR

关键技巧 预训练初始化、负采样、向量检索。这种架构不仅适用于电影推荐,还可扩展到商品、音乐、新闻等任何“文本→物品”的推荐场景。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值