最新知识

youtube论文(关于youtube)

最新知识客服VX(coolfensi)2023-01-21 23:00:2082

【Paper Reading】VideoBERT: A Joint Model for Videoand Language Representation Learning

数据准备:

联系方式:微信:coolfensi
(使用浏览器扫码进入在线客服窗口)
复制联系方式

New_HOI

New_verb

New_object

Paper reading:

Title: VideoBERT: A Joint Model for Videoand Language Representation Learning

Author: Chen Sun, Austin Myers, CarlVondrick, Kevin Murphy, and Cordelia Schmid

摘要:

Self-supervised learning has becomeincreasingly important to leverage the abundance of  unlabeled data available on platforms likeYouTube. Whereas most existing approaches learn low-level representations, wepropose a joint visual-linguistic model to learn high-level features withoutany explicit supervision. In particular, inspired by its recent success inlanguage modeling, we build upon the BERT model to learn bidirectional jointdistributions over sequences of visual and linguistic tokens, derived fromvector quantization of video data and off-the-shelf speech recognition outputs,respectively. We use VideoBERT in numerous tasks, including actionclassification and video captioning. We show that it can be applied directly toopenvocabulary classification, and confirm that large amounts of training dataand cross-modal information are critical to performance. Furthermore, weoutperform the state-of-theart on video captioning, and quantitative resultsverify that the model learns high-level semantic features.

为了利用YouTube等平台上大量未标记的数据,自我监督学习变得越来越重要。现有的方法大多是学习低层表示,而我们提出了一种联合的视觉语言模型来学习高层特征,不需要任何明确的监督。特别是,受其最近在语言建模方面的成功启发,我们在BERT模型的基础上,学习了视觉和语言标记序列上的双向联合分布,它们分别来自视频数据的矢量量化和现成的语音识别输出。我们在许多任务中使用VideoBERT,包括动作分类和视频字幕。我们证明它可以直接应用于开放词汇表分类,并证实大量的训练数据和跨模式信息对性能至关重要。此外,我们在视频字幕方面的表现也超过了现有的技术水平,定量结果验证了该模型能够学习高级语义特征。

要点

摘要:

1. Youtube上存在大量的视频数据,没有标记,给自监督学习提供了大量的数据来源。(视频有语音)

2. 目前存在的方法都是低层次的特征表示。本文提出的视频-语义联合模型在没有显式监督的情况下学习到了高层次的特征信息。

3. 在BERT的基础上,学习视觉-语义的标记序列的双向联合分布,序列分别来自视频数据的向量量化,和现成的语音识别输出。

4. 这个VideoBERT模型用于动作分类和视频字幕。

5. 可以直接用于开放词汇表分类

6. 实验证实了大量的训练数据和多模态对性能至关重要。数据越多效果越好,用了多模态比不是多模态的要好

7. VideoBERT在视频字幕任务上超过了state-of-the-art.

8. 定量结果验证了该模型能够学习高级语义特征。

Introduction:

1. 深度学习可以从标记数据中学习到内容,但标记数据很难大规模获取。

2. 这些方法大多侧重于低层次的特征(如纹理)和短时间尺度(如持续时间不超过一秒的运动模式)。

3. 我们感兴趣的是发现高层次的语义特征,这些特征对应于在更长的时间尺度(如分钟)内展开的动作和事件,因为这样的表示对于各种视频理解任务是有用的。

4. 特别地,我们提出了一种简单的方法来建模视觉域和语言域之间的关系,结合三种现成的方法:自动语音识别系统(ASR)将语音转换成文本;矢量量化(VQ)在低水平时空视觉特征中的应用以及最近提出的用于学习离散标记序列上联合分布的BERT模型。

5. 我们可以执行 文本 - 视频 的预测,它可以用来自动演示一组指令(比如菜谱),如图1和图2的顶部示例所示。

6. 我们还可以执行更传统的 视频 - 文本 的任务,即对[10]进行密集的视频字幕,如图6所示。

7. 我们的视频字幕方法在YouCook II数据集上达到state-of-the-art

