当前位置: 首页 > news >正文

召回06 双塔模型two-tower(DSSM)

双塔模型的结构

相比于矩阵补充模型,双塔模型考虑了id之外的多种特征作为输入。

对于每个离散特征用单独的enbadding层得到向量,对于性别等类别较少的特征直接使用one-hot编码;对于连续特征,最简单的直接归一化,对于长尾分布的特征取log或做分桶等。

神经网络可以是简单的全连接网络,或更复杂的结构,例如深度交叉网络等。输出向量,即表征,用于召回。

余弦相似度范围 [-1 ,1],相当于对两个向量a b归一化然后求内积。

双塔模型的训练

pointwise: 把正样本和负样本组成一个数据集,在数据集上做随机梯度下降训练双塔模型;

pairwise: 每次取一个正样本和负样本组成一个二元组,损失函数用triplet hinge loss或者 triplet logistic loss;

listwise: 每次取一个正样本和多个负样本组成一个list,训练类似于多元分类。

pointwise训练

正负样本数量约定俗成

pairwise训练

正负样本embadding层使用一样的参数

m是超参数,可以调整,例如设置为1。训练就是最小化损失函数,用梯度更新双塔神经网络的参数,triplet hinge loss是一种损失函数;triplet logistic loss函数中的sigma是一个大于0的超参数,控制损失函数的形状,手动设置。

listwise训练:

鼓励正样本余弦相似度接近1,负样本都接近于-1。输入到softmax激活函数,输出分数s介于0-1之间。希望s+接近1,s-接近0,鼓励s接近y。用y和s的交叉熵-logs+作为损失函数,训练来最小化交叉熵,即鼓励softmax输出s接近标签y,也就是最大化s+。

总结:

这是粗排和精排,前期融合,将特征在神经网络之前就拼接融合,不适用于召回,适用于排序模型;召回使用双塔模型,是在最终输出相似度的时候才融合。

相关文章:

  • 【中间件——基于消息中间件的分布式系统的架构】
  • Facebook公共主页bug问题解决措施清单
  • ArcEngine C#二次开发图层处理:根据属性分割图层(Split)
  • 【华为HCIP实战课程一】OSPF相关基础介绍及基础配置,网络工程师必修
  • 【数据库】sqlite
  • Qt 每日面试题 -3
  • 前端基础知识汇总(一)
  • ubuntu20.04编译安装opencv-4.9.0的cuda版本
  • 力扣(leetcode)每日一题 2516 每种字符至少取 K 个 | 滑动窗口
  • 【项目经验分享】深度学习自然语言处理技术毕业设计项目案例定制
  • 学生信息管理系统开发实战:掌握多数据模型关联关系的设计和使用
  • 「iOS」——KVC
  • 使用 pypdf 给 PDF 添加目录书签
  • 搜索引擎onesearch3实现解释和升级到Elasticsearch v8系列(四)-搜索
  • 基于Hive和Hadoop的图书分析系统
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • 【面试系列】之二:关于js原型
  • Hibernate【inverse和cascade属性】知识要点
  • isset在php5.6-和php7.0+的一些差异
  • js对象的深浅拷贝
  • js作用域和this的理解
  • scala基础语法(二)
  • underscore源码剖析之整体架构
  • 缓存与缓冲
  • 前嗅ForeSpider教程:创建模板
  • 首页查询功能的一次实现过程
  • 温故知新之javascript面向对象
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • (3)(3.5) 遥测无线电区域条例
  • (C++哈希表01)
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (亲测有效)推荐2024最新的免费漫画软件app,无广告,聚合全网资源!
  • (一)Thymeleaf用法——Thymeleaf简介
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .htaccess配置重写url引擎
  • .NET CF命令行调试器MDbg入门(四) Attaching to Processes
  • .Net 垃圾回收机制原理(二)
  • .NET6 命令行启动及发布单个Exe文件
  • .NET分布式缓存Memcached从入门到实战
  • .NET开源纪元:穿越封闭的迷雾,拥抱开放的星辰
  • .NET中分布式服务
  • @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
  • []我的函数库
  • [2016.7 Day.4] T1 游戏 [正解:二分图 偏解:奇葩贪心+模拟?(不知如何称呼不过居然比std还快)]
  • [20170728]oracle保留字.txt
  • [AI]ChatGPT4 与 ChatGPT3.5 区别有多大
  • [Android 13]Input系列--获取触摸窗口
  • [Android Pro] listView和GridView的item设置的高度和宽度不起作用
  • [Angular] 笔记 18:Angular Router
  • [BZOJ1089][SCOI2003]严格n元树(递推+高精度)
  • [BZOJ4337][BJOI2015]树的同构(树的最小表示法)
  • [C++][数据结构][跳表]详细讲解