content embedding

本文介绍了Hulu视频平台在内容嵌入方面的实践和技术挑战,包括如何生成内容嵌入向量及在推荐系统中的应用。

导读:Hulu是美国领先的互联网视频流媒体平台,拥有大量的电影、电视剧等视频资源,对这些内容的理解和表示是Hulu的一个重要研究方向。Content Embedding技术将内容表示为向量,以利于后续算法、模型的处理和分析。本次分享将介绍Hulu在content embedding方面的一些实践和尝试,包括embedding的生成及其在业务场景中的应用

About Hulu

Hulu是一个视频流媒体平台,主要由三个要素构成,分别是用户 (users)、内容 (contents) 和广告 (ads)。Hulu的商业模式也是围绕着这三个要素进行的,即Hulu花钱购买内容资源并提供广告展示位,用户付费观看内容,广告主付费购买广告位。

图片

1. Contents on Hulu

图片

Hulu提供了种类丰富的内容资源,主要是电影、电视剧,以及一些体育、新闻、儿童相关的节目;既有点播的内容 (VOD contents),也有直播频道 (LIVE channels)。

2. Content understanding in Hulu

Hulu的内容理解可以分为四个不同的层次:

图片

  • 第1层,对视频的理解,比如检测和识别视频中出现的特定目标、事件、场景、明星演员、商标等,以及一些特定的片段(如片头、片尾、highlight片段等);

  • 第2层,对整个剧集(包括电影、电视剧)的理解,比如为每个剧打一些标签 (tags) 或生成向量表征 (embeddings),或者分析剧与剧之间的相关性等;

  • 第3层,对collection的理解,这里的collection是Hulu页面上每一行所展示的剧构成的集合,我们需要为每个collection也生成一个表征,并分析不同collection之间的关系,以及思考如何用算法来辅助collection的创建;

  • 第4层,对内容在Hulu平台上生命周期的理解,主要是分析用户与内容之间的交互信息。

3. Contents & corresponding metadata/videos

图片

Hulu上的每个剧集(电影/电视剧),除了最直接的视频资源外,还有一些与之相关的信息,包括剧的标题 (title)、简介 (description)、导演 (director)、演员 (actor)、主题 (topic)、类型 (genre)、标签/关键词 (tag/keyword)、获奖情况 (award)、分级情况 (rating)、字幕信息 (caption)、海报/封面图 (cover image) 等。

 4. How to represent contents?

图片

上面提到,与一个剧集相关的数据有很多(如下右图所示),它们具有不同的形式(标签类、文本类、图像、视频、音频等),从不同维度刻画剧集,具有丰富的信息。那么,如何综合考虑这些信息,给每个剧一个表征呢?表征,从某种意义上来说也是一种信息压缩,用更简洁、有效、本质的形式来刻画一个东西。典型的表征有如下几种:

  • ID类型的表征,用一个id(一般是数字或字符串)来表示一个剧集。这类表征只能反映出两个剧是相同的或者不同的(看id是否相同),不能带来其它额外信息。One-hot encoding也是这类表征的一种形式。

  • 标签类型的表征,用若干个关键词来刻画一个剧集,每个关键词具有一定的语义信息,比较方便人类理解。

  • 向量类型的表征,用一个向量来标识一个剧集,这类表征可以很方便地用在后续的模型和计算中,对机器比较友好。我们接下来要介绍的content embedding就属于这一类表征。

Generation of content embeddings

1. Content embedding

图片

Embedding是数学上的一个概念,指把一个数学结构经过某种映射嵌入到另一个数学结构中,这个映射需要保持某种意义下的结构不变性。类似地,content embedding是将剧集映射到一个低维稠密的向量空间中,并尽可能让内容相似的剧对应的embedding向量也比较接近。在Hulu,生成content embedding时需要考虑多种不同模态的数据,包括标签类数据(导演、演员、类型、标签/关键词等)、文本数据(标题、简介等)、图像(海报、封面图等)、视频、音频等;另外,考虑到电影/电视剧都是长视频,要压缩为一个低维向量需要很高的压缩率,并且在算法的训练和测试过程中都没有ground-truth可以参考,因此生成content embedding还是一个比较有挑战性的任务。

2. Tag-based embeddings (Graph Embedding) 

Step 1:

图片

首先,介绍如何利用剧集的标签类型数据来生成content embedding。前面提到,每个剧集都或多或少会有一些标签类型信息,比如导演、演员、类型、关键词/标签等,我们把它们称为该剧的属性 (attribute) 信息。由此,我们可以构建一个content-attribute graph,其中剧集和属性是该 graph 中节点,它们之间的对应关系用graph中的边来连接。由于不同的剧可能有相同的属性(比如两个剧有相同的导演或关键词),这些共同的属性节点可以将不同的剧连接起来,如下图所示,最终会构成一个非常庞大的content-attribute graph。

