优秀的编程知识分享平台

网站首页 > 技术文章 正文

推荐经典论文之双塔系列(推荐 双塔模型)

nanyue 2024-10-24 11:46:31 技术文章 3 ℃

1 DSSM

1 简介

深度语义匹配模型,是微软发表的一篇应用于NLP领域中计算语义相似度任务的文章。

DSSM原理很简单:获取用户搜索query和doc的曝光和点击日志数据,训练阶段分别用深度学习网络构建query侧和doc侧特征的 embedding,线上预测时通过计算query和doc两个语义向量的cos距离来表示相似度

2 模型结构

term vector

输入词向量的维度取决于doc集合大小

Word Hashing

主要作用是减少输入向量的维度,基于字母n-gram方法

中文输入层和英文有很大差别,首先要考虑分词问题。如果要分词推荐jieba或者北大pkuseg,也可以不进行分词,直接使用单字作为最小粒度

全连接层

最下面的Term Vector到Word Hashing将词映射到3W维的向量空间中。然后分别经过两层300维度的隐藏层,最后统一输出128维度的向量。

相似度计算

query和doc统一转换成了两个128维的语义向量,然后通过cos函数计算这两个向量的余弦相似度

相似度概率

相关性带入softmax计算后验概率:

其中,γ是平滑因子,需要根据经验性设置

2 推荐领域中的双塔

分为user塔和item塔,是独立的两个子网络。将两个塔各自缓存,线上预测的时候只需要在内存中进行相似度运算即可。朴素的DSSM双塔模型结构:

3 Google双塔模型

1 主要创新点

  1. 为解决全库数据量巨大难以高效快速训练的问题,文章采用采样的方式来处理实时流数据,同时提出一种新的采样概率算法,这个概率用于对损失函数进行优化
  2. 为降低采样偏差带来的影响,文章对batch softmax的损失函数进行了修正

2 模型结构

  • 训练标签:点击并进行了完整观看的为1,只点击或者观看很少的认为是0
  • Video特征:视频ID、频道ID,转化为Embedding,对于一些多值特征(视频主题)采用Embedding加权平均
  • User特征:历史观看视频ID的平均Embedding(过去的一段时间)
  • 对于同一个ID的embedding在双塔模型的左侧和右侧是共享的

3 采样概率计算

该方法用于估计在流数据中,每个batch下item出现的概率,核心思想是假设某item连续两次被采样的平均间隔为B,那么该item的采样概率即为1/B,例如:一个item每50步出现一次,那么该item出现的概率p=1/50=0.02

  • A[h(y)]表示item y上次被采样到的时刻
  • B[h(y)]表示每多少步item y可以被采样一次

当第t步y被采样到时,利用迭代可更新A,B:

α可以看作学习率。通过上式更新后,则在每个batch中item y出现的概率为1/B[h(y)]

4 损失函数

整个召回系统采用双塔结构,分别构建user侧和item侧的embedding,两个塔的输出就为各自的embedding向量,然后计算两个embedding内积后的结果,即

s(x,y)=<u(x,θ),v(y,θ)>

由于是多分类问题,将模型的输出经过一个softmax函数之后得到具体对应的label概率,softmax函数如下

在计算损失函数时引入用户偏好权重ri(用户观看某视频的时长)

当M数量很大时通常采用采样方式,因为本文针对实时流数据,所以对实时流中的数据采样出一个batch,训练的负样本即这个batch中的负样本,但是这样就会引入偏差,即热门视频有更大的可能成为负样本(过度惩罚),所以对上文中两个embedding向量计算得到的内积进行了修正,即

s^c(x_i,y_i)=s(x_i,y_i)-log(p_j)

pj表示视频j被随机选中到batch中的采样概率

损失函数

5 其他优化点

  • 归一化:经验表明,对embedding归一化效果更好u(x,θ) \leftarrow u(x,θ)/ ||u(x,θ)||_2
  • 内积结果除以一个超参数:s(x,y)=<u(x,θ),v(y,θ)>/τ,τ是一个可以调整的超参数,用来优化模型

6 原文

https://dl.acm.org/doi/abs/10.1145/3298689.3346996?download=true

Tags:

最近发表
标签列表