专栏首页AI科技大本营的专栏AI实践精选:通过图像与文本对电子商务产品进行分类

AI实践精选:通过图像与文本对电子商务产品进行分类

Christopher Bonnett 来自Summer 2016 New York Data Science Fellowship ,后为Insight中的一员。在Insight期间,他曾经在Lynks项目中,使用深度学习与自然语言处理等方法对电子产品进行分类。目前他是alpha-I公司的一名研究员。

我在Insight 公司工作期间,Y-combinator公司启动一个叫 Lynks的创业项目,当时我是这个项目的技术顾问。这个项目的目的很明确,就是为了让那些远在埃及的顾客,也可以在美国的电子网站上购买到那些最时髦的产品。这个项目价值巨大,因为先前,美国的电商不会接收海外订单。Lynks 项目的具体运作流程如下: Lynks 首先以消费者的名义,将他们要购买的商品放在一个“通用购物车”里,然后将消费者订购的商品运送到位于Delaware的仓库中.之后将用户的订单进行整合分类打包,将最终打包好的商品送到终端买家手中.

除了通过Lynks 仓库中转几天的商品外, Lynks 本身并没有库存。因此在理论上,Lynks 的商品除了那些消费者清单列表上的商品,没有任何其它东西。所有的商品都需要分类打包,但目前这一工作是靠人力完成的。为了使这一流程可以自动进行,我设计了一个模型来解决这个分类问题。

数据挖掘

首先我们应进行数据采集,采集的数据包括产品的图像及产品的相关描述信息。具体信息如下所示,可以看到下面的实例中包含Lynks添加的标签。

如图所示,图片信息与文字描述信息差异巨大。以图片信息为例,图片中的商品可以以任何形式展示,甚至包括穿在模特身上或纯衣服图片(即没有人穿时,衣服呈现的效果).同样,我们的文字描述形式也是多种多样的,细节描述的详尽程度也不相同,有的可以包括服装品牌信息,有的包含一些特定的描述。上述信息从结构到内容的多变性,是我们解决分类问题的一大挑战。在构建分类模型时,以上这些因素都是我们需要考虑的。

我们的项目目标很明确,给定一幅相关商品的图像和一段简短描述,预测Lynks员工会将该商品分为哪一类。但这其中也有不明确的地方,那就是如何对类别按照层次进行划分。原则上,如果我们能够构建一个理解并能够使用这种结构的模型,那么其分类效果必定会很好。假定我们构建了一个这样的原始模型。这个原始模型中忽略了类别之间的层级结构,同时假设这些类别是相互独立的。换句话说,我们在不知道类别‘Clothing>>Men>>Top’与类别‘Clothing>>Women>>Top’关系相近的情况下,预测商品属于‘Clothing>>Women>>Top’类。这样做尽管效果不会特别理想,但却简化了算法并且可以实现快速迭代。

这种算法最终可以将商品分为99类,但这些类别之间的数据是极不均衡的:即有的类别商品数据多,而有的类别商品数据却很少,甚至只有几个。在我们的模型中,我们仅对排名前10的类别商品进行处理(这类商品已经占到总数的50%)。之所以选择排名前十的商品,主要有两个原因:一、这些类别的数据较多,二、商品分布比较均匀。这样一来,我们就可以比较容易的找到一个有效的分类模型来对这些商品数据进行分类。

选择恰当的模型

由于图片信息与文本信息具有互补性,因此我打算将图片信息与文本信息融入到一个机器学习模型中。目前可采用的模型有多种,最终我采用了一种灵活、但能满足Lynks 公司项目需求的模型。

从图像中抽取信息

理解图像信息很难。尤其当图像有显著变化的时候,这会变得更难。目前用于图像分类最好的方法就是卷积神经网络(CNNS)。卷积神经网络在图像识别领域处于主导地位,这种方法的出现使得图像识别的准确率达到甚至超过了人类的水平。