Step 2:

图片

有了content-attribute graph之后,可以用node2vec 技术为graph中每个节点(包括剧节点和属性节点)学习出一个embedding向量,其中剧节点对于的向量即为我们需要的content embedding。大致的步骤是先根据graph采样获得一些path,然后调用word2vec方法学习得到节点的embeddings。我们略过细节,这里的基本思路是:如果graph中两个节点之间的path越多,则希望它们对应的embedding向量越接近。

3. To be improved …

上述基于content-attribute graph生成的content embedding,有如下几个不足的点:

  • 只使用了标签类型数据,没有考虑非标签类型的文本数据(如标题、简介等);

  • 在标签类型数据中,GraceNote keywords和genres是最重要的,但它们的覆盖率并不高,很多剧会缺失这些数据;

  • 构建content-attribute graph时候,并没有利用上这些标签的语义信息(只根据标签是否相同来构建graph中的连接边);

  • 在建模过程中,不同类型的标签之间没有足够的信息交互。

4. Considering non-tag textual data

接下来,我们思考如何利用非标签类型的文本数据(标题、简介等)。我们尝试了两种处理方法:

  • 方法一:直接根据文本数据生成content embedding;

  • 方法二:先根据文本数据预测出一些标签,然后将预测的标签加到前面的content-attribute graph来生成更高质量的content embedding。

图片

上图是我们尝试的方法一,对于剧集简介,先用BERT模型得到句中每个token的embedding,然后利用SIF算得每个句子的embedding,最后将剧集简介中所有句子的embedding做平均后得到整个剧集简介的embedding。这个方法的效果比较一般,接下来我们重点介绍方法二。

Metadata-BERT: 

use metadata to predict/complement content tags

图片

方法二,主要是先根据文本数据来预测剧集的一些标签信息,然后将这些标签加到content-attribute graph中,接着调用前面的tag-based embedding方法即可。我们对原始BERT模型进行了改进,使得它可以接受各种类型的数据作为输入,包括标签类型数据 (tag-like metadata) 和非标签类型的文本数据 (non-tag textual metadata) 。新的模型被称为Metadata-BERT,它能根据输入的metadata信息预测出更多的tags,可以作为原始标签数据的一个扩展和补充。Metadata-BERT模型利用GraceNote keywords数据进行训练,在测试集上的标签预测准确率达到83%(比原始BERT的61%有显著提升)。将Metadata-BERT预测出来的标签添加到之前的content-attribute graph中,能够进一步丰富graph的节点和边,从而产生质量更高的content embedding。

5. Further: how about visual/audio data?

图片

除了上述提到的标签类型数据和非标签类型的文本数据,一个剧还有对应的音频资源和视频资源。与前面的数据不同,音视频信息是一帧一帧的,一部剧是由一个图片序列和音频序列构成的。如何将整个序列转化为一个embedding向量,这是我们需要重点考虑的地方。我们的做法是:先将整个视频的视频帧和音频帧抽出来,然后用一些神经网络(如Inception/VGGish)为每个视频帧和音频帧提取特征,最后用一些聚合模型(如NeXtVLAD/BERT等)将帧级的特征聚合为整部剧的embedding。整个模型可以借助一些诸如标签预测、推荐排序等任务来训练。

6. A try: two-level-BERTs for v/a embedding learning

图片

我们做了一个尝试,用两层BERT模型来做推荐业务中的CTR预估任务,简单来说,就是先用一个BERT模型来聚合视频的帧级/片段级的特征,以得到每部剧的content embedding向量;然后再用一个BERT模型来聚合用户信息,主要是历史观看记录 (history_shows) 以及目标剧集 (target_show);最后再接MLP进行CTR预估。这个框架比较大,将content embedding的学习直接放到具体的推荐业务中,是一个end-to-end的学习过程;缺点是两个BERT模型体量太大,收敛不太稳定。

7. Overview: generation of content embeddings

图片

上图是content embedding生成过程的一个概览图。图中的 content data包括剧的metadata信息、视频文件和字幕文件,其中metadata又分为标签型数据和非标签型的文本数据,而视频文件又包含视觉图像和音频信息。针对不同类型的数据,我们采用不同的模型,从而产生不同的 content embeddings,而这些不同的embedding也融合成一个终极embedding。在实际应用中,可以根据业务特点来使用不同类型的embeddings,或者使用最终的融合版embedding。

Applications of content embeddings

1. Content similarity

图片

接下来我们介绍content embedding的一些应用。content embedding最直接的应用是可以简单方便地计算两个剧在内容上的相似性(比如计算embedding向量的余弦相似性)。下图右侧是完全基于content embedding向量计算出的与“钢铁侠”最相关的剧,可以看到大部分结果都还是比较合理的。在推荐业务中,很多时候需要计算show-to-show relevance,而内容相似性可以作为其中的一个重要因子(其它可能需要考虑的因子包括基于用户co-watching信息的相关性等)。Show-to-show relevance可以应用在Hulu的You May Also Like (YMAL)、UpNext等场景中,下图左侧是Hulu的YMAL页面。