8. 该模型可以在比其他深度生成模型更高的抽象级别上生成可信的猜测,它倾向于预测场景低层次方面的细微变化,比如少量对象的位置或姿态。

9. 我们在这篇论文的主要贡献是一个简单的方法来学习 高层次的视频表示 ,捕获语义上有意义和长时间序列结构。

Related Work

1. 有监督学习:有很多视频表征学习的方法利用已有大量的标记数据集训练卷积神经网络达到视频分类的目的。但是这些方法需要大量的数据;数据集涉及动词和名词范围很小;目前的方法被设计出来用于表示短的视频序列,典型的就只有几秒钟。

2. 相比之下,提出的方法可以关注更长的时间序列;同时不需要利用手工标记

3. 无监督学习:RNN,VAE-style loss, GAN-style loss, SV2P, SVGLP, SAVP, MoCoGAN. 基于gan的方法。

4. 我们与无监督学习的不同之处在于,我们使用BERT模型,没有任何显式的随机潜在变量,应用于从视频中导出的视觉标记。

5. 我们的模型不是像素的生成模型,而是像素衍生出来的特征的生成模型

6. 自监督学习: 避免学习的困难联合模型p (x1: T),它已成为流行的学习条件的模型形式p (xt + 1: T jx1: T) 我们的信号分割成两个或多个块,如灰度、颜色、或前一帧和下一个帧

7. 我们的方法是类似的,除了我们使用 量化的视觉文字 而不是像素。

8. 此外,虽然我们学习了一个 集合条件分布 ,我们的模型是一个适当的 联合生成模型

Cross-modal learning.

9. 视频的多模态特性也成为监督学习视频表示的广泛来源,我们的论文就是建立在这个基础上的。

10. 由于大多数视频包含同步的音频和视觉信号,这两种模式可以互相监督,以学习强大的自我监督视频表示。

11. 在这项工作中,我们使用语音(由ASR提供接口把声音转成文字)而不是低层次声音作为跨模态监控的来源。

Natural language models

12. 我们以最近在NLP社区的进展为基础,在那里,大型语言模型如ELMO[22]和BERT[6]已经为各种NLP任务显示了最先进的结果,包括单词级(例如词性标记)和句子级(例如语义分类)。

13. 然后将BERT模型扩展到多语言数据的预训练

14. 我们的论文建立在BERT模型的基础上,以捕获语言和视觉领域的结构。

Image and video captioning.

15. 最近有很多关于图像字幕的工作(例如,[11,8,15]),这是一个形式p(y|x)的模型,其中y是手动提供的字幕,x是图像。

16. 也有一些工作在视频字幕,使用手动提供的时间分割或估计分段

17. 我们用关节p(x|y)建模并将其应用于视频字幕,并达到最先进的结果

Instructional videos.

18. 各种各样的论文(例如,[16,2,10,38,39])都训练了模型来分析教学视频,比如烹饪。

19. 我们不同于这项工作,我们不使用任何手动标记,我们学习了一个大规模生成模型的文字和(离散化)视觉信号。

Model

1. 为了获取语序信息,我们可以给每个单词加上它在句子中的位置。

2. BERT模型学习每个单词标记和这些标记的嵌入,然后对嵌入向量求和,以获得每个标记的连续表示。

3. 在实践中,我们可以通过采样位置和训练语句随机优化logloss(根据f函数预测的softmax计算)

4. 我们通常不仅简单地建模扩展序列,而且对两个句子之间的关系(是连续的,还是随机选择的两个句子)

5. 通过将两个句子连接在一起,BERT可以被扩展成两个句子的模型。

6. 对应的关节模型可表示为p(x;y;c),其中x是第一个句子,y是第二个句子,c = {0,1}是一个标签,指示源文档中的句子是独立的还是连续的。

7. 为了与原文保持一致,我们还在序列的末尾添加了一个[SEP]标记,尽管它并不是严格需要的。

8. 本例中对应的类标签是c = 1,表示x和y是连续的。

The VideoBERT model