卷积神经网络训练起来很难,因为训练一个模型不仅需要计算能力强大的GPU,还需要海量的数据。尽管目前我们数据不算少(大概有5000个训练样本),但还是没法与 Image-Net数据集相比,这个数据集有1000个类,120万个训练数据。因此我们可以利用 预先基于Image-Net的数据集训练好的神经网络模型。这样做是合理的,因为上述模型经过预训练后,已经获得了从原始图像里抽取有效特征的能力。

将预训先训练好的模型,应用于其他领域,进行学习的方法,我们称之为迁移学习。迁移学习的基本思想很简单,在一个训练集上训练一个模型,然后将训练好的模型应用于另一个数据集中。关于怎样将迁移学习应用到实际当中的细节问题,在这我就不细讲了,如果大家对这个比较感兴趣,可以关注François Chollet的教程,在教程中,他给出了一些关于迁移学习的指导。正如他所指出的一样,我使用了François’ Keras的深度学习库,这个库提供了一个已经预训练好的VGG-16卷积神经网络接口。想用的话,直接调用相关接口就可以了。直接调用这个VGG-16卷积神经网络接口,简直就是一个明智的选择,因为在2014年的Image-Net比赛中,VGG CNN架构性能最好,取得了第一名。

从文本中抽取信息

相对于图像数据,文本数据处理起来要更简单一点。标准的方法就是将文本用词袋模型表示,然后使用逻辑回归模型对文本进行处理,这种方法效果不错,因为出现的单词往往包含着很多的信息量。

但是,不同的文本包含的信息量是千差万别的。有的时候我们只需要知道一些简单的文本信息,就可以确定商品的类别(如:‘men’s shirt’),但有的时候文本中包含的信息量不是太多,导致我们无法根据文本描述对商品进行分类。例如,一件商品的描述中包括‘bronx 84 graphic t’,但由于这个短语中不包含任何性别信息,因此仅仅依靠这个短语,你很难分清这个产品到底是男装还是女装。正如我们前面所讲,在大多数情况下,我们的文本还是包含足够的信息量的,到时候我们可以采用文本信息与图像信息结合的方式来提高我们的模型性能。

信息融合

为了生成最终模型,这里我构建了一个神经网络模型,这个模型包括两部分,一部分为处理图像的卷积神经网络,一部分为处理词向量的部分。

上图就是图像+文本处理的模型结构。图片的左上部分是用来处理图像的卷积神经网络,右上部分是用词袋模型表示的文本向量。图形与文本集合做为最终模型的输入,模型输出就是商品所属类别(上面为输入,下面为输出。)

VGG神经网络负责对图像部分的处理(左上部分),一个简单的全连接神经网络负责对文本进行处理(右上部分),最后一层将两个模型的结果结合在一起做为一个新的输入,其输出就是商品的类别。

模型性能

正如我前面所讲的那样,我将使用一个即能处理图像又能处理文本的神经网络模型来对商品进行分类,这个组合模型要比那些单独处理图像或者文本的模型要更加庞大、更加复杂。为了理解与判断我们模型的效果提升程度,我们将文本模型、图像模型、组合模型分别对商品数据进行处理,比较三者之间的准确率。比较结果如下。

结果很有意思,纯文本模型要比纯图像模型效果稍好(同时对文本进行处理,要比处理图像容易得多)。然而从结果上来看,图像特征本身就是一个好的分类依据。虽然两者从不同的角度对商品进行分类,但是分类效果却差不多,所以我们有理由相信将两者结合后,分类效果必将得到提升。事实也是如此,当我们将两个模型进行融合后,我们发现分类效果提升明显。

为了达到Lynks的项目需求,我尝试对神经网络的层数和隐藏单元数进行微调。此外,优化的最终手段,在于训练得到一个比手动选择效果更好的卷积过滤层(convolutional filters)。这里我们使用的VGG 网络模型,是在Image-Net数据集上进行预训练的,这一数据集包含1000余个类别,但这其中没有服装或者时尚物品的相关类别。为了使预训练的网络适用于电子商务数据,我们对预训练网络的最后几层调整,使它能够提取那些来自于训练集商品中的特征,这一步我们称作是微调(fine tuning)。我选择对网络的最后3层进行调优。经过调优后,我们的商品分类准确率又提高了一个百分点,达到94%。具体结果如下图所示。

