使用机器学习预测接下来需要的文件,第 2 部分

简介: 使用机器学习预测接下来需要的文件,第 2 部分

我们一直在改进支持内容建议的底层基础架构和机器学习算法。

在内容建议的迭代过程中,我们面临的一个新挑战是我们想要支持的不同类型的内容。在 Dropbox 中,我们有各种各样的内容 — 文件、文件夹、Google DocsMicrosoft Office 文档和我们自己的 Dropbox Paper。无论用户使用哪种类型的内容,我们都希望确保最相关的内容触手可及。但是,这些类型的内容存在于不同的持久性存储中,具有不同的元数据,并且由不同的用户在不同程度上使用。可以说,这使得很难创建单个机器学习管道来统治它们。

Dropbox 文件系统支持许多不同类型的内容,例如常规文件和文件夹、纸质文档以及基于云的内容,如 Google 文档或 Microsoft Office 文档。向用户建议正确的内容集需要我们处理所有这些类型。

在等待底层基础设施迎头赶上的同时,我们决定单独处理这些类型,以便更快地向用户提供改进的建议。在本博客文章的其余部分,我们将介绍如何针对这些类型的内容训练和改进 ML 模型,以及如何以原则性的方式将它们组合在一起。我们还将介绍我们在此过程中构建和使用的改进工具。

改进文件建议

4 月份,我们在 Dropbox 首页上发布了内容建议后,立即着手改进 ML 模型的性能。我们从两个不同的角度处理了这个任务:首先,我们如何结合更多的信号来做出更好的预测?接下来,我们如何训练模型以更好地使用这些信号?

在之前的博客文章中,我们提到我们希望在进行预测时合并文件类型。但是,有许多方法可以定义和分类文件类型。例如,一个人可以有一组稀疏的主要类别(例如文本,图像,视频),一组更细粒度的类别(例如.raw文本,Web文档,源代码,文字处理器文件),甚至语义类别(例如合同,收据,屏幕截图,提案)。在我们的例子中,我们从文件扩展名开始,因为这些信息在训练和推理时都普遍可用,并且可以体现文件的一些基本属性。

人们可以天真地将文件扩展名编码为单热向量,其中向量的维数是所有可能的文件扩展名的数量。然而,这并不理想,原因有两个:首先,向量可以是非常高维和稀疏的,这需要能够从这些向量中提取有用信号的模型。其次(也是更重要的),文件扩展名的分布非常繁重,这意味着模型很难了解更奇特的扩展名。

在我们收集的数据集中,各种扩展的相对流行程度,显示了扩展的长尾。

为了解决这些问题,我们决定创建一个从弱监督任务训练的文件扩展名嵌入 - 我们将在下一篇博客文章中对此进行描述,但简而言之,我们训练了文件扩展名嵌入,以预测两个文件扩展名在 Dropbox 中的单个上传中同时出现的可能性。这产生了一个低维的密集向量,使得语义上相似的文件扩展名(例如JPEG和PNG)在嵌入空间中非常接近。这使我们的模型能够有效地从分布不均匀的数据中学习,从而提高模型的离线和在线性能。

我们选择使用的另一个重要信号是文件名。例如,当模型遇到PDF文件时,它可能知道它是一个文本文档,但不知道它是什么样的文档。如果文件名可用,模型可能会在其中找到一些线索。在我们第一次尝试将文件名合并为信号时,我们将文件名视为一个字符包,类似于NLP中的词袋模型。虽然此模型无法捕获给定文件名的语义含义,但我们确实在离线评估中看到了一些改进,因为此功能可以帮助模型识别文件是用户生成的文件还是以编程方式生成的文件。我们后来转到了一个带有 char-RNN 的顺序模型,该模型一次引入文件名的一个字符。引入所有字符后 char-RNN 的状态向量将用作文件名的嵌入向量。这样的顺序模型更擅长检测临时文件名,例如 j8i2ex915ed.bin。

文件名可以通过 char-RNN 作为功能合并到内容建议模型中。

处理基于云的文档

如简介中所述,Dropbox支持各种第三方内容。可以在Dropbox中创建基于云的文件(例如Google Docs和Microsoft Office 365文件)。我们的目标是在内容建议模型中支持此类内容类型,但意识到对于这些相对较新的合作伙伴关系,可用的训练数据量远远小于您的日常文件(如 PDF 和 JPEG)。因此,我们最终制作了一个单独的数据集,而不是将此数据集与主文件建议数据集合并,而是使用相同的网络架构训练了一个单独的模型。

构建文件夹建议

