【翻译】Matching Restaurant Menus to Crowdsourced Food Data【KDD 2017】

将餐厅菜单与众包食品数据相匹配–可扩展的机器学习方法

摘要:

我们研究如何将一个正式结构化的餐馆菜单项目与通过众包收集的较少结构化食品的大型数据库相匹配的问题。乍一看,这个问题看起来像是一个典型的文本匹配问题,可能用现有的文本相似性学习方法来解决。然而,由于我们的场景的独特性和可扩展性的需要,我们的问题对我们可以使用的可能的机器学习方法施加了一定的限制。我们提出了一个新颖,实用和可扩展的机器学习解决方案架构,包括两个主要步骤。首先,我们使用基于马尔可夫决策过程算法的查询生成方法来减少搜索匹配候选的时间复杂度。然后再使用深度学习技术进行重新排序,以达到我们所要求的匹配质量目标。值得注意的是,我们提出的解决方案体系结构已经部署在为数千万用户提供服务的实际应用系统中,并且显示出用户输入的文本与结构化文本匹配的实际案例的巨大潜力,特别是在可伸缩性至关重要时。
关键词: 短文本匹配,营养评估,卷积神经网络,马尔可夫决策过程

1 介绍

    当今由应用驱动的市场导致需要整合并连接以非常不同的方式收集和构建的数据源。 连接不同数据的问题并不是一个新的问题,但是数据的性质和特点会导致很大的困难,即使在这样一个被广泛研究的话题中。 具体来说,我们在这里的检查集中在一个问题上,即将短而结构化的文本与从更大的非结构化短文本数据库中提取的项目进行匹配。 我们提出的解决方案是一种多级体系结构,通过查询生成过程来传递结构化文本,然后使用卷积神经网络作为基础,通过深度学习模型对返回的结果进行重新排序,从而生成一个概率向量, 候选项目与查询有关。
    作为分析基石的数据来源是通过一个应用程序来收集的,该应用程序允许用户追踪锻炼,饮食习惯和体重减轻。 MyFitnessPal(MFP)是一款免费的健康和健身应用程序,提供Android,iOS和网页格式,通过跟踪营养和身体活动,帮助人们设置和实现个性化的健康目标。事实上,MFP在Apple App Store和Google Play中的健康和健身类别一直排名第一。通过跟踪他们的健康和营养,MFP使用户能够获得见解,帮助他们做出更明智的选择并建立更健康的习惯。在设定个人健身目标之后,用户可以目视检查他们的健身和减肥进度。 MFPfis食品数据 - 即营养成分和食品描述 - 是通过用户输入构建的。在表1中,我们展示了多功能榛子咖啡的食品数据库。虽然MFPfis数据库由于依赖众包而无法保证营养的准确性,但应用程序的大受欢迎程度部分地说明了其食品数据库的质量,该数据库由数以亿计的食品和数以百亿计的单个食品组成条目。
    这个数据库本身可以提供许多关于用户饮食行为的见解,但是一个缺失的因素是能够根据用户的位置向用户展示实时食物匹配。在现实世界中,这意味着能够将数据库食物与餐厅菜单相匹配,餐馆菜单与地点的地理定位点相关联。与此相关的是,MFP用户一直要求的一个产品功能是“餐厅记录”(RL),或者,MFP应该允许其用户在基于菜单的餐馆外出时登录食物。这个功能在2015年首次推出,包括3个步骤:(1)场地导航步骤,用户可以选择他们吃过的餐厅。 (2)菜单导航步骤,用户可以访问他们选择的给定餐馆的菜单数据。 (3)记录步骤,用户从给定的菜单中选择已经吃掉的食物并记录所选择的食物。尽管几家大型食品连锁餐厅在其菜单中提供营养信息,但餐厅菜单中的大多数食品并没有直接相关的营养信息。因此,如果给定的食物可用,或者至少存在于DB中的大致营养,通过从MFP的食物DB检索完全匹配来补充餐馆菜单中的每个食物具有准确的营养信息变得至关重要。 然而,类似于不能保证营养的准确性,也不能保证餐馆的菜单项必然存在于应用程序食品数据库中,除非用户以前特别加了它。 如果找不到给定的餐馆食物,则最好的选择是匹配给定的食物项目,该食物项目在语义上最接近给定的餐馆食物项目。 我们把这个问题称为餐厅食物搭配。 更准确地说,在8餐厅2餐厅菜单中,餐厅食品配对试图学习函数M
