网站建设未验收会计账务处理,sem是什么品牌,网站建设合同书,安阳网站建设优化文章目录 YouTubeDNN概念YouTubeDNN模型架构图YouTubeDNN召回阶段YouTubeDNN层级介绍 YouTubeDNN排序阶段YoutubeDNN模型中的一些Trick负采样问题特征构造上下文选择 总结 YouTubeDNN概念
YouTubeDNN是YouTube用于做视频推荐的落地模型#xff0c;其大体思路就是召回阶段使用… 文章目录 YouTubeDNN概念YouTubeDNN模型架构图YouTubeDNN召回阶段YouTubeDNN层级介绍 YouTubeDNN排序阶段YoutubeDNN模型中的一些Trick负采样问题特征构造上下文选择 总结 YouTubeDNN概念
YouTubeDNN是YouTube用于做视频推荐的落地模型其大体思路就是召回阶段使用多个简单的模型来进行筛选这样可以大量地筛除相关度较低的内容而排序阶段则是使用相对复杂的模型来获得精准的推荐结果。YouTubeDNN模型主要分为两个阶段召回阶段和排序阶段。YouTubeDNN模型的召回主要是完成候选视频的快速筛选在论文中被称为 Candidate Generation Model也就是候选集的生成模型。在这一部分中模型要做的就是将整个YouTube数据库中的视频数量由百万级别降到数百级别。为什么要使用YouTubeDNN模型 答传统的协同过滤算法处理百万级数据量很明显是不够的因为CF算法的本质就是计算两两内容之间的关系矩阵然后将结果保存在内存当中当然随着数据量的增大就会很容易地出现OOM的现象。假设有个无限大的内存的分布式计算系统Spark等对于百万级矩阵计算处理时所耗费的时间也不是我们想看到的结果。而YouTubeDNN则利用了Embedding向量加上对负样本的特殊采样处理巧妙地解决了这一问题。
YouTubeDNN模型架构图
YouTube推荐系统架构图 从论文的解释中我们可以得知这个架构就像是一个沙漏funnel一样从最初的百万级→数百级→十级别。
YouTubeDNN召回阶段
YouTubeDNN召回模型架构图
YouTubeDNN层级介绍
我们可以把召回模型的结构分为三层。 输入层输入层总共有四种特征。 用户看过视频的 Embeddingembedded video watches用户搜索的关键词的 Embedding 向量embedded search tokens用户所在的地理位置的特征geographic embedding适用于冷启动用户基本特征example age, gender在处理观看的视频序列和搜索词时需要格外注意每一个人所观看的内容的数量、长度一定不同、所搜索的关键词也一定不同所产生出来的Embedding也会千差万别所以就需要用多值特征和平均池化进行处理。由于每个人的序列长度不同我们在进行训练时就需要将多值特征中的每一个视频ID经过Embedding Lookup通过矩阵相乘类似于一个全连接层操作后得到其对应的Embedding向量然后再经过平均池化处理最后得到这个多值特征所对应的Embedding特征。最后将处理完的特征拼接成一个大的Embedding输入给模型。 三层神经网络训练层这一层也就是模型训练层这里采用了三层ReLU结构实际上在YouTubeDNN中这三层ReLU的作用就是接收输入层特征的CONCAT然后使用常见的塔形设计对自底向上的每一层神经元数目作减半处理直到得到的输出维度与Softmax所要求的输入维度相同256维。也就是1024→512→256。 Softmax层输出层在经过三层ReLU之后召回层使用Softmax作为输出层。我们知道传入Softmax层的参数是用户的Embedding向量而这里的用户的 Embedding并不是在输入层里面的用户Embedding而是经过实时计算得到的也就是最后一层ReLU的输出。 Softmax层最终的输出并不是点击率的预估而是预测用户最终会点击哪个视频。首先看右侧的Softmax部分这一部分实际上是把上一步ReLU输出的user u接到了Softmax 层得到其概率分布。YouTubeDNN把每一个视频当做一个类别这里的Softmax可以理解为每一个视频进行了一个概率上的打分。从论文的角度来说就是将user u和video v进行内积这个内积实际上就是求其相似度然后再进行 Softmax这样就可以得到用户观看每个视频的概率也就是上面这张图中所展示的class probabilities。Softmax右侧部分也就是一个离线的Training主要是加快线上预测效率当得到右侧最终的用户向量之后为了与离线的训练保持一致需要对每个video进行内积计算然后得到概率Top N个结果作为输出。Softmax最左边是一个nearest neighbor index这个部分就是核心所在。这里YouTubeDNN采用最临近搜索的方法去完成topN的推荐通过召回模型得到user u和video v做内积然后再用最临近搜索来得到最后的 topN这样的效率实际上是最高的。Softmax层概率公式基于用户U与上下文C在t时刻将视频库V中指定的视频wt划分为第i类的概率
YouTubeDNN排序阶段
YouTubeDNN排序模型架构图 YouTubeDNN排序阶段模型图与召回层模型相似排序模型面对的只是来自检索的数百候选视频所以可以使用更多精细的特征重点是精准预测。论文中已特征工程的角度对各个视视频特征进行了embedding处理然后再进行ReLU层最终通过加权LR进行Training在线上Serving部分使用了e^(wxb)进行预测。论文中将特征分成了两类一类是impression一类是query。 video embedding包含impression video ID展示视频、watched video ID用户已观看视频后续还需要进行avg-pooling处理。language embedding包含user language用户语言和video language视频语言。time since last watch自上次观看同channel视频的时间进行归一化处理刚看过这个channel的视频还会继续曝光该channel的其他视频previous impressions该视频已经被曝光给该用户的次数进行归一化处理主要是防止无效曝光。 这里就简单介绍一下排序模型的架构因为排序模型更改迭代速度实在是太快了。本章主要是还是从召回模型做思考。
YoutubeDNN模型中的一些Trick
负采样问题
YouTubeDNN采用了负采样训练样本来自全部观看记录观看记录包括用户被推荐的内容再加上用户自己搜索或者在其他地方点击的内容这样做的好处是可以使新的视频也能够有比较好的曝光。把用户看完的内容作为正样本再从视频库里随机选取一些样本作为负样本。没有曝光过的内容理论上有可能被点击过但是这里把它们全都变成了负样本这样就有了一定的随机性。在采样时训练数据中对每个用户选取相同的样本数。这样做的目的是保证用户在损失函数的权重是相等的这样可以尽可能地减少高度活跃的用户对整个推荐结果的Loss的影响。为什么加入负采样的目的是提高训练的速度 对于每一个样本来说所有视频来说都有可能是正样本YouTubeDNN Softmax实际上对每个视频都计算出一个概率如果不做负采样则会形成一个数以万计的分类显然增加了训练难度所以作者这里正常提取正样本把负样本从视频库中根据重要性进行抽样这样可以缓解训练压力提升整体效率。
特征构造 对于一些简单的特征用户性别、年龄没有经过特殊的处理直接输入然后做一层归一化后把最终的结果压缩到[0, 1]范围内。 对于用户观看的视频video在模型中并没有取视频的特征只是简单将视频ID 作为特征传入进来然后利用DNN来自动学习商品的Embedding特征。 因为用户更偏向于喜欢观看最新的视频而随着时间的增长喜爱程度会下降为了修复此问题引入了召回模型中的example age特征。 历史信息是一个边长的视频ID序列根据ID序列和Embedding视频矩阵来获取用户历史观看的Embedding向量序列通过weighted、avg、attention等方法将这个 Embedding序列映射成一个定长的Watch Vector作为输入层的一部分。
上下文选择
在上下文和标签的选择中主要利用了序列的方法。用户每次进入YouTube一直到退出都有一定的序列而这个序列一开始会选择范围比较广的视频进行浏览然后再慢慢地专注到一个比较小的范围内。类似于冷启动里的EE问题先探索再开采。这种浏览行为实际上就是一种不对称的浏览行为。因此作者从观看序列中随机抽取一个视频作为Label这样就忽略了这种不对称性所产生的影响如下图所示 上图是一个对比实验很多算法都是采用左边的方法利用全局观看的信息作为输入这样就忽略了观看序列的不对称性。而YouTubeDNN则是使用右边的方法就是把历史信息当做输入用历史来预测未来。这样做的优点就是模型的测试集往往也是用户最近一次的观看行为后面可以把用户最后一次的点击放到测试集中防止信息穿越的问题在线上AB测试方面表现更佳。
总结
这些内容对于初学推荐系统的小伙伴还是比较有帮助的具体一些细节还是得在论文中查看这里老规矩放上论文链接关于代码方面会在后面更新。