当前位置: 首页 > news >正文

建设通官方网站下载上海高端网站设计公司价格

建设通官方网站下载,上海高端网站设计公司价格,wordpress固定衔接出错,公司网站不备案和备案有什么区别本文根据美团高级技术专家翟艺涛在2018 QCon全球软件开发大会上的演讲内容整理而成#xff0c;内容有修改。 引言 2018年12月31日#xff0c;美团酒店单日入住间夜突破200万#xff0c;再次创下行业的新纪录#xff0c;而酒店搜索在其中起到了非常重要的作用。本文会首先介… 本文根据美团高级技术专家翟艺涛在2018 QCon全球软件开发大会上的演讲内容整理而成内容有修改。 引言 2018年12月31日美团酒店单日入住间夜突破200万再次创下行业的新纪录而酒店搜索在其中起到了非常重要的作用。本文会首先介绍一下酒店搜索的业务特点作为O2O搜索的一种酒店搜索和传统的搜索排序相比存在很大的不同。第二部分介绍深度学习在酒店搜索NLP中的应用。第三部分会介绍深度排序模型在酒店搜索的演进路线因为酒店业务的特点和历史原因美团酒店搜索的模型演进路线可能跟大部分公司都不太一样。最后一部分是总结。 酒店搜索的业务特点 美团的使命是帮大家“Eat BetterLive Better”所做的事情就是连接人与服务。用户在美团平台可以找到他们所需要的服务商家在美团可以售卖自己提供的服务而搜索在其中扮演的角色就是“连接器”。大部分用户通过美团App找酒店是从搜索开始的搜索贡献了大部分的订单是最大的流量入口。在美团首页点击 “酒店住宿”图标就会进入上图右侧的搜索入口用户可以选择城市和入住时间并发起搜索。 酒店搜索技术团队的工作不仅有搜索排序还有查询引导、推荐等工作查询引导如搜索智能提示、查询纠错等。之所以还有推荐的工作是因为很多用户在发起搜索时不带查询词本质上属于推荐此外还有特定场景下针对少无结果的推荐等。本文主要介绍搜索排序这方面的工作。 不同搜索对比 现在大家对搜索都很熟悉常见的有网页搜索比如Google、百度、搜狗等商品搜索像天猫、淘宝、京东等还有就是O2OOnline To Offline的搜索典型的就是酒店的搜索。虽然都是搜索但是用户使用搜索的目的并不相同包括找信息、找商品、找服务等等不同搜索之间也存在很大的差别。 上图对不同搜索进行了简单对比可以从5个维度展开。首先是目标维度。因为用户是来找信息网页搜索重点是保证查询结果和用户意图的相关性而在商品搜索和酒店搜索中用户的主要目的是查找商品或服务最终达成交易目标上有较大区别。用户使用不同搜索的目的不同从而导致不同搜索对个性化程度的要求不同。交易属性的搜索包括商品搜索和酒店搜索对个性化程度的要求都比较高因为不同用户的消费水平不同偏好也不一样。 在技术层面上也存在很多不同点。网页搜索会索引全网的数据这些数据不是它自己生产数据来源非常多样包括新闻、下载页、视频页、音乐页等各种不同的形态所以整个数据是非结构化的差异也很大。这意味着网页搜索需要拥有两种技术能力数据抓取能力和数据解析能力它们需要抓取网页并解析形成结构化数据。在这个层面上酒店搜索和商品搜索相对就“幸福”一些因为数据都是商家提交的结构化数据相对来说更加规范。 此外酒店作为一种O2O的服务用户在线上Online下单最终需要到线下Offline去消费所以就有一个位置上的约束而位置的约束也就导致出现供给侧的约束供给只能在某个特定位置附近。比如北京大学方圆几公里之内的酒店。这两点约束在网页搜索和商品搜索中就不用考虑网页可以无限次的进行阅读。商品搜索得益于快递业的快速发展在北京也可以买到来自浙江的商品供给侧的约束比较小。 介绍完不同搜索产品的特点接下来看不同搜索产品的优化目标。通用搜索的优化目标是相关性评价指标是DCG、NDCG、MAP等这些指标要求查询结果和用户意图相关。对商品搜索来说不同电商平台的优化目标不太一样有的目标是最大化GMV有的目标是最大化点击率这些在技术上都可以实现。 而对酒店搜索而言因为它属于O2O的业务形态线上下单线下消费这就要求搜索结果必须和用户的查询意图“强相关”。这个“强相关”包括两层含义显性相关和隐性相关。举个例子用户搜索“北京大学”那么他的诉求很明确就是要找“北京大学”附近的酒店这种属于用户明确告诉平台自己的位置诉求。但是如果用户在本地搜索“七天”即使用户没有明确说明酒店的具体位置我们也知道用户可能想找的是距离自己比较近的“七天酒店”这时候就需要建模用户的隐性位置诉求。 美团是一个交易平台大部分用户使用美团是为了达成交易所以要优化用户的购买体验。刻画用户购买体验的核心业务指标是访购率用来描述用户在美团是否顺畅的完成了购买需要优化访购率这个指标。总结一下酒店搜索不仅要解决相关性尽量优化用户购买体验、优化访购率等指标同时还要照顾到业务诉求。 根据上面的分析酒店搜索的整个搜索框架就可以拆分成三大模块检索、排序以及业务规则。检索层包括查询理解和召回两部分主要解决相关性问题。查询理解做的事情就是理解用户意图召回根据用户意图来召回相关的酒店两者强耦合需要放在一起。检索的核心是语义理解比如用户搜索“北京大学”平台就知道用户想找的是“北京大学附近的酒店”所以这个模块的优化方式是问题驱动不断地发现问题、解决问题来进行迭代。 接下来从检索模块检索出来的酒店都已经是满足用户需求的酒店了。还是上面“北京大学”的那个例子检索模块已经检索出来几百家“北京大学”附近的酒店这些都是和用户的查询词“北京大学”相关的怎么把用户最有可能购买的酒店排到前面呢这就是排序模块要做的事情。 排序模块使用机器学习和深度学习的技术提供“千人千面”的排序结果如果是经常预定经济连锁型酒店的用户排序模块就把经济连锁型酒店排到前面。针对消费水平比较高对酒店要求比较高的用户排序模块就把高档酒店排到前面对每个用户都可以做到个性化定制。排序属于典型的技术驱动模块优化目标是访购率用这个技术指标驱动技术团队不断进行迭代和优化。 最后是业务层面比如有些商家会在美团上刷单作弊针对这些商家需要做降权处理。 整体框架 上图是搜索的整体框架这里详细描述下调用过程 搜索API负责接收用户的查询词并发送给搜索控制中心。控制中心把接收到的查询请求发送到检索与意图模块搜索词会先经过查询分析模块做用户的查询意图分析分析完之后会把用户的查询意图分析结果传回去给业务检索模块业务检索模块根据意图识别结果形成查询条件然后去基础检索端查询结果。基础检索访问索引得到查询结果后再把结果返回给上层。业务检索模块获取基础的检索结果后会调用一些外部服务如房态服务过滤一些满房的酒店再把结果返回给控制中心。此时控制中心得到的都是和用户查询意图强相关的结果这时就需要利用机器学习技术做排序。通过预测模块对每个酒店做访购率预测控制中心获取预测模块的排序结果后再根据业务逻辑做一些调整最终返回结果给搜索API。可以看到模块划分和前文描述的思想一致检索模块主要解决用户意图识别和召回问题也就是解决相关性。预测模块做访购率预测业务逻辑放在搜索控制中心实现。接下来会介绍一下意图理解和排序模块中涉及的一些深度学习技术。 先来看下查询理解的问题这个模块通过数据分析和Case分析不断的发现问题、解决问题来迭代优化。之前的评测发现少无结果的原因主要包括以下几种 地标词比如用户搜索“望京国际研发园”但是后台没有一家酒店包含“望京国际研发园”这几个字其实用户想找的是望京国际研发园附近的酒店。结构化查询比如芍药居附近7天酒店描述信息中没有“附近”这个词搜索体验就比较差。这种需要对查询词做成分识别丢掉不重要的词并且对不用类别的Term走不同的检索域。异地查询用户在北京搜索“大雁塔”没有结果其实用户的真实意图是西安大雁塔附近的酒店这种需要做异地需求识别并进行异地跳转。同义词在北京搜索“一中”和搜索“北京第一中学”其实都是同一个意思需要挖掘同义词。 针对这几类问题我们分别作了以下工作 针对地标词问题提供地标意图识别和地标策略把地标类别的查询词改成按经纬度进行画圈检索。针对结构化查询的问题我们对查询词做了成分识别设计了少无结果时的多级检索架构。针对异地查询的问题做异地意图识别和异地的跳转引导。针对语义查询的问题做同义词和查询改写。这里的每一个模块都用到了机器学习和深度学习的技术本文挑选两个酒店搜索中比较特殊的问题进行介绍。 地标问题是O2O搜索的一个典型问题在网页搜索和商品搜索中都较少出现此类问题。当用户搜索类似“望京国际研发园”这种查询词的时候因为搜索的相关性是根据文本计算的需要酒店描述中有相关文字如果酒店的描述信息中没有这个词那就检索不出来。比如昆泰酒店虽然就在望京国际研发园旁边但是它的描述信息中并没有出现“望京国际研发园”所以就无法检索出来这会导致用户体验较差。 经过分析我们发现有一类查询词是针对特定地点的搜索用户的诉求是找特定地点附近的酒店这种情况下走文本匹配大概率是没有结果的。这个问题的解法是针对这种类型的查询词从“文本匹配”改成“坐标匹配”首先分析查询词是不是有地标意图如果是的话就不走文本匹配了改走坐标匹配检索出来这个坐标附近的酒店就可以了。这时就产生了两个问题第一怎么确定哪些查询词有地标意图第二怎么获取经纬度信息。 针对这个问题我们做了地标策略步骤如下 多渠道获取可能包含地标词的候选集这些候选集包括用户少无结果的查询词以及一些酒店提供的描述信息。对候选集合进行命名实体识别NERNamed Entity Recognition可以得到各个命名实体的类型标识为“地标”类型的就是疑似地标词。把疑似地标词放到美团地图服务中获取经纬度经过人工校验无误后存入线上数据库中线上来查询请求时先会去匹配精准地标库如果匹配成功说明这个查询词是地标意图这时就不走文本检索了直接在意图服务层走经纬度检索。经过人工校验的精准地标库补充到NER模型的训练数据中持续优化NER模型。这里提到了NER模型下面对它做一下详细的介绍。 NER是命名实体识别是机器学习中的序列标注问题比如输入“北大附近的七天”就会标注出来每个词的成分这里“北大”是地标“七天”是酒店品牌。这里的类别是根据业务特点自己定义的酒店业务中有地标、品牌、商圈等不同的类别。与分类问题相比序列标注问题中当前的预测标签不仅与当前的输入特征相关还与前后的预测标签相关即预测标签序列之间有强相互依赖关系。 解决序列标注问题的经典模型是CRFConditional Random Field条件随机场也是我们刚开始尝试的模型。条件随机场可以看做是逻辑回归的序列化版本逻辑回归是用于分类的对数线性模型条件随机场是用于序列化标注的对数线性模型可以看做是考虑了上下文的分类模型。 机器学习问题的求解就是“数据模型特征”数据方面先根据业务特点定义了几种实体类别然后通过“人工规则”的方法标注了一批数据。特征方面提取了包括词性、Term文本特征等还定义了一些特征模板特征模板是CRF中人工定义的一些二值函数通过这些二值函数可以挖掘命名实体内部以及上下文的构成特点。标注数据、模型、特征都有了就可以训练CRF模型这是线上NER问题的第一版模型。 随着深度学习的发展用Word Embedding词向量作为输入叠加神经网络单元的方法渐渐成为NLP领域新的研究方向。基于双向LSTMLong Short-Term MemoryCRF的方法成为NER的主流方法这种方法采用双向LSTM单元作为特征提取器替代原有的人工特征不需要专门的领域知识框架也通用。Embedding输入也有多种形式可以是词向量可以是字向量也可以是字向量和词向量的拼接。 我们尝试了双向LSTMCRF并在实际应用中做了些改动由于在CRF阶段已经积累了一批人工特征实验发现把这些特征加上效果更好。加了人工特征的双向LSTMCRF是酒店搜索NER问题的主模型。 当然针对LSTMCRF的方法已经有了很多的改进比如还有一种NER的方法是融合CNNLSTMCRF主要改进点是多了一个CNN模块来提取字级别的特征。CNN的输入是字级别的Embedding通过卷积和池化等操作来提取字级别的特征然后和词的Embedding拼接起来放入LSTM。这种方法在两个公开数据集上面取得了最好的结果也是未来尝试的方向之一。 为了解决少无结果的问题我们设计了多级检索架构如上图所示主要分4个层次基本检索、二次检索、核心词检索和异地检索。 基本检索会根据查询词的意图选择特定的检索策略比如地标意图走经纬度检索品牌意图只检索品牌域和商家名。基本检索少无结果会进行二次检索二次检索也是分意图的不同意图类型会有不同的检索策略地标意图是经纬度检索的二次检索的时候就需要扩大检索半径品牌意图的查询词因为很多品牌在一些城市没有开店比如香格里拉在很多小城市并没有开店这时比较好的做法是推荐给用户该城市最好的酒店。如果还是少无结果会走核心词检索只保留核心词检索一遍。丢掉非核心词有多种方式一种是删除一些运营定义的无意义词一种是保留NER模型识别出来的主要实体类型。此外还有一个TermWeight的模型对每个词都有一个重要性的权重可以把一些不重要的词丢掉。在还没有结果的情况下会选择”异地全国“检索即更换城市或者在全国范围内进行检索。多级检索架构上线后线上的无结果率就大幅度降低了。 排序 排序其实是一个典型的技术问题业界应用比较广泛的有广告排序和推荐排序广告排序比如Google和百度的关键字广告排序今日头条、腾讯的展示广告排序。推荐排序比如快手、抖音这些短视频平台以及各大App、浏览器的信息流。广告排序和推荐排序优化的目标都是点击率技术栈也比较相似包括LR/FTRL、FM/FFM、GBDT、DNN等模型。 跟以上两种排序应用相比酒店排序有自己的业务特点因为美团酒店具有LBS属性和交易属性天生自带很多连续特征如酒店价格、酒店评分、酒店离用户的距离等这些连续特征是决定用户购买行为的最重要因素。优化目标也不一样大部分场景下酒店搜索的优化目标是访购率部分场景下优化目标是点击率。在技术层面酒店排序整体的技术栈和广告、推荐比较相似都可以使用LR/FTRL、FM/FFM、GBDT、DNN等模型。 面临的挑战 具体到酒店排序工作我们面临一些不一样的挑战主要包括以下4点 数据稀疏。住酒店本身是一种低频行为大部分用户一年也就住一两次导致很多特征的覆盖率比较低。业务众多。美团酒店包括国内酒店业务、境外酒店业务以及长租、钟点房等业务同时有美团和点评两个不同的App。场景复杂。按照用户的位置可以分成本地和异地按照用户的诉求可以分成商务、旅游、本地休闲等几大类这些用户之间差异很明显。比如商务用户会有大量复购行为典型例子是美团员工的出差场景美团在上海和北京各有一个总部如果美团的同学去上海出差大概率会在公司差旅标准内选一家离公司近的酒店从而会在同一家酒店产生大量的复购行为但是如果是一个旅游用户他就很少反复去同一个地方。供给约束。酒店行业供给的变化很快一个酒店只有那么多房间一天能提供的间夜量是固定的全部订出的话用户提价也不会提供新的房间这种情况在劳动节、国庆这种节假日特别明显。 上图右侧是排序的整体架构图分为线下、线上和近线上三个部分。在线下部分主要做离线的模型调优和评估线上部分做预测。这里比较特别的是近线上部分我们在实时层面做了大量的工作包括用户的实时行为、酒店实时价格、实时库存等等以应对供给变化快的特点。 这里介绍一个业务特点导致的比较独特的问题模型切分。美团酒店有很多业务场景包括国内酒店、境外酒店、长租、钟点房等还有两个App美团App和大众点评App还有搜索和筛选两种场景搜索带查询词筛选没有查询词两种场景差异较大从地理位置维度还可以分成本地和异地两种场景。 面对这么多的业务场景第一个问题就是模型怎么设计是用统一的大模型还是分成很多不同的小模型我们可以用一个大模型Cover所有的场景用特征来区分不同场景的差异好处是统一模型维护和优化成本低。也可以划分很多小模型这里有一个比较好的比喻多个专科专家会诊胜过一个全科医生。切分模型后可以避免差异较大的业务之间互相影响也方便对特殊场景进行专门的优化。 在模型切分上主要考虑三个因素 第一业务之间的差异性。比如长租和境外差异很大国内酒店和境外业务差异也很大这种需要拆分。第二细分后的数据量。场景分的越细数据量就越小会导致两个问题一是特征的覆盖率进一步降低二是数据量变小后不利于后续的模型迭代一些复杂模型对数据量有很高的要求。我们做过尝试国内酒店场景下美团和大众点评两个App数据量都很大而且用户也很不一样所以做了模型拆分但是境外酒店因为本身是新业务数据量较小就没有再进行细分。第三一切以线上指标为准。我们会做大量的实验看当前数据量下怎么拆分效果更好比如美团App的国内酒店我们发现把搜索和筛选拆开后效果更好筛选因为数据量特别大拆分成本、异地效果也更好但是如果搜索场景拆分成本地、异地模型就没有额外收益了。最终一切都要以线上的实际表现为准。模型演进 接下来介绍一下排序模型的演进过程因为业务特点及历史原因酒店搜索的排序模型走了一条不一样的演进路线。大家可以看业界其他公司点击率模型的演进很多都是从LR/FTRL开始然后进化到FM/FFM或者用GBDTLR搞定特征组合然后开始WideDeep。 酒店搜索的演进就不太一样。酒店业务天生自带大量连续特征如酒店价格、酒店和用户的距离、酒店评分等因此初始阶段使用了对连续特征比较友好的树模型。在探索深度排序模型的时候因为已经有了大量优化过的连续特征导致我们的整个思路也不太一样主要是借鉴一些模型的思想结合业务特点做尝试下面逐一进行介绍。 初始阶段线上使用的模型是XGB(XGBoost, eXtreme Gradient Boosting)。作为GBDT的改进XGB实现了非线性和自动的特征组合。树节点的分裂其实就实现了非线性树的层次结构实现了不同特征的自动组合而且树模型对特征的包容性非常好树的分裂通过判断相对大小来实现不需要对特征做特殊处理适合连续特征。 树模型的这些特点确实很适合酒店这种连续特征多的场景至今为止XGB都是数据量较小场景下的主模型。但是树模型优化到后期遇到了瓶颈比如特征工程收益变小、增大数据量没有额外收益等此外树模型不适合做在线学习的问题愈发严重。酒店用户在劳动节、国庆节等节假日行为有较大不同这时需要快速更新模型我们尝试过只更新最后几棵树的做法效果不佳。考虑到未来进一步的业务发展有必要做模型升级。 模型探索的原则是从简单到复杂逐步积累经验所以首先尝试了结构比较简单的MLP(Multiple-Layer Perception)多层感知机也就是全连接神经网络。神经网络是一种比树模型“天花板”更高的模型“天花板”更高两层意思第一层意思可以优化提升的空间更大比如可以进行在线学习可以做多目标学习第二层意思模型的容量更大“胃口”更大可以“吃下”更多数据。此外它的表达能力也更强可以拟合任何函数网络结构和参数可以调整的空间也更大。但是它的优点同时也是它的缺点因为它的网络结构、参数等可以调整的空间更大神经网需要做很多的参数和网络结构层面的调整。 上图是MLP的网络结构图包含输入层、若干个隐藏层、输出层。在很长一段时间内在特征相同的情况下MLP效果不如XGB所以有段时间线上使用的是XGB和MLP的融合模型。后来经过大量的网络结构调整和参数调整调参经验越来越丰富MLP才逐步超越XGB。这里额外说明一下酒店搜索中有少量的ID类特征在第一版MLP里ID类特征是直接当做连续特征处理的。比如城市IDID的序关系有一定的物理意义大城市ID普遍较小小城市开城晚一些ID较大。 在MLP阶段我们对网络结构做了大量实验尝试过三种网络结构平行结构、菱形结构、金字塔结构。在很多论文中提到三者相比平行结构效果最好但是因为酒店搜索的数据不太一样实验发现金字塔结构效果最好即上图最右边的“1024-512-256”的网络结构。同时还实验了不同网络层数对效果的影响实验发现3-6层的网络效果较好更深的网络没有额外收益而且线上响应时间会变慢后面各种模型探索都是基于3到6层的金字塔网络结构进行尝试。 MLP上线之后我们开始思考接下来的探索方向。在树模型阶段酒店搜索组就在连续特征上做了很多探索连续特征方面很难有比较大的提升空间同时业界的研究重点也放在离散特征方面所以离散特征应该是下一步的重点方向。 深度排序模型对离散特征的处理有两大类方法一类是对离散特征做Embedding这样离散特征就可以表示成连续的向量放到神经网络中去另一类是WideDeep把离散特征直接加到Wide侧。我们先尝试了第一种即对离散特征做Embedding的方法借鉴的是FNN的思想。其实离散特征做Embedding的想法很早就出现了FM就是把离散特征表示成K维向量通过把高维离散特征表示成低维向量增加模型泛化能力。 实际使用中我们稍微做了一些改动实验中发现使用FM预训练的效率不高所以尝试了不做预训练直接把Embedding随机初始化然后让Embedding跟随网络一起学习实验结果发现比FM预训练效果还要好一点。最后的做法是没有用FM做预训练让Embedding随机初始化并随网络学习上图是线上的V3模型。 FNN的成功上线证明离散特征Embedding这个方向值得深挖所以我们接着实验了DeepFM。DeepFM相对于WideDeep的改进非常类似于FM相对LR的改进都认为LR部分的人工组合特征是个耗时耗力的事情而FM模块可以通过向量内积的方式直接求出二阶组合特征。DeepFM使用FM替换了WideDeep中的LR离散特征的Embedding同时“喂”给神经网和FM这部分Embedding是共享的Embedding在网络的优化过程中自动学习不需要做预训练同时FM Layer包含了一阶特征和二阶的组合特征表达能力更强。我们尝试了DeepFM线下有提升线上波动提升并没有达到上线的标准最终没有全量。 尽管DeepFM没有成功上线但这并没有动摇我们对Embedding的信心接下来尝试了PNN。PNN的网络重点在Product上面在点击率预估中认为特征之间的关系更多是一种And“且”的关系 而非Add“加”的关系例如性别为男且用华为手机的人他定酒店时属于商务出行场景的概率更高。 PNN使用了Product Layer进行显式的二阶特征组合。上图右边是PNN的网络结构图依然对离散特征做EmbeddingEmbedding向量同时送往隐层和Product层Product通过内积或者外积的方式对特征做显式的二阶交叉之后再送入神经网的隐层这样可以做到显式的二阶组合和隐式的高阶特征组合。特征交叉基于乘法的运算实现有两种方式内积和外积。我们尝试了内积的方式线下略有提升线上也是波动提升没有达到上线标准所以最终也没有全量上线。 PNN之后我们认为Embedding还可以再尝试一下于是又尝试了DCNDeepCross Network。DCN引入了一个Cross Network进行显式的高阶特征交叉。上图右边是论文中的图可以看到DeepCross中用了两种网络Deep网络和Cross网络两种网络并行输入都一样在最后一层再Stack到一起。 Deep网络和前面几种网络一样包括连续特征和离散特征的EmbeddingCross网络是DCN的特色在Cross网络里面通过巧妙的设计实现了特征之间的显式高阶交叉。看上图左下角的Cross结构示意这里的x是每一层的输入也就是上一层的输出。Feature Crossing部分包括了原始输入x0、本层输入x的转置、权重w三项三项相乘其实就做了本层输入和原始输入的特征交叉x1就包含了二阶的交叉信息x2就包含了三阶的交叉信息就可以通过控制Cross的层数显式控制交叉的阶数。 不得不说DCN在理论上很漂亮我们也尝试了一下。但是很可惜线下有提升线上波动提升依然未能达到上线的标准最终未能全量上线。 经过DeepFM、PNN、DCN的洗礼促使我们开始反思为什么在学术上特别有效的模型反而在酒店搜索场景下不能全量上线呢?它们在线下都有提升在线上也有提升但是线上提升较小且有波动。 经过认真分析我们发现可能有两个原因第一连续特征的影响XGB时代尝试了600多种连续特征实际线上使用的连续特征接近400种这部分特征太强了; 第二离散特征太少离散特征只有百万级别但是Embedding特别适合离散特征多的情况。接下来方向就很明确了补离散特征的课。 最终我们还是把目光转回WideDeep。WideDeep同时训练一个Wide侧的线性模型和一个Deep侧的神经网络Wide部分提供了记忆能力关注用户有过的历史行为Deep部分提供了泛化能力关注一些没有历史行为的Item。之前的工作主要集中在Deep测对低阶特征的表达存在缺失所以我们添加了LR模块以增加对低阶特征的表达Deep部分和之前的V3一样。刚开始只用了少量的ID类特征效果一般后来加了大量人工的交叉特征特征维度达到了亿级别后效果才得到很好的提升。下图是我们的V4模型 接下来介绍一下优化目标的迭代过程后面讲MTL会涉及这部分内容。酒店搜索的业务目标是优化用户的购买体验模型的优化指标是用户的真实消费率怎么优化这个目标呢? 通过分析用户的行为路径可以把用户的行为拆解成“展示-点击-下单-支付-消费”等5个环节这其中每个环节都可能存在用户流失比如有些用户支付完成后因为部分商家确认比较慢用户等不及就取消了。 刚开始我们采用了方案1对每一个环节建模真实消费率用户点击率×下单率×支付率×消费率。优点是非常简单直接且符合逻辑每个模块分工明确容易确认问题出在哪里。缺点也很明显首先是特征重复4个模型在用户维度和商家维度的特征全部一样其次模型之间是相乘关系且层数过多容易导致误差逐层传递此外4个模型也增加了运维成本。后来慢慢进化到了方案2的“End to End”方式直接预测用户的真实消费率这时只需要把正样本设定为实际消费的样本一个模型就够了开发和运维成本较小模型间特征也可以复用缺点就是链路比较长上线时经常遇到AB测抖动问题。 模型切换到神经网络后就可以做多任务学习了之前树模型时代只预测“End to End”真实访购率神经网络则可以通过多任务学习同时预测CTR展示点击率和CVR点击消费率。多任务学习通过硬共享的方式同时训练两个网络特征、Embedding层、隐层参数都是共享的只在输出层区分不同的任务。上图是酒店搜索当前线上的模型基于WideDeep做的多任务学习。 网络结构演进路线 上图是酒店搜索排序的深度排序模型演进路线从MLP开始通过对离散特征做Embedding进化到FNN中间尝试过DeepFM、PNN、DCN等模型后来加入了Wide层进化到WideDeep现在的版本是一个MTL版的WideDeep每个模块都是累加上去的。 除了上面提到的模型我们还探索过这个: 这是我们自己设计的混合网络它融合了FNN、DeepFM、PNN、DCN、WideDeep等不同网络的优点同时实现了一阶特征、显式二阶特征组合、显式高阶特征组合、隐式高阶特征组合等有兴趣的同学可以尝试一下。 不同模型实验结果 上图是不同模型的实验结果这里的BP是基点Basis Point1BP0.01%。XGB是BaselineMLP经过很长时间的调试才超过XGBMLP和XGB融合模型的效果也很好不过为了方便维护最终还是用FNN替换了融合模型。WideDeep在开始阶段提升并没有特别多后来加了组合特征后效果才好起来。我们Embedding上面的尝试包括DeepFM、DeepCross等线下都有提升线上波动有提升但是未能达到上线的标准最终未能全量。 在特征预处理方面对连续特征尝试了累计分布归一化、标准化以及手工变换如根号变换、对数变换等累积分布归一化其实就是做特征分桶因为连续特征多且分布范围很广累积分布归一化对酒店搜索的场景比较有效。 离散特征方面尝试了特征Embedding及离散特征交叉组合分别对应FNN和 WideDeep。这里特别提一下缺失值参数化因为酒店业务是一种低频业务特征覆盖率低大量样本存在特征缺失的情况如果对缺失特征学一个权重非缺失值学一个权重效果较好。 参数调优方面分别尝试了激活函数、优化器等。激活函数尝试过Sigmoid、ReLU、Leaky_ReLU、ELU等优化器也实验过Adagrad、Rmsprop、Adam等从实验效果看激活函数ReLUAdam效果最好。刚开始时加了Batch Normalization层和Dropout层后来发现去掉后效果更好可能和酒店搜索的数据量及数据特点有关。网络结构和隐层数方面用的是3到6层的金字塔网络。学习率方面的经验是学习率小点比较好但是会导致训练变慢需要找到一个平衡点。 下面介绍深度排序模型线上Serving架构的演化过程初始阶段组内同学各自探索用过各种开源工具如Keras、TensorFlow等线上分别自己实现预测代码和其他代码都放一起维护困难且无法复用。 后来组内决定一起探索大家统一使用TensorFlow线上用TF-Serving线上线下可以做到无缝衔接预测代码和特征模块也解耦了。现在则全面转向MLX平台MLX是美团自研的超大规模机器学习平台专为搜索、推荐、广告等排序问题定制支持百亿级特征和流式更新有完善的线上Serving架构极大地解放了算法同学的生产力。 最后介绍一下我们对搜索排序技术节奏的一些理解简单来说就是在不同阶段做不同的事情。 在上图中横轴表示技术深度越往右技术难度越大人力投入越大对人的要求也越高。纵轴是业务阶段。业务阶段对技术的影响包括两方面数据量和业务价值。数据量的大小可以决定该做什么事情因为有些技术在数据量小的时候意义不大业务价值就更不用说了业务价值越大越值得“重兵投入”。 起步阶段起步阶段还没有数据这时候做简单排序就好比如纯按价格排序或者距离排序目的是让整个流程快速地跑起来能提供最基本的服务。比如2017年美团的长租业务当时就处于起步阶段。业务初期随着业务的发展就进入了业务发展初期订单数慢慢增长也有了一些数据这时候可以增加一些启发式规则或者简单的线性模型检索模型也可以加上。但是由于数据量还比较小没必要部署很复杂的模型。稳定成长期业务进一步发展后就进入了稳定成长期这时候订单量已经很大了数据量也非常大了这段时间是“补课”的时候可以把意图理解的模块加上排序模型也会进化到非线性模型比如XGB会做大量的特征工程实时特征以及实时模型在这个阶段特征工程收益巨大。技术瓶颈期这个阶段的特点是基本的东西都已经做完了在原有的技术框架下效果提升变的困难。这时需要做升级比如将传统语义模型升级成深度语义模型开始尝试深度排序模型并且开始探索强化学习、多模型融合、多目标学习等。中国有句俗话叫“杀鸡焉用牛刀”比喻办小事情何必花费大力气也就是不要小题大做。其实做技术也一样不同业务阶段不同数据量适合用不同的技术方案没有必要过度追求先进的技术和高大上的模型根据业务特点和业务阶段选择最匹配的技术方案才是最好的。我们认为没有最好的模型只有合适的场景。 总结 酒店搜索作为O2O搜索的一种和传统的搜索排序相比有很多不同之处既要解决搜索的相关性问题又要提供“千人千面”的排序结果优化用户购买体验还要满足业务需求。通过合理的模块划分可以把这三大类问题解耦检索、排序、业务三个技术模块各司其职。在检索和意图理解层面我们做了地标策略、NER模型和多级检索架构来保证查询结果的相关性排序模型上结合酒店搜索的业务特点借鉴业界先进思想尝试了多种不同的深度排序模型走出了一条不一样的模型演进路线。同时通过控制技术节奏整体把握不同业务的技术选型和迭代节奏对不同阶段的业务匹配不同的技术方案只选对的不选贵的。 参考文献 [1] John Lafferty et al. Conditional random fields: Probabilistic models for segmenting and labeling sequence data.ICML2001.[2] Guillaume Lample et al Neural architectures for named entity recognition. NAACL2016.[3] Zhiheng Huang, Wei Xu, and Kai Yu. 2015.[4] Bidirectional LSTM-CRF models for sequence tagging. arXiv preprint arXiv:1508.01991.[5] Xuezhe Ma et al.End-to-end Sequence Labeling via Bi-directional LSTM-CNNs-CRF.ACL2016.[6] T Chen, C Guestrin. XGBoost: A scalable tree boosting system. KDD2016.[7] Weinan Zhang et al. Deep Learning over Multi-Field Categorical Data: A Case Study on User Response Prediction. ECIR 2016.[8] Huifeng Guo et al. DeepFM: A Factorization-Machine based Neural Network for CTR Prediction. IJCAI2017.[9] Yanru Qu et al. Product-based neural networks for user response prediction. ICDM2016.[10] Heng-Tze Cheng et al. 2016. Wide deep learning for recommender systems. 2016.In Proceedings of the 1st Workshop on Deep Learning for Recommender Systems.[11] Ruoxi Wang et al. Deep Cross Network for Ad Click Predictions. ADKDD2017.作者简介 艺涛美团高级技术专家2016年加入美团现负责美团酒店业务搜索排序技术。2010年毕业于中科院计算所曾在网易有道等公司工作先后从事网页搜索、购物搜索、计算广告等方向的研发工作。曾荣获“Kaggle卫星图像分类大赛”亚军QCon明星讲师。
http://www.zqtcl.cn/news/654830/