这里写图片描述
这里写图片描述
这里写图片描述
    乍看之下,餐厅食品匹配问题在性质上与先前研究的文本匹配问题看起来相似,灵敏度散列(LSH)[12]或改进的基于邻域的算法[28]似乎很诱人。然而,由于待匹配的给定文本(即餐馆菜单项)和应用数据库中的匹配文本(即具有其描述的食物项目)的长度都较短,所以我们的餐厅食物匹配问题具有其自身的特征。另外,每个单词的词汇和语法结构对整体准确性的影响要大于标准设置的情况:“意大利面条肉酱”需要与“肉酱意大利面条”区别对待。对整体匹配的准确性有显着的影响:“巧克力牛奶”应该与“牛奶巧克力”区别对待。所有这些细微差别结合起来使以前的文字匹配问题的直接应用成为一个挑战。最后,菜单文本数据通常具有高度结构化的形式,具有诸如场所名称,菜单部分名称和项目本身的信息;同时,由于用户输入的随机噪声 - 错误拼写,错误字段中的信息等,来自我们众包数据库的食物远没有接近相同的一致性。
这里写图片描述
    我们的餐厅食品配对问题的一个额外和关键的要求是,它的匹配速度在实践中必须接近实时,并且理想的是以最小的额外系统开销。以LSH为例,将LSH应用到大量项目中有很大的开销,特别是当我们的目标是快速的性能达到并发查询的要求时。在这个规模应用LSH具有几个挑战:维护大量的哈希表,以实现高精度和召回;由于LSH是主存储器算法,因此扩展LSH需要分布式实现;而且为LSH设置关键参数存在固有的困难,以避免过多的内存消耗或次优性能[27]。因此,我们提出了一个高度优化的解决方案体系结构的可扩展性,同时使我们能够克服我们的匹配问题的复杂性,把我们的问题分解成两个不同的子问题,查询生成和重新排序。图2说明了我们提出的解决方案的高级架构。第一步是为了匹配食物的候选集合构建,而第二步是指在给定的匹配可能的食物项目领域中选择最好的食物项目。在查询生成步骤中,即使匹配候选集合的总体质量可能最终是次优的,构建待匹配的食物项目的初始候选集合的复杂度也应该是合理的。为了在初始候选集合建立期间处理这种潜在的次最优性,采用最复杂/先进的可用机器学习技术来达到我们所要求的质量目标并处理我们数据的特性是很重要的。对于这两个问题,我们采用先进的机器学习技术,并运行实验,将我们提出的方法与一些传统方法进行比较,以表明我们提出的解决方案体系结构可以胜过更基本的模型。

2查询生成算法

    如前所述,我们将餐馆食物匹配问题分解为两个子问题:(a)为给定的食物项目生成匹配的候选人;(b)根据与输入的餐馆食物名称的相似性重新排列候选者集合。在本节中,我们提出了解决第一个子问题的算法。 在高层次上,算法采用三重字符串(餐厅名称,菜单名称和项目名称)作为输入,并生成最相关的查询(请参阅图2)。 这个算法从此被称为查询生成(QG)。

2.1相关工作

    查询优化问题近年来在文献中得到了很好的研究。 这个问题包括基于搜索结果和用户反馈修改用户输入的原始查询[19,23,25]。 这个问题的迭代性质和用户反馈的部分存在使得它非常适合强化学习框架。 使用马尔可夫决策过程(MDP)[14]是解决这个问题的最着名的技术之一[8]。 然而,这里解决的问题与传统的查询细化有很大的不同,原因有很多。
    第一个挑战涉及餐厅食物名称的独特和复杂的性质。 更具体地说,食物名称的平均长度往往非常短(<20),因此在生成最佳查询时特定单词的存在或不存在可能是关键的。 这使得不可能直接应用任何标准的基于tf-idf的技术[8],因为术语频率在大多数情况下是0/1。 此外,餐馆倾向于使用各种不同的格式在他们的菜单中组织他们的食物。 例如,“凯撒沙拉”可能属于“开胃菜”或“沙拉”部分。 作为一个更复杂的例子,食物可能与节标题不同,因为在“沙拉和三文治”一节中发现的“凯撒”可以指“凯撒沙拉”(例如,在Panera面包上)或“凯撒三明治”(例如, 在地铁)。
    其次,在我们的设置中,我们缺乏用户交互数据,这是任何强化学习技术的基本组成部分。 在我们的问题场景中,用户只能访问每个餐馆食物的匹配食物候选人的最终重新排列的列表,而用于检索候选集的实际查询是隐藏的。 因此,与用于查询细化和会话搜索问题的标准算法相比,我们的方法在本质上显着不同[3,8,13]。 在没有用户反馈的情况下,伪相关反馈(PRF)方法是解决查询扩展问题的一种方法[1,20]。 然而,这些方法并不直接适用于我们的情况,因为通常在PRF下用户输入查询,则该算法的目的是以无监督的方式扩展它。 在我们的例子中,即使查询初始化也没有用户输入可用,这意味着初始查询仅基于餐馆食物的名称来创建。
    为了解决上述挑战,我们提出了一种迭代机器学习算法,它主要受MDP技术的启发。 给定餐馆名称,菜单名称和食物项目名称的组合全部词汇的集合,学习算法以迭代方式为查询中的每个词语分配最佳权重。 然后根据计算的权重决定保留或删除每个术语。 由于在这个过程中没有真实的用户信号,所以在每次迭代中响应于查询的最高K个搜索结果用作修改权向量的反馈机制。 在下一节中,我们提出的模型更详细地解释。