2. Content embeddings as features in TV/Movies ranker, PCS, etc.

图片

Content embedding的另外一个应用是可以作为很多算法、模型的输入特征。如上图所示,左边是Hulu推荐业务中对TV/Movie的排序模型,右边是对Home页面的collections的排序模型,这两个模型中都使用了content embeddings作为输入特征(图中绿色框所示)。

3. Content embeddings for content cold start (in Retriever)

图片

Content embedding在内容冷启动方面也有着重要应用。以推荐系统的召回模型为例,如果召回模型只是基于用户的co-watching信息(如下图左侧分支),这样对于新加入的内容或冷门内容,可能采集不到足够多的用户观看记录,从而影响召回效果。这时候可以根据content embedding来构建另外一个基于内容信息的召回分支(如下图右侧分支),然后再用一些方法(比如gate函数)将两个分支融合起来(如下图中间的分支所示),从而提升对新内容或冷内容的召回效果。

4. Collection modeling with content embeddings

前面提到,Hulu页面上每一排展示的内容被称为一个collection(一个collection也即若干个剧构成的一个集合)。在Hulu的Home页面,会根据用户的行为数据对collection进行动态选择和排序,这就需要大量的collections供算法选择,仅靠editor手动创建collections是非常低效和耗时的。这里我们尝试利用算法,从如下几个角度来加速collection的创建:

图片

  • 对已经存在的collections进行建模,从而可以对collection里面的剧进行扩展和更新;

  • 在editor手工创建collections时,让editor可以根据embeddings或tags来搜索相似的剧集,或者直接根据editor已选的剧作为种子来自动推荐合适的剧加入到collection中,从而提高collection的创建效率;

  • 用算法直接创建collections,然后经过人工审核并命名后即可入库。

Thinking

最后,关于content embedding的一些思考:

图片

  • 如何评价content embedding的效果?是建立一套以内容为主视角的评价指标,还是看embedding在推荐、搜索等业务中的效果?

  • Content embedding与具体业务场景之间的gap。比如,content embedding的训练通常与业务目标是分开的,如何保证content embedding在业务场景中的效果呢(泛化性能)?如何利用业务相关的数据集或任务来调整content embedding呢?是否可以直接用业务相关的任务对content embedding进行end-to-end的训练?是提供内容理解的数据(比如像content embedding这种),还是提供内容理解的能力(比如算法模块等)更好呢?

Video embedding techniques involve the process of integrating video content into various platforms or applications. ### Techniques #### HTML5 Video Tag The most common and straightforward way to embed video on a web - page is by using the HTML5 `<video>` tag. This tag enables developers to specify the source of the video file and provides basic controls for playback. For example: ```html <video width="320" height="240" controls> <source src="video.mp4" type="video/mp4"> <source src="video.webm" type="video/webm"> Your browser does not support the video tag. </video> ``` Here, multiple source formats are provided to ensure compatibility across different browsers as different browsers support different video codecs. #### Iframe Embedding Embedding a video using an `<iframe>` is useful when the video is hosted on a third - party platform like YouTube or Vimeo. The iframe acts as a container that displays the video from the external source. For example, to embed a YouTube video: ```html <iframe width="560" height="315" src="https://www.youtube.com/embed/VIDEO_ID" frameborder="0" allow="accelerometer; autoplay; encrypted - media; gyroscope; picture - in - picture" allowfullscreen></iframe> ``` Replace `VIDEO_ID` with the actual ID of the YouTube video. #### JavaScript - based Embedding JavaScript can be used to dynamically embed videos. This is beneficial when you want to control the video's behavior more precisely, such as loading the video based on user interactions. For example: ```javascript const videoElement = document.createElement('video'); videoElement.src = 'video.mp4'; videoElement.controls = true; const container = document.getElementById('video - container'); container.appendChild(videoElement); ``` ### Applications #### E - learning Video embedding is extensively used in e - learning platforms. Teachers can embed educational videos, lectures, and demonstrations into their courses. This enhances the learning experience by providing visual and auditory content, making it easier for students to understand complex concepts. #### Social Media Social media platforms allow users to embed videos in their posts. This helps in sharing engaging content, such as short clips, vlogs, or promotional videos, with a large audience. It also increases user interaction and time spent on the platform. #### E - commerce In e - commerce, product videos can be embedded on product pages. These videos can showcase the product's features, usage, and benefits, which can influence a customer's purchasing decision. #### News Websites News websites embed videos of news events, interviews, and reports. This provides a more immersive and up - to - date way of consuming news compared to just text - based articles.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值