首页> 中国专利> 利用无监督学习来改进文本到内容建议的方法和系统

利用无监督学习来改进文本到内容建议的方法和系统

摘要

用于训练文本到内容建议ML模型的方法和系统包括:访问包含从应用程序收集的未标记训练数据的数据集,未标记训练数据是在用户隐私约束下收集的;将ML模型应用于该数据集以生成预训练嵌入;将受监督ML模型应用于标记数据集,以通过利用受监督ML模型生成的预训练嵌入来训练由应用程序所利用的文本到内容建议ML模型。

著录项

  • 公开/公告号CN112384909A

    专利类型发明专利

  • 公开/公告日2021-02-19

    原文格式PDF

  • 申请/专利权人 微软技术许可有限责任公司;

    申请/专利号CN201980044681.2

  • 申请日2019-05-01

  • 分类号G06F16/332(20190101);G06F16/33(20190101);G06N20/00(20190101);

  • 代理机构72002 永新专利商标代理有限公司;

  • 代理人赵腾飞

  • 地址 美国华盛顿州

  • 入库时间 2023-06-19 09:54:18

说明书

背景技术

智能文本到内容建议服务用于各种各样的计算机程序。例如,文本到内容建议服务可以用于基于作为应用程序中的输入接收的文本,来建议图像、图标或表情符号。通常,此类应用程序可能需要遵守某些隐私和数据规定。因此,这些应用程序可能不能存储和使用输入的用户数据。事实上,它们可以利用诸如掩蔽某些词并且不保持输入文本的原始句子顺序以确保隐私之类的机制。这使得难以正确地进行文本到内容建议。

此外,经常向提供文本到内容建议的应用程序提供新内容。因为标记新内容的过程通常是耗时且费力的,所以一些新内容可能是未标记的。通常,模型包含的标记数据越多,该过程提供的建议的质量就越好。例如,当向文本到内容服务添加新的未标记内容时,将新数据作为建议进行提供的机率低于使用旧数据。这可能意味着即使向服务增加新内容,也可能长时间地不能向用户呈现新内容。

因此,需要用于智能地训练文本到内容建议模型的改进系统和方法。

发明内容

在一个通常方面,本公开内容提出了一种设备,该设备具有处理器和与所述处理器进行通信的存储器,其中所述存储器存储有可执行指令,当所述可执行指令被所述处理器执行时,使得该设备执行多个功能。所述功能可以包括:访问包含从应用程序收集的未标记训练数据的数据集,该未标记训练数据是在用户隐私约束下收集的;将无监督机器学习(ML)模型应用于所述数据集以生成预训练嵌入;将受监督ML模型应用于标记数据集以训练由所述应用程序所利用的文本到内容建议ML模型。该受监督ML模型可以利用该受监督ML模型生成的所述预训练嵌入来训练所述文本到内容建议ML模型。

在另一个通常方面,本申请描述了一种用于训练文本到内容建议ML模型的方法。该方法可以包括:访问包含从应用程序收集的未标记训练数据的数据集,该未标记训练数据是在用户隐私约束下收集的;将无监督机器学习(ML)模型应用于所述数据集以生成预训练嵌入;将受监督ML模型应用于标记数据集以训练由所述应用程序所利用的文本到内容建议ML模型。该受监督ML模型可以利用该受监督ML模型生成的所述预训练嵌入来训练所述文本到内容建议ML模型。

在另外的通常方面,本申请描述了一种其上存储有指令的非临时性计算机可读介质,当所述指令被执行时,使得可编程设备用于:访问包含从应用程序收集的未标记训练数据的数据集,该未标记训练数据是在用户隐私约束下收集的;将无监督机器学习(ML)模型应用于所述数据集以生成预训练嵌入;将受监督ML模型应用于标记数据集以训练由所述应用程序所利用的文本到内容建议ML模型。该受监督ML模型可以利用该受监督ML模型生成的所述预训练嵌入来训练所述文本到内容建议ML模型。

提供本概括部分以便用简化的形式介绍将在以下的详细描述中进一步描述的概念选择。本概括部分并不是旨在标识本发明的关键特征或本质特征,也不是用于限制本发明的保护范围。此外,所要求保护的主题并不限于解决在本公开内容的任何部分中提到的任何或所有缺点的实施方式。

附图说明

附图仅通过示例而非限制的方式,描绘了根据本教导内容的一个或多个实施方式。在附图中,相同的附图标记表示相同或类似的元件。此外,应当理解的是,附图不一定按比例进行绘制。

图1描绘了可以在其上实现本公开内容的方面的示例性系统。

图2描绘了用于在应用中提供内容建议的简化示例性系统。

图3是用于文本到内容模型的示例性模型架构。

图4是用于在图3的模型架构中使用的预训练嵌入的无监督学习模型的示例模型架构。

图5是描绘用于提供无监督学习模型以预测无序数据集中的被掩蔽词以及预训练嵌入层的示例性方法的流程图。

图6是描绘训练基于文本到内容建议模型的示例性方法的流程图。

图7是示出示例性软件架构的框图,其各个部分可以结合本文描述的各种硬件架构来使用。

图8是示出被配置为从机器可读介质读取指令并执行本文所描述的任何特征的示例性机器的组件的框图。

具体实施方式

在以下的详细描述中,通过示例的方式阐述了许多特定细节,以便提供对相关教导的透彻理解。在阅读本说明书之后,对于普通技术人员来说显而易见的是,可以在不使用这些细节的情况下实践各个方面。在其它实例中,在相对较高层级描述了公知的方法、过程、组件和/或电路,而没有详细地描述,以避免不必要地对本教导的各方面造成模糊。