2.2马尔可夫决策过程算法

    在建议的MDP设置中,系统状态q在迭代k中是当前查询字符串,它被传递给搜索服务。查询字符串由一组项,ti,表示,即q(k)= {t1, t2, ……, tn}。一组行为A = {aj}包含在当前查询中保留,添加或删除项,以便创建一个新的(希望更相关的)项。模型的动态是由转移函数T(q‘ | q; aj)来控制的,该转移函数定义了采取某个行动aj的概率,将当前查询q转换为q’。奖励函数R(q; aj)评估在任何给定查询q上采取的每个(可行)动作aj,并且被定义为响应于新查询q‘检索到的搜索结果的最大相关性分数。最后,y属于[0,1]是控制以前访问状态的重要性的折扣因子。相应地,MDP模型的目的是为了找到在V *(q)表示的初始状态下依次进行的最佳动作集合。这个最佳策略是使用众所周知的Bellman方程[14]获得的:
这里写图片描述
    价值迭代(VI)方法[24]是MDP模型的标准解决方案。 给定每个状态所定义的回报函数(R(.))和转移函数(T(.)),VI 基于旧的效用值(Vi*)评估迭代i+1中每个状态下的效用(V*i+1(.))。
在当前的问题中,可以基于搜索结果中每个查询字符串的流行度来估计转换函数,并指定从一个查询移动到另一个查询的概率。 然而,由于涉及大量的时间和空间复杂性,经典的VI技术在这里不是直接适用的。 给定大小为n的初始查询,在这个标准模型中有2^n种可能的状态,产生一个大小为2^n * 2^n的转换矩阵。 在这种转换矩阵上执行计算在实践中是不可行的。
    或者,基于“术语流行”的概念,我们提出了一种迭代/贪婪的技术,以逼近方程1中的最优策略。所提出的技术为每个单独的查询词赋予一个权重值。 权重是结果集中每个术语受欢迎度的度量,因此它们根据每次迭代的搜索结果进行更新。 因此,采取适当的行动来保持/添加/删除当前查询的条件。 虽然术语加权在会话搜索[8]和信息过滤[22]中很受欢迎,但由于缺少任何用户反馈,使得我们的方法大不相同。 就我们所知,在文献中没有类似的词汇加权技术来从头开始生成最相关的查询,没有任何类型的用户反馈循环,并且纯粹基于返回的搜索结果。
    假设q ^(k-1)= {t1,t2,……,tn}是传递给搜索服务的查询词集,迭代k-1,令D ^(k)= {d1,……, dj}为搜索服务对q ^(k-1)的响应所得到的文档集。然后,权向量更新方程写为:
这里写图片描述
    其中P(ti | D ^(k-1))= [0,1]表示在查询中分配给项ti的权重,一旦观察到文档集合D ^(k-1),并且γ= 0,1)是折扣因子。
    此外,P(dj | q ^(k-1))= [0,1]表示文档dj对给定查询的相关性分数,可以使用任何字符串相似性度量(例如Jaccard或Edit距离[ 5]),或者可以分配由搜索服务给出的相关性分数值。
    最后,P(ti | dj)这个术语表示文档dj中ti项的贡献,通常由P(ti | dj)=#(ti,dj)/ | dj | 其中分子和分母分别表示文献dj中词项ti的频率和dj的长度。 根据2,每个搜索结果都会根据其与整个查询的总体相关性来改变术语权重。 请注意,在每次迭代中,搜索列表中文档的原始排名不一定是理想的。 因此,我们在更新过程中使用了字符串相似性度量,而不是基于秩的分数(例如,1 / r,1 /(log(r)+1))。 接下来,从方程2得到的新的权向量需要对[0,1]值进行归一化。