内容建议最重要的目标是使我们的用户能够快速找到他们的重要文件。但是,从一个快速而肮脏的在线实验中,我们观察到文件夹的点击率明显更高 - 我们通过混合一些由启发式生成的文件夹,以及原始(仅文件)内容建议模型建议的文件来实现这一点。我们假设用户可能希望快速访问包含其工作文件的文件夹,即使这意味着需要额外单击才能访问文件。方便的是,建议一个文件夹是建议其中的多个文件的合理替代方法 - 虽然文件夹本身可能并不精确,但如果我们愿意容忍潜在的额外点击来访问该文件,这可以提高整体召回率(通过为其他建议节省空间)。

现在,建议一个重要文件或其父文件夹是否更好是一个有趣的问题,但这是一个只能通过用户反馈来回答的问题。因此,我们很早就做出了一个战术决定,将文件建议和文件夹建议彼此分离。这并不妨碍我们重用脱机数据和训练管道(我们为支持文件建议而构建的管道)来获取文件夹建议。我们训练了单独的模型,然后使用组合器模型来混合两个生成的候选列表,在本文的后面部分将对此进行讨论。

我们使用非常相似的管道来训练和提供文件和文件夹的模型。

在重用现有管道时,我们进行了以下适合于处理文件夹的调整。

  • 生成候选项:对于文件建议,只需获取用户最近注册了事件的文件列表就足够了;但是,对于文件夹建议,除了具有已注册事件的任何文件夹外,我们还采用了此类文件的父文件夹。
  • 获取信号:对于文件建议,我们提取了过去 90 天内候选文件上的事件,但对于文件夹建议,除了候选文件夹本身的事件之外,我们还提取了属于候选文件夹的文件的事件。这允许模型识别可能具有大量“低重要性”文件的文件夹,以及具有很少“高重要性”文件的文件夹,并让它裁定哪些应该排名更高。
  • 创建训练数据:在我们之前的博客文章中,我们提到我们使用两个来源来获得离线数据集的阳性候选者:首先,我们已经标记了使用启发式方法运行在线实验的数据;其次,我们在 Dropbox 中有一个用户事件的无监督数据集,从中我们可以创建一个监督数据集,用于预测在不久的将来是否会与文件进行交互。对于第二种情况,此未来交互的定义已更改为包括对文件夹的直接操作和对文件夹中某些文件的操作。

通过对脱机管道进行这些更改,我们可以训练模型以与对文件评分相同的方式对文件夹进行评分。

旁白:改善培训基础设施

虽然我们一直在使用的神经网络不是很深入,但我们有许多新的信号,数据集和调整,我们正在试验,如前面的部分所述。这使得重新运行实验和调整超参数成为一项重复的苦差事,特别是因为超参数集相当大 - 网络的深度和宽度,优化器的选择,学习速率,激活函数和正则化器,仅举几例。以前,我们使用朴素的网格搜索来优化这些超参数。然而,众所周知,网格搜索方法可能成本高昂且无效。

为了更好地执行训练工作,我们的机器学习基础架构团队构建了一个名为 dbxlearn 的工具。dbxlearn 是用于机器学习训练的弹性且可扩展的计算环境,并提供更高级的算法,如贝叶斯优化,用于超参数调优。借助 dbxlearn,我们已经能够为离线实验执行更多的调优作业,并以更快的迭代速度测试不同的信号、数据和模型,从而通过内容建议提供最佳的模型和用户体验。

处理纸质文档

截至上周,Paper文档现在是Dropbox文件系统的一部分。但是,由于我们的内容建议模型的开发是在此次迁移之前开发的,因此我们需要暂时支持(以前)不属于用户 Dropbox 的 Paper 文档。正如我们对基于云的文档所做的那样,我们决定创建一个单独的数据集和启发式来处理 Paper 文档,并智能地合并结果,如下一节所述。

将模型整合在一起

如前所述,我们为每个内容类型开发了单独的模型。由此产生的关键挑战是将这些子模型中每个子模型生成的建议相互排序。为了实现这一点,我们将每个子模型生成的分数建模为具有以下属性的黑盒函数:

  • 对于每个子模型,都存在一个函数,该函数将子模型生成的分数映射到给定分数的建议项目的预期点击率。
  • 是单调和连续的。

如果每个子模型都存在这种情况,那么我们可以映射子模型生成的分数,以获得预期的点击率,这是一个跨子模型可比的数量。一旦我们获得了来自所有子模型的所有建议的预期点击率,我们就可以按预期的点击率对建议进行排名。

在实践中,我们进一步假设 它是一个三次样条,这使我们能够离散化 的表示。给定一个序列,其中是子模型分数,并且是对应于单击或非单击的指示变量,则给定序列的对数似然是 。然后,我们可以恢复在 给定 的约束下最大化对数似然的样条参数