典型计算机用户通常采用的许多应用程序可以包括除了用于在应用程序中输入数据的文本之外的内容。经常向这些应用程序添加新内容,并且每个内容可以包括大量不同的内容,例如图像、图标、表情符号等等。结果,用户查看大量内容以找到与用户正在处理的文档相关的内容通常是困难且耗时的。因此,用户可能经常放弃在他们的文档中包含此类内容。但是,所述另外的内容可能在文档创建中起重要作用。例如,包括诸如图标和图像之类的内容的呈现可以更清楚地传达消息,并且更具吸引力和更加可呈现。

文本到内容服务可以通过基于用户的输入文本向用户呈现建议列表,来为用户提供选择与所输入的文本相对应的内容(例如,图像、图标、表情符号或关键字)的简单方式。但是,用于正确提供文本到内容建议的训练模型通常可能是困难的,这是因为训练集可能被部分地过滤以确保用户的隐私。此外,在训练数据集合期间,在演示中的每个幻灯片中,可能仅记录了固定词汇表内的一元词(unigram)(例如,单词)。进一步地,可以对句子中的词进行随机排列(shuffle)以确保不能恢复原始文本。但是,大部分当前使用的文本分析算法是基于包括正确文本序列的有序语句和数据。在没有正确文本序列的情况下,这些算法可能无法工作。

为了使事情更复杂,可以在给定应用中频繁地引入新内容(例如,图标、图像或表情符号)。当提供新内容时,可能需要重新训练在服务中使用的文本到内容模型以确保该内容包含在建议中。但是,由于新内容通常没有进行充分标记,而旧内容进行了标记,因此使用传统方法关于这种不平衡数据集来训练文本到内容模型,可能导致很少预测新内容的模型。

文本到内容服务通常拥有若干模型,每个模型基于用户的文本输入来建议某些类型的内容,例如文本到图像、文本到图标和文本到表情符号。传统上,这些模型中的每一个模型都使用它们自己的方法来训练模型。例如,一些模型使用fastText分类器,而另一些模型使用基于树的模型或模型的组合。这些模型可以使用已知的预训练词嵌入来将输入文本传送到嵌入,然后通过迭代使用它们自己的标记数据来优化模型。当经常为每个模型添加新内容时,该方法不可扩展。此外,各个模型可能面临不平衡的数据问题,因为一些模型可能具有大量的标记数据,而另一些模型则没有。通常,可用的标记数据越多,则提出的建议质量就越好。结果,具有不平衡的标记数据可能导致不平衡的内容建议。例如,因为文本到图像模型具有丰富的标记数据,因此它可以具有最佳质量。另一方面,由于有限的标记数据,文本到图标模型可能无法提供高质量的建议。

为了解决这些问题以及其它问题,在一个例子中,本说明书提供了用于通过利用深度神经网络模型,基于输入文本来智能地建议内容的技术。在一个例子中,深度神经网络可以包括作为平均池化层的第一层和作为全连接层的第二层。可以通过利用包括新内容和旧内容的数据集,使用监督训练来训练该深度神经网络模型。然而,为了确保提高建议准确性,可以通过使用大规模未标记数据的无监督预训练机制来预训练该模型。大规模未标记数据可以包括通过应用程序接收的应用程序域特定数据和外部数据。域特定数据可以掩蔽某些词并包括无序句子。在训练深度神经网络模型以建议内容之前,可以使用无监督预训练机制来预测掩蔽词,并预先训练深度神经网络模型的第一层和第二层。可以使用无监督学习技术来为文本到内容服务生成若干个特定于域的预训练词嵌入集合(例如,大小100、300、500、1000等)。这些词嵌入可以合并该服务中的所有用户文本的特定于域的知识。然后,每个文本到内容任务可以基于其可用的标记数据、目标准确度和资源约束,来选择正确的特定于域的预训练词嵌入集合。因此,该解决方案提供了一种训练文本到内容模型,以提高准确性和效率的改进方法。

如本领域普通技术人员在阅读本公开内容时应当理解的,由这些实现提供的益处和优点可以包括但不限于:低效训练以及提供不准确和不平衡的文本到内容建议的技术问题的解决方案。本文提供的技术解决方案和实施方式优化了训练文本到内容模型的过程,提高了建议内容的准确性,并确保在建议内容中包含新内容。这些解决方案提供的益处提供了更加用户友好的应用程序,提高了准确性并提高了系统和用户效率。

一般而言,本文所描述的方法和系统可以包括或者以其它方式利用机器训练的模型来识别与文本相关的内容。机器学习(ML)通常涉及可以随时间自动学习的各种算法。这些算法的基础通常建立在数学和统计学的基础上,数学和统计学可以用于预测事件、分类实体、诊断问题、以及建模函数近似。举例而言,可以使用由ML模型生成的数据来训练系统,以便识别用户活动中的模式,确定各个词和内容(例如,图标、图像或表情符号)之间的关联和/或识别与给定用户输入的文本相关的建议内容。可以在随时间累积、回顾和/或分析来自大量用户的用户数据之后进行这种确定,这些数据可以被配置为向ML算法(MLA)提供初始或正在进行的训练集。另外,在一些实现中,用户设备可以被配置为将在相关应用程序使用期间本地捕获的数据发送到云或本地ML程序,并提供可以用于微调或增加MLA有效性的补充训练数据。还可以使用该补充数据来促进内容的识别和/或增加用于未来的应用程序版本的训练集或者对当前应用程序的更新。