这里写图片描述
    给定一个三元组(餐厅名称,菜单名称,食品名称),该算法将q ^(0)初始化为输入三元组中所有项的联合,权重相等。在每次迭代k-1时,查询字符串q ^(k-1)被发送到搜索服务,并且检索最高K个结果列表(D ^ k)。我们采用了一个自定义的弹性搜索服务,它返回每个查询字符串的相关文档列表,根据TF-IDF分数和用户点击历史记录的组合进行排序。接下来,使用等式2来更新对应于q ^(k-1)中的项的权重。尽管这个方程中的所有项都是正的,但是由于方程(3)中的归一化步骤,一些项的权重可能随时间变小。一旦在每次迭代之后更新术语权重,基于新的权重对每个术语采取可行的操作之一(aj)。在我们的实验中,权重<0.1或> 0.2的术语分别从查询字符串中删除/添加到查询字符串中。最后,当新的和旧的权向量之间的(欧几里得)距离小于一个阈值(例如0.001)时,我们的算法停止。虽然我们提出的技术是方程1中MDP模型的一种近似技术,但是它的有效性和效率是通过对实际数据的实验来展示的。
这里写图片描述
这里写图片描述

2.3查询生成结果

    在这个实验中,从随机餐馆中选择500个项目并输入到QG中。我们使用三个不同的值作为文档权重,在等式(2)中:(1)由搜索服务给出的dj和q ^(k-1)之间的相关性分数 (2)检索文档的排名,即P(dj | q ^(k-1))= 1 / j,任意j,(3)不加权,即P(dj | q ^ k-1))= 1;任意j。 图3展示了这个比较。 所有三个模型的平均精度在5次迭代后收敛,所以这些图只限于前5次迭代。 可以看出,搜索服务返回的相关性分数提供了最好的精度。 这是因为相关性得分不仅考虑了常用的字符串相似性度量(即TF-IDF),还考虑了用户的点击/日志历史记录,这产生了一个更智能的加权模型。
    此外,图4示出了关于输入三元组中的词的数量,使用第一加权方案的最佳查询的平均长度。 可以看出,最佳查询的长度不会像输入大小那样快速增长。 这很重要,因为在大多数情况下,长输入名称是由于存在额外/不相关的术语,因此在包含在查询字符串中时可能会产生问题。
    表2提供了所提出的查询生成算法的结果,用于三个样本输入。 在第一个例子中,餐馆名称中的“餐厅”和“啤酒屋”以及菜单部分名称中的“开胃菜”和“可分享”被删除,这主要是因为它们不经常与 MFP食品数据库中的其他词汇一起使用。 同样,术语“专业”从第二个例子中的菜单名称中删除。 在第三个示例中,餐厅名称不受欢迎,菜单名称意味着意大利语中的“开胃菜”,因此类似的原因,两者都不包括在最终查询中。

3重新排名

    在本节中,我们提出了从查询生成算法中提取匹配候选者的重新排序算法。 重新排序算法对质量结果的需求很高。 这是因为重新排序过程还需要补偿查询生成期间可能发生的任何质量不良情况。 虽然这个任务和经典的重排算法有几个相似之处,但与食物相关的数据所带来的独特细微差别要求我们超越现有的技术来达到令人满意的结果质量阈值。

3.1相关工作

    学习排名在过去的十年中是一个研究得很好的问题,它涉及到一个给定查询的一组文档的排名[9,18]。 基于每个学习实例的生成方式,现有方法通常分为三个主要类别。 在逐点排序方法中,每一对(查询,doc)被标记为相关或不相关,然后对预测标签和预测置信度对文档进行排序[6,26]。 成对的方法采用形式的三元组(query,doc1,doc2),并且与doc2相比,估计doc1与查询更相关的概率。 这些相对概率然后被利用来重新排列候选人[10]。 在列表方法中,查询和整个文档列表被视为一个单独的学习样本,排名发生在整个候选列表[2]。
    选择合适的特征提取技术是这些重新排序算法中的基本步骤。 一种广泛使用的方法是使用复杂的词法,句法和语义特征对输入文本对进行编码,然后计算这些表示之间的各种相似性度量[18,21,26]。 在许多情况下,重排序算法的最终学习质量在很大程度上取决于找到输入文本对的正确表示。 在我们的特定情况下,由于食物名称的长度和缺乏外部知识源,直接应用先前的技术在我们的特征提取任务中是不可行的。