1. 为了将BERT扩展到视频,我们仍然可以利用预先训练好的语言模型和可扩展的实现来进行推理和学习,我们决定进行最小的更改,并将原始的可视数据转换为离散的令牌序列。

2. 为此,我们建议使用一个预先训练的模型,对来自视频的特征应用分层向量量化来生成一个“视觉词汇”序列。

3. 除了简单之外,这种方法还鼓励模型在视频中关注高级语义和更长期的时间动态。

4. 这与大多数现有的视频表示学习的自我监督方法形成了对比,后者学习低水平的属性,如局部纹理和动作

5. 我们可以将语言语句(来自ASR视频)与视觉语句结合起来生成数据

6. 虽然这个完形填空任务很自然地扩展到语言和视觉标记序列,但是应用下一个句子预测任务(如BERT所使用的)就不那么直接了。

7. 我们提出了一个语言-视觉对齐任务,其中我们使用[CLS]标记的最终隐藏状态来预测语言句子是否与视觉句子在时间上对齐。

8. 请注意,这是语义关联的一个嘈杂指标,因为即使在教学视频中,说话者可能指的是一些视觉上不存在的东西。

9. 为了解决这个问题,我们首先将相邻的句子随机连接成一个长句子,这样即使两个句子在时间上没有很好的对齐,模型也可以学习语义对应。

10. 其次,因为即使是相同的动作,不同视频之间的状态转换速度也会有很大的差异,所以我们对视频标记随机选取1到5步的次采样率。

11. 这不仅有助于模型对视频速度的变化更加健壮,而且还允许模型捕获更大时间范围内的时间动态,并学习更长期的状态转换。

12. 我们把对视频和文本结合的其他方式的研究留给未来的工作。

13. 总的来说,我们有三种对应于不同输入数据模式的训练机制:纯文本、纯视频和纯视频文本。

14. 对于纯文本和纯视频,标准的掩码完成目标用于训练模型。

15. 对于文本-视频,我们使用前面描述的语言-视觉对齐分类目标。

16. 总体培训目标是个体目标的加权和。

17. 文本目标迫使VideoBERT做好语言建模;视频目标迫使其学习“视频语言模型”,该模型可用于学习动态和预测;而文本-视频的客观要求它学习这两个领域之间的对应关系。

18. 一旦我们训练了这个模型,我们就可以在各种下游任务中使用它,在这项工作中,我们定量地评估两个应用程序。

19. 在第一个应用程序中,我们将其视为概率模型,并要求它预测或输入被掩盖的符号。

20. 我们在4.4节中对此进行了说明,在这里我们执行“零镜头”分类。

21. 在第二个应用程序中,我们提取了[CLS]令牌的预测表示(来自模型的内部激活),并使用该密集向量表示整个输入。

22. 这可以与其他特征相结合,这些特征来自于下游监督学习任务的输入。

Experiments and Analysis

 

1. 在语言和视觉领域的深度学习模型,在不断增长的大型数据集中,一直显示出显著的性能提升。

2. 例如,“大”BERT模型(我们使用的)是在BooksCorpus(8亿字)和英语维基百科(2500亿字)的连接上预先训练的。

3. wefocus on cooking videos specifically

4. 不幸的是,这样的数据集相对较小,所以 我们转向 YouTube 来收集大规模的视频数据集 进行训练。

5. 我们使用YouTube视频注释系统从YouTube上提取了一组公开的烹饪视频,检索与“烹饪”和“食谱”相关的主题的视频。

6. 收集的视频中,删除了15分钟以上视频。最终得到213K个视频。该数据集的总持续时间为23186小时,大约966天。已有YouCook II 要大两个数量级,YouCook II 是由2K个视频组成,总时长为176个小时

7. 为了从视频中获取文本,我们使用YouTube Data API[1]提供的YouTube自动语音识别(ASR)工具包来检索带有时间戳的语音信息。API返回单词序列和预测的语言类型。在312K的视频中,有180K是可以通过API检索到的ASR,预计有120K是英文的。在我们的实验中,虽然我们将 所有的视频都用于纯 - 视频目的 ,但我们只将来自 英语 ASR 的文本用于 VideoBERT 的纯 - 文本和视频 - 文本目的 。