给定由子模型生成的排序项的数据集,我们可以拟合一个函数,以便最大化观测的后验可能性。我们将函数建模为三次样条曲线,沿着原始分数的分布进行采样,以离散化问题。

求解这些规范化函数需要一个初始在线实验,该实验可以测量单击特定分数的项目的可能性。为了解决这个问题,我们首先将子模型作为阴影运行到生产模型中, 这意味着我们生成候选项和分数而不向用户显示它们。然后,我们对齐生成的分数直方图,产生分数的简单仿射变换,我们用它来创建初始混合模型。然后将该混合物模型用于向用户展示的新在线实验中,生成上图中所需的分数和标签。然后,我们能够验证使用归一化函数生成的新混合模型是否产生了更好的整体点击率。

结论

除了其他实验想法外,我们还通过在用户登录的主页上进行在线A / B测试来评估前面部分中讨论的每个改进和分层技术,直到达到统计显著性。我们进行的一些实验产生了负面结果,并没有被纳入生产模型。总而言之,我们能够将至少点击一次建议的用户会话百分比提高 50% 以上,这让我们有信心大规模推出生产模型。

向 Dropbox 的所有用户推出机器智能驱动的功能是许多团队之间的协作所实现的一项努力。除了机器学习工程师的工作之外,ML基础架构团队和围绕智能建议构建用户体验的团队的工作对于为用户提供价值同样重要。

目录
相关文章
|
4月前
|
机器学习/深度学习 存储 Linux
【机器学习 Azure Machine Learning】使用VS Code登录到Linux VM上 (Remote-SSH), 及可直接通过VS Code编辑VM中的文件
【机器学习 Azure Machine Learning】使用VS Code登录到Linux VM上 (Remote-SSH), 及可直接通过VS Code编辑VM中的文件
|
6月前
|
机器学习/深度学习 人工智能 对象存储
人工智能平台PAI产品使用合集之大文件如何下载下来
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
Shell 网络安全 文件存储
ModelScope中,请教PAI-DSW中实例退出后如何让文件继续保持?现在是退出后就清零了。再打开实例进去就没有了
ModelScope中,请教PAI-DSW中实例退出后如何让文件继续保持?现在是退出后就清零了。再打开实例进去就没有了
145 1
|
机器学习/深度学习 SQL
SQL Server提示:安装程序无法与下载服务器联系。请提供 Microsoft机器学习服务器安装文件的位置。。。。
今天在安装SQL Server的过程中,出现问题:安装程序无法与下载服务器联系。请提供 Microsoft机器学习服务器安装文件的位,然后单击“下一步”,可从以下位置下载安装文件。
SQL Server提示:安装程序无法与下载服务器联系。请提供 Microsoft机器学习服务器安装文件的位置。。。。
|
机器学习/深度学习 移动开发 Windows
机器学习奥林匹克-身体健康与幸福之心脏病预测
机器学习奥林匹克-身体健康与幸福之心脏病预测
438 0
机器学习奥林匹克-身体健康与幸福之心脏病预测
|
机器学习/深度学习 数据处理
机器学习——PM2.5预测白话
本项目仅用于参考,提供思路和想法并非标准答案!请谨慎抄袭!
424 0
机器学习——PM2.5预测白话
|
机器学习/深度学习 数据采集 人工智能
就离谱!使用机器学习预测2022世界杯:小组赛挺准,但冠亚季军都错了 ⛵
本文使用机器学习建模对 FIFA 2022世界杯结果进行了预测,赛后将其与真实结果进行比较,可以看出:小组赛到1/4决赛的预测准确率很高,半决赛和决赛的预测准确率为0,冠亚季军无一预测准确。
141 0
就离谱!使用机器学习预测2022世界杯:小组赛挺准,但冠亚季军都错了 ⛵
|
机器学习/深度学习 算法
​Kaggle M5 Forecasting:传统预测方法与机器学习预测方法对比(三)
​Kaggle M5 Forecasting:传统预测方法与机器学习预测方法对比(三)
241 0
​Kaggle M5 Forecasting:传统预测方法与机器学习预测方法对比(三)
|
机器学习/深度学习 vr&ar
​Kaggle M5 Forecasting:传统预测方法与机器学习预测方法对比(二)
​Kaggle M5 Forecasting:传统预测方法与机器学习预测方法对比(二)
238 0
​Kaggle M5 Forecasting:传统预测方法与机器学习预测方法对比(二)
|
机器学习/深度学习 存储
​Kaggle M5 Forecasting:传统预测方法与机器学习预测方法对比(一)
​Kaggle M5 Forecasting:传统预测方法与机器学习预测方法对比(一)
412 0
​Kaggle M5 Forecasting:传统预测方法与机器学习预测方法对比(一)