这里写图片描述
    卷积神经网络(CNN)[16,17]的出现为复杂的,主要是启发式的特征工程任务开辟了新的选择,通常应用于图像数据。 近年来,更多基于CNN的方法被提出用于基于文本的分析。 从图像研究中获得灵感,通常的概念是将输入文本转换为嵌入矩阵,然后通过几个卷积层馈送该矩阵[7,15,29]。 这个类别中的许多算法都是基于字级嵌入,其中一个特征向量被分配给每个单独的字或者一个字符级的嵌入,其中未知的特征向量被分配给每个字符[30]。
    我们提出了CNN体系结构的各种形式,遵循[26]和[11]中的短文本匹配方法的结构。 所提出的架构足够灵活,以注入字和字符级嵌入。 与[30]中提出的字符级嵌入不同,我们不通过预定义的稀疏向量对字符进行编码,而是允许在训练过程中学习嵌入。 由于我们的食品数据库是通过众包来构建的,因此非常容易受到拼写错误的影响。 为了比较,我们使用两种方法呈现实验结果。

3.2主要算法

    解决食物重新排序问题的初始努力涉及一种逐点SVM算法,在具有相关或不相关标签的v =φ(q,f)实例上训练,其中q和f是查询餐馆食物和数据库食物名称,v是通过函数φ(.)提取的特征向量。选择合适的特征提取函数,即φ(.)是一个挑战。我们选择使用基于众所周知的字符串相似性度量的一组特征来组合以形成单个向量。这些低级功能包括餐厅食物和当前数据库候选人的不同组合之间的Jaccard和Edit距离。对于{餐馆名称,菜单名称,项目名称}的形式查询和{品牌名称,描述}类型的数据库食物候选者,计算关于(餐厅名称,品牌名称),(项目名称,描述),(项目名称+菜单名称,描述)等的字符串相似度分数,并且附在一起形成大小为28的矢量。虽然上述使用RBF核的SVM技术在小规模训练数据上提供了合理的精度,却不能概括更大/更复杂的数据集。由于低级别启发式特征提取和高级语义复杂性之间存在相当大的差距,所以这是可以预料的。
    我们发现一个非常适合这个应用程序的CNN架构,因为它允许模型学习输入食物名称的最佳表示以及相似函数,以监督的方式将它们与大量的食物名称数据库联系起来。 这种特殊匹配问题的复杂性远远超出了标准特征提取工具的能力,因为在某些情况下,即使是非专业人员也可能无法做出正确的预测。 此外,在我们的数据库中配备了数以百万计的输入文字食品,以及50万餐厅菜单结构的项目,我们能够为CNN提供大量的训练数据,这对于任何深度学习都很重要。
    所提出的CNN模型基于逐点学习方法,以从数据库(候选)中为每对餐馆项目(查询)和食物分配相关/不相关的标签。 该体系结构包含2个组件相似的卷积网络,但分别进行了训练。 这些网络创建两个密集的特征向量,对应于查询和候选者。 然后使用完全连接的层以及最终的softmax层来组合密集的特征向量并将它们变换成相关/不相关的两长度概率向量。
    这里提出了两种不同的CNN体系结构进行测试,二者之间的区别取决于嵌入的类型,是字级还是字符级? 单词级别的方法带来的好处是使用基于比CNN模型本身在这个专门的应用中可能使用的更大的语料库的预训练嵌入模型。 作为一个反作用,通过将嵌入过程本身直接包含到CNN模型的训练中,字符级架构更加灵活。 鉴于这些差异,我们构建了一个灵活的架构,既能够测试两者,又能持续保持CNN的其他方面。
    对于词级嵌入CNN(wCNN),我们使用Word2Vec [21]来表示每个词,通过大小e=200的数值特征向量.为此,一个Word2Vec模型被训练在一个更大的收集食品名称语料库,超过5M独特的食品条目。一个输入矩阵是通过零填充字列的数量到最大L = 20来创建的,并且如果它延伸超过20个字,则截断食物名称。 wCNN模型的过滤器宽度设置为w = 3,或者在三字节长度窗口中查看每个项目。字符级嵌入CNN(cCNN)需要不同的参数。 cCNN的主要优点是在训练中通过反向传播学习嵌入权重的能力。字符集仅限于罗马字母和空格字符,将学习的嵌入次数保持为27.我们为每个字符分配一个大小为e = 10的未知向量,这是cCNN训练时学习到的。每个食物名称的最大字符数被设置为L = 100,如果一个单词少于100个字符,则再填充0,如果一个单词多了,则截断。然后将cCNN的滤波器宽度设置为仅考虑5个邻居的移动窗口中的字符。
