本公开涉及计算机技术领域,具体而言,涉及一种模型参数表示空间大小估计方法、一种模型参数表示空间大小估计装置、一种推荐方法、一种计算机可读介质及电子设备。
背景技术:
在大规模机器学习场景下,模型参数规模往往可达亿级,模型大小可达百g级,这给模型的存储、传输与使用都带来了极大的挑战。对模型参数进行量化压缩是较为主流的模型压缩方法之一,但是对压缩比特数/量化比特数的选择往往只能根据不同超参数(hyperparameters,例如学习速率、训练迭代次数、神经网络层数、各层神经元个数、激活函数等)下的实验结果来选择较为合适的值。
即相关技术中,量化比特数的选择往往依赖经验或者通过反复调参来选择较为合适的值,调参过程复杂,验证周期较长,计算量大,缺少快速寻找合适值的技术手段与理论依据。
因此,需要一种新的模型参数表示空间大小估计方法及装置、推荐方法、计算机可读介质及电子设备。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
技术实现要素:
本公开实施例提供一种模型参数表示空间大小估计方法及装置、推荐方法、计算机可读介质及电子设备,能够为模型参数进行量化压缩提供定量标准,使调整这一参数的过程变得更为准确、快速和高效。
本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
根据本公开的一个方面,提供一种模型参数表示空间大小估计方法,包括:获取目标模型的目标参数向量;统计目标参数向量之间的距离分布;根据所述距离分布确定所述目标参数向量做聚类的目标阈值;根据所述目标阈值和目标参数向量之间的距离,估计所述目标模型的参数向量的表示空间大小。
在本公开的一种示例性实施例中,获取目标模型的目标参数向量,包括:在多台服务器上并行训练所述目标模型,以使所述目标模型达到稳定状态;在每台服务器上单独保存一个模型分片;采样所述多台服务器中的其中一个模型分片,将采样的模型分片的参数向量作为所述目标参数向量。
在本公开的一种示例性实施例中,统计目标参数向量之间的距离分布,包括:统计目标参数向量之间的距离的第一分布;根据不同阈值分别对目标参数向量做聚类;分别统计根据不同阈值做聚类后的目标参数向量之间的距离的第二分布。
在本公开的一种示例性实施例中,根据所述距离分布确定所述目标参数向量做聚类的目标阈值,包括:分别计算不同阈值下所述第一分布和所述第二分布的相对熵,获得相对熵随阈值变化曲线;根据所述相对熵阈值变化曲线确定所述目标阈值。
在本公开的一种示例性实施例中,根据所述相对熵阈值变化曲线确定所述目标阈值,包括:获得所述相对熵阈值变化曲线的一阶导数曲线;获取所述一阶导数曲线的平滑阶段;选取所述平滑阶段对应的阈值作为所述目标阈值。
在本公开的一种示例性实施例中,根据所述目标阈值和目标参数向量之间的距离,估计所述目标模型的参数向量的表示空间大小,包括:统计目标参数向量之间的距离小于所述目标阈值的比例;根据所述比例估计所述表示空间大小。
在本公开的一种示例性实施例中,根据以下公式估计所述表示空间大小k:
上述公式中,p为所述比例。
在本公开的一种示例性实施例中,所述目标模型包括嵌入层和深度神经网络;所述方法还包括:获取所述嵌入层的长度;根据所述嵌入层的长度和所述表示空间大小确定所述嵌入层的参数向量的量化比特数。
根据本公开的一个方面,提供一种推荐方法,包括:获取目标客户端的当前用户特征和当前信息特征;通过基于深度学习的目标模型对所述当前用户特征和所述当前信息特征进行处理,获得推荐信息以发送至所述目标客户端;其中,所述目标模型的参数向量根据估计的表示空间大小进行量化压缩,利用如上述任一实施例所述的方法估计所述目标模型的参数向量的表示空间大小。
根据本公开的一个方面,提供一种模型参数表示空间大小估计装置,包括:目标参数获取模块,配置为获取目标模型的目标参数向量;距离分布统计模块,配置为统计目标参数向量之间的距离分布;目标阈值确定模块,配置为根据所述距离分布确定所述目标参数向量做聚类的目标阈值;空间大小估计模块,配置为根据所述目标阈值和目标参数向量之间的距离,估计所述目标模型的参数向量的表示空间大小。
根据本公开的一个方面,提供一种推荐装置,包括:特征数据获取模块,配置为获取目标客户端的当前用户特征和当前信息特征;推荐信息获得模块,配置为通过基于深度学习的目标模型对所述当前用户特征和所述当前信息特征进行处理,获得推荐信息以发送至所述目标客户端;其中,所述目标模型的参数向量根据估计的表示空间大小进行量化压缩,利用如上述任一实施例所述的方法估计所述目标模型的参数向量的表示空间大小。
根据本公开实施例的一方面,提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现如上述实施例中所述的模型参数表示空间大小估计方法。
根据本公开实施例的一方面,提供了一种电子设备,包括:一个或多个处理器;存储装置,配置为存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上述实施例中所述的模型参数表示空间大小估计方法。
根据本公开实施例的一方面,提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现如上述实施例中所述的推荐方法。
根据本公开实施例的一方面,提供了一种电子设备,包括:一个或多个处理器;存储装置,配置为存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上述实施例中所述的推荐方法。
在本公开的一些实施例所提供的技术方案中,通过统计目标模型的目标参数向量之间的距离分布,然后根据所述距离分布确定所述目标参数向量做聚类的目标阈值,从而可以根据所述目标阈值和目标参数向量之间的距离,估计所述目标模型的参数向量的表示空间大小,即本发明实施例提供的方案从模型本身出发,通过统计模型参数分布的特点,提供了一种基于聚类的参数空间大小的估计技术,从而可以根据估计的模型的参数向量的表示空间大小获得合适的量化比特数,为模型参数的量化压缩操作提供了定量标准与理论依据,使调整这一参数的过程变得更为准确、快速和高效。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1示出了可以应用本公开实施例的模型参数表示空间大小估计方法或模型参数表示空间大小估计装置的示例性系统架构的示意图;
图2示出了适于用来实现本公开实施例的电子设备的计算机系统的结构示意图;
图3示意性示出了根据本公开的一实施例的模型参数表示空间大小估计方法的流程图;
图4示意性示出了根据本公开的一实施例的目标模型的基本结构示意图;
图5示出了图3中所示的步骤s310在一实施例中的处理过程示意图;
图6示意性示出了不同量化比特数下模型auc曲线的示意图;
图7示出了图3中所示的步骤s320在一实施例中的处理过程示意图;
图8示意性示出了根据本公开的一实施例的不同阈值下的p(x)分布的示意图;
图9示出了图3中所示的步骤s330在一实施例中的处理过程示意图;
图10示出了图9中所示的步骤s332在一实施例中的处理过程示意图;
图11示出了kl距离随阈值变化图与kl距离的一阶导数随阈值变化图;
图12示出了图3中所示的步骤s340在一实施例中的处理过程示意图;
图13示意性示出了根据本公开的又一实施例的模型参数表示空间大小估计方法的流程图;
图14示意性示出了根据本公开的另一实施例的模型参数表示空间大小估计方法的流程图;
图15示出了图14中所示的步骤s1430在一实施例中的处理过程示意图;
图16示意性示出了根据本公开的一实施例的推荐方法的流程图;
图17示意性示出了根据本公开的一实施例的模型参数表示空间大小估计装置的框图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本公开的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本公开的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
图1示出了可以应用本公开实施例的模型参数表示空间大小估计方法或模型参数表示空间大小估计装置的示例性系统架构100的示意图。
如图1所示,系统架构100可以包括终端设备101、102、103中的一种或多种,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。比如服务器105可以是多个服务器组成的服务器集群等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103可以是具有显示屏的各种电子设备,包括但不限于智能手机、平板电脑、便携式计算机和台式计算机、数字电影放映机等等。
服务器105可以是提供各种服务的服务器。例如用户利用终端设备103(也可以是终端设备101或102)向服务器105发送图文展示请求。服务器105可以基于该图文展示请求中携带的相关信息,在数据库中检索到与该用户匹配的搜索结果,并将搜索结果例如相应的视频信息、文字信息、图片信息、音频信息、商品信息等中的任意一种或者多种反馈给终端设备103,进而用户可以基于终端设备103上显示的内容观看相应的图文信息。
又如终端设备103(也可以是终端设备101或102)可以是智能电视、vr(virtualreality,虚拟现实)/ar(augmentedreality,增强现实)头盔显示器、或者其上安装有即时通讯、视频应用程序(application,app)等的移动终端例如智能手机、平板电脑等,用户可以通过该智能电视、vr/ar头盔显示器或者该即时通讯、视频app向服务器105发送图文展示请求。服务器105可以基于该图文展示请求,在数据库中检索到与该用户匹配的图文信息返回给该智能电视、vr/ar头盔显示器或者该即时通讯、视频app,进而通过该智能电视、vr/ar头盔显示器或者该即时通讯、视频app将返回的图文信息的显示和/或播放。
图2示出了适于用来实现本公开实施例的电子设备的计算机系统的结构示意图。
需要说明的是,图2示出的电子设备的计算机系统200仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图2所示,计算机系统200包括中央处理单元(cpu,centralprocessingunit)201,其可以根据存储在只读存储器(rom,read-onlymemory)202中的程序或者从存储部分208加载到随机访问存储器(ram,randomaccessmemory)203中的程序而执行各种适当的动作和处理。在ram203中,还存储有系统操作所需的各种程序和数据。cpu201、rom202以及ram203通过总线204彼此相连。输入/输出(i/o)接口205也连接至总线204。
以下部件连接至i/o接口205:包括键盘、鼠标等的输入部分206;包括诸如阴极射线管(crt,cathoderaytube)、液晶显示器(lcd,liquidcrystaldisplay)等以及扬声器等的输出部分207;包括硬盘等的存储部分208;以及包括诸如lan(localareanetwork,局域网)卡、调制解调器等的网络接口卡的通信部分209。通信部分209经由诸如因特网的网络执行通信处理。驱动器210也根据需要连接至i/o接口205。可拆卸介质211,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器210上,以便于从其上读出的计算机程序根据需要被安装入存储部分208。
特别地,根据本公开的实施例,下文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分209从网络上被下载和安装,和/或从可拆卸介质211被安装。在该计算机程序被中央处理单元(cpu)201执行时,执行本申请的方法和/或装置中限定的各种功能。
需要说明的是,本公开所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom(erasableprogrammablereadonlymemory,可擦除可编程只读存储器)或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf(radiofrequency,射频)等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本公开各种实施例的方法、装置和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的模块和/或单元和/或子单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的模块和/或单元和/或子单元也可以设置在处理器中。其中,这些模块和/或单元和/或子单元的名称在某种情况下并不构成对该模块和/或单元和/或子单元本身的限定。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现如下述实施例中所述的方法。例如,所述的电子设备可以实现如图3或图5或图7或图9或图10或图12或图13或图14或图15或图16所示的各个步骤。
这里首先对本公开实施例中涉及的一些术语进行定义。
量化:指将多比特高精度数值转化为有限个低精度数值的过程。
曲线下面积(areaundercurve,auc):一个模型评价指标。若无特殊说明,本公开实施例中中均采用这一指标评价模型性能,auc越高则模型性能越好。
kl距离(kullback-leiblerdivergence):又称相对熵,表示原始分布p(x)和近似分布q(x)之间的对数差值的期望。更一般的,kl距离表示基于q(x)的编码来编码来自p(x)的样本平均所需的额外的位元数。
表示空间:表示参数向量能够取值的个数。
图3示意性示出了根据本公开的一实施例的模型参数表示空间大小估计方法的流程图。本公开实施方式的方法步骤可以由终端设备执行,也可以由服务端执行,或者由终端设备和服务端交互执行,例如,可以由上述图1中的服务器105执行,但本公开并不限定于此。
如图3所示,本公开实施方式提供的模型参数表示空间大小估计方法可以包括以下步骤。
在步骤s310中,获取目标模型的目标参数向量。
本公开实施例中,所述目标模型可以是任意的深度学习模型。这里以推荐系统的应用场景为例,所述目标模型可以包括嵌入层和深度神经网络(deepneuralnetwork,dnn),dnn例如可以包括cnn(convolutionalneuralnetworks,卷积神经网络)和rnn(recurrentneuralnetwork,循环神经网络),rnn例如可以包括lstm(longshort-termmemory,长短期记忆网络)、gru(gatedrecurrentunit,门循环单元)等。
本公开实施例中,采用训练数据集对所述目标模型进行训练,使其达到收敛的稳定状态,可以获得所述目标模型的模型参数,模型参数采用向量表示称之为所述目标模型的参数向量。一般地,在目标模型的训练过程中,会采用多台服务器或者服务器集群并行训练,每台服务器上会保存所述目标模型的部分模型参数。这里的所述目标参数向量可以是整个目标模型的全部嵌入层的参数向量,即训练所述目标模型的全部服务器上保存的模型参数均作为所述目标参数向量,但由于其数量多,计算量大,因此,也可以只采样其中部分服务器(例如,一台服务器)上的嵌入层的参数向量作为所述目标参数向量。
在步骤s320中,统计目标参数向量之间的距离分布。
在步骤s330中,根据所述距离分布确定所述目标参数向量做聚类的目标阈值。
在步骤s340中,根据所述目标阈值和目标参数向量之间的距离,估计所述目标模型的参数向量的表示空间大小。
本公开实施方式提供的模型参数表示空间大小估计方法,通过统计目标模型的目标参数向量之间的距离分布,然后根据所述距离分布确定所述目标参数向量做聚类的目标阈值,从而可以根据所述目标阈值和目标参数向量之间的距离,估计所述目标模型的参数向量的表示空间大小,即本发明实施例提供的方案从模型本身出发,通过统计模型参数分布的特点,提供了一种基于聚类的参数空间大小的估计技术,从而可以根据估计的模型的参数向量的表示空间大小获得合适的量化比特数,为模型参数的量化压缩操作提供了定量标准与理论依据,使调整这一参数的过程变得更为准确、快速和高效。
下面结合图4-15对本公开实施例提供的模型参数表示空间大小估计方法进行举例说明。
图4示意性示出了根据本公开的一实施例的目标模型的基本结构示意图。
由于大规模机器学习,尤其是大规模神经网络被应用于生产生活的多个领域。数据规模的扩张与数据高度稀疏的特性,导致了神经网络模型的规模急剧增长。由于数据特征的高维稀疏性,导致嵌入层规模膨胀,模型大小可达百g级别,难以适应实际存储和通信的要求。由于嵌入层参数的冗余性,可以通过量化参数的方式,大大减少模型存储与传输的开销。
这里以应用于浏览器资讯、视频等大规模推荐系统场景为例,采用千亿级参数分布式机器学习系统,其基本模型结构如图4所示。本公开实施例提供的目标模型可以包括嵌入层(embeddinglayer)和dnn,其中输入特征表现为高维稀疏特性,通过嵌入层映射为低维稠密特征,嵌入层的输出作为dnn的输入并进行计算和输出。由于输入数据的高维稀疏性,嵌入层规模庞大故需要进行量化压缩操作。
图4的实施例中,针对推荐系统而言,这里的输入特征例如可以包括用户特征,例如用户的年龄、性别、上网行为、所处地域、喜好等特征数据,还可以包括信息特征,例如文章类型(时政、娱乐、体育等)、文章或者视频或者音频等的发布时间、文章的作者等图文信息的信息特征。
本公开实施例中,量化压缩主要是针对目标模型的嵌入层参数而言的,并不量化dnn的参数,这是因为嵌入层占据了目标模型大小的大部分,嵌入层的大小往往是dnn的数百倍,例如对于大规模在线推荐场景而言,输入至嵌入层的特征维度可达百亿级别,这里以取一百亿为例,假设每个特征经过嵌入层按所属的领域(field)被映射到长为8bits的slot中,即嵌入层将一个高维稀疏的特征映射成一个低维的(这里取8维)特征,这个映射后的特征被称之为slot,即每个特征对应一个slot,每个slot的长度为8bits,嵌入层参数用长度8bits的向量来表示。那嵌入层的大小就接近300gb(1010×8×32bit)。而后续的神经网络dnn就要小得多,假设使用的数据一共有37个field,采用隐含层(全连接层)大小分别为512、256、128、32的神经网络为例,整个dnn大小也只有1.2mb(37×8×512+512×256+256×128+128×32+32×1)×32bit,所以对其进行压缩并不能有效提高压缩率,而且会降低模型性能。
本公开实施例提供的模型参数表示空间大小估计方法,主要是通过统计稳定模型的参数分布,估计模型参数向量的表示空间大小,通过选择能够满足该表示空间大小的量化比特数和嵌入层长度的组合,来达到降低或者消除量化操作所带来的精度损失的目的。
图5示出了图3中所示的步骤s310在一实施例中的处理过程示意图。
在步骤s311中,在多台服务器上并行训练所述目标模型,以使所述目标模型达到稳定状态。
在步骤s312中,在每台服务器上单独保存一个模型分片。
在步骤s313中,采样所述多台服务器中的其中一个模型分片,将采样的模型分片的参数向量作为所述目标参数向量。
具体的,可以随机选取任一一台服务器上保存的模型分片的参数向量作为所述目标参数向量。
图6示意性示出了不同量化比特数下模型auc曲线的示意图。
如图6所述,以图文推荐场景为例,示出了分别对嵌入层参数做二值量化、三值量化、四值量化等不同量化比特数下以及未量化(全精度模型结果)的模型的auc曲线,其中,纵坐标表示auc,横坐标为时间,单位为小时。
例如,这里的二值量化是指嵌入层参数的每个bit位取值为0或者1;三值量化是指嵌入层参数的每个bit位取值为-1或者0或者1;四值量化是指嵌入层参数的每个bit位取值为-1或者-0.5或者0.5或者1,但本公开并不限定于此,可以根据具体应用场景进行设定。
对比图6中二值量化与三值量化的auc结果,二值量化相对三值量化有约千分之二的auc损失,证明在二值量化的表示空间大小尚不足充分表示嵌入层原量化空间所示。而三值量化相对四值量化已经没有性能损失,意味着三值量化后的参数向量空间已经能够满足参数向量表示空间大小的需求。
本公开实施例提供的模型参数表示空间大小估计方法,基于聚类的思想,首先通过观察使kl距离(相对熵)发生快速变化的阈值大小来确定聚类的目标阈值。聚类结果所产生的表示空间大小即可为量化比特数的确定提供有效理论参考。
还是以图文推荐场景为例,假设每个特征按所属的领域(field)被映射到长度为8的slot中,但本公开并不限定于此,可以根据具体需求设置低维稠密特征的维数,故经过三值量化后的参数向量的表示空间大小为38=6561。本公开实施例提供的模型参数表示空间大小估计方法将从理论上证明这一大小能够满足模型参数所需。
本公开实施例中,假设参数向量在空间中是均匀分布的。首先说明对参数空间大小预测的假设理论基础。在此基础上,可在实际案例中对参数表示空间大小进行预测。
假设目标模型的嵌入层参数共有n(n为大于等于1的正整数)个目标参数向量,随机选取任意一个目标参数向量作为第一个聚类中心,并假设该第一个聚类中心可以聚集x(x为大于等于1的正整数)个目标参数向量,则可假设每个聚类中心可从空间中剩余的目标参数向量中聚集的比例为
假设聚类终止条件为:
at≤x(3)
则预期聚类中心个数k可表示为:
图7示出了图3中所示的步骤s320在一实施例中的处理过程示意图。
在步骤s321中,统计目标参数向量之间的距离的第一分布。
这里的目标参数向量之间的距离可以是任意两个目标参数向量之间的欧式距离,假设第一个目标参数向量表示为(x11,x12,...,x1n),第二个目标参数向量表示为(x21,x22,...,x2n),则这两个目标参数向量之间的距离d12可以采用以下公式计算:
其中,上述公式(5)中,k表示目标参数向量的维度,也即slot的长度,例如k=8。
通过统计目标参数向量之间的欧式距离获得第一分布,即首先分别计算任意两个目标参数向量之间的欧式距离,然后统计这些欧式距离的出现概率,例如欧式距离为1的数量除以总的欧式距离数量,得到欧式距离为1的出现概率,以此类推。
在步骤s322中,根据不同阈值分别对目标参数向量做聚类。
本公开实施例中,取一阈值(假设为第一阈值),对目标参数向量做聚类,当两个目标参数向量间欧式距离小于该第一阈值时,将其聚为一类。例如,在任意时刻,在剩下的目标参数向量中,随机选取一个目标参数向量作为聚类中心,然后分别计算其他剩下的目标参数向量与该聚类中心之间的欧式距离,若某一个目标参数向量与该聚类中心之间的欧式距离小于该第一阈值,则将该目标参数向量与该聚类中心聚为一类。
取另一阈值(假设为第二阈值),对目标参数向量做聚类,当两个目标参数向量间欧式距离小于该第二阈值时,将其聚为一类。例如,在任意时刻,在剩下的目标参数向量中,随机选取一个目标参数向量作为聚类中心,然后分别计算其他剩下的目标参数向量与该聚类中心之间的欧式距离,若某一个目标参数向量与该聚类中心之间的欧式距离小于该第二阈值,则将该目标参数向量与该聚类中心聚为一类。
通过选取不同的阈值,对目标参数向量重复上述聚类过程。
在步骤s323中,分别统计根据不同阈值做聚类后的目标参数向量之间的距离的第二分布。
本公开实施例中,分别统计根据不同阈值做聚类后的目标参数向量之间的距离的第二分布p(x)。
例如,对于上述根据第一阈值聚类后形成的目标参数向量,分别计算任意两个目标参数向量之间的欧式距离,然后统计每个欧式距离的出现概率,获得根据该第一阈值做聚类后的目标参数向量之间的距离的第二分布p1(x)。再例如,对于上述根据第二阈值聚类后形成的目标参数向量,分别计算任意两个目标参数向量之间的欧式距离,然后统计每个欧式距离的出现概率,获得根据该第二阈值做聚类后的目标参数向量之间的距离的第二分布p2(x)。根据其他阈值做聚类后的目标参数向量之间的距离的第二分布的统计过程与此类似。
图8示意性示出了根据本公开的一实施例的不同阈值下的p(x)分布的示意图。
如图8所示,纵坐标是p(x),横坐标是欧式距离。其中未聚类对应的为q(x),其他两条线分别表示阈值为0.002和0.003时的p(x)。
图9示出了图3中所示的步骤s330在一实施例中的处理过程示意图。
在步骤s331中,分别计算不同阈值下所述第一分布和所述第二分布的相对熵,获得相对熵随阈值变化曲线。
本公开实施例中,可以根据以下公式计算kl距离:
上述公式(6)中,i为“欧式距离”可取到的值。例如,假设采样间隔为0.001,欧式距离范围为0~0.02,则i=0,0.001,0.002,…0.019,0.02,(这里的取值仅用于举例说明,本公开并不限定于此,实际采样间隔可以更小,欧式距离的范围可以更大。为了更明显的显示三条曲线的差别,上图中欧式距离范围只取了0~0.02)。
不断地改变阈值,重复执行上述统计q(x)和p(x)以及计算kl距离的过程,画出不同阈值下kl距离的变化,直至kl距离随阈值变化的幅度足够明显。
在步骤s332中,根据所述相对熵阈值变化曲线确定所述目标阈值。
这里可以选择kl距离变化幅度很小的阈值作为聚类所使用的目标阈值。
图10示出了图9中所示的步骤s332在一实施例中的处理过程示意图。
在步骤s3321中,获得所述相对熵阈值变化曲线的一阶导数曲线。
在步骤s3322中,获取所述一阶导数曲线的平滑阶段。
在步骤s3323中,选取所述平滑阶段对应的阈值作为所述目标阈值。
图11示出了kl距离随阈值变化图与kl距离的一阶导数随阈值变化图。
如图11所示,左侧的纵坐标为kl距离,右侧的纵坐标为kl距离的一阶导数,横坐标为阈值,箭头指向的地方为目标阈值0.002。其中,kl距离随阈值变化曲线如图11虚线所示。观察kl距离随阈值变化曲线的一阶导数(该时刻kl距离相对上一时刻kl距离的变化),在阈值较小时其变化平缓,随阈值变大振动幅度变大。
kl距离的物理含义表示基于q的编码来编码来自p的样本平均所需的额外的位元数。因此,在本公开实施例中,当其变化很小时,可认为该量化方案能够较好的表示原参数空间。反之,则认为此时该阈值下聚类的参数已经不足以充分表示原参数空间,需要额外增加较多的比特数才能满足编码所需。取平滑阶段的阈值,如图11中实线所示,即为做聚类时所采用的数值,在本实验中可取0.002,即取平滑阶段的最末尾位置的阈值作为目标阈值。
因为当其变化较小(平缓)时,表示在当前的聚类方案下,聚类后的距离分布和聚类前是接近的,此时可以进一步增大阈值;当阈值进一步增大,导致实线出现跳变的时候,证明使用此阈值聚类的参数已经不足以充分表示原参数空间,表达能力不够,将会降低模型性能。所以拐点处的阈值即为选取的目标阈值。总体上,阈值太小,聚类效果不明显,压缩效果不明显;阈值太大,参数表示能力不够,会降低模型性能。
图12示出了图3中所示的步骤s340在一实施例中的处理过程示意图。
在步骤s341中,统计目标参数向量之间的距离小于所述目标阈值的比例。
本公开实施例中,统计未聚类之前的目标参数向量之间的欧式距离小于该目标阈值的比例,即将未聚类之前的目标参数向量之间的欧式距离小于该目标阈值的数量,除以未聚类之前的目标参数向量之间的欧式距离总数获得所述比例,该比例即为上述公式(1)和(4)中的比例p。
在步骤s342中,根据所述比例估计所述表示空间大小。
本公开实施例中,参照上述公式(4)可知,可以根据以下公式估计所述表示空间大小k:
上述公式(7)中,p为所述比例。
图13示意性示出了根据本公开的又一实施例的模型参数表示空间大小估计方法的流程图。本公开实施例中,所述目标模型可以包括嵌入层和深度神经网络。
如图13所示,与上述其他实施例相比,本发明实施例提供的模型参数表示空间大小估计方法的不同之处在于,还可以包括以下步骤。
在步骤s1310中,获取所述嵌入层的长度。
例如,嵌入层长度是指上述长度为8的slot。
在步骤s1320中,根据所述嵌入层的长度和所述表示空间大小确定所述嵌入层的参数向量的量化比特数。
图14示意性示出了根据本公开的另一实施例的模型参数表示空间大小估计方法的流程图。
在步骤s1410中,训练得到收敛的全精度的目标模型。
这里的全精度的目标模型即训练达到稳定状态后获得的模型参数未进行量化压缩之前的目标模型。
在步骤s1420中,统计目标模型的参数向量之间的距离分布q(x)。
在步骤s1430中,按不同阈值对参数向量做聚类,统计聚类后参数向量之间的距离分布p(x)。
在步骤s1440中,计算kl距离随阈值变化曲线,选取变化较小的阈值作为目标阈值。
在步骤s1450中,统计参数向量之间距离小于该目标阈值的比例。
在步骤s1460中,利用该比例估计参数向量的表示空间大小。
在步骤s1470中,根据估计的表示空间大小选取合适的量化方案。
图15示出了图14中所示的步骤s1430在一实施例中的处理过程示意图。其中统计聚类后参数向量间距离分布p(x)(图4中红色方框所示)的过程如图5所示。
在步骤s1431中,初始化阈值。
在步骤s1432中,按当前阈值对参数向量做聚类。
在步骤s1433中,统计聚类后参数向量之间的距离分布pi(x)。
其中,i为大于等于1且小于等于z的正整数,z表示不同阈值的个数,z为大于1的正整数。
在步骤s1434中,判断是否结束;若没有结束,则进入下一阈值,跳回到上述步骤s1432;反之,结束。
在实际案例中模型参数向量个数n往往可达到百兆,所有参数向量间欧式距离个数达
这m个参数向量可以是随机的从n个参数向量中选取的,例如这里选取了m≈0.1%×n。使用更大的m得到的结果与此几乎没有差别。
例如,还是以图文或者信息流推荐系统场景为例,对参数空间大小的估计过程如下:
在多台服务器上利用训练数据集(例如浏览器用户图文推荐历史数据)并行地训练上述目标模型,训练到收敛时,假设获得的嵌入层参数向量个数n=1.38×108。每个server(服务器)上的模型会单独保存一个模型分片即该目标模型的部分嵌入层参数向量,为了简化计算,可随机采样其中一个模型分片,假设其包含的嵌入层参数向量个数m=124192,利用该m个嵌入层参数向量作为目标参数向量用于估计目标阈值。
基于这m个目标参数向量,统计不同阈值下kl距离的变化情况,假设结果如图11所示。选取聚类的目标阈值t=0.002。
在所有m=0.5×(m-1)×m=0.5×(124192-1)×124192≈7.71×109个目标参数向量间欧式距离中,共有约x'=9×106个欧式距离小于该目标阈值,则
根据上述公式(7),参数所需的表示空间大小k为:
由于256=28<5783<38=6561,因此在此举例中三值量化能够满足参数空间大小所需。
本公开实施方式提供的模型参数表示空间大小估计方法,使用kl距离估计不同阈值下聚类编码所需额外的比特数,并通过聚类方法估计合适的量化比特数,使调参过程更为自动、快速、稳定、有依据。
图16示意性示出了根据本公开的再一实施例的推荐方法的流程图。本公开实施方式的方法步骤可以由终端设备执行,也可以由服务端执行,或者由终端设备和服务端交互执行,例如,可以由上述图1中的终端设备101或者102或者103执行,但本公开并不限定于此。
如图16所示,本公开实施方式提供的推荐方法可以包括以下步骤。
在步骤s1610中,获取目标客户端的当前用户特征和当前信息特征。
例如,当前用户通过其用户名登录目标客户端(例如某浏览器或者某网页或者某个应用程序),后台服务器可以获取到该目标客户端对应的当前用户的当前用户特征,例如该当前用户的姓名、年龄、身高、体重、手机号码、用户名等数据,还可以获取到当前信息特征例如文章的名称、文章的发表时间、文章的作者、文章的关键字、文章的类型、视频的类别、音频的名称、图片的内容等数据,具体的当前用户特征和当前信息特征包括的数据内容可以根据具体应用场景而定,本公开对此不作限定。
在步骤s1620中,通过基于深度学习的目标模型对所述当前用户特征和所述当前信息特征进行处理,获得推荐信息以发送至所述目标客户端。
其中,所述目标模型的参数向量根据估计的表示空间大小进行量化压缩,利用如上述任一实施例所述的的模型参数表示空间大小估计方法估计所述目标模型的参数向量的表示空间大小。
本公开实施例中,预先采用训练数据集训练该基于深度学习的目标模型,该训练数据集可以包括历史用户特征和历史信息特征以及对应的标注了的历史推荐信息,该目标模型可以包括嵌入层和深度神经网络,训练后可以获得该目标模型的参数向量。之后,可以采用上述任一实施例所述的模型参数表示空间大小估计方法估计出参数所需的表示空间大小k,从而可以确定对该嵌入层参数向量进行量化压缩的量化比特数,并按照该量化比特数对该目标模型的嵌入层参数进行压缩,之后存储深度神经网络的模型参数和压缩后的嵌入层参数。
需要在线进行信息流或者图文的个性化推荐时,将所述当前用户特征和所述当前信息特征输入至训练好的基于深度学习的推荐模型中,服务器可以根据所述当前用户特征和所述当前信息特征为该当前用户发送个性化的推荐信息例如推荐资讯或者推荐音视频等任意的推荐内容。
图17示意性示出了根据本公开的一实施例的模型参数表示空间大小估计装置的框图。本公开实施方式的模型参数表示空间大小估计装置可以设置在终端设备上,也可以设置在服务端上,或者部分设置在终端设备上,部分设置在服务端上,例如,可以设置在图1中的服务器105,但本公开并不限定于此。
如图17所示,本公开实施方式提供的模型参数表示空间大小估计装置1700可以包括目标参数获取模块1710、距离分布统计模块1720、目标阈值确定模块1730以及空间大小估计模块1740。
其中,目标参数获取模块1710可以配置为获取目标模型的目标参数向量。距离分布统计模块1720可以配置为统计目标参数向量之间的距离分布。目标阈值确定模块1730可以配置为根据所述距离分布确定所述目标参数向量做聚类的目标阈值。空间大小估计模块1740可以配置为根据所述目标阈值和目标参数向量之间的距离,估计所述目标模型的参数向量的表示空间大小。
在示例性实施例中,目标参数获取模块1710可以包括:模型训练单元,可以配置为在多台服务器上并行训练所述目标模型,以使所述目标模型达到稳定状态;参数存储单元,可以配置为在每台服务器上单独保存一个模型分片;参数采样单元,可以配置为采样所述多台服务器中的其中一个模型分片,将采样的模型分片的参数向量作为所述目标参数向量。
在示例性实施例中,距离分布统计模块1720可以包括:第一分布统计单元,可以配置为统计目标参数向量之间的距离的第一分布;参数聚类单元,可以配置为根据不同阈值分别对目标参数向量做聚类;第二分布统计单元,可以配置为分别统计根据不同阈值做聚类后的目标参数向量之间的距离的第二分布。
在示例性实施例中,目标阈值确定模块1730可以包括:相对熵变化获得单元,可以配置为分别计算不同阈值下所述第一分布和所述第二分布的相对熵,获得相对熵随阈值变化曲线;目标阈值确定单元,可以配置为根据所述相对熵阈值变化曲线确定所述目标阈值。
在示例性实施例中,所述目标阈值确定单元可以包括:相对熵变化程度获得子单元,可以配置为获得所述相对熵阈值变化曲线的一阶导数曲线;平滑阶段获取子单元,可以配置为获取所述一阶导数曲线的平滑阶段;目标阈值选取子单元,可以配置为选取所述平滑阶段对应的阈值作为所述目标阈值。
在示例性实施例中,空间大小估计模块1740可以包括:比例获得单元,可以配置为统计目标参数向量之间的距离小于所述目标阈值的比例;空间大小估计单元,可以配置为根据所述比例估计所述表示空间大小。
在示例性实施例中,根据以下公式估计所述表示空间大小k:
上述公式中,p为所述比例。
在示例性实施例中,所述目标模型可以包括嵌入层和深度神经网络。模型参数表示空间大小估计装置1700还可以包括:嵌入层长度获取模块,可以配置为获取所述嵌入层的长度;量化比特数确定模块,可以配置为根据所述嵌入层的长度和所述表示空间大小确定所述嵌入层的参数向量的量化比特数。
本公开实施例提供的模型参数表示空间大小估计装置中的各个模块和/或单元和/或子单元的具体实现可以参照上述模型参数表示空间大小估计方法中的内容,在此不再赘述。
进一步的,本公开实施方式还可以提供一种推荐装置,该推荐装置可以包括特征数据获取模块以及推荐信息获得模块。
其中,所述特征数据获取模块可以配置为获取目标客户端的当前用户特征和当前信息特征。所述推荐信息获得模块可以配置为通过基于深度学习的目标模型对所述当前用户特征和所述当前信息特征进行处理,获得推荐信息以发送至所述目标客户端。其中,所述目标模型的参数向量根据估计的表示空间大小进行量化压缩,利用如上述任一实施例所述的模型参数表示空间大小估计方法估计所述目标模型的参数向量的表示空间大小。
本公开实施例提供的推荐装置中的各个模块以及表示空间大小的估计的具体实现可以参照上述模型参数表示空间大小估计方法及装置中的内容,在此不再赘述。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元或者子单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元或者子单元的特征和功能可以在一个模块或者单元或者子单元中具体化。反之,上文描述的一个模块或者单元或者子单元的特征和功能可以进一步划分为由多个模块或者单元或者子单元来具体化。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本公开实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。