当前位置: 首页 > 科技观察

将每个特征二值化,微软使用1350亿参数的稀疏神经网络来提高搜索结果

时间:2023-03-15 10:38:08 科技观察

最近,基于Transformer的GPT-3等深度学习模型在机器学习领域受到了广泛关注。这些模型擅长理解语义关系,极大地改善了微软Bing搜索引擎的体验,并在SuperGLUE学术基准测试中超越了人类的表现。然而,这些模型可能无法捕获查询和文档术语之间超出纯语义的更细微的关系。微软的研究人员提出了一种大规模稀疏模型“MakeEveryfeatureBinary(MEB)”,它改进了微软的生产Transformer模型,以在微软客户使用大规模人工智能时提高搜索相关性。为了使搜索更加准确和动态,MEB更好地利用大数据的力量,并允许输入特征空间具有超过2000亿个反映搜索查询和文档之间微妙关系的二进制特征。为什么要使用“将每个特征二值化”的方法来改进搜索?MEB可以提高基于Transformer的深度学习模型的搜索相关性的重要原因之一是它可以将单个事实映射为特征,从而使MEB可以更细粒度地理解单个事实。例如,许多深度神经网络(DNN)语言模型在填充句子的空白时可能会过度泛化:“(blank)canfly”。由于大多数DNN训练样本的结果是“鸟能飞”,因此DNN语言模型可能会用“鸟”一词来填补空白。MEB通过将每个事实分配给一个特征来避免这种情况,例如通过分配权重来区分飞行能力,它可以为任何实体(例如鸟类)的每个特征执行此操作。将MEB与Transformer模型配对可以将模型提升到另一个分类级别,例如该模型将生成“除了鸵鸟和企鹅等鸟类之外的鸟类都能飞翔”,而不是“鸟类会飞”。随着规模的增加,还有一个因素是改进数据的使用效率。在Bing搜索后对网页结果进行排名是一个机器学习问题,受益于从大量用户数据中学习。利用用户点击数据的传统方法是为每个令人印象深刻的查询/文档对提取数千个手工构建的数字特征,并训练梯度提升决策树(GBDT)模型。然而,由于特征表示和模型容量有限,即使是SOTAGBDT训练器LightGBM也无法在数亿行数据后收敛。此外,这些手工构造的数字特征通常在本质上非常粗糙。例如,它们可以捕获查询中给定位置的术语在文档中出现的次数,但有关特定术语是什么的信息在此表示中丢失了。此外,此方法中的功能并不总是准确说明搜索查询中的词序等问题。为了释放海量数据的力量并启用能够更好地反映查询与文档之间关系的特征表示,MEB在必应搜索的三年中对超过5000亿个查询/文档对进行了训练。输入特征空间有超过2000亿个二值化特征。使用FTRL的最新版本是具有90亿个特征和超过1350亿个参数的稀疏神经网络模型。使用MEB发现隐藏的关系MEB正在生产中用于所有地区和语言的100%必应搜索。它是Microsoft提供的最通用的模型,它具有出色的能力来记住这些二进制特征所代表的事实,同时以连续的方式从大量数据中可靠地学习。微软研究人员通过实验发现,训练大量数据是大型稀疏神经网络的独特能力。当将相同的Bing日志输入LightGBM模型并使用BM25等传统数值特征(例如查询到文档匹配特征)对其进行训练时,模型质量在使用一个月的数据后不再提高。这表明模型容量不足以从大量数据中获益。相比之下,MEB在三年的数据上进行了训练,研究人员发现它会随着更多数据的添加而继续学习,这表明模型容量可以随着新数据的增加而增加。与基于Transformer的深度学习模型相比,MEB模型还展示了超越语义关系的学习能力。在查看MEB学习的主要特征时,研究人员发现它可以学习查询和文档之间隐藏的关系。表1:MEB模型学习示例。例如,MEB了解到“Hotmail”与“MicrosoftOutlook”密切相关,尽管它们在语义上并不接近。但MEB发现了这两个词之间的微妙关系:Hotmail是Microsoft提供的一种基于Web的免费电子邮件服务,后来更名为MicrosoftOutlook。同样,它了解到“Fox31”和“KDVR”之间有很强的联系,“KDVR”是科罗拉多州丹佛市以Fox31品牌运营的电视频道的呼号,而表面上这两个术语之间没有明显的语义联系.更有趣的是,MEB可以识别单词或短语之间的负面关系,揭示用户不希望在查询中看到的内容。例如,搜索“棒球”的用户通常不会点击谈论“曲棍球”的页面,即使它们都是流行的运动。了解这些负面关系可以帮助您忽略不相关的搜索结果。MEB学习到的这些关系与基于Transformer的DNN模型学习到的关系非常互补,搜索相关性和用户体验得到了很好的提升。Microsoft在生产Transformer模型之上引入MEB产生了以下结果:页面上最顶部搜索结果的点击率(CTR)增加了近2%。这些结果位于折叠页面之上,因此您无需向下滚动即可找到您要查找的内容。手动查询重构减少了1%以上。用户需要手动重新制定查询意味着他们不喜欢他们在原始查询中搜索的结果,因此权重的减少表明模型性能得到提高。“下一页”等选项卡的点击次数下降了1.5%以上。用户需要点击“下一页”按钮意味着他们没有在第一页找到他们要找的东西。MEB如何在大型数据集上训练并提供特征模型模型的结构如下图1所示。MEB模型由二元特征输入层、特征嵌入层、池化层和两个密集层组成。输入层包含从49个特征组生成的90亿个特征,每个二值化特征被编码为15维嵌入向量。在每组sum-pooling和concatenation之后,向量通过2个密集层以产生点击概率估计。图1:MEB是一种稀疏神经网络模型,由一个接受二值化特征的输入层、一个将每个二值化特征转换为15维向量的特征嵌入层、一个对特征进行分组和连接以产生一个sumpooling层组成735维向量,然后通过两个密集层以产生点击概率。如下图2所示,上面图1中显示的功能是从示例查询“MicrosoftWindows”和https://www.microsoft.com/en-us/windows上的文档生成的。训练数据和二值化特征MEB使用Bing三年的搜索日志作为训练数据。对于每个Bing搜索结果,该研究使用启发式方法来确定用户是否对他们单击的文档感到满意。研究人员将“令人满意”的文件标记为阳性样本。同一搜索结果中的其他文档被标记为负样本。对于每个查询和文档对,从查询文本、文档URL、标题和文字文本中提取二值化特征。这些特征被输入到稀疏神经网络模型中,以最小化模型预测的点击概率和实际点击标签之间的交叉熵损失。特征设计和大规模训练是MEB成功的关键。MEB特征定义在非常具体的term-level(term-level)或N-gram-level(N-grams是N个term的序列)查询和文档之间的关系上,传统的数值特征无法捕获,传统的数值特征只能关心查询和文档之间的匹配计数。为了充分发挥这个大规模训练平台的力量,所有特征都设计为二值化特征,可以轻松一致地覆盖手工构建的数字特征和直接从原始文本中提取的特征。这样做允许MEB在一条路径上执行端到端优化。当前的生产模型使用三种主要类型的特征,包括:查询和文档N-gram对特征N-gram对特征是基于Bing搜索日志中查询和文档域的N-gram组合生成的。如下图2所示,来自查询文本的N-gram将与来自文档URL、标题和文字文本的N-gram组合,形成N-gram对特征。更长的N-gram(更大的N值)捕获更丰富和更细微的概念。然而,随着N的增加,处理它们的成本呈指数增长。在本研究的生产模型中,N被设置为1和2(分别为单字母组和双字母组)。分桶数值特征的单热编码数值特征首先通过分桶操作传递,然后通过应用单热编码进行二值化。在图2所示的示例中,数字特征“QueryLength”可以取1到MaxQueryLength之间的任何整数值。我们为该特征定义了一个MaxQueryLength桶,这样查询“MicrosoftWindows”查询的二值化特征QueryLength_2等于1。.例如,UrlString是一个分类特征,每个唯一的URL字符串文字都可以作为一个不同的类别。图2:MEB功能示例。左侧显示了一个查询文档对,其中查询文本、文档标题、URL和片段用作特征提取的输入。MEB产生的一些典型特征如右图所示。支持万亿查询/文档对,持续训练(每日刷新)为了实现如此大的特征空间的训练,本研究利用了微软广告团队构建的内部大规模训练平台Woodblock,这是一种方法traininglargesparsemodels分布式、大规模、高性能的解决方案。Woodblock建立在TensorFlow之上,弥合了通用深度学习框架与行业对数十亿稀疏特征的需求之间的差距。通过对I/O和数据处理的深度优化,Woodblock可以使用CPU和GPU集群在数小时内训练数千亿个特征。但即使使用Woodblock管道,也很难一次性使用包含近万亿查询/文档对的三年Bing搜索日志来训练MEB。因此,本研究采用连续训练的方式,已经在现有数据上训练过的模型每月都会在新数据上继续训练。更重要的是,即使在Bing中实施之后,模型也会通过使用最新的每日点击数据不断训练来每天刷新,如图3所示。为了避免过时特征的负面影响,自动过期策略会检查每个特征的时间戳和删除过去500天内未发生的特征。经过不断的训练,每天更新模型的部署是完全自动化的。图3:MEB的每日刷新过程。生产MEB模型每天都使用最新的单日Bing搜索日志数据进行持续训练。在部署新模型并在线提供服务之前,过去500天内不存在的陈旧特征将从模型中移除。这使特征保持新鲜并确保有效使用模型容量。协作应用程序使用BingObjectStore平台为超大型模型提供服务。MEB稀疏神经网络模型的内存占用约为720GB。在流量高峰期,系统需要维持每秒3500万次特征查找,因此无法在单机上为MEB服务。研究人员使用Bing的ObjectStore服务来支持MEB模型。ObjectStore是一个多租户的分布式键值存储系统,能够存储数据和计算托管。MEB的特征嵌入层在ObjectStore中实现为一个表查找操作,每个二值化特征哈希被用作检索训练期间产生的嵌入的键。池化层和密集层部分的计算量更大,并且在承载用户定义函数的ObjectStoreCoproc(一种近数据计算单元)中执行。MEB将计算和数据服务分离到不同的分片中。每个计算分片占用一部分生产流量用于神经网络处理,每个数据分片承载部分模型数据,如下图4所示。图4:计算分片中的ObjectStoreCoproc与数据分片交互以检索特征嵌入并运行神经网络。数据分片存储特征嵌入表并支持来自每个Coproc调用的查找请求。由于在ObjectStore上运行的大多数工作负载都专用于存储查找,因此将MEB计算分片和内存数据分片放在一起可以最大限度地利用多租户集群中ObjectStore的计算和内存资源。分片分布在多台机器上的设计也可以精细地控制每台机器的负载,使MEB的服务延迟可以降低到几毫秒以内。实现更快的搜索,更好地理解内容研究人员发现,像MEB这样的非常大的稀疏神经网络可以学习与基于Transformer的神经网络互补的细微关系。这种对搜索语言的更好理解为整个搜索生态系统带来了显着好处:Bing用户能够更快地找到内容和完成搜索任务,由于改进的搜索相关性操作,更少需要手动制定查询或点击下一页;因为MEB更了解内容,出版商和网站管理员可以获得更多访问量,他们可以专注于满足客户,而不是花时间寻找有助于提高排名的关键词。一个具体的例子是产品品牌重塑,其中MEB模型可能能够自动学习旧名称和新名称之间的关系,例如“Hotmail”和“MicrosoftOutlook”。如果用户打算使用DNN为他们的业务提供动力,微软研究人员建议尝试使用大型稀疏神经网络来补充这些模型。特别是,如果您有大量的用户交互历史流并且可以轻松构建简单的二值化特征,则尤其应该使用这种方法。他们还建议用户确保模型更新尽可能接近实时。