这里写图片描述
    每个查询/匹配卷积层的输入是大小为e * L的嵌入矩阵,其中e和L是嵌入矢量大小和文本的最大长度(见图5)。在每个卷积网络中,有1个卷积层,其中n = 50个大小为w * e的滤波器,其后是ReLU层。存储体中的每个卷积滤波器输出大小v = L-w + 1的向量。接下来,将从该过滤器组产生的50个1 * v向量最大化汇集成单个稠密向量。因此,在wCNN和cCNN中,用于查询和候选串的两个并行卷积网络的输出是一对密度特征向量,每个密度特征向量的大小为1 * v。为了组合这两个密集向量,卷积层之后是2个完全连接(FC)层。第一层将大小为1 * 2v的输入(组合)向量转换为大小为1 * 10的较小向量。该向量通过第二层进一步收缩成1 * 2向量。每个FC层之后有一个ReLU层。最后,在这个向量之上应用一个softmax层,产生最终的大小为2的概率向量,其中每个分量对应于相关/不相关的类成员的概率。 CNN的实现是在Theano的后端使用Keras [4]进行的。此外,在每个卷积层顶部的wCNN和cCNN中使用0.5的释放参数以防止过度拟合。

4 实验
4.1结果

    在本节中,我们将比较前面提到的CNN方法和基本SVM算法的性能。收集一组1M标记的样品以训练每种方法。为了评估性能,一组4K实例被专家贴上标签,形成我们的第一个测试集。包含100K实例的第二个测试集是从一组用户选择食物的隐式反馈中创建的。用户经常记录的项目被认为是餐馆食品的“相关”匹配,而“不相关”匹配是用户经常跳过的食品,以选择更好的替代品。这两个测试集分别被称为手动标记和用户标记。对每个数据集上的每种方法进行一组5次验证,平均准确度值在表3中报告。表3的最左边部分显示了每种技术的准确性,当在训练集的随机分区上进行测试时。可以看出,支持向量机能够提供超过10K样本的有竞争力的精度,但是对于更大的集合,单词级别的CNN方法如预期的那样以更高的利润率胜过SVM分类器。
    很明显,与竞争方法相比,单词级嵌入最适合1M大小的训练数据。这并不奇怪,因为基于CNN的方法能够通过更大的训练集学习更多的特征复杂度,而支持向量机仅限于启发式选择的特征,这与训练大小无关。同时,cCNN在手标数据上达到了与wCNN类似的精度,但在训练和用户标记的实验上落后于SVM。由于cCNN在模型训练时正在学习它的嵌入,所以它的弱点可能是由于像在SVM中丢失预处理的优点和/或在wCNN中嵌入更大的语料库的优点。我们还应该强调,在基线流程中向用户建议的候选食物最初是使用与用作基线比较的相同的SVM方法估计的。因此,用户标记的数据可能偏向于SVM模型,这就解释了SVM在这种情况下与手工标记的数据实验(表3)相比具有更高的准确性。
    表4包含了一些输入餐厅食物信息的例子,以及两种不同算法检索到的最佳匹配:SVM和字级CNN(wCNN)。 考虑到食物的成分和营养成分,在第一个例子中,“费城寿司卷”是最好的配对,由wCNN成功检索。 同时支持向量机不能达到同样的效果,显然是因为过分强调“手卷”这个词。 SVM检索到的“素食卷”包含一个与“费城卷”输入信息非常不同的成分列表,使得其营养信息远离用户有兴趣检索的基本事实。
这里写图片描述

4.2数据收集

    为了优化任何深度学习网络参数,需要大量的训练数据。 收集必要的数据是一个重要的障碍,因为这个具体问题的独特性和复杂性。 据我们所知,没有公开的专门用于食品名匹配任务的培训数据,现有的文本匹配数据集不适用于这个问题。
    我们匹配问题的主要挑战在于字符串/文本相似性不足以分配正确的标签。 食物的名称可能看起来非常相似,但是指的是具有不同营养含量的完全不同的实体,例如“意大利面条肉酱”和“肉酱意大利面条”。 此外,在某些情况下,食物描述并不相似,但是这些物品仍然可以被认为是真正的搭配,例如“烤腌羊肉或鸡肉或猪肉小三明治”和“烤羊肉三明治配方”。
    为了解决这个问题,我们的内部专家生成了一组4K对的食物名称,即(餐馆食物名称,数据库食物名称)并用手标记。 分配给每一对的标签是相关的(2),某种程度上相关的(1)或不相关的(0)。 然后将这个训练集扩展到更大的范围,以便训练CNN参数。 为此,我们应用了成对的RankSVM模型[9],因为(a)基于SVM的模型可以在较小的训练集上达到合理的精度,(b)该模型的成对性质允许该模型的成对性质允许在相关和不相关的标记实例之间进行比较,并为分类任务增加了更多的灵活性。
    我们基于SVM的数据收集涉及多个步骤。 首先,标签数据本质上是逐点的,被转换成一个成对的集合。 设f为餐馆食品名称,c1,c2为两个食品候选人,标签分别为y1,y2。 然后,成对训练实例由((c1,c2)| f)形成,并被赋予标签y1 - y2,如果c1与c2相比,对f的相关性更高,则为正,否则为负。 接下来,在这些成对实例上训练SVM模型,并用于预测新实例,以及预测置信度。该SVM模型中使用的特征与前面描述的逐点SVM相同。
    配备了训练的成对SVM模型,处理了一组200K餐厅菜单。 每个项目f被输入到查询生成模型,并从数据库中检索候选列表(c1,c2,…… cn)。 然后,模型被用来标记((ci,cj)| f)具有一定的置信度。 这导致超过80M标记对,但显然不是所有的都被正确预测。 因此,我们只保留了99%+自信的标签。 ((ci,cj)| f)被分解为两个点状标记的实例:(ci,f)2个相关和(cj,f)=无关,如果 )被标记为“正面”。 因此,能够收集超过1M个标记的实例,来训练我们的CNN模型。
    在第二个例子中,SVM建议的匹配看起来与输入的餐馆食物非常相似,就字符串相似性而言(没有相同的词语顺序!)。 然而,仔细观察后,显示输入的查询是一个含有“肉酱”作为附加成分的“意大利面条”,而支持向量机的输出是一种“肉”的“酱”类型。 因此,他们指的是完全不同的实体,因此他们的营养成分差别很大。 另一方面,wCNN能找到正确的匹配,与输入的食物名称相近。

