Yelp是美国最大点评网站,拥有世界各地的Yelper上传的成千上万的照片。各种各样的照片给进入当地的商业提供了一个丰富的窗口。通过开发一个照片理解系统使Yelp能够创建有关个人照片的语义数据。跟Yelp第一次在基于内容的照片多样化方面所做的尝试一样,由系统生成的数据正在增强Yelp近期推出的封面照片多样化、标签式照片浏览等服务。 构建一个照片分类器对于理解照片中的模棱两可的目标,其实有许多不同的方式。一开始,为了帮助简化Yelp的问题,Yelp只专注于将照片分类为几个预定义的类。之后,Yelp又只专注于关于饭店的照片类别。 事实上将照片进行分类,就可以将其当做机器学习中的分类任务,需要开发一个分类器,Yelp首先需要做的就是收集训练数据,在图片分类任务中就是收集很多标签已知的照片。Yelp收集这些信息可以通过几种不同的方式:
一旦Yelp有了标签数据,Yelp就开始采用“AlexNet”形式的深度卷积神经网络(CNNs)来识别这些图片(因为这种方法是一种监督学习方法,非监督学习目前仍然是深度学习的难点方向)。CNNs是由多个卷积层组成,ReLU层、pooling层、局部响应正则化层和全连接层。Yelp的CNN被建立在基于Caffe架构的AWS EC2 GPU实例上。Yelp喜欢Caffe,因为它简单易用、高性能、模块化、开源、还一直在不断完善。为了应对Caffe的软件依赖,Yelp使用Docker封装了Yelp的CNN,以便它可以更容易地部署。 Yelp还创建了抽象,以确保Yelp的CNN可以很容易地与其他形式的分类器进行集成,包括CNN的不同实例。如下图所示,Yelp的基线是一个“Caffe分类器”,它通过Caffe的方式运行CNN;它是一个抽象分类器的一种特殊形式,可以采取不同的信号,并执行不同的分类算法。Yelp目前的“facade”分类器,是一个集成分类器,采用了不同分类结果的加权平均。如果Yelp决定进一步集成依赖于其它信号的新的分类器,这将让问题变得更加简单。 Yelp在一个均匀黄金分割的2500张照片的测试集上进行试验,Yelp目前的“facade”分类器的整体精确度达到了94%,召回率达到了70%。根据Yelp的描述,虽然这些数字绝对可以再提高,但Yelp发现对于下面描述的应用它们已经足够了。 照片分类服务Yelp使用面向服务的架构(SOA),Yelp做了一个RESTful照片分类服务,用来支持现有的和即将推出的Yelp的应用程序。由于服务预计拥有不止一个分类器(例如,不同的版本或为不同类型的业务),该服务API使用一个分类器ID,一个行业ID,以及可选的类,然后返回所有属于该行业的照片,其已经通过分类器被归类: Yelp使用一个标准的MySQL数据库服务器来承载所有的分类结果,所有的服务请求可以通过简单的数据库查询被处理。为了避免更昂贵的实时分类,因为Yelp目前的应用并不取决于最新的照片分类,所以Yelp只执行线下分类。该架构如下图所示:对于每一个新的分类器,Yelp扫描所有的照片,并且将分类结果存储在一个数据库中。扫描在计算上消耗很大,但通过将分类器在任意多的机器上进行并行处理,Yelp可以减轻这一点。扫描结束后,Yelp会每天自动收集新的照片,并将它们发送到一个进行分类和数据库负载的批次中: 应用:封面照片多样化一旦有了照片分类服务,就可以有效地增强Yelp的许多关键功能。Yelp的业务详细信息页面显示了一组“封面照片”,基于用户的反馈和某些照片的属性,它们能够通过照片评分引擎进行推荐。但是,目前Yelp的封面照片存在一个典型问题,即所选的照片缺乏多样性,例如,如下图所示,所有封面照片都是关于食物的(拉面),用户无法看到其他方面的照片,除非他们点击“查看全部”按钮。 一旦有了照片分类服务,就可以有效地增强Yelp的许多关键功能。Yelp的业务详细信息页面显示了一组“封面照片”,基于用户的反馈和某些照片的属性,它们能够通过照片评分引擎进行推荐。但是,目前Yelp的封面照片存在一个典型问题,即所选的照片缺乏多样性,例如,如下图所示,所有封面照片都是关于食物的(拉面),用户无法看到其他方面的照片,除非他们点击“查看全部”按钮。 通过照片分类服务,现在就可以让封面照片变得多样化,Yelp可以容易地确定最高得分的非食品的照片,然后将其纳入封面照片。通过严格的A / B测试,Yelp已经证实饭店的浏览者更愿意看到一个显示突出的“食品”照片和突出的“非食品”照片,以及两个小“食品”的照片和另外两个“非食品”照片,如下图所示。多样化大大增加了Yelp用户与照片之间的互动。 应用:标签式浏览照片因为任何人浏览Yelp照片都是在有了解之前,大部分来自于饭店的Yelp照片都是食物。但Yelp从用户中得到反馈,他们发现用户关心的可不仅仅是食物。有些人使用Yelp的图片用来检查一个特殊事件的气氛或导航到一个第一次去的地点,而其他人使用Yelp的照片用于一些更严肃的应用,如发现餐厅是否能容纳残疾的顾客。随着标签式照片浏览的推出,所有这些任务现在都变得更容易、更高效。 Yelp表示,标签式照片浏览是他们的照片分类服务现在提供的最显著的应用。照片现在在各自的标签(类)下进行组织;从下图可以看出,跳到你正在寻找的准确信息现在变得更加容易。 下一步是什么任何机器学习系统都不可能是完美的。Yelp表示,如果你想帮助提高Yelp照片分类的质量,请随意标注你看到的任何未分类的照片。 |