8. 我们在YouCook II数据集[38]上评估了VideoBERT,它包含了2000个YouTube视频,平均时长5.26分钟,总共176个小时。

9. 我们使用提供的数据集分割,其中1333个视频用于培训,457个用于验证。

Video and Language Preprocessing

1. 对于每个输入的视频,我们以每秒20帧的速度采样,并在视频上创建30帧(1.5秒)不重叠窗口的剪辑。

2. 对于每个30帧的剪辑,我们应用一个预先训练的视频卷积网络来提取其特征。

3. 在这项工作中,我们使用了S3D[34],它将可分离的时域卷积添加到Inception网络[25]骨干网中。

4. 我们在最终的线性分类器之前进行特征激活,然后应用3D平均池得到一个1024维的特征向量。

5. 我们在动力学[9]数据集上对S3D网络进行了预培训,该数据集涵盖了来自YouTube视频的广泛操作,并作为每个单独片段的通用表示。

6. 我们用层次知识表示视觉特征。我们通过可视化地检查集群的一致性和代表性来调整层次级别d的数量和每级别k的集群数量。我们设置d=4, k = 12,得到124 = 20736个簇。图4说明了这个“矢量量化”过程的结果

7. 对于每个ASR单词序列,我们使用一个现成的基于lstm的语言模型添加标点符号,从而将单词流分解为句子。对于每个句子,我们遵循BERT[6]中的标准文本预处理步骤,并将文本标记为单词[33]。我们使用BERT的作者提供的相同词汇表,其中包含30,000个令牌

8. 不像语言可以自然地分解成句子,它不清楚如何将视频分解成语义连贯的片段。我们使用一个简单的启发式方法来解决这个问题:当一个ASR语句可用时,它与开始和结束时间戳相关联,并且我们将属于那个时间段的视频标记作为一个片段。当ASR不可用时,我们简单地将16个令牌视为一个段。

Model Pre-training

1. 我们从文本预先训练的checkpoint 初始化BERT权重。具体来说,我们使用由[6]的作者发布的BERTLARGE模型,使用相同的主干架构:它有24层Transformer块,每个Transformer块有1024个隐藏单元和16个self-attention

head。

2. 我们为每个新的“可视单词”在单词嵌入查找表中添加了20736个条目,从而增加了对视频标记的支持。我们使用S3D特性从相应的簇中心初始化这些条目。输入嵌入在训练前被冻结。

3. 我们的模型训练过程在很大程度上遵循BERT的设置:我们在Pod配置中使用了4个Cloud

TPUs,总批处理大小为128,我们训练了50万个迭代,或大约8个epoch的模型。我们使用Adam优化器,初始学习率为1e-5,线性衰减学习率计划。培训过程大约需要2天。

Zero-shot action classification

1. 一旦pretrained, VideoBERT模型可以用于“zero-shot”分类新数据集,如YouCook

II(通过“zero-shot”我们指的是模型不是对准YouCook II具有相同标签的数据也没有本体用于YouCook II)。更确切地说,我们要计算p (y|x)其中x是视觉符号序列,y是一个序列的单词。由于模型被训练来预测句子,我们将y定义为固定的句子,“现在让我向您展示如何[屏蔽][屏蔽]”,并分别从第一个和第二个屏蔽槽中预测的标记中提取动词和名词标签。

2. 为了进行定量评估,我们使用了YouCook II数据集。在[37]中,作者为YouCook II的验证集收集了63个最常见对象的ground truth边界框。然而,对于行为没有ground truth标签,许多其他常见对象也没有标签。因此,我们收集来自ground truth标题的动作和对象标签来解决这个缺点。我们在ground truth标题上运行一个现成的词性标记来检索100个最常见的名词和45个最常见的动词,并使用它们来派生ground truth标签。虽然VideoBERT的词块词汇表为它提供了有效执行开放词汇表分类的能力,但它因此更有可能做出语义上正确的预测,而这些预测并不完全符合更有限的ground true。因此,我们报告了排名前1和前5的分类准确性指标,后者旨在缓解这个问题,我们将更复杂的评估技术留给未来的工作。最后,如果有一个以上的动词或名词与一个视频片段相关联,我们认为预测是正确的,如果它符合其中任何一个。我们报告了YouCook II验证集的性能