最终设想

将电子商品中的图片与文本信息以不同的方式进行组合,这是一件十分有趣的事。在考虑如何进行模型组合的过程中,数据数量、内容的多样性都是难以处理和解决的的挑战。但不管怎样,最终我设计的模型成功的降低了Lynk的人力成本。Lynks 项目组也对这一结果比较满意,目前他们正在考虑将我的模型融入到他们工作中去,以提高其工作效率。

如果想知道更多技术和探索过程中的细节,可以查看这里的原始版本(http://cbonnett.github.io/Insight.html)。


作者:克里斯托弗·邦尼特(Christopher Bonnett)

编译: AI100

原文地址:https://blog.insightdatascience.com/classifying-e-commerce-products-based-on-images-and-text-14b3f98f899e#.t6kdpaees


本文分享自微信公众号 - AI科技大本营(rgznai100)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-01-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • AI 技术讲座精选:数据科学的缺陷

    业内人士都知道,数据科学有很多缺陷。 模型是未知的 建立机器学习模型的目的是为了应用,而不是理解。 能解释清楚的也只有那些最简单的模型。线性模型第一眼看起来的...

    AI科技大本营
  • 程序员想搞机器学习?看看Nodejs之父这一年摸爬滚打的心路历程

    本文是Nodejs之父Ryan Dahl在Google Brain做了一年深度学习后的心得体会,他在那里的目标是用机器学习将卓别林的老电影自动修改到4K画质。他...

    AI科技大本营
  • 他在Google Brain实习了一年,总结出这么些心得

    作者 | Ryan Dahl 去年,在我研究TensorFlow出了一番成果后,我开始申请Google Brain的首届见习项目(Google Brain Re...

    AI科技大本营
  • 搜狐图文匹配算法大赛_方案分享

    参加这次比赛的初衷是作为机器学习课程的大作业,这两天写了课程报告,所以将报告内容修改了一下进行分享。 我所在的团队(“中国国家跳水队”,排名如队名,一度严重跳水...

    机器学习AI算法工程
  • 亚马逊的研究人员利用人工智能来提高文字识别能力

    光学字符识别(OCR),即将手写或印刷文本的图像转换成机器可读的文本,这是一门可以追溯到70年代初的科学,但长期以来,算法一直难以识别出与水平面不平行的字符,为...

    AiTechYun
  • 如何到top5%?NLP文本分类和情感分析竞赛总结

    笔者主要方向是KBQA,深深体会到竞赛是学习一个新领域最好的方式,这些比赛总的来说都属于文本分类领域,因此最近打算一起总结一下。

    Datawhale
  • 如何到top5%?NLP文本分类和情感分析竞赛总结

    笔者主要方向是KBQA,深深体会到竞赛是学习一个新领域最好的方式,这些比赛总的来说都属于文本分类领域,因此最近打算一起总结一下。

    zenRRan
  • 用深度学习(CNN RNN Attention)解决大规模文本分类问题 - 综述和实践

    近来在同时做一个应用深度学习解决淘宝商品的类目预测问题的项目,恰好硕士毕业时论文题目便是文本分类问题,趁此机会总结下文本分类领域特别是应用深度学习解决文本分类的...

    用户1908973
  • 自然语言处理--文本处理

    自然语言处理的目的是让机器试图理解和处理人类的文字。通常来说,人的语言是冗余的,含有歧义的,而机器是准确的,无歧义的,要让机器理解,这之间存在一个转换的问题。 ...

    linxinzhe
  • 这么多人用AI预测FIFA 2018,为什么总是会失败?

    【导读】7月16日凌晨,2018 年俄罗斯世界杯在法国与克罗地亚间一场精彩的对决后落下帷幕。法国队时隔20年再次托起大力神杯,克罗地亚队获得亚军,创造了一个又一...

    用户1737318

扫码关注云+社区

领取腾讯云代金券