你真的懂深度学习吗?

内容来源:本文摘编电子工业出版社书籍《深度学习模型及应用详解》书评文章,本书作者 ,笔记侠经出版社授权发布。

封面设计 & 责编 | 丽丽

第 4381篇深度好文 : 5254 字 | 10 分钟阅读

读书笔记•人工智能

本文优质度:★★★+口感:焦糖玛奇朵

笔记君说:

当前,人工智能技术取得了前所未有的关注,在语音、视觉、自然语言处理及大数据等领域,都发挥了巨大的作用。人工智能作为一门理论与实践并重的学科,要求研究人员在理解相关理论的同时,也要了解如何在实际系统中应用人工智能技术。

——颜水成,依图科技CTO

一、什么是视觉搜索?

视觉搜索就是以图搜图,也是IT 企业巨资投入的技术领域,如Pinterest、eBay、Alibaba和Microsoft Bing等企业都在视觉搜索领域投入巨大。

视觉搜索是源自于内容的图像检索(CIBR)研究领域,主要用于输入图像后搜索到在视觉上呈现相似项目的排序列表。这对于电子商务领域来说尤其有价值,用户可以在系统中通过图片搜索产品,系统也可以向用户推荐基于图像内容的产品。

大家可以想象一个场景:一家广告服务商为视觉产品识别提供了一个广告搜索的API。

第三方网站可以利用API,从其所拥有的图片中获得产品推荐,或者用户从拍摄的照片中直接获得产品推荐。

通过向API发送图片,第三方网站可以收到多个视觉上相似的产品广告建议,从而向用户推荐。

用户通过点击广告来实现他们的购物意图。这样一来,第三方网站不仅可以提供以图搜图的用户体验,同时还能与广告API的提供者分享广告点击营收。

将视觉搜索搭建于产品广告之上,可以带来更独特的价值主张。若能在第三方网站利用视觉搜索推荐数十亿个可获利的产品广告,这不仅可以为第三方网站带来收入,还能提供额外更具吸引力的用户体验。

如下图所示,如果用其图片调用视觉搜索广告API,则可以在底部显示多个视觉上类似的广告。

二、视觉搜索技术

是如何应用和实现的?

准确率:我们利用GoogLeNet(亦称为Inception V1)来理解搜索图像。GoogLeNet模型是ImageNet Challenge(ILSVRC)的最新突破,对图像分类的准确率已经达到人类的水平。通过搜索图像的编码矢量进而用于产品广告中的ANN 搜索。

每个产品广告图像也使用相同的GoogLeNet模型编码。在查询点击信息和文本元数据的帮助下,在GoogLeNet模型中对1024维编码向量进行降维,得到的64维编码矢量可用于快速选择广告。

此外,我们还引入了精确图层,以进一步控制推荐广告的质量。该图层利用产品文本元数据和图像编码置信度得分来使其仅保留相关广告。

规模:为了在数十亿产品广告中快速搜索,我们为基于矢量的最近邻搜索构建分布式分区索引,聚合每个分区的结果以通过API返回。我们还利用分散系统来分配和负载平衡图像编码请求,这是工作流中最昂贵的部分。

1.选择图像DNN 编码器

我们尝试了几个DNN架构,包括ZFSPPNet1、GoogLeNet2等模型。首先将输入图像表示为编码向量,并同时将一些采样的广告图像表示为嵌入向量,然后观察向量上最短距离的广告图像是否与输入向量相似。

我们观察到GoogLeNet的表现优于ZFSPPNet,尤其是在被裁剪下来的小图像上识别产品时。最后,我们使用Bing搜索团队在Imagenet22K数据集上训练的GoogLeNet模型。

模型的细节可参照Szegedy所写的文章得到,而训练的过程是在不停地更新模型参数以缩小图像分类的错误。

输入图像在DNN的最后隐藏层被编码为1024维的浮点向量,图像中的信息如产品类型、产品颜色和纹理信息等都已嵌入其中。

但是,如此的向量大小对于数十亿产品广告中的ANN搜索来说还是太大。因此,我们使用以下的降维技术将1024维减少到64维以进行进一步的ANN搜索。

2.利用Rich-CDSSM降低维度

我们主要利用类似CDSSM的模型来降低维度,在此称为Rich-CDSSM。在产品数据库中,每个产品广告除了图像本身,还包括标题、颜色、适用性别、年龄、卖家名称,以及广告商提供的许多其他字段。

不仅可以利用文本信息,而且还可以利用查询和广告点击数据进行降维。用户查询包含许多关键信息,例如产品名称等。

当用户基于他输入的查询点击广告时,查询和文本数据都与图像有高度相关。根据此假设,Rich-CDSSM模型的每个训练样本都包含一个查询和产品的相关信息(查询,产品图像,产品标题,卖方名称)。如下图所示,模型训练由一方查询引导,另一方提供产品详细信息。

3