在不同的实现中,可以使用包括初始ML模型的训练系统(其可以称为“ML模型训练器”),其中该初始ML模型被配置为从训练数据仓库或者从设备生成的数据中获得的训练数据来生成后续训练的ML模型。该ML模型的生成可以称为“训练”或“学习”。训练系统可以包括和/或可以访问用于训练的大量计算资源(例如,云),其包括适用于机器学习训练的很多计算机服务器系统。在一些实现中,ML模型训练器被配置为根据相同或类似的训练数据自动生成多个不同的ML模型以进行比较。例如,可以训练诸如但不限于以下的不同基础ML算法:决策树、随机决策森林、神经网络、深度学习(例如,卷积神经网络)、支持向量机、回归(例如,支持向量回归、贝叶斯线性回归或高斯过程回归)。再举一个例子,模型的大小或复杂性可以在不同的ML模型之间变化,比如决策树的最大深度、或者卷积神经网络中的隐藏层的数量和/或大小。再举一个例子,可以使用不同的训练方法来训练不同的ML模型,其例如但不限于:训练数据的训练集、验证集和测试集的选择、训练数据项的排序和/或加权、或者训练迭代的数量。可以基于诸如但不限于以下的因素来选择所获得的多个训练ML模型中的一个或多个:精度、计算效率、和/或功率效率。在一些实现中,可以产生单个训练的ML模型。

可以连续地更新训练数据,并且可以对系统使用的这些模型中的一个或多个模型进行修改或重新生成以反映对训练数据的更新。随着时间的推移,训练系统(无论是远程、本地存储还是二者)可以被配置为接收和累积越来越多的训练数据项,从而增加可用于ML模型训练的训练数据的数量和种类,以便提高训练的ML模型的准确性、有效性和稳健性。

图1示出了示例性系统100,可以在系统100上实现本公开内容的各方面。系统100可以包括服务器110,服务器110可以连接到或包括数据存储112,数据存储112可以用作存储库,可以在该存储库中存储与训练模型有关的数据集。服务器110可以操作成位于可由各种计算机客户端设备(例如,客户端设备130)访问的企业的共享资源服务器。该服务器还可以操作成用于在诸如应用程序122之类的一个或多个应用程序中提供文本到内容服务的基于云的服务器。

服务器110可以包括和/或执行文本到内容服务114,文本到内容服务114可以为在其客户端设备(例如,客户端设备130)上利用应用程序的一组用户提供智能文本到内容建议。文本到内容服务114可以用于检查用户经由应用程序(例如,应用程序122或应用程序136)输入的数据,并且通过利用各种模型来建议与输入的数据相对应的内容。在一个例子中,文本到内容服务114可以利用文本到图像模型116、文本到图标模型118和文本到表情符号模型120来建议相对应的内容。例如,文本到图像模型可以用于查找与应用程序中的用户数据相对应的图像。类似地,文本到图标模型可以用于提供与输入的数据相对应的建议图标,文本到表情符号模型可以用于查找与输入的数据相关的表情符号。也可以使用其它模型。例如,文本到内容服务可以包括文本到关键字模型,后者建议与输入的文本相对应的关键字。

使用成文本到内容服务的一部分的每个模型可以由训练机制124进行训练。训练机制124可以使用存储在数据存储112中的训练数据集来为模型116、118和120中的每一个提供训练数据集和进行初始训练。在一种实现中,训练机制124可以使用来自数据存储122(例如,存储的用户输入数据)的未标记训练数据,以经由深度神经网络模型来训练模型116、118和120中的每一个。可以在离线阶段执行初始训练。

客户端设备130可以经由网络130连接到服务器110。网络110可以是连接系统100的一个或多个元件的有线或无线网络或者有线和无线网络的组合。客户端设备13可以是具有或连接到输入/输出元件的个人或手持计算设备,其使得用户能够与各种应用程序(例如,应用程序122或应用程序136)进行交互。适当的客户端设备130的例子包括但不限于个人计算机、桌面型计算机、膝上型计算机、移动电话;智能电话;平板设备;平板手机;智能手表;可穿戴计算机;游戏设备/计算机;电视等等。关于图7和图8更详细地讨论客户端设备的内部硬件结构。

客户端设备130可以包括一个或多个应用程序136。每个应用程序136可以是在客户端设备上执行的计算机程序,其将该设备配置为响应于用户输入以允许用户交互地将数据输入到应用程序136中。适当的应用程序的例子包括但不限于:文字处理应用程序、演示应用程序、笔记记录应用程序和通信应用程序。

在一些例子中,用于接收用户输入并响应地提供内容建议的应用程序可以在服务器110(例如,应用程序122)上执行,并经由在线服务来提供。在一个实现中,web应用可以经由网络130与在客户端设备130上执行的用户代理132(例如,浏览器)进行通信。用户代理132可以提供允许用户与应用程序122进行交互的用户界面,可以使应用程序122能够将用户数据提供给数据存储112以存储为用作训练数据。在其它例子中,用于接收用户输入并提供内容建议的应用程序可以是本地应用程序,例如,在客户端设备130上存储和执行、并且提供允许用户与应用程序进行交互的用户界面的应用程序136。还可以经由网络130将来自应用程序136的用户数据提供给数据存储112以供训练机制124使用。