相关文章:

  • 网站图片处理方案动漫制作这个专业怎么样
  • 做写手哪个网站好黄页网站建设黄页网站建设
  • 多语言企业网站免费模板网站哪个好
  • 拟一份饰品网站建设合同襄樊门户网站建设
  • 你对网站第一印象受欢迎的广州做网站
  • 网站开发项目的需求分析浙江省城乡建设网站证件查询
  • 整站seo定制简单 大气 网站模版
  • 网站界面设计策划书怎么做云匠网订单多吗
  • html教程 pdf网站建设优化兰州
  • 招聘网站可以同时做两份简历吗外贸网站示例
  • 黑链 对网站的影响企业融资计划书范本
  • 自己的简历怎么制作网站学院网站建设成效
  • 周口seo 网站郑州建站网站的公司
  • 网站布局模板北京装修大概多少钱一平方
  • 德阳网站建设ghxhwl风景网站模板
  • 昌邑网站建设拓者设计吧现代效果图
  • 学校网站建设成功案例网站开发需要学习哪些内容
  • 怎么让公司建设网站seo于刷网站点击
  • 网站建设合同严瑾建设网站宣传
  • 哪个网站做餐饮推广最好深圳市信任网站
  • 网站模板 整站源码广州网站vi设计报价
  • 百度速页建站wordpress审核插件
  • 怎么给网站wordpress专业的vi设计公司
  • 百度关键词在线优化寻找郑州网站优化公司
  • 网站建设适合什么单位网络推广员工作内容
  • 漂亮的网站维护页面wordpress加个微信登录
  • 网站设计是什么意思创建地址怎么弄
  • nas上建设网站文章网站哪里建设好
  • 消防网站模板广告设计专业需要学什么
  • 建设银行网站首页wordpress 登录函数