3. 我们也使用来自文本BERT模型的先验语言,这在烹饪视频中没有得到很好的调整。我们可以看到VideoBERT比两个基线都好得多。正如所料,VideoBERT的语言先验适用于烹饪句子,并且优于vanilla BERT模型。

4. 然后,我们与使用YouCook II的训练分割训练的完全监督分类器进行比较。我们使用预先计算好的S3D特性(与VideoBERT的输入相同),随着时间的推移应用平均池,然后使用线性分类器。表1显示了结果。正如我们所看到的,supervised framework在动词准确性方面超过了VideoBERT,这并不奇怪,因为VideoBERT拥有一个非常开放的词汇表。(有关操作标签的模糊性,请参见图5。)然而,排名前5的精度指标显示,VideoBERT在没有使用任何来自YouCook II的监督的情况下,实现了与完全监督的S3D基线相当的性能,这表明该模型能够在这种“0次学习”设置下进行竞争。

Benefits of large training sets

1. 我们还研究了训练前数据集大小的影响。在这个实验中,我们从训练前的视频集中随机选取10K、50K和100K的子集,使用与上面相同的设置,对相同的epoch进行训练前的VideoBERT。表2显示了性能。我们可以看到, 准确性随着数据量的增加而单调增加,没有饱和的迹象 。这表明VideoBERT可能会受益于更大的训练前数据集。

Transfer learning for captioning

1. 我们进一步证明了VideoBERT作为特征提取器的有效性。

2. 我们使用与他们相同的模型,即变压器编码器-解码器,但我们将编码器的输入替换为上面描述的VideoBERT派生的特性。

3. 我们还将视频沙漠功能与平均汇集的S3D功能连接起来;作为基准,我们也考虑只使用S3D功能而不使用VideoBERT。

4. 我们设置transformer层数为2,隐藏单元大小为128,dropout

rate为0.4。我们在训练分割上使用5倍交叉验证来设置超参数,并在验证集上报告性能。我们训练了批大小为128的40K迭代的模型。我们使用相同的亚当优化在VideoBERT前训练,并设置初始学习率为1e-3与线性衰减时间表。

Discussion and conclusion

1. 使用空间细粒度的视觉表示非常重要,而不是只在框架或剪辑级别工作,这样我们就可以区分单个对象及其属性。

2. 我们计划在其他视频理解任务和烹饪之外的其他领域评估我们的方法。

youtube论文(关于youtube) 第1张

Youtube DNN经典论文

最近在看王喆的知乎专栏,第三、四、十三篇都是Youtube的经典论文DNN:    

跟着大佬又回顾了一下,发现之前真的只能算是一知半解,趁着这次把对这篇论文的新的理解记录一下,可能还会有一些错误。

论文讲解了在召回和精排两个阶段的模型:

召回:

先从特征说起:用户观看过的video的embedding,用户搜索词的embedding,用户的地理位置、年龄等side_infomation,还有exampl_age这个需要解释的特征

然后是模型:三层DNN

最后是training的loss:softmax做分类

serving的方式:nearest neighbor

里面其实有很多疑点:

1.example_age是什么

这个点专栏里说是训练时间 - 得到这条样本的时间(视频点击时间),但是我觉得这样表达不出“新视频”这个概念,也不知道用当前时间去减是啥意思,label是点击那一刻打上去的,又不是训练的时候;

所以我觉得这个example age应该是点击时间-上架时间,表示用户对新上架视频的偏好,用这个特征去捕获这个偏好了,在serve的时候全都置为0就可以消除这个偏好,毕竟这是召回阶段,可以多召回些东西。(这样就是消除用户对新视频的偏好了?)

2.为什么要做多分类,而不是预测分,多分类的话有海量视频,性能怎么保证