5结论

    在测试集的三个主要变体 - 从训练集中随机分配的版本,由人为手标记的数据以及从用户观察到的响应 - 一旦训练数据的范围在100K的范围内,wCNN模型胜过基本的SVM技术 或更多的例子,一旦数据集大小达到1M,就变得非常明显。 由于这种类型的食物数据的局限性可能使得直接的技术变得困难或不可能,所以令人印象深刻的是,多个机器学习技术的融合比任何单独实现的技术能够实现更高的准确度水平。 通过用于初始查询生成的MDP,用于构建综合训练数据的SVM和用于学习相关性的CNN体系结构的强化的组合,在没有上下文和/或用户反馈的情况下一起创建用于短文本匹配的有力工具。


备注:
Keras:是基于Theano的一个深度学习框架,用Python语言编写,是一个高度模块化的神经网络库,支持GPU和CPU。

droput:取50%的时候,每次训练都随机的丢弃50%的隐含层的节点来进行训练,这样可以防止每次都是所有的特征选择器共同作用,一直放大或者缩小某些特征,在样本数据少的情况下很容易过拟合,并且泛化能力也很弱,所以才用dropout这种方法来实现能很好的避免训练过程中出现的这些问题。注意,在测试过程中采用的是全连接。

Learning to Rank(LTR L2R):排序学习是采用机器学习算法,通过训练模型来解决排序问题。

L2R模型训练 L2R是一个有监督学习过程。对于每个给定的查询-文档对(query document pair),抽取相应的特征(既包括查询和文档之间的各种相关度,也包括文档本身的特征以及重要性等),另外通过或者人工标注或者从日志中挖掘的方法来得到给定查询下文档集合的真实序列。然后我们使用L2R的各种算法来学到一个排序模型,使其输出的文档序列和真实序列尽可能相似。主要包括以下三种:
 - PointWise 只考虑给定查询下,单个文档的绝对相关度,而不考虑其他文档和给定查询的相关度。
 - PairWise考虑给定查询下,两个文档之间的相对相关度。亦即给定查询q的一个真实文档序列,我们只需要考虑任意两个相关度不同的文档之间的相对相关度:di>dj,或者di<dj。
 - ListWise 直接考虑给定查询下的文档集合的整体序列,直接优化模型输出的文档序列,使得其尽可能接近真实文档序列。

http://www.cnblogs.com/kemaswill/archive/2013/06/01/3109497.html#undefined

RankSVM: pairwise的方法
RankSVM可以看做是寻找一个超平面,使得点对 xi,xj 对平面的几何间隔差最大。
这里写图片描述
http://x-algo.cn/index.php/2016/08/09/ranksvm/

相似性度量:在做分类时常常需要估算不同样本之间的相似性度量(Similarity Measurement)
Jaccard距离:两个集合中不同元素占所有元素的比例来衡量两个集合的区分度。
EditDIstance距离:计算两个长度差不多的字符串的差距,距离表示从一个字符串最少改几个字符能变成另一个。越小越相近。适用任意两个字符串的比较。

ReLu:(修正线性单元) 神经网络中的一种激活函数,实现了对输入数据的非负处理,将小于零的数据进行了截断。
这里写图片描述

Word2Vec:
word embeddings,中文名“词向量”,作用就是将自然语言中的字词转为计算机可以理解的统一意义统一维度的稠密向量(Dense Vector)。
如果将embed后的城市向量通过PCA降维后可视化展示出来,那就是这个样子。
这里写图片描述
word2vec模型其实就是简单化的神经网络。
这里写图片描述