图2示出了用于在应用程序中提供内容建议的简化示例系统200。在一种实现中,该应用程序可以经由用户界面210接收用户输入。输入的数据可以是在应用程序的页面(例如,演示文稿的一个幻灯片或者词文档的一页)上输入的文本的一部分。该输入数据可以包括单个词或任何实际数量的词,从这些词中可以提取特征数据并将其输入到文本到内容服务114,文本到内容服务114使用训练模型116、118和120来提供建议的图像、建议的图标、建议的表情符号等等。文本到内容服务可以由远程服务器提供。替代地,受限制的训练模型可以在本地可用于应用程序以提供一些建议的内容(例如,在离线时)。

建议的图标可以由前门(frontdoor)和后端单元220处理,在用户界面元素(例如,用户界面元素240)中将前门和后端单元220呈现给用户时,其可以处理建议的内容的布局和优先级。在一种实现中,训练模型116、118和120中的每一个可以基于输入文本为每个建议内容(例如,每个建议图标)分配评分,并且可以向用户呈现排名最高的建议内容。因此,一旦用户在应用程序中输入一组数据,就可以向用户呈现高度相关的内容以便于进行选择。

图3描绘了用于文本到内容建议模型的示例性简化架构300。在一种实现中,文本到内容建议模型是具有两个层的深度神经网络。在一个例子中,文本到内容建议模型的输入可以是称为查询的文本的一部分。如图3中所示,输入数据集的示例性查询可以包括词1到词n。查询可以是从提供文本到内容服务的应用程序的页面(例如,演示文稿的一个幻灯片或者词文档的一页)导出的一组词。