为什么要做多分类,而不是把样本的embedding也给到网络里做打分,这一点我是真的没弄明白;

海量视频的多分类性能的提升是用到了sampled softmax,可以参考   总的来说就是通过Q(y|x)采样出一个子集,对子集计算logits,然后用计算结果F(x,y)-log(Q(y|x))可以表示原数据集上的logits

3.serving阶段为什么不做多分类了,而是做nearest neighbor

这里首先要弄明白serving阶段的user embedding和video embedding是什么,user_embedding是最后一层relu之后的结果,比如是一个d维的向量;然后要得到一个几百万维(用d_N表示)的向量,需要过一个d*d_N维的矩阵,这个矩阵的每一列训练完之后就是video embedding;如果是serving的阶段依然是和每一列相乘,再算一个softmax,既然分母是一样的,取指数的操作也是一样的,那么就直接做点积就好了。

排序:

先从特征说起:当前排序的video的embedding,用户观看过的video的embedding,用户和video的语言embedding,time since last watch是自上次观看同channel视频的时间,previous impressions是该视频已经被曝光给该用户的次数(这里已经引入了负反馈的思路)

然后是模型:三层DNN

最后是training的loss:weighted logistic

serving的方式:e^(Wx+b)

这里面也有一些疑点:

1.training时候的weighted logistic是什么,为什么serving的时候用的是e^(Wx+b)

这个点是我重读的时候最没理解的地方,先尝试写一下,这里首先要搞清楚weighted logitstic是什么,那先回顾一下LR的公式的由来是log(odds) = w*x;这里的odds=p/(1-p)表示正样本发生的概率/负样本发生的概率;在weighted LR里面这个odds要变成W*p/(1-p)这里的W就是给正样本加的权重,至于为什么是这样有一种解释是用正负样本比去解释的,我觉得不是很合理 ;但是如果能够接受这个odds的话,那么log(odds) = w*x就可以得到odds = e^(wx),后者就是serving的目标;

再说W*p/(1-p)是什么,这里W权重是这条视频的时长T,那么sum(Ti*pi)就是E(T)即时长的期望,E(T)/(1-p)泰勒展开就是E(T)*(1+p)这里的p很小的话其实就是E(T)也就是说serving的时候其实得到的就是观看时长的期望,这里如果用到电商里用price去加权,得到的应该也是对price的预估。

还是非常建议多去看一下十大工程问题那篇专栏,讲到了更多,比如对每个用户提取等数量的训练样本、把大量长尾video的embedding置0这些方法的出发点。

关于YouTube推荐系统的论文学习

本文是2010年发表在RecSys上的文章。本文主要介绍的是YouTube的个性化推荐的相关内容。

用户使用YouTube一般有三个原因:

--看他们在其他地方找到的单一视频(直接导航);

--围绕某个主题(搜索和目标导向浏览)查看特定视频;

--受他们感兴趣内容的吸引。

推荐系统主要是针对第三点,目的是帮助用户发现他们感兴趣的高质量视频,并且推荐结果应该随时间和用户最近的行为更新。

在YouTube的推荐应用中,面临以下挑战:

--用户上传的视频的元信息非常少;

--视频时长比较短(一般小于10分钟);

--用户行为短暂、多变而且噪声很多;

--视频生命周期短。

这是YouTube的推荐和普通视频网站推荐不同的地方,这些挑战也是现在很多短视频公司关注的问题。

推荐系统算法应该保持时效性和新鲜性,另外,用户必须了解为什么向他们推荐视频,这样可以帮助用户根据自己的喜好改善推荐引擎。推荐的视频是通过用户的行为来生成的,用户的行为包括观看、收藏、喜欢等来作为种子视频,然后使用各种相关性和多样性的 signals 对视频集进行排序。推荐系统的工程设计方面,保持各个模块的独立性,并且还需要对故障具有恢复能力,并在出现部分故障时适度降级。

这里有2种数据可以考虑:

1)是内容数据视频流、视频元信息(标题,标签等);

2)用户行为数据,包括显性和隐性数据。前者是指用户评分、明确表示喜欢、不喜欢等行为,后者是浏览、观看等行为。