输入和Hidden Layer没有激活函数,也就是线性的单元。Output Layer维度跟Input Layer的维度一样,用的是Softmax回归。我们要获取的dense vector其实就是Hidden Layer的输出单元。有的地方定为Input Layer和Hidden Layer之间的权重,其实说的是一回事。
http://blog.csdn.net/FANGPINLEI/article/details/52200832

tf-idf:(term frequency–inverse document frequency)是一种用于信息检索与数据挖掘的常用加权技术。TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。
一个词语在一篇文章中出现次数越多, 同时在所有文档中出现次数越少, 越能够代表该文章。
(如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。)

原理:

  • 词频 (term frequency, TF) 指的是某一个给定的词语在该文件中出现的次数。这个数字通常会被归一化(分子一般小于分母
    区别于IDF),以防止它偏向长的文件。对于在某一特定文件里的词语 ti 来说,它的重要性可表示为:
    这里写图片描述
    这里写图片描述

  • 逆向文件频率 (inverse document frequency, IDF)是一个词语普遍重要性的度量。某一特定词语的IDF,可以由总文件数目除以包含该词语之文件的数目,再将得到的商取对数得到。它的公式为log(D/Dw)。
    这里写图片描述

    某一特定文件内的高词语频率,以及该词语在整个文件集合中的低文件频率,可以产生出高权重的TF-IDF。因此,TF-IDF倾向于过滤掉常见的词语,保留重要的词语。

    但是实际上,有时候,如果一个词条在一个类的文档中频繁出现,则说明该词条能够很好代表这个类的文本的特征,这样的词条应该给它们赋予较高的权重,并选来作为该类文本的特征词以区别与其它类文档。这就是IDF的不足之处.

示例:
- 根据关键字k1,k2,k3进行搜索结果的相关性就变成TF1*IDF1 + TF2*IDF2 + TF3*IDF3。
- 需要给汉语中的每一个词给一个权重,满足下面两个条件:
1. 一个词预测主题能力越强,权重就越大,反之,权重就越小。如“原子能“的权重应该比“应用”大。
2. 应删除词的权重应该是零。
- 如果一个关键词只在很少的网页中出现,我们通过它就容易锁定搜索目标,它的权重也就应该大。反之如果一个词在大量网页中出现,我们看到它仍然不很清楚要找什么内容,因此它应该小。
- 假定一个关键词 w 在 Dw 个网页中出现过,那么 Dw 越大,w的权重越小,反之亦然。
- 我们假定中文网页数是D=10亿,应删除词“的”在所有的网页中都出现,即Dw=10亿,那么它的IDF=log(10亿/10亿)= log (1) = 0。假如专用词“原子能”在两百万个网页中出现,即Dw=200万,则它的权重IDF=log(500) =6.2。又假定通用词“应用”,出现在五亿个网页中,它的权重IDF = log(2)则只有 0.7。也就只说,在网页中找到一个“原子能”的比配相当于找到九个“应用”的匹配。
- 利用 IDF,上述相关性计算个公式就由词频的简单求和变成了加权求和,即 TF1*IDF1 + TF2*IDF2 +… + TFN*IDFN。
http://www.cnblogs.com/biyeymyhjob/archive/2012/07/17/2595249.html

MDP:马尔可夫决策过程(Markov Decision Process)
系统下个状态不仅和当前的状态有关,也和当前采取的动作有关。

    一个马尔可夫决策过程由一个四元组构成M = (S, A, Psa, R) ,MDP 的动态过程如下:某个智能体(agent)的初始状态为s0,然后从 A 中挑选一个动作a0执行,执行后,agent 按Psa概率随机转移到了下一个s1状态,s1∈ Ps0a0。然后再执行一个动作a1,就转移到了s2,接下来再执行a2…,我们可以用下面的图表示状态转移的过程。
这里写图片描述
如果回报r是根据状态s和动作a得到的,则MDP还可以表示成下图:
这里写图片描述
http://blog.csdn.net/zz_1215/article/details/44138823

伪相关反馈:不需要用户的交互
1. 用户提交原始查询
2. 系统根据原始查询返回初始查询结果
3. 由系统将初始查询结果排名靠前的k篇文档标记为相关文档,其余文档标记为不相关文档
4. 系统根据上边的标记结果作为反馈结果构造出更好的查询来表示用户的信息需求
5. 利用优化的查询返回新的查询结果
https://www.cnblogs.com/sheeva/p/6835711.html?utm_source=itdadao&utm_medium=referral

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值