Rich-CDSSM如何将文本编码成矢量。简而言之,Rich-CDSSM模型使用三字母卷积网络将查询变换为64 维表示向量,如上图的左半部分所示。查询的每个单词先被切成多个三字母并转换成三字母出现频率向量。

举例来说,单词product被切成多个三字母——pr, pro, rod, odu, duc,uct, ct。三字母的词汇大小约为5万个,因此一个单词可被所有三字母出现频率的5 万维的矢量表示。

接下来,Rich-CDSSM先使用长度为3的卷积网络将每三个连续单词的5万矢量加总成288维向量序列,再用最大池化(max pooling)将多个288维向量总结为一个288维矢量以代表整个查询,最后使用一个完全连接投影层将288维转至64维。

运作细节可参照Huang所发表的文章。1相对于单词嵌入层,三字母向量表示方法可以避免出现未见词汇(out of vocabulary)的问题。

上图中查询的另一边,每个产品细节(标题、图像和卖方名称)都嵌入64 维向量,然后使用投影层组合成单个64 维向量。

我们使用1024维的GoogLeNet向量作为图像,并使用两个完全连接的层(第一层从1024维到288维,第二层从288维到64维)将其进一步缩小到64维。

产品标题和卖家名称文本也会像查询一样处理,并减少到64维。因此,我们最终得到两个64维的向量,分别代表查询和产品。

此模型训练的目标是将所有点击对的向量间余弦相似度最大化,反之,此训练过程会采样负对(不相关的对),并对负对的向量余弦相似度做最小化处理。

总的来说,这个方法由相关查询和产品详细信息作为引导,从而将GoogLeNet向量的维度从1024维减少到64维。

最后,我们将这两个用来减少图像矢量维数的完全连接层(1024→288和288→64),用于输入查询图像及构建广告索引。

3.如何检验我们提出的模型是否最佳?

有两种方法:一种方法是将所有文本信息(查询、产品标题、产品卖方名称)移动到一方,并且仅在另一方保留报价图像。

这可以避免图像矢量缩减器的懒惰:

如果产品标题DNN 部分已经产生匹配查询意图的关键信息,那么在训练期间,图像的两个完全连接层可能不会被激励提取相同的信息,以致在使用时可能丢失一些关键信息。

另一种方法是在框架中添加更多的产品相关数据,例如价格、品牌、颜色、性别和年龄组,以进行更精确的降维。

三、如何提高图像搜索和推荐效率?

即使向量维数为64维,我们也不可能通过线性搜索来推荐如此大的广告语料库。

于是我们采用邻域图搜索方法1,又称为NGS,用NGS来构建快速检索索引。NGS离线构建邻域图用于索引广告产品数据点,在线检索期间,它能在邻域图进行本地搜索,用best-first search扩展邻域。

除此之外,我们还对广告语料库进行分区并构建多个索引,因此每个请求都将广播到分区,以便用并行分布式进行检索。

因此,检索有极高的效率,在99百分位数下花费的时间不到5ms。我们用了较小的距离阈值以确保更好的召回率。

1.应用精密层控制搜索质量

通过NGS,系统可以快速检索产品广告,其重点是提高相关产品的召回率。在使用NGS之后,我们实施了一个精密层来控制推荐质量。

精密层基于机器学习模型,提取图像和产品的特征来学习人类所标注的标签。

我们为评委设计了一个指南,根据应该匹配的几个关键点,让评委给每个对标记上多尺度标签。

举例来说,最重要的是,查询图像中的产品需要与所选广告产品的类别相符。如果产品不匹配,则该对应被视为不良。

另外,如果产品类型相符,且品牌、颜色或适用性别也匹配,则该对更具相关性, 应得到更好的尺度标签。

作为第一步,我们使用二元标签“defect,not-defect”来训练决策树的模型,并在预估分数低于阈值时将NGS选择的广告过滤掉。

2.如何抽取图像的特征并匹配产品广告

首先,我们使用与NGS一样的64维向量余弦相似度作为最基础的(查询图像,产品广告)图像相似特征。

然后,运行另一个GoogLeNet模型来预测输入图像的产品类别,总共大约有1000个产品类别。我们将查询图像的前3个预测类别和置信度分数用作特征。

查询图像的产品类别和所选广告产品类别是否相符是一个很重要的特征。另外,置信度分数对于抑制不良广告特别有用。

当输入图像较为困难时,例如图像模糊、产品图像被裁剪得不完整等,产品类别的置信度得分通常较低,所选择的广告也常不相关,人为标签也是如此。

该模型可以将置信度得分与标签相关联,并降低模型得分以进行过滤。

请注意,广告的类别预测不仅基于产品图像本身,还基于文本元数据(如标题),因此,产品的类别预测通常比较准确。

在这个模型下,读者可以想象,还有许多特征可以控制产品广告的质量,例如产品主色、适用性别、品牌或Logo等。

这些图像特征可以用另外事先训练好的模型抓取。同时,使用OCR在产品图像上检测到的字词也能与产品广告的文本数据比较。

