尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
B站 王树森推荐系统学习笔记 P8
P8 双塔模型 : 模型和训练1.使用Embedding层将 用户与物品的ID 以及 离散特征映射为一个向量 , 连续特征则通过归一化,分桶等处理 转化为特征向量 .2.将这些向量拼接起来 , 输入到神经网络 ( 可以是简单的全连接网络 也可以是 更复杂的结构)3. 神经网络最终会输出一个向量 , 即 : 用户\物品的表征 (供召回使用)双塔模型 :左侧塔提取用户的特征 , 右侧的塔提取物品的特征 (与矩阵补充模型的不同 : 使用了ID之外的多种特征作为双塔的输入) .最终两个向量的余弦相似度用于预估用户对物品的兴趣 .双塔模型的训练 :1.pointwise : 独立看待每个正样本 , 负样本 , 做简单的二元分类 .把召回看作是二元分类任务 ; 对于正样本 , 鼓励cos(a,b)接近1 ;对于负样本 , 鼓励cos(a,b)接近-1 ; 一般做法 : 控制正负样本数量为1:2 或 1:3 ;2.pairwise : 每次取一个正样本 , 一个负样本 .每一组的输入是一个三元组 :在这里 , 两个物品塔的Embedding层 与 全连接层是相同的 (共享参数 )用户与正样本的相似度越大越好 , 最好接近1 ;用户与负样本的相似度越小越好 , 最好接近-1 ;基本想法 : 鼓励正样本的相似度大于负样本的相似度 ;如果正样本的相似度大于(负样本的相似度m) , 则没有损失 ;否则 , 损失等于(负样本相似度m) - 负样本相似度3.listwise : 每次取一个正样本 , 多个负样本 .一条数据包含 :一个用户 , 特征向量记作 a .一个正样本 , 特征向量记作 b ;多个负样本 , 特征向量记作b1- , b2- ......bn- ;训练时 , 鼓励a与正样本的余弦相似度尽量大 ; 鼓励a与负样本的余弦相似度尽量小 ;(n1个余弦相似度会先通过激活函数 , 得到n1个分数 , 右侧为正负样本标签 , 表示鼓励正样本相似度接近1 , 负样本相似度接近于0 . ; 最后计算交叉熵得到损失函数 , 训练时最小化交叉熵表示鼓励S接近于Y .P9 双塔模型 : 正负样本正样本 : 曝光且有点击的用户-物品二元组 . ( 用户对物品感兴趣 )存在的问题 : (2/8法则) 少部分物品占据了大部分点击 , 导致正样本大多是热门物品.解决方案 : 过采样冷门物品 , 或者降采样热门物品 .过采样 : 一个样本出现多次降采样 : 一些样本被抛弃 .负样本 :简单负样本 :1. 未被召回的物品 , 大概率是用户不感兴趣的 .因为未被召回的物品 ≈ 全体物品 .因此 , 可以直接从全体物品中作抽样 , 作为负样本 .如何抽样 ? 均匀 or 非均匀均匀抽样 : 对冷门物品不公平 . ( 正样本大多数是热门物品 , 如果采用均匀抽样 , 便会导致大部分负样本都是冷门物品 -- 导致 热门物品更热 , 冷门物品更冷 )非均匀抽样 : 其目的是打压热门物品 .负样本抽样概率与热门程度(点击次数)正相关 .如: 抽样概率 正比于 (点击次数)0.75次方 这里的0.75是经验值2.Batch内负样本 :1个batch 内有n和正样本 , 一个用户和n-1个物品组成负样本 ;因此 , 这个batch内共有n(n-1)个负样本 ; 这些都是简单负样本困难负样本1.被粗排淘汰的物品(比较困难) 2. 精排分数靠后的物品(非常困难)双塔模型实际上可以看成是对正负样本做一个二元分类 :若将全体物品作为负样本(简单 ) - 分类准确率高若将被粗排淘汰的物品(比较困难) 作为负样本 -- 容易分错若将精排分数靠后的物品(非常困难)作为负样本 -- 更容易分错工业界常用的做法 :将不同难度的负样本混合起来作为训练数据 : 例如 : 50%的负样本是全体物品(简单负样本) , 50%的负样本是没通过排序的物品(困难负样本) .常见的错误 : (将曝光但未点击的物品作为负样本训练召回)曝光但未点击的物品通常作为负样本训练排序模型 .召回的目标 : 快速找到用户可能感兴趣与不感兴趣的物品 . 排序的目标才是区分用户感兴趣与非常感兴趣的 .有曝光但是没点击 : 说明已经是精排推荐给用户的物品了 , 很符合用户的兴趣 , 可能碰巧没有点击 , 若作为负样本训练召回 , 将产生负收益 .
RELATED

相关推荐

Hyper Pop音乐制作教程:从音色设计到Glitch效果实战指南

Hyper Pop音乐制作教程:从音色设计到Glitch效果实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/6 22:16:31
火山引擎 Ark 平台模型部署与计费配置文档

火山引擎 Ark 平台模型部署与计费配置文档

生成时间:2026-09-01 测试账户:火山引擎 Ark(账户 ID 2126424968) 测试环境:Hermes CLI custom_providers.doubao一、核心结论 1.1 计费方式 按实际用量计费(充值多少用多少,后付/按量扣&#…

📅 2026/10/7 21:32:56
数据的运算:C运算符与类型转换

数据的运算:C运算符与类型转换

C运算符与类型转换 写在前面:本文承接《数据的表现形式》,继续整理C语言中“数据如何参与运算”这一部分内容。文章从初学阶段最常见的运算符出发,说明它们的基本用法、优先级、结合性以及混合运算中的类型转换。部分较复杂、暂不影响后续学…

📅 2026/10/9 6:12:08
MORE NEWS

更多资讯

📰

Unity手写计算器:UI交互与状态机实战入门

1. 为什么“手写计算器”是Unity新手绕不开的第一课很多人刚接触Unity时,总想着直接上手做游戏——角色跑动、粒子特效、UI动画,样样都想立刻实现。结果往往是拖拽几个预制体,调调参数,发现逻辑一塌糊涂:按钮点不动、数…

📰

详解C语言中动态内存管理

前言 C 语言没有 new、没有容器、没有析构函数,动态内存全靠四个函数:malloc、calloc、realloc、free。它们只负责分配和释放原始字节,不调用构造,也不记录长度。因此「分配了多少、谁负责释放、释放后还有没有指针指向它」这三个…

📰

Godot游戏开发中的动态颜色变换技术详解

1. 为什么动态颜色变化在游戏开发中如此重要在游戏开发领域,动态颜色变化是一个看似简单却蕴含巨大潜力的技术点。我第一次意识到它的价值是在开发一个2D平台游戏时,主角需要在不同状态下改变外观。最初我考虑使用多个精灵图来表现不同状态,但…

📰

NoETL语义编织技术:指标平台的新架构演进

1. 指标平台技术演进背景在数据驱动决策的时代,企业对于数据处理的时效性和灵活性要求越来越高。传统ETL(Extract-Transform-Load)和ELT(Extract-Load-Transform)模式已经服务了数据行业二十余年,但随着数据…

📰

VS Code与Trae中Maven本地仓库配置指南

1. 为什么需要配置本地Maven仓库地址 在VS Code或Trae这类现代开发工具中使用Maven时,正确配置本地仓库地址是项目构建的基础保障。Maven默认会将下载的依赖包存储在用户目录下的.m2/repository文件夹中,但在实际开发中我们往往会遇到几种典型场景&#…

📰

YOLOv11目标检测:架构革新与工业应用实践

1. YOLOv11项目概述:目标检测领域的进化新星第一次接触YOLOv11是在一个工业质检项目的技术选型会上。当时客户需要实时检测流水线上的微小缺陷,我们对比了YOLOv5、YOLOv7等多个版本后,最终被YOLOv11的创新设计所折服。这个由Ultralytics团队在…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