原始数据中还含有非常多的噪声,很多不可控因素会影响原始数据的质量。

作者将相关视频定义为用户在观看给定的种子视频 v 之后可能会观看的视频,使用关联规则挖掘技术来确定视频间的相关性。视频i和j的相关性定义为:

将用户观看过的视频、喜欢过的视频、收藏过的视频等等作为种子集合,对它们进行N级的级联扩展,也就是YouTube选择召回的不是1步相关视频,而是n-步相关视频,即种子视频迭代n次后得到的相关视频集合,产生广阔和多样的候选结果。

在生成一组候选视频后,需要对这些相关视频进行排序。

用于排序的数据主要包括:

--视频质量:包括观看次数、视频评分、评论、收视和上传时间等;

--用户特征:考虑用户观看历史记录中种子视频的属性,例如观看次数和观看时间等;

--多样性:要在被推荐的视频集合的类别中做一个平衡,以保持结果的多样性。

这些数据最终被线性组合起来,得到ranking的评分。

本文虽然是2010年发表的,近年来有很多内容升级复杂化了,但是作为初学者,本文的知识点和整体思路是非常值得学习的。当时的YouTube推荐系统的核心算法就是基于Item的协同过滤算法,也就是对于一个用户当前场景下和历史兴趣中喜欢的视频,找出它们相关的视频,并从这些视频中过滤掉已经看过的,剩下就是可以用户极有可能喜欢看的视频。

本文是Google的YouTube团队在推荐系统上DNN方面的尝试,发表在16年9月的RecSys会议。本文第1节介绍了YouTube推荐系统主要面临的挑战。第2节介绍了一个简要的系统概述。第3节更详细地描述了候选集生成模型,包括如何对其进行训练并用于提供推荐服务;实验结果显示模型添加特征和DNN深度后可以显著提升预测效果。第4节详细说明了排序模型,包括使用加权逻辑回归技术以训练预测预期观察时间的模型;实验结果表明,增加隐层网络宽度和深度都能提升模型效果。 最后,第5节做了总结。

-规模大:用户和视频的数量都很大,传统适合小规模的算法无法满足;

-新鲜度:要求对新视频作出及时和合适的反馈;

-噪音:YouTube上的历史用户行为由于稀疏性和各种不可观察的外部因素而不可预测。 我们很少能获得基本真实的用户满意度,更多的是隐式反馈噪声信号。

推荐系统的整体结构如图所示:

该系统由两个神经网络组成:一个用于候选集的生成,一个用于排序。候选集生成网络将用户的Youtube活动历史记录作为输入,然后从海量视频集中筛选出一小部分(数百个)以高精度与用户相关的视频。排序网络负责基于更加精细的特征对候选集进行排序,最后将最高得分的视频呈现给用户(按它们的得分排名)。

该模型把这个推荐问题转化成极端多分类问题:对于用户U和上下文C,把语料库V中的数百万个视频(分类)i,在时间t处做准确的分类,如下所示:

其中u为用户U的embedding表示,vi 代表各个候选视频的embedding。embedding是指稀疏实体(单个视频,用户等)到实数密集向量的映射;DNN的目标就是在用户信息和上下文信息为输入条件下学习用户的embedding向量u,这对于用softmax分类器来区分视频是有用的。

整个模型架构是包含三层全连接层,使用relu激活函数。把用户观看历史数据、搜索数据做一个embedding,加上age、gender等特征作为DNN的输入;输出分线上和离线训练两个部分。训练阶段使用softmax输出概率,在服务期间则直接使用接近最近邻搜索来进行生产候选的N个视频。

1)把用户观看过的视频id列表做embedding,并对所有历史观看视频ID的embedding做平均,得到观看embedding向量。

2)同时把用户搜索过的视频id列表也做如上的embedding,得到搜索embedding向量。

3)用户的人口统计学属性做embedding得到特征向量。

4)简单的二值和连续特征,例如用户的性别,登录状态和年龄作为归一化为[0,1]的实数值直接输入到网络中。