3.又是什么系统支持这大量图像的运转?

如下图所示为API 背后的端到端服务系统。为了处理大量传入的查询图像,我们部署了负载均衡的分布式服务系统,称为深度学习推理系统。

首先,此系统利用Rich-CDSSM模型,将查询图像的1024维像素编码(GoogLeNet 隐藏矢量)降低到64维。然后,将该向量发送到分布式NGS索引以进行ANN搜索。

每个分区根据编码矢量的距离及精确层模型的分数返回前K个最佳结果。精确层与NGS索引放在广告相同的分区机器上,以便存取并共享广告的数据。

所有分区的结果进一步汇总并重新排序,以选择最佳的视觉相似结果。此处,还会应用基于出价的竞价,以便选择出价高、获利更高的广告。

举个例子:根据产品广告流量评估API的精确度

取样10000个在3个月内最常展示的广告,代表用户最常见且最关心的产品。产品广告涵盖了30个不同根类别和2048个叶类别。如下图所示为关于餐桌的广告图像,我们将这些广告图像作为查询图像来访问系统。

将每个查询广告的类别、颜色和品牌作为基本事实标准(ground truth),并将它们与系统返回的前20个广告中最受欢迎的类别、颜色和品牌进行比较。

Top1与Top3产品的准确率可以在下图中找到。

请注意,这里所展示的数字绝对值只能作为参考,但读者可以从数字相对大小的趋势来理解各种方法的优劣,以及不同类型产品有不同的判断难度。

在上图中显示,对于厨房和家庭用品(kitchen housewares)、珠宝和手(jewelry watches)、家居饰品(home furnishings)、服装和鞋类(clothingshoes)等热类别,该系统在根类别预测方面可达到82%的Top1 准确率,90%的Top3 准确率。

对于所有类别的产品图像,根类别预测为61%Top1准确率和76%的Top3准确率,叶类别预测具有45%的Top1准确率和60%的Top3准确率。对于服装、鞋类、珠宝和手表等时尚产品,叶类别Top3的准确率可分别为70%和73%。

视觉产品搜索系统的最大问题主要是查询图像的复杂性,如果图上有多个产品对象(桌子和椅子),而且图像的背景是复杂的,这种图像会增加视觉产品搜索的难度。

品牌准确率在不同的产品类别中有所不同,它在计算机类(computing)中具有61%的Top1准确率,在珠宝和手表中却具有10%的Top1准确率。

预测品牌非常具有挑战性,特别是当品牌标识很小且部分被遮挡时,有时甚至在图像上用肉眼也无法观察到产品的品牌信息。

可以训练独立的模型直接从图像中抽取品牌信息,例如一些品牌名称、Logo或特殊品牌产品设计。

对于具有多种颜色的产品,我们不仅需要专注于它们的第一个主导颜色,而且要将广告商提供的颜色值从“白色”“黑色”“灰色”“红色”等扩展到RGB 或HSV 中明确定义的颜色段,以便于判断色彩相近程度。

至于Rich-CDSSM模型,我们使用5500万个点击对训练模型。对于精密层中的相关性模型,使用5000个标记对训练模型,并交叉验证AUC来评估。

若以NGS 一样的64维向量余弦相似度作为单一特征,AUC得分为0.73;而使用所有特征来训练决策树的模型,AVC得分为0.83。

通过发送1000个图像请求,并计算平均值来测量API延迟。API的平均延迟时间为283ms,只比一般文本查询请求慢约5%。

四、各大团队在视觉搜索方面

还有什么经验?

我们基于低维的图像编码向量,建立快速ANN搜索机制,来实现以图搜图。利用Rich- CDSSM模型来减少GoogLeNet 1024维编码向量的维度,使用产品广告的文本元数据和搜索查询作为指南。

Bing搜索团队也进行了降维,但他们使用PCA(主成分分析)直接在图像编码向量上进行降维。我们的ANN选择方法不同于Bing搜索团队和Pinterest的传统信息检索方法。

Bing 使用“视觉词”建构索引:GoogLeNet 1024维向量到 PCA输出的100个维度中的每4个维度,Bing搜索团队将每4个浮点数聚类为256个聚类,聚类的ID则可视为单词,即“视觉词”。

eBay团队将图像向量直接转换为二进制文件,以便根据汉明距离进行快速检索。

在所有视觉搜索产品(Pinterest、eBay、Bing 搜索、阿里巴巴)中,都有一个准确率和一个排名层来优化所选结果。

诸多系统也都是通过提取特征来训练模型以学习人为标签或用户点击行为的。

而抽取的特征也类似:包括抽取的类别和颜色、预测的置信度,以及诸如产品标题或图像标题的文本元数据。

*文章为作者独立观点,不代表笔记侠立场。

笔记侠好文推荐:

数字化转型的4大价值

吴军:比不被拥护更可怕的,是连质疑声都没有

没有态度,不成品牌

嘿,你在看吗?

雪球转发:1回复:0喜欢:24