针对比特序列的压缩编码的制作方法

文档序号:15047886发布日期:2018-07-27 23:07阅读:299来源:国知局

比特是计算机中的最小数据存储单位,其表示一个二进制位并且取值为0或1。字节是计算机中数据存储的基本单位,计算机中通常以字节为单位存储和解释信息。一个字节(b)等于八个比特(b),并且通常可以存储一个英文字符或者半个中文字符。由于计算中存储、传输和处理的信息量很大,因此通常也使用千字节(kb)、兆字节(mb)、吉字节(gb)以及太字节(tb)等作为数据存储单位。

决策树是用来处理分类,回归和排序等问题的树状结构,其是由分支节点、左子树以及右子树组成的二进制搜索树。分支从分支节点通向其他分支节点或叶节点,并且对分支之一的选择基于在分支节点处做出的决策。示例决策包括对两个值(诸如特征值和属性值(也被称为阈值)进行比较。如果特征值小于或等于阈值,则选择左子树;如果特征值大于阈值,则选择右子树,直到选择通向叶节点的分支。叶节点表示决策树的输出或端点,示例输出是针对决策树的输出值或得分。

提升树集成(boostingtreeensemble)模型是以决策树为基本分类器的提升方法模型,其包括多棵决策树并且通过累加多棵决策树的结果来共同决策。提升树集成可以用于对文档搜索中的文档进行排名,也可以用于手势识别、语音识别、数据挖掘以及其他技术领域。



技术实现要素:

发明人注意到,决策树模型(例如提升树集成模型)广泛应用于基于web的应用,随着web内容的不断增多,决策树模型中的每棵树的深度和规模也相应增长,这就要求大量的计算资源和存储资源来运行决策树模型。不同于仅使用比特序列来表示树中的节点的特征向量的传统方法,本文所描述的主题对表示节点的特征向量的比特序列进行压缩编码。借助于基于特定比特值的起始位置和结束位置的压缩编码,提升树集成模型的处理速度和存储空间能够被优化,这在工作原理和机制上都显著不同于任何已知方案。

在本文所描述的主题的实施例中,提出了一种针对比特序列的压缩编码的方法和设备。在获得比特序列之后,确定特定比特值在比特序列中出现的起始位置和结束位置,并且然后基于起始位置和结束位置来对比特序列编码。根据本文所描述的主题的实施例,通过确定比特序列中的特定比特值的起始位置和结束位置,能够实现对比特序列的有效压缩,由此减小比特序列的长度。因此,本文所描述的主题的实施例不仅能够降低计算复杂度,而且能够通过并行处理提升数据处理性能。

提供发明内容部分是为了简化的形式来介绍对概念的选择,它们在下文的具体实施方式中将被进一步描述。发明内容部分无意标识本文所描述的主题的关键特征或主要特征,也无意限制本文所描述的主题的范围。

附图说明

结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标注表示相同或相似的元素,其中:

图1示出了其中可以实施本文所描述的主题的一个或多个实施例的计算系统/服务器的框图;

图2示出了根据本文所描述的主题的实施例的用于对比特序列编码的方法的流程图;

图3示出了根据本文所描述的主题的实施例的决策树的示例图;

图4示出了根据本文所描述的主题的另一实施例的用于对比特序列编码的方法的流程图;

图5示出了根据本文所描述的主题的实施例的数据结构布置的示例图;

图6示出了根据本文所描述的主题的实施例的用于并行确定针对多个输入的多个输出的方法的流程图;

图7示出了根据本文所描述的主题的实施例的并行确定针对多个输入的多个输出的示意图;以及

图8示出了根据本文所描述的主题的实施例的用于搜索排名的搜索系统的示意性框图。

在所有附图中,相同或相似参考数字表示相同或相似元素。

具体实施方式

下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。

本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。

传统地,决策树模型针对接收到的输入,需要遍历决策树模型中的每棵树来生成输出。在每个分支节点处,将输入中的特征值与分支节点的阈值相比较以确定下一节点。然而,由于子节点处的操作是在其父节点处的操作之后执行,因此子节点对其父节点存在控制依赖关系。此外,由于每个分支节点处存在随机的判断结果,因而无法有效地利用高速缓存。

针对决策树模型的一种改进是采用基于比特序列的节点表示方法,其利用比特序列来表示每个节点的特征向量。通过这种方式,可以忽略节点之间的控制依赖关系,而仅基于特定类型的节点(例如,假节点)的比特序列来确定输出。然而,在这种方法中,每个节点的比特序列的长度必须等于树中的叶节点的总数目。如此,如果树的规模很大,则每个比特序列的长度也非常大,从而导致需要大量的计算资源来处理这些比特序列,并且需要大量的存储资源来存储这些比特序列。此外,如果比特序列的长度超过计算机的处理器一次所能处理的最大长度,则无法实现并行处理操作。因此,当决策树模型的规模很大时,传统的树遍历方法和传统的基于比特序列的节点表示方法存在运行时间长、处理效率低等问题。

为此,本文所描述的主题提出了一种用于对比特序列编码的方法和设备。在获得比特序列之后,确定特定比特值在比特序列中出现的起始位置和结束位置,并且然后基于起始位置和结束位置来对比特序列编码。根据本文所描述的主题的实施例,通过确定比特序列中的特定比特值的起始位置和结束位置,能够实现对比特序列的有效压缩,由此减小比特序列的长度。因此,本文所描述的主题的实施例不仅能够降低计算复杂度,而且能够通过并行处理提升数据处理性能

此外,根据本文所描述的主题的实施例,使用字节为单位来对比特序列编码,以便适应计算机的内部处理。同时,在起始字节位置和结束字节位置相同时,仅使用起始字节和起始字节位置来对比特序列编码,能够进一步压缩比特序列。另外,本文所描述的主题的实施例针对单个节点同时处理多个输入,并且通过向量转置来有效使用高速缓存,由此实现并行处理多个输入以便并行生成多个输出,因此,本文所描述的主题的实施例能够在决策树模型中实现全程并行化处理。

以下参考图1至图8来说明本文所描述的主题的基本原理和若干示例实现方式。图1示出了其中可以实施本文所描述的主题的一个或多个实施例的计算系统/服务器100的框图。应当理解,图1所示出的计算系统/服务器100仅仅是示例性的,而不应当构成对本文所描述的实施例的功能和范围的任何限制。

如图1所示,计算系统/服务器100是通用计算设备的形式。计算系统/服务器100的组件可以包括但不限于一个或多个处理器或处理单元110、存储器120、存储设备130、一个或多个通信单元140、一个或多个输入设备150以及一个或多个输出设备160。处理单元110可以是实际或虚拟处理器并且能够根据存储器120中存储的持续来执行各种处理。在多处理器系统中,多个处理单元并行执行计算机可执行指令,以提高计算系统/服务器100的并行处理能力。

计算系统/服务器100通常包括多个计算机存储介质。这样的介质可以是计算系统/服务器100可访问的任何可以获得的介质,包括但不限于易失性和非易失性介质、可拆卸和不可拆卸介质。存储器120可以是易失性存储器(例如寄存器、高速缓存、随机访问存储器(ram))、非易失性存储器(例如,只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、闪存)或它们的某种组合。存储设备130可以是可拆卸或不可拆卸的介质,并且可以包括机器可读介质,诸如闪存驱动、磁盘或者任何其他介质,其可以能够用于存储信息和/或数据(例如模型170)并且可以在计算系统/服务器100内被访问。

计算系统/服务器100可以进一步包括另外的可拆卸/不可拆卸、易失性/非易失性存储介质。尽管未在图1中示出,可以提供用于从可拆卸、非易失性磁盘(例如“软盘”)进行读取或写入的磁盘驱动和用于从可拆卸、非易失性光盘进行读取或写入的光盘驱动。在这些情况中,每个驱动可以由一个或多个数据介质接口被连接至总线(未示出)。存储器120可以包括一个或多个程序产品125,其具有一个或多个程序模块集合,这些程序模块被配置为执行本文所描述的各种实施例的方法或功能。

通信单元140实现通过通信介质与其他计算设备进行通信。附加地,计算系统/服务器100的组件的功能可以以单个计算集群或多个计算机器来实现,这些计算机器能够通过通信连接进行通信。因此,计算系统/服务器100可以使用与一个或多个其他服务器、网络个人计算机(pc)或者另一个网络节点的逻辑连接来在联网环境中进行操作。

输入设备150可以是一个或多个各种输入设备,例如鼠标、键盘、追踪球等。输出设备160可以是一个或多个输出设备,例如显示器、扬声器、打印机等。计算系统/服务器100还可以根据需要通过通信单元140与一个或多个外部设备(未示出)进行通信,外部设备诸如存储设备、显示设备等,与一个或多个使得用户与计算系统/服务器100交互的设备进行通信,或者与使得计算系统/服务器100与一个或多个其他计算设备通信的任何设备(例如,网卡、调制解调器等)进行通信。这样的通信可以经由输入/输出(i/o)接口(未示出)来执行。

如图1所示,存储设备130中存储有模型170,其包括决策树模型175(例如提升树集成模型)。计算系统/服务器100能够通过输入设备150接收输入180,例如多个输入{i0,i1,i2,…},每个输入包括多个特征{f0,f1,f2,…}。如图1所示,i0的特征f0的值可以为3.8,i0的特征f1的值可以为26.4,i0的特征f2的值可以为2.0。接下来,计算系统/服务器100利用决策树模型175来处理输入180,并通过输出设备160来生成多个输出190,例如输出值{o0,o1,o2,…},其中每个输出对应于一个输入,例如,o0是i0的输出值,例如2.0。以下参考图2-8详细描述了基于决策树模型175生成输出190的示例实施例。

图2示出了根据本文所描述的主题的实施例的用于对比特序列编码的方法200的流程图。应当理解,方法200可以由参考图1所描述的处理单元110执行。

在202,获得比特序列。例如,在基于比特序列的节点表示的决策树模型中,每个节点具有表示其特征向量的比特序列,可以从决策树模型中获得一个或多个节点的一个或多个比特序列。比特序列由多个的比特组成,其包括第一比特值(例如0)和第二比特值(例如1)。例如,一个示例比特序列be可以为11111111110000000111111111111111,其包括7个第一比特值(即0)和25个第二比特值(即1)。

在204,确定第一比特值在比特序列中出现的起始位置和结束位置。在一些实施例中,可以直接确定第一比特值本身的起始位置和结束位置,例如,在示例比特序列be中,第一比特值本身出现的起始位置(例如索引)为10,而结束位置为16。在另一些实施例中,起始位置和结束位置还可以表示第一比特值所处的一段比特的位置,例如,起始位置可以是包括第一个第一比特值的起始字节位置,结束位置可以是包括最后一个第一比特值的结束字节位置。因此,在示例比特序列be中,第一比特值出现的起始字节位置为1,而第一比特值出现的结束位置为2。应当理解,虽然在上述示例中,第一个比特或字节的位置或索引被定义为0,然而本领域技术人员应当理解其也可以定义为1,本文所描述的主题的保护范围不受索引定义规则方面的限制。以下参考图4详细描述了确定起始位置和结束位置的示例实施例。

在206,基于起始位置和结束位置中的至少一个,对比特序列编码。在一些实施例中,在比特序列中所有的第一比特值连续存在的情况下,比特序列be可以被编码为[10,16],其表示在位置10-16之间均为第一比特值,在其他位置均为第二比特值。在另一些实施例中,比特序列be可以被编码为保留起始位置与结束位置之间的所有比特,例如,比特序列be可以被编码为[10,16,0000000]。备选地,在起始位置表示起始字节位置并且结束位置表示结束字节位置的情况下,比特序列be可以被编码为与起始字节位置和结束字节位置中的至少一个相关联,例如,比特序列be可以基于起始字节和起始字节位置被编码。

本领域技术人员应当理解,虽然在方法200中比特序列表示决策树中的特征向量,但是本领域技术人员应当理解,比特序列可以表示具有任何含义的其他数据。因此,通过确定比特序列中的特定值的起始位置和结束位置,能够实现对比特序列的有效压缩,从而能够减小比特序列的长度。因此,本文所描述的主题的实施例能够有效降低计算复杂度并且减小存储空间。

图3示出了根据本文所描述的主题的实施例的决策树300的示例图。例如,以上参考图1所描述的决策树模型175包括h棵决策树{t0,t1,…th},每棵决策树被表示为th=(nh,lh),其中nh={n0,n1,…}表示决策树th中|lh|-1个分支节点,lh={l0,l1,…}表示决策树th中|lh|个叶节点。决策树300可以是决策树模型175中的一棵示例决策树,如图3所示,决策树300包括分支节点310、311、312、313、314、315,其中分支节点310为根节点,决策树300还包括叶节点320、321、322、323、324、325、326。应当理解,为了清楚示例的目的,决策树300中仅示例为包括6个分支节点和7个叶节点,然而决策树300中可以包括任意数目的分支节点和叶节点,例如可以包括255个分支节点和256个叶节点。

通常,决策树中的每个分支节点具有特征标识(例如{f0,f1,f2,…})和对应的属性值,该属性值用于确定节点真假性,也被称为阈值(例如{θ0,θ1,θ2,…})。此外,每个分支节点具有表示其特征向量的比特序列,其能够用于确定针对输入的叶节点的位置。每个叶节点具有一个输出值(例如{e0,e1,e2,…})。例如,分支节点310具有特征标识f0和对应的阈值θ0,针对一个新的输入i0,如果其特征f0的值小于阈值θ0,则分支节点310为真节点(truenode);否则,分支节点310为假节点(falsenode)。在传统的树遍历方法中,如果某个分支节点被确定为真节点,则选择左子树;否则,则选择右子树,以此类推,从根节点一直遍历到相应的叶节点。

在基于比特序列的节点表示方法中,不需要考虑父节点与子节点之间的控制依赖关系,可以顺序地、随机地或并行地确定多个树中的各个分支节点的真假性。例如,在图3的示例决策树300中,通过特征值与阈值之间的比较,分支节点310、311和315被确定为假节点,其他分支节点为真节点。在基于比特序列的节点表示方法中,通过对所有假节点的比特序列执行逻辑与运算来生成针对输入的结果,例如一个输入针对一棵树生成一个结果,然后可以根据该结果来确定叶节点的位置以便生成输出值或得分。

应当理解,决策树中的各个节点的比特序列可以通过对训练数据的机器学习而被生成,任何已知的或将来开发的机器学习方法可以用于生成各个节点的比特序列。例如,可以将每棵树的决策结果的比特序列中的所有比特初始设置为1,然后使用输入样本来更新比特序列中的比特值,从而使得根据叶节点的比特序列中的第一个“1”的位置能够确定叶节点的位置。

由于特征向量的长度等于决策树中的所有叶节点的数目,因此当决策树规模较大时,比特序列的长度也较长。根据本文所描述的主题的实施例,对比特序列进行压缩编码,使得特征向量的长度不再需要等于树中叶节点的数目。

图4示出了根据本文所描述的主题的另一实施例的用于对比特序列编码的方法400的流程图。在方法400中,动作402-408可以为参考以上图2所描述的动作204的子动作,动作412-414可以为参考以上图2所描述的动作206的子动作。应当理解,方法400可以由参考图1所描述的处理单元110执行。

在402,确定包括第一比特值的起始字节。例如,可以将上述比特序列be划分成多个字节{11111111,11000000,01111111,11111111},然后将包括第一比特值的第一个字节{11000000}确定为起始字节。在404,将起始字节的索引确定为起始位置。例如,起始字节{11000000}的索引被确定为1。

在406,确定包括第一比特值的结束字节。例如,在比特序列be{11111111,11000000,01111111,11111111}中,将包括第一比特值的最后一个字节{01111111}确定为结束字节。在408,将结束字节的索引确定为结束位置。例如,结束字节{01111111}的索引被确定为2。

在410,判断起始位置与结束位置是否相同。如果相同,则在412基于起始字节和起始位置对比特序列编码,这说明第一比特值都在同一个字节中,因而不需要再使用结束字节和结束位置来对比特序列编码。如果不同,则在414,基于起始字节、起始位置、结束字节以及结束位置,对比特序列编码。因此,根据本文所描述的主题的方法400,在起始字节位置和结束字节位置相同时,仅使用起始字节和起始字节位置来对比特序列编码,能够进一步压缩比特序列。

在一个实施例中,例如节点的特征向量可以为一个256比特的比特序列bf(11…1100…0011…11),其中该比特序列由3个部分组成,即依次为81个连续的1、17个连续的0、以及158个连续的1。根据本文所描述的方法400,可以确定包括第一个0的起始字节为10000000,起始位置为10,结束字节为00111111,并且结束位置位12。因此,本文所描述的主题的实施例仅使用起始字节、结束字节、起始位置以及结束位置来对比特序列编码。也就是说,仅需个字节来表示经编码的比特序列,其中l表示决策树中的叶节点的总数目,表示起始位置或结束位置所占的字节位置,表示向上取整符号。在该示例中,l的值等于比特序列的长度,即为256,因此经编码的比特序列仅具有约4字节的长度,有效地压缩了原始比特序列。

通常,单指令多数据流(simd)具有多个比特的长度以便一次处理多个比特数据,例如流simd扩展(sse)寄存器支持128比特的指令,高级矢量扩展(avx)寄存器支持256比特的指令。在传统的方法中,由于比特序列长度与叶节点的总数相同,因而在比特序列的长度达到一定值的情况下(例如,在sse寄存器中超过64比特,在avx寄存器中超过128比特),就无法实现并行处理。然而,根据本文所描述的主题的实施例,通过对比特序列进行压缩编码,使得经编码的比特序列的长度相对较短,由此实现并行地处理更多的比特序列。根据本文所描述的主题的实施例,通过比特序列的压缩编码和转置存储,sse寄存器例如能够同时处理16个比特序列,avx寄存器能够同时处理32个比特序列,而不受原始比特序列长度影响。此外,在支持512比特(例如avx-512)的寄存器中,本文所描述的主题最多能够同时处理64个比特序列。

图5示出了根据本文所描述的主题的实施例的数据结构布置500的示例图。针对决策树模型中的多个树,可以将具有相同特征标识的多个节点组合在一起,并且按照阈值大小升序排列。由于不同特征标识的数目不同,因而需要使用偏移索引来指示每个特征标识的起始位置。如图5所示,偏移索引510用于记录阈值520中每个特征标识对应的起始阈值位置,例如,通过偏移索引中的前两个索引,可以确定特征标识f0的阈值的范围。如图5所示,每个阈值对应于相应节点的树标识530和经编码的比特序列540(例如,根据本文所描述的方法200或400的经编码的比特序列)。例如,可选地,每个经编码的比特序列的长度可以被设置为其中l表示树中的叶节点的总数。备选地,在起始字节位置和结束字节位置相同的情况下,每个经编码的比特序列的长度可以被设置为1+

在特征值与阈值之间的比较步骤完成之后,可以针对每棵树确定其中的所有假节点,然后将所有假节点的经编码的比特序列进行逻辑与操作,以产生结果序列。如图5所示,针对接收到的输入,可以产生针对h棵树的h个结果550,根据每个结果可以确定与其相对应的叶节点的位置以便生成输出值。如图5所示,每棵决策树的每个叶节点具有相应的叶节点输出值560。

根据本文所描述的主题的实施例,将输入的特征值与相应的阈值比较,并记录所有假节点的树标识和比特序列,然后对每棵树中所有假节点的比特序列进行逻辑与操作,从而得到与每个输入相对应的结果。然后,基于结果确定来叶节点的位置并且生成输出值或得分。

决策树模型175中存在大量决策树,并且每个决策树又包括多个分支节点,可以发现存在着大量重复的节点,即节点的特征标识和阈值都相同。在一些实施例中,可以确定决策树中具有相同特征标识和相同阈值二者的多个节点,然后合并多个节点的真假性确定操作。也就是说,对于特征标识和阈值完全相同的多个节点,仅需针对这些节点执行一次特征值与阈值的比较操作,而不需要针对每个节点执行一次比较操作,由此提高了决策树的处理速度。应当理解,决策树模型越大并且重复的节点就越多,节点去重所带来的性能提升也越明显。此外,由于各个节点的比特序列不一定相同,所以特征标识和阈值都相同的多个节点仅合并特征值与阈值之间的比较操作,而不合并用于确定结果的逻辑与操作。

在一些实施例中,参考图5中所示出的阈值520,在将具有相同标识的多个节点的多个阈值升序排序之后,如果与特征标识相关联的特征值小于某个特定阈值,则可以终止该特征值与多个阈值中大于该特定阈值的那些阈值的比较。这是因为比较操作仅需要发现决策树中的假节点,而如果特征值小于特定阈值,则特征值必然比较小于大于该特定阈值的其他阈值。因此,通过根据特征标识将多个阈值升序排序,并仅执行部分比较操作,可以提高决策树的处理速度。

在一些实施例中,可以通过将数据预取到高速缓存来提高数据的访问速度。在一些实施例,可以使用分块来提高存储器层级的效果。例如,可以将决策树模型175中的全部决策树分成几个块,使得每个块可以被放置到处理单元中的第三级(l3)高速缓存中。

根据本文所描述的主题的实施例,通过对基于比特向量的节点表示方法进行改进,能够减小比特序列的长度,这给基于向量化的并行处理带来了条件。例如,在sse寄存器中,可以并行处理多个比特序列的逻辑与操作。

在一些实施例中,决策树可以同时接收多个输入(例如,输入{i0,i1,i2,…}),然后针对一个节点并行处理多个输入,以便提高并行处理效率。例如,可以将一个节点的阈值放置到一个sse寄存器中,然后将接收到的多个对应的输入放入到另一个sse寄存器中,为了顺序地处理多个输入,可以将多个输入按照特征标识进行聚合,使得相同特征标识的多个特征值被连续地存储。然后,针对每个输入,并行地确定该节点是真节点还是假节点。在一些实施例中,可以使用中间向量来存储假节点的比特序列的信息。

在一些实施例中,在通过对一棵决策树中所有假节点逻辑与操作而生成针对多个输入的多个结果之后,可以对表示多个结果的向量进行转置,使得多个结果中相同位置处的多个字节能够被连续的存储在高速缓存中,由此通过使用高速缓存来提高决策树的处理速度。例如,下表1示出了表示多个结果{v0,v1,v2,…}的向量,可以看出每个结果的多个字节(例如,)被连续地存储。下表2示出了转置后的向量,其中每个结果中的多个字节没有被连续存储。相反,多个结果中相同位置处的多个字节被连续地存储,例如,多个结果的第一个字节(例如,)被连续存储,以促进用于后续的并行处理多个结果。

表1:转置前的向量表示

表2:转置后的向量表示

图6示出了根据本文所描述的主题的实施例的用于并行确定针对多个输入的多个输出的方法600的流程图。应当理解,方法600中的动作602-608可以在参考图2所描述的方法200中的动作206或参考图4所描述的动作414之后执行。应当理解,方法600可以由参考图1所描述的处理单元110执行。

在602,确定第二比特值(例如,1)在经转置的多个结果中出现的多个起始字节,并且在604确定多个起始字节的多个索引。接下来,在606,确定第二比特值在多个起始字节中出现的多个起始比特位置。在608,基于多个起始字节的多个索引和多个起始比特位置,确定针对多个输入的多个输出。由于各个结果中的第一个第二比特值的位置能够用于确定叶节点的位置,因此通过确定第二比特值的位置能够确定针对多个输入的多个输出。

例如,图7示出了根据本文所描述的主题的实施例的并行确定针对多个输入的多个输出的示意图700,图7中的数据为十六进制的数据。例如,决策树模型175生成m个结果{v0,v1,v2…vm-1},然后对表示这m个结果的向量进行转置,生成经转置的多个结果710,其中多个结果中相同位置处的多个字节被连续存储,例如v0中的第一个字节03、v1中的第一个字节00、v2中的第一个字节00…以及vm-1中的第一个字节5b被连续地存储。

可以并行地确定多个结果中的第一个非零字节720,例如首先获取数据序列(03,00,00,…5b),然后获取数据序列(4a,00,69,…72),以此类推。同时,确定第一个非零字节的索引i1730。接下来,在第一个非零字节720中确定第一个非零比特的索引i2740,然后可以基于索引i1730和索引i2740来确定多个结果序列中的多个第一个非零比特的索引750(例如,i0=8*i1+i2)。基于第一个非零比特的索引来确定多个叶节点的位置,从而能够确定针对多个输入的多个输出。

根据本文所描述的主题的实施例,通过向量转置来使用高速缓存,使得要被处理的数据被连续存储,提高了处理速度。此外,本文所描述的主题使用比特序列来并行处理多个输入,能够实现决策树模型中的数据处理的全程并行化。因此,本文所描述的主题的实施例能够通过向量化方案同时生成针对多个输入的多个输出,提高了决策树的处理效率。

图8示出了根据本文所描述的主题的实施例的用于搜索排名的搜索系统800的示意性框图。如图8所示,搜索系统800包括文档排序器810和文档数据库820,其中文档排序器810用于将接收到的用户查询810与文档数据库820中多个文档进行相关性匹配排名,文档数据库820包括多个文档,文档的内容可以为网页、文本文件、图像文件,等等。文档排序器810可以生成针对查询830的n个(例如两个或更多个)查询-文档对,也称为(q,d)对,并且每个(q,d)对具有相应的特征集,例如上文所描述的多个特征{f0,f1,f2,…}等。

如图8所示,搜索系统800还包括决策树模型175,其包括具有多个决策树,决策树模型175接收n个(q,d)对的特征集,并且利用根据本文所描述的实施例的方法来对处理这些特征集,以产生n个输出得分840。例如,第1个文档的得分为2.0,第2个文档的得分为1.4,等等。然后,搜索系统800可以对得分840再进行排序,并按照排序结果向用户输出文档列表。因此,根据本文所描述主题的实施例的搜索系统,能够通过使用决策树模型更加快速高效地生成处理结果。

本文中所描述的方法和功能可以至少部分地由一个或多个硬件逻辑组件来执行。例如但不限于,可以使用的硬件逻辑组件的示意性类型包括现场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、片上系统(soc)、复杂可编程逻辑器件(cpld)等。

用于实施本文所描述的主题的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。

在本公开内容的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。

此外,虽然采用特定次序描绘了各操作,但是这应当理解为要求这样操作以所示出的特定次序或以顺序次序执行,或者要求所有图示的操作应被执行以取得期望的结果。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本文所描述的主题的范围的限制。在单独的实现的上下文中描述的某些特征还可以组合地实现在单个实现中。相反地,在单个实现的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实现中。

以下列出了本公开的一些示例实现方式。

在一个方面,提供了一种电子设备。该电子设备包括:处理单元;存储器,耦合至处理单元并且存储有指令,指令在由处理单元执行时执行以下动作:获得比特序列,比特序列包括第一比特值和第二比特值;确定第一比特值在比特序列中出现的起始位置和结束位置;以及基于起始位置和结束位置中的至少一个,对比特序列编码。

在一些实施例中,其中比特序列被划分成一个或多个字节,并且确定第一比特值在比特序列中出现的起始位置和结束位置包括:将一个或多个字节中包括第一比特值的第一个字节确定为起始字节;将起始字节的索引确定为起始位置;将一个或多个字节中包括第一比特值的最后一个字节确定为结束字节;以及将结束字节的索引确定为结束位置。

在一些实施例中,其中对比特序列编码包括:基于起始字节、起始位置、结束字节以及结束位置,对比特序列编码。

在一些实施例中,其中对比特序列编码包括:响应于起始位置与结束位置相同,基于起始字节和起始位置来对比特序列编码。

在一些实施例中,其中比特序列表示树中的节点的特征向量,并且节点具有特征标识和用于确定节点真假性的属性值,节点真假性基于与特征标识相关联的特征值和属性值的比较而被确定。

在一些实施例中,动作还包括:确定树中具有特征标识和属性值二者的多个节点;以及合并多个节点的节点真假性确定操作。

在一些实施例中,动作还包括:以升序排列具有特征标识的多个节点的多个属性值;以及响应于与特征标识相关联的特征值小于多个属性值中的特定属性值,终止特征值与多个属性值中的、大于特定属性值的属性值的比较。

在一些实施例中,动作还包括:接收多个输入,多个输入中的输入包括一个或多个特征值;以及针对节点并行处理多个输入。

在一些实施例中,动作还包括:通过确定树中的节点的节点真假性,来生成针对多个输入的多个结果;以及对表示多个结果的向量进行转置,以便多个结果中的相同位置处的多个字节被连续地存储在高速缓存中。

在一些实施例中,动作还包括:确定第二比特值在经转置的多个结果中出现的多个起始字节;确定多个起始字节的多个索引;确定第二比特值在多个起始字节中出现的多个起始比特位置;以及基于多个起始字节的多个索引和多个起始比特位置,确定针对多个输入的多个输出。

在另一方面,提供了一种计算机实现的方法。该方法包括:获得比特序列,比特序列包括第一比特值和第二比特值;确定第一比特值在比特序列中出现的起始位置和结束位置;以及基于起始位置和结束位置中的至少一个,对比特序列编码。

在一些实施例中,其中比特序列被划分成一个或多个字节,并且确定第一比特值在比特序列中出现的起始位置和结束位置包括:将一个或多个字节中包括第一比特值的第一个字节确定为起始字节;将起始字节的索引确定为起始位置;将一个或多个字节中包括第一比特值的最后一个字节确定为结束字节;以及将结束字节的索引确定为结束位置。

在一些实施例中,其中对比特序列编码包括:基于起始字节、起始位置、结束字节以及结束位置,对比特序列编码。

在一些实施例中,其中对比特序列编码包括:响应于起始位置与结束位置相同,基于起始字节和起始位置来对比特序列编码。

在一些实施例中,其中比特序列表示树中的节点的特征向量,并且节点具有特征标识和用于确定节点真假性的属性值,节点真假性基于与特征标识相关联的特征值和属性值的比较而被确定。

在一些实施例中,还包括:确定树中具有特征标识和属性值二者的多个节点;以及合并多个节点的节点真假性确定操作。

在一些实施例中,还包括:以升序排列具有特征标识的多个节点的多个属性值;以及响应于与特征标识相关联的特征值小于多个属性值中的特定属性值,终止特征值与多个属性值中的、大于特定属性值的属性值的比较。

在一些实施例中,还包括:接收多个输入,多个输入中的输入包括一个或多个特征值;以及针对节点并行处理多个输入。

在一些实施例中,还包括:通过确定树中的节点的节点真假性,来生成针对多个输入的多个结果;以及对表示多个结果的向量进行转置,以便多个结果中的相同位置处的多个字节被连续地存储在高速缓存中。

在一些实施例中,还包括:确定第二比特值在经转置的多个结果中出现的多个起始字节;确定多个起始字节的多个索引;以及确定第二比特值在多个起始字节中出现的多个起始比特位置;以及基于多个起始字节的多个索引和多个起始比特位置,确定针对多个输入的多个输出。

在又一方面,提供了一种计算机程序产品。该计算机程序产品被存储在非瞬态计算机存储介质中并且包括机器可执行指令,机器可执行指令在设备中运行时使得设备:获得比特序列,比特序列包括第一比特值和第二比特值;确定第一比特值在比特序列中出现的起始位置和结束位置;以及基于起始位置和结束位置中的至少一个,对比特序列编码。

在一些实施例中,其中比特序列被划分成一个或多个字节,并且确定第一比特值在比特序列中出现的起始位置和结束位置包括:将一个或多个字节中包括第一比特值的第一个字节确定为起始字节;将起始字节的索引确定为起始位置;将一个或多个字节中包括第一比特值的最后一个字节确定为结束字节;以及将结束字节的索引确定为结束位置。

在一些实施例中,其中对比特序列编码包括:基于起始字节、起始位置、结束字节以及结束位置,对比特序列编码。

在一些实施例中,其中对比特序列编码包括:响应于起始位置与结束位置相同,基于起始字节和起始位置来对比特序列编码。

在一些实施例中,其中比特序列表示树中的节点的特征向量,并且节点具有特征标识和用于确定节点真假性的属性值,节点真假性基于与特征标识相关联的特征值和属性值的比较而被确定。

在一些实施例中,机器可执行指令在设备中运行时还使得设备:确定树中具有特征标识和属性值二者的多个节点;以及合并多个节点的节点真假性确定操作。

在一些实施例中,机器可执行指令在设备中运行时还使得设备:以升序排列具有特征标识的多个节点的多个属性值;以及响应于与特征标识相关联的特征值小于多个属性值中的特定属性值,终止特征值与多个属性值中的、大于特定属性值的属性值的比较。

在一些实施例中,机器可执行指令在设备中运行时还使得设备:接收多个输入,多个输入中的输入包括一个或多个特征值;以及针对节点并行处理多个输入。

在一些实施例中,机器可执行指令在设备中运行时还使得设备:通过确定树中的节点的节点真假性,来生成针对多个输入的多个结果;以及对表示多个结果的向量进行转置,以便多个结果中的相同位置处的多个字节被连续地存储在高速缓存中。

在一些实施例中,机器可执行指令在设备中运行时还使得设备:确定第二比特值在经转置的多个结果中出现的多个起始字节;确定多个起始字节的多个索引;确定第二比特值在多个起始字节中出现的多个起始比特位置;以及基于多个起始字节的多个索引和多个起始比特位置,确定针对多个输入的多个输出。

尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本公开,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1