5)example age:机器学习系统总是利用历史的例子去预测未来,所以对过去总会有一个隐含的偏差。为了矫正偏差,YouTube把训练样本的年龄当作一个特征。

1.训练样本要用youtube上的所有视频观看记录,而不只是我们的推荐的视频的观看记录。

2.为每个用户生产固定数量的训练样本。

3.丢弃搜索信息的顺序,用无序的词袋表示搜索查询。

4.如下图,图(a)从历史观看记录中随机拿出来一个作为正样本来预测它,其余的历史观看记录作为上下文;这样其实泄露了未来的信息,并且忽略了任何非对称的消费模式。相反,图(b)是从用户的历史视频观看记录中随机拿出来一个作为正样本,然后只用这个视频之前的历史观看记录作为输入;这样的预测效果好得多。

– 深度为0:这时网络就是一个把连接起来的输入层转换一下,和softmax的256维输出对应起来

– 深度为1:第一层 256个节点,激活函数 是ReLU (rectified linear units 修正线性单元)

– 深度为2:第一层512个节点,第二层256个节点,激活函数都是ReLU

– 深度为3:第一层1024个节点,第二层512个节点,第三层256个节点,激活函数都是ReLU

– 深度为4:第一层2048个节点,第二层1024个节点,第三层512个节点,第四层256个节点,激活函数都是ReLU

实验结果如下图所示:

可以看出,特征选取较多时,并且模型深度在四层时,可以得到较好的结果。

排序阶段最重要的任务就是精准的预估用户对视频的喜好程度。在排序阶段面对的数据集比较小,因此会采用更多的特征来计算。

作者在排序阶段所设计的DNN和上文的DNN的结构是类似的,但在训练阶段对视频的打分函数不再是softmax,而是采用的逻辑回归。如下图所示:

1)特征工程

尽管神经网络能够减轻人工特征工程的负担,但是我们依然需要花费精力将用户及视频数据转化为有效的特征。其主要的挑战在于如何表示用户动作的时间序列以及这些动作如何与正被评分的视频展现相关。但是通过对用户和物品之间的交互行为,我们能提取出一些有用信息,比如: 用户从这个频道里看过多少视频,用户上次观看这个主题的视频是什么时候等。

2)embedding 离散特征

每个维度都有独立的embedding空间,实际并非为所有的id进行embedding,比如视频id,只需要按照点击排序,选择top N视频进行embedding,其余置为0向量;而当多值离散特征映射成embedding之后,像在候选集生成阶段一样,在输入网络之前需要做一下加权平均。另外一个值得注意的是,离散特征对应的ID一样的时候,他们的底层embedding也是共享的,其优势在于提升泛化能力、加速训练、减小内存占用等。

3)连续特征归一化

对连续值类的特征进行归一化,作者设计一种积分函数将特征映射为一个服从[0,1]分布的变量;还可以对某些特征进行取根号、取对数和取平方的相关操作,使得网络有更强的表达能力。

给定正负样本,正样本为有点击视频,负样本为无点击视频;用观看时长对正样本做了加权,负样本都用单位权重(即不加权);采用的是基于交叉熵损失函数的逻辑回归模型训练的。

上表显示了在保留数据集上用不同的隐层配置得到的结果,这些结果表明增加隐层的宽度提升了效果,增加深度也是一样。

本文内容方面,介绍了YouTube基于深度学习的推荐系统,先用视频和用户的主要信息通过深度候选生成模型从百万级视频中找出数百个相关的视频,再用视频和用户的其他信息通过深度排序模型从数百个视频中找出几十个最有可能受用户欢迎的视频给用户。这样使得推荐系统对用户喜好的刻画能力大大增强,刻画的范围更加广泛。

本文结构方面,从推荐系统的整体结构讲起,划分为候选集生成和排序两个阶段,然后对每个阶段详细地展开讲解。整体过程条理清晰,逻辑严密,值得我们学习。

上一篇:youtube缩略图尺寸(YouTube尺寸)

下一篇:怎么去除youtube广告(手机youtube怎么去除广告)

猜你喜欢