可以将查询作为输入来输入到文本到内容模型中,并用于导出该查询所源自的句子的平均池化层310。这可以通过计算查询中的词嵌入的平均值来完成。假设给定的查询由Q表示并表示为Q=(w

在上面的式(1)中,w

可以在运行中学习词嵌入矩阵W

一旦计算了Q中的词嵌入的平均值,就可以生成输入文本(例如,查询)所源自的句子的平均池化层310。随后,可以针对该查询来开发全连接层320。如本领域所公知的,神经网络中的全连接层将模型的一层中的每个神经元连接到另一层中的每个神经元。全连接层320的大小可以取决于任务的复杂性。在一个例子中,该大小可以在500到1000之间变化。在一种实现中,全连接层320可以具有在其上激活的诸如整流线性单元(ReLU)之类的激活函数。这可以通过使用以下函数来完成:

h=max(0,Wq+b) (2)

在式(2)中,

一旦生成完全连接的神经网络层320并且在其上应用了任何期望的函数,就可以对所有可用的内容(例如,可用于建议的所有图标)计算概率分布,以预测查询对应的正确图标。这可以使用下式来计算:

p(y

在上面的式(3)中,p(y

为了适当地训练文本到内容模型,可以使用无监督学习模型和监督学习模型的组合。图4描绘了用于预先训练文本到内容建议模型的无监督学习模型的示例性简化架构400。在一种实现中,无监督学习模型是一种深度神经网络,其中将深度网络训练为具有对应于词或句子中的至少一个的嵌入层。应当理解的是,可以训练深度神经网络以获得非结构化文本嵌入。这些嵌入可以提供用于监督学习的基础。可以从未标记的数据集中学习嵌入层。在一个例子中,数据集可以是在一段时间内通过应用程序获得的未标记存储的用户数据的数据集。因此,数据集可以是一组特定于域的未标记数据,其具有应用程序的域知识。如上所述,为了确保隐私,存储的用户数据可以不包括原始输入文本中包括的所有词。例如,可以使用过滤方法来过滤掉某些词。此外,由于对训练算法中使用的字典大小的约束,因此不能记录用户输入中的所有词。在一个例子中,可以对句子中约30%的词进行随机掩蔽。另外,可以对句子中的词进行随机排列以改变它们的顺序,从而使得更难推断原始用户输入。因此,数据集可以包括一组无序的词,其中一些词进行了掩蔽。如图4中所示,输入数据集的示例性查询可以包括词1到词n,其中n是查询的长度,并且一些词进行了掩蔽。使用未标记数据集的一个优点在于:可以通过使用外部数据集(例如,英语千兆字节数据集)来增加词汇量大小。

然后,可以使用未标记的数据集来导出用于查询的模型架构的平均池化层310。这可以通过计算查询中的词嵌入的平均值来完成。可以将查询表示为

一旦对词嵌入矩阵W

然后,可以生成用于查询所源自的句子的平均池化层410。此外,一旦生成了平均池化层410,就可以基于

在式(5)中,

在一种实现中,无监督训练模型可以继续运行以处理未标记数据集中的所有数据。该数据集可以包括大量的查询。在一个例子中,该数据集可以包括数万个查询,并且无监督训练模型可能需要几天时间进行训练。一旦通过算法处理了该数据集,就可以生成嵌入层,该嵌入层可以进一步用作预训练嵌入层以训练文本到内容模型。该预训练嵌入层可以用作嵌入字典,其专门针对用于导出输入数据集的应用程序中的数据进行了裁剪。一旦完成了无监督学习模型400,作为该过程的一部分生成的最终预训练嵌入就可以用于训练一个或多个文本到内容模型。例如,可以使用预训练嵌入层来训练文本到内容服务中提供的所有文本到内容模型。

图5是描绘用于提供无监督学习模型以预测无序数据集中的被掩蔽词的示例性方法500的流程图。方法500可以在505处开始,转到在510处访问数据集。如上所述,该数据集可以是基于用户数据的特定于应用程序的数据集,这些用户数据是从应用程序接收的、并且记录在被设计用于供训练机制使用的数据集中。该数据库可以是包含被掩蔽词的无序查询的大规模数据集。该数据集的大小可以由针对训练算法所设计的字典的大小约束来确定,并且可以根据应用而变化。为了对模型进行训练,方法500可以处理数据集中的所有查询。

在访问数据集以检索查询之后,方法500可以转到在515处,使用一个或多个通用预训练嵌入来初始化训练模型。通用预训练嵌入可以是使用字典词作为其输入的行业标准预训练嵌入。这些预训练嵌入与通过本文所公开的无监督训练模型生成的预训练嵌入不同,其在于:由所公开的无监督训练模型生成的预训练嵌入是特定于域的并且是使用特定于应用程序的数据来训练的。方法500可以利用一个或多个预训练嵌入来初始化查询的词嵌入矩阵。

一旦使用一个或多个预训练嵌入来初始化了训练模型,方法500可以转到在525处生成全连接层之前,在520处生成用于该查询所源自的句子的平均池化层。然后,在530处,可以向全连接层应用诸如ReLU的激活函数。然后,方法500可以转到在535处向全连接层应用丢弃机制,然后在540处,神经网络可以预测被掩蔽词。可以针对数据集中的每个查询,重复方法500的步骤以生成预测类。

在该无监督学习过程期间,生成预训练嵌入。预训练嵌入是一种特定于应用程序的嵌入,其可以用于整个文本到内容服务,以提高文本到内容模型的质量,并跨文本到内容模型共享特定于域的知识。在一种实现中,可以通过无监督学习算法生成几组的预训练嵌入层,其中每组预训练嵌入层具有不同维度。例如,可以生成具有100维矢量的第一嵌入层。这对于具有较小大小的训练数据并因此相对简单的训练算法可能是有用的。可以生成具有500维矢量的第二预训练嵌入层,以用于训练更复杂的模型。可以创建具有1000维矢量的第三组预训练嵌入层,以用于训练高度复杂的模型。这些嵌入层中的每一个可以具有相应的初始化权重,其可以用于训练下游文本到内容模型,如下所述。

图6是描绘用于训练基于文本到内容的建议模型的示例性方法600的流程图。方法600可以在605处开始,转到在610处访问训练数据集。在该阶段使用的数据集可以是专门为训练特定类型的文本到内容建议模型(例如,文本到图标、文本到图像或文本到表情符号)而提供的标记数据集。因此,在该阶段进行的训练可以是监督学习。根据所需要的训练的类型(例如,初始训练或者由于新内容而进行的再训练),所使用的数据集的大小可能相对较小并且可能取决于所训练的模型的类型。

在访问数据集以访问查询之后,方法600可以转到在615处,使用由无监督学习模型生成的预训练嵌入层来初始化训练模型。可以在该阶段选择最适合于被训练的模型类型的预训练嵌入层。方法600可以利用该预训练嵌入来初始化用于查询的词嵌入矩阵。

一旦使用预训练嵌入来初始化了训练模型,方法600可以转到在625处应用初始化权重之前,在620处生成用于该查询所源自的句子的平均池化层。可以从无监督学习模型导出初始化权重,以初始化正在训练的文本到内容模型。然后,方法600可以转到在630处生成全连接层。在635处,可以向全连接层应用诸如ReLU的激活函数。然后,方法600可以转到在640处向全连接层应用丢弃机制,然后在540处,可以创建输出预测类。

可以针对数据集中的每个查询,重复方法600的步骤以生成预测类。在一种实现中,可以在全连接层和输出预测类之间使用随机权重。预测类的大小可以取决于在应用程序中可用的内容的大小。例如,如果应用程序包括可用于文本到图标建议模型的800个图标,则为该模型创建的类的大小可以是800。可以重复该方法的步骤以微调模型,每次使用不同的权重来实现最终模型。用此方式,由无监督学习模型生成的预训练嵌入层可以用于训练下游任务。

在一种实现中,可以向最终模型添加工程层以确保该模型在在线环境下正确地运行。这是因为在测试期间,模型可能与在现实世界和在线环境下的功能不同,因为信号可能隐藏了很多其它模型等等。工程层可以指导建议。特别是,对于新内容比例,工程层可以调整作为建议呈现的新内容的比例。

当向应用程序添加新内容时,可能呈现出训练文本到内容模型中的其它挑战。例如,新内容可能不包括标记,并且可能使用比旧内容少得多的数据来促进新内容。通常,在处理新内容时,可能难以控制模型所建议的新内容的比例。为了解决这些问题,训练模型可以利用第三方增强数据集来引导新内容。例如,维基百科和字典数据集可用于此目的。也可以使用其它机制。举例而言,训练可以包括衰减(dropoff)机制,其逐渐移除每批训练数据中的旧内容。这可能导致每批中新内容与旧内容的比率逐渐增加。另一种机制可以是更多地惩罚新内容中的错误。然而,可以用于解决这些问题的另一种方法是针对新内容创建新模型,并将新模型的结果与旧模型进行融合。这可能涉及使融合逻辑可控的问题。如先前所讨论的,还可以添加工程层以控制在线运行期间的新内容输出评分。

应当注意的是,提供文本到内容建议的模型可以本地托管在客户端(例如,文本到内容引擎)上,也可以远程托管在云中(例如,文本到内容服务)。在一种实现中,一些模型在本地托管,而其它模型存储在云中。这使得即使在客户端未连接到网络时,客户端设备也能提供一些建议。但是,一旦客户端连接到网络,应用程序就能够提供更好并且更完整的文本到内容建议。

因此,提供了用于为文本到内容服务生成特定于应用程序的嵌入的方法和系统。特定于应用程序的嵌入可以用于训练文本到内容模型以提高可能缺少足够标记数据的模型的质量,并且跨文本到内容模型来共享特定于域的知识。改进的训练方法可以利用无监督学习技术和开源预训练词嵌入,来为文本到内容服务中的所有文本到内容模型生成各种特定于域的预训练词嵌入集合。可以通过联合的预训练词嵌入在下游文本到内容任务之间共享特定于域的预训练词嵌入,以便引导新的文本到内容建议并使不同模型之间的建议质量的差异减到最小。作为首先采用无监督学习模型的结果,可能需要少得多的标记数据来训练每个文本到内容模型。此外,这些模型使用相同数量的标记数据生成更好的建议。这意味着这些算法可以高效地使用未标记的数据,并且可以显著地降低引导相当不错质量的文本到内容建议模型所需的时间。这可以改善用户的整体体验,提高效率,并在需要时帮助更容易地定位相关内容。

图7是示出示例性软件架构702的框图700,其中该软件架构702的各个方面可以与能够实现上面所描述特征中的任何一个的本文所描述的各种硬件架构结合使用。图7是软件架构的非限制性示例,应当理解的是,可以实现许多其它架构以促进本文所描述的功能。软件架构702可以在诸如客户端设备、本机应用程序提供器、Web服务器、服务器群集、外部服务和其它服务器之类的硬件上执行。代表性硬件层704包括处理单元706和相关联的可执行指令708。可执行指令708表示软件架构702的可执行指令,其包括本文所描述的方法、模块等等的实现。

硬件层704还包括存储器/存贮设备710,存储器/存贮设备710也包括可执行指令708和附带的数据。硬件层704还可以包括其它硬件模块712。处理单元708保持的指令708可以是存储器/存贮设备710保持的指令708的一部分。

可以将示例性软件架构702概念化为一些层,其中每个层提供各种功能。例如,软件架构702可以包括诸如操作系统(OS)714、库716、框架718、应用程序720和表示层724之类的层和组件。在操作上,层中的应用程序720和/或其它组件可以调用针对其它层的API调用724,并接收相应的结果726。所示出的层在本质上是代表性的,其它软件架构可以包括另外的或不同的层。例如,一些移动或专用操作系统可能不提供框架/中间件718。

OS 714可以管理硬件资源并提供公共服务。OS 714可以包括例如内核728、服务730和驱动程序732。内核728可以充当为硬件层704和其它软件层之间的抽象层。例如,内核728可以负责存储器管理、处理器管理(例如,调度)、组件管理、网络化、安全设置等等。服务730可以为其它软件层提供其它公共服务。驱动程序732可以负责控制底层硬件层704或者与之交互。例如,驱动程序732可以根据硬件和/或软件配置,包括显示驱动程序、相机驱动程序、存储器/存贮设备驱动程序、外围设备驱动程序(例如,通过通用串行总线(USB))、网络和/或无线通信驱动程序、音频驱动程序等等。

库716可以提供可以由应用程序720和/或其它组件和/或层使用的公共基础设施。库716通常提供用于供其它软件模块执行任务的功能,而不是直接与OS 714进行接口。库716可以包括系统库734(例如,C标准库),其可以提供诸如存储器分配、字符串操作、文件操作之类的功能。另外,库716可以包括API库736,例如媒体库(如,用于支持图像、声音和/或音频数据格式的呈现和操作的库)、图形库(例如,用于在显示器上呈现二维和三维图形的OpenGL库)、数据库库(例如,SQLite或其它关系数据库功能)和web库(例如,可以提供web浏览功能的WebKit)。库716还可以包括各种各样的其它库738,以向应用程序720和其它软件模块提供许多功能。

框架718(其有时也称为中间件)提供能够由应用程序720和/或其它软件模块使用的更高级别的公共基础设施。例如,框架718可以提供各种GUI功能、高级资源管理或高级位置服务。框架718可以提供用于应用程序720和/或其它软件模块的广泛的其它API。

应用程序720包括内置应用程序720和/或第三方应用程序722。内置应用程序720的例子可以包括但不限于:联系人应用程序、浏览器应用程序、位置应用程序、媒体应用程序、消息传递应用程序和/或游戏应用程序。第三方应用程序722可以包括由特定系统的供应商以外的实体开发的任何应用程序。应用程序720可以使用经由OS 714、库716、框架718和表示层724可用的功能来创建用户界面以与用户进行交互。

一些软件架构使用虚拟机,如虚拟机728所示。虚拟机728提供执行环境,其中在该执行环境中,应用程序/模块可以像在硬件机器(例如,图8的机器800)上执行一样执行。虚拟机728可以由主机OS(例如,OS 714)或管理程序托管,并且可以具有虚拟机监视器726,虚拟机监视器726管理虚拟机728的操作以及与主机操作系统的交互。软件架构可以与虚拟机之外的软件架构702不同,在诸如OS 750、库752、框架754、应用程序756和/或表示层758之类的虚拟机728内执行。

图8是示出示例性机器800的组件的框图,该机器800被配置为从机器可读介质(例如,机器可读存储介质)读取指令并执行本文所描述的特征中的任何一种。示例性机器800具有计算机系统的形式,其中在该计算机系统中,可以执行用于使机器800执行本文所描述的特征中的任何一种的指令816(例如,具有软件组件的形式)。因此,指令816可以用于实现本文所描述的方法或组件。指令816使未编程和/或未配置的机器800操作成被配置为执行所描述的特征的特定机器。机器800可以被配置为作为独立设备进行操作或者可以耦合(例如,联网)到其它机器。在网络化部署中,机器800可以在服务器-客户端网络环境中的服务器机器或客户端机器的容量中运行,或者作为对等或分布式网络环境中的节点进行运行。机器800可以体现为:例如,服务器计算机、客户端计算机、个人计算机(PC)、平板计算机、膝上型计算机、上网本、机顶盒(STB)、游戏和/或娱乐系统、智能电话、移动设备、可穿戴设备(例如,智能手表)和物联网(IoT)设备。此外,虽然仅示出了单个机器800,但术语“机器”包括机器集合,它们单独地或联合地执行指令816。

机器800可以包括处理器810、存储器830和I/O组件850,它们可以例如经由总线802来通信地耦合。总线802可以包括通过各种总线技术和协议来耦合机器800的各种元件的多个总线。在一个例子中,处理器810(例如,其包括中央处理器单元(CPU)、图形处理单元(GPU)、数字信号处理器(DSP)、ASIC或者其适当的组合)可以包括能够执行指令816和处理数据的一个或多个处理器812a到812n。在一些例子中,一个或多个处理器810可以执行由一个或多个其它处理器810提供或者识别的指令。术语“处理器”包括多核处理器,后者包括能够同时执行指令的核。虽然图8示出了多个处理器,但机器800可以包括具有单个核的单个处理器、具有多个核的单个处理器(例如,多核处理器)、每个处理器具有单个核的多个处理器、每个处理器具有多个核的多个处理器、或者其任意组合。在一些例子中,机器800可以包括分布在多个机器之中的多个处理器。

存储器/存贮设备830可以包括主存储器832、静态存储器834或者其它存储器和存储单元836,二者都可以由处理器810例如通过总线802进行访问。存储单元836和存储器832、834存储指令816,后者包含本文所描述的功能中的任何一个或多个。存储器/存贮设备830还可以存储用于处理器810的临时、中间和/或长期数据。指令916还可以在执行期间,完全地或部分地驻留在存储器832、834、存储单元836、处理器810中的至少一个(例如,命令缓冲器或高速缓冲存储器)内、或者I/O组件850中的至少一个内、或者其任何适当的组合内。因此,存储器832、834、存储单元836、处理器810中的存储器和I/O组件850中的存储器是机器可读介质的例子。

如本文所用的,“机器可读介质”是指能够临时地或永久地存储使机器800以特定方式进行操作的指令和数据的设备。如本文所使用的,术语“机器可读介质”并不涵盖临时性电信号或电磁信号本身(例如,在通过介质进行传播的载波波形上);因此,术语“机器可读介质”可以被认为是有形的和非临时性的。非临时性有形机器可读介质的非限制性例子可以包括但不限于非易失性存储器(例如,闪存或只读存储器(ROM))、易失性存储器(例如,静态随机-存取存储器(RAM)或动态RAM)、缓冲存储器、高速缓冲存储器、光存储介质、磁存储介质和设备、网络可访问设备或云存储、其它类型的存储、和/或其任何适当的组合。术语“机器可读介质”适用于单个介质或多个介质的组合,其用于存储由机器800执行的指令(例如,指令816),使得在这些指令由机器800的一个或多个处理器810执行时,导致机器800执行本文所描述的特征中的一个或多个。因此,“机器可读介质”可以指代单个存储设备、以及包括多个存储装置或设备的“基于云的”存储系统或存储网络。

I/O组件850可以包括适于接收输入、提供输出、产生输出、发送信息、交换信息、捕获测量等等的各种各样的硬件组件。包括在特定机器中的特定I/O组件850将取决于该机器的类型和/或功能。例如,诸如移动电话之类的移动设备可以包括触摸输入设备,而无头服务器或IoT设备可以不包括这样的触摸输入设备。图8中所示出的I/O组件的特定示例决不是限制性的,在机器800中可以包括其它类型的组件。I/O组件850的分组仅仅是为了简化这种讨论,并且这种分组决不是限制性的。在各个例子中,I/O组件850可以包括用户输出组件852和用户输入组件854。用户输出组件852可以包括例如:用于显示信息的显示组件(例如,液晶显示器(LCD)或投影仪)、声学组件(例如,扬声器)、触觉组件(例如,振动电机或力反馈装置)、和/或其它信号发生器。用户输入组件854可以包括例如字母数字输入组件(例如,键盘或触摸屏)、指向组件(例如,鼠标设备、触摸板或其它指示仪器)、和/或被配置为接收各种用户输入(例如,用户命令和/或选择)的触觉输入组件(例如,物理按钮、或者提供触摸或触摸手势的位置和/或力的触摸屏)。

在一些例子中,I/O组件850可以包括生物识别组件856和/或位置组件862、以及各种各样的其它环境传感器组件。例如,生物识别组件856可以包括用于检测身体表达(例如,面部表情、声音表达、手或身体姿势、或眼睛跟踪)、测量生物信号(例如,心率或脑电波)、以及识别人(例如,通过基于语音、视网膜和/或面部的识别)的组件。位置组件862可以包括例如位置传感器(例如,全球定位系统(GPS)接收器)、高度传感器(例如,可以从其导出高度的空气压力传感器)、和/或方向传感器(例如,磁力计)。

I/O组件850可以包括通信组件864,其实现可用于经由相应的通信耦合872和882将机器800耦合到网络970和/或设备880的各种各样技术。通信组件964可以包括一个或多个网络接口组件或者与网络870进行接口的其它适当设备。例如,通信组件864可以包括适于提供有线通信、无线通信、蜂窝通信、近场通信(NFC)、蓝牙通信、Wi-Fi、以及用于通过其它模式提供通信的组件。设备880可以包括其它机器或者各种外围设备(例如,经由USB耦合的外围设备)。

在一些例子中,通信组件864可以检测标识符或包括适于检测标识符的组件。例如,通信组件864可以包括射频识别(RFID)标签读取器、NFC检测器、光传感器(例如,一维或多维条形码或其它光学码)和/或声学检测器(例如,用于识别标记的音频信号的麦克风)。在一些例子中,可以基于来自通信组件862的信息(如,经由互联网协议(IP)地址的地理位置、经由Wi-Fi、蜂窝、NFC、蓝牙、或其它无线站识别和/或信号三角测量的位置)来确定位置信息。

虽然已经描述了各种实施例,但是该描述旨在是示例性的而不是限制性的,并且应当理解的是,在实施例的范围内可以存在更多的实施例和实现方式。虽然在附图中示出并且在具体实施方式中讨论了多种可能的特征组合,但是所公开的特征的很多其它组合也是可能的。除非专门限制,否则任何实施例的任何特征可以与任何其它实施例中的任何其它特征或元素组合地使用或者使用其进行替代。因此,应当理解的是,本公开内容中示出和/或讨论的任何特征可以以任何适当的组合一起实现。因此,除了所附权利要求及其等同物之外,本文的实施例并不受到限制。而且,可以在所附权利要求的范围内进行各种修改和改变。

通常,本文所描述的功能(例如,图1-6中所示出的特征)可以使用软件、固件、硬件(例如,固定逻辑、有限状态机和/或其它电路)来实现,或者是这些实现的组合。在软件实现的情况下,当程序代码在处理器(例如,CPU或CPU簇)上执行时,执行指定的任务。程序代码可以存储在一个或多个机器可读存储器设备中。本文所描述的技术的特征是与系统无关的,其意味着可以在具有各种处理器的各种计算系统上实现这些技术。例如,实现可以包括使硬件执行操作(例如,处理器功能块等等)的实体(例如,软件)。例如,硬件设备可以包括机器可读介质,该机器可读介质可以被配置为维持使硬件设备(包括在其上执行的操作系统和相关联的硬件)执行操作的指令。因此,指令可以用于配置操作系统和相关联的硬件执行操作,从而配置或者以其它方式调整硬件设备执行上述的功能。可以通过针对执行指令的硬件元件的各种不同配置,通过机器可读介质来提供这些指令。

虽然前面已经描述了被认为是最佳模式和/或其它示例的内容,但应当理解的是,可以在其中进行各种修改,并且本文所公开的主题可以以各种形式和示例来实现,这些教导内容可以应用于很多应用中,本文仅描述了其中的一些应用。所附权利要求旨在要求保护落入本教导的真实范围内的任何和所有应用、修改和变型。

除非另有说明,否则在本说明书中(包括在随后的权利要求书中)阐述的所有测量、值、等级、位置、幅度、大小和其它规范,都是近似的而不是精确的。它们旨在具有与它们所涉及的功能以及它们所属领域中的惯例一致的合理范围。

保护范围仅受所附的权利要求的限制。该范围旨在且应当被解释为与根据本说明书和随后的起诉历史进行解释时在权利要求中使用的语言的普通含义一致的宽泛,并且涵盖所有结构和功能等同物。尽管如此,所有权利要求均不旨在包含不符合专利法第101、102或103节要求的主题,也不应以这种方式解释。特此放弃对此类主题的任何无意的包含。

除了如上所述之外,没有任何已经陈述或说明的内容旨在或应当被解释为导致任何组件、步骤、特征、对象、益处、优点或等同物奉献于公众,无论其是否是在权利要求中陈述或未记载。

应当理解,除非本文另有说明的具体含义,否则本文所使用的术语和表达具有与其相对应的相应调查和研究领域相关的这些术语和表达相一致的一般含义。

仅仅使用诸如第一和第二等等之类的关系术语将一个实体或动作与另一个实体或动作区分开,而不一定要求或暗示这些实体或动作之间的任何实际的这种关系或顺序。术语“包括”、“包含”以及其任何其它变型旨在涵盖非排他性的包含,使得包括元素列表的过程、方法、物品或装置不仅包括这些元素,而且还可以包括没有明确列出的其它元素或者这种过程、方法、物品或装置固有的其它元素。在没有进一步限制的情况下,前面带有“一个(a)”或“某个(an)”的元素不排除在包括该元素的过程、方法、物品或装置中存在另外的相同元素。

提供本公开内容的摘要以使读者能快速地确定本技术公开的性质。应当理解,它的提供并不是用于解释或者限制权利要求的保护范围或者含义。此外,在上面的具体实施方式中,可以看出,为了简化本公开内容,在各种示例中将各种特征组合在一起。本公开内容的这种方法不应被解释为,反映任何权利要求需要比该权利要求中清楚叙述的特征更多特征的意图。相反,如所附权利要求所反映的,发明主题比单个公开的实施例的所有特征更少。因此,将所附的权利要求并入详细的说明书中,其中每一权利要求项均作为单独的主题而独立存在。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号