CN110334067A - 一种稀疏矩阵压缩方法、装置、设备及存储介质 - Google Patents
一种稀疏矩阵压缩方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN110334067A CN110334067A CN201910520951.4A CN201910520951A CN110334067A CN 110334067 A CN110334067 A CN 110334067A CN 201910520951 A CN201910520951 A CN 201910520951A CN 110334067 A CN110334067 A CN 110334067A
- Authority
- CN
- China
- Prior art keywords
- user
- sparse
- features set
- matrix
- code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 239000011159 matrix material Substances 0.000 title claims abstract description 116
- 238000000034 method Methods 0.000 title claims abstract description 84
- 230000006835 compression Effects 0.000 title claims abstract description 35
- 238000007906 compression Methods 0.000 title claims abstract description 35
- 238000003860 storage Methods 0.000 title claims abstract description 24
- 230000015654 memory Effects 0.000 claims abstract description 39
- 230000005494 condensation Effects 0.000 claims abstract description 20
- 238000009833 condensation Methods 0.000 claims abstract description 20
- 239000013598 vector Substances 0.000 abstract description 44
- 230000008569 process Effects 0.000 abstract description 16
- 238000012549 training Methods 0.000 description 20
- 238000010586 diagram Methods 0.000 description 17
- 238000012545 processing Methods 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000013136 deep learning model Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 238000011017 operating method Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 239000011800 void material Substances 0.000 description 2
- 241000208340 Araliaceae Species 0.000 description 1
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 description 1
- 235000003140 Panax quinquefolius Nutrition 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000002360 explosive Substances 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 235000008434 ginseng Nutrition 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1744—Redundancy elimination performed by the file system using compression, e.g. sparse files
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明涉及一种稀疏矩阵压缩方法、装置、设备及存储介质,所述方法包括:构建原始特征集合;获取用户的样本数据,根据所述用户的样本数据从所述原始特征集合中确定用户的稀疏特征集合;对所述稀疏特征集合中的元素进行压缩编码,得到压缩特征集合,建立所述稀疏特征集合中的元素与所述压缩特征集合中的元素的一一对应关系;根据所述用户的样本数据、所述稀疏特征集合、所述压缩特征集合,以及所述对应关系,构建用户特征压缩矩阵。本发明能够减小特征向量化时的特征空间,减小需要开辟的内存空间,加速整个计算过程。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种稀疏矩阵压缩方法、装置、设备及存储介质。
背景技术
在互联网场景中,亿级的用户每天产生着大规模的用户数据,形成了超大规模的训练样本。如何利用这些数据训练出更好的模型并用这些模型为用户服务,给机器学习平台带来了巨大的挑战。
以推荐业务场景为例,当前每天的页面浏览量最高可达到百亿级别,如果需要按一个月的样本进行训练,样本量会在千亿级别,亿级别用户维度和亿级别的内容维度通过特征工程交叉组合产生爆炸式的特征维度。而在对模型进行训练时,每次获取的用户样本特征都是稀疏的,一般采用稀疏矩阵的表示方式来对用户的特征进行向量化,这里不同的稀疏矩阵的表示方式对特征向量化的速度有不同影响,现有技术中的稀疏矩阵表示方式占用大量的内存空间,影响特征向量化的速度。
发明内容
本发明所要解决的技术问题在于,提供一种稀疏矩阵压缩方法、装置、设备及存储介质,能够减小特征向量化时的特征空间,减小需要开辟的内存空间,加速整个计算过程。
为了解决上述技术问题,第一方面,本发明提供了一种稀疏矩阵压缩方法,所述方法包括:
构建原始特征集合;
获取用户的样本数据,根据所述用户的样本数据从所述原始特征集合中确定用户的稀疏特征集合;其中,所述稀疏特征集合是根据所述原始特征集合中的部分特征得到的;
对所述稀疏特征集合中的元素进行压缩编码,得到压缩特征集合,建立所述稀疏特征集合中的元素与所述压缩特征集合中的元素的一一对应关系;
根据所述用户的样本数据、所述稀疏特征集合、所述压缩特征集合,以及所述对应关系,构建用户特征压缩矩阵。
第二方面,本发明提供了一种稀疏矩阵压缩装置,所述装置包括:
原始特征集合构建模块,用于构建原始特征集合;
稀疏特征集合构建模块,用于获取用户的样本数据,根据所述用户的样本数据从所述原始特征集合中确定用户的稀疏特征集合;其中,所述稀疏特征集合是根据所述原始特征集合中的部分特征得到的;
压缩编码模块,用于对所述稀疏特征集合中的元素进行压缩编码,得到压缩特征集合,建立所述稀疏特征集合中的元素与所述压缩特征集合中的元素的一一对应关系;
压缩矩阵构建模块,用于根据所述用户的样本数据、所述稀疏特征集合、所述压缩特征集合,以及所述对应关系,构建用户特征压缩矩阵。
第三方面,本发明提供了一种设备,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如第一方面所述的稀疏矩阵压缩方法。
第四方面,本发明提供了一种计算机存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行如第一方面所述的稀疏矩阵压缩方法。
实施本发明实施例,具有如下有益效果:
本发明通过构建原始特征集合,根据获取的当前批次样本数据,从原始特征集合中确定出用户的稀疏特征集合;对稀疏特征集合中的元素进行压缩编码,得到压缩特征集合,并建立稀疏特征集合中的元素与压缩特征集合中的元素的一一对应关系;根据样本数据、稀疏特征集合、压缩特征集合以及对应关系,构建用户特征压缩矩阵。本发明通过对稀疏特征集合中的元素进行压缩编码,从而减少了特征向量化时的特征空间,以及需要开辟的内存空间;采用特征压缩矩阵进行后续计算,加速了计算过程。
附图说明
图1是本发明实施例提供的应用场景示意图;
图2是本发明实施例提供的一种稀疏矩阵压缩方法流程示意图;
图3是本发明实施例提供的一种稀疏特征集合确定方法流程示意图;
图4是本发明实施例提供的用户样本特征处理过程示意图;
图5是本发明实施例提供的一种连续编码方法示意图;
图6是本发明实施例提供的一种用户特征压缩矩阵的构建方法流程图;
图7是本发明实施例提供的一种获取用户特征信息方法流程图;
图8是本发明实施例提供的一种参数训练方法流程图;
图9是本发明实施例提供的参数向量的梯度计算方法流程图;
图10是本发明实施例提供的一种分布式机器学习设计框架示意图;
图11是本发明实施例提供的一种稀疏矩阵压缩装置示意图;
图12是本发明实施例提供的压缩编码模块示意图;
图13是本发明实施例提供的稀疏特征集合构建模块示意图;
图14是本发明实施例提供的压缩矩阵构建模块示意图;
图15是本发明实施例提供的特征信息存入模块示意图;
图16是本发明实施例提供的一种设备结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述。显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参见图1,其示出了本发明应用场景示意图,该应用场景至少可以包括终端110和服务器120,所述终端110与所述服务器120之间进行数据通信。
本说明书实施例中,所述终端110可以包括智能手机、台式电脑、平板电脑、笔记本电脑、数字助理、智能可穿戴等类型的实体设备,也可以包括运行于实体设备中的软体,例如应用程序、网站等。本申请实施例中终端上运行的操作系统可以包括但不限于安卓系统、IOS系统、linux、windows等。
本说明书实施例中,所述服务器120可以包括一个独立运行的服务器,或者分布式服务器,或者有多个服务器组成的服务器集群。
具体地,所述终端110可用于收集用户的样本数据信息并上报给服务器120;所述服务器120可用于对获取的用户稀疏特征进行处理。
在进行有关根据用户特征信息进行特征处理或者模型训练时,由于分批次获取的用户特征信息是稀疏的,经常需要通过稀疏矩阵的形式来表示用户特征,但是如何对用户特征矩阵进行处理会影响整个处理过程的处理速度。
现有技术中,提供了一种稀疏矩阵的处理方法:Eigen Sparse Matrix方案,该方案是Eigen计算库提供的一种稀疏矩阵的表示方式,Eigen库是一种高性能开源矩阵计算库,此方案需要四个单独的数组来表示一个稀疏矩阵,分别是:Values,InnerIndices,OuterStarts和InnerNNZs。Values数组用来存储稀疏矩阵中的非零元素和预留空间;InnerIndices数组存储非零元素在矩阵中的行索引;OuterStarts数组记录每一列第一个非零元素在Values数组中的位置;InnerNNZs记录每一列中非零元素的个数。例如,对于一个稀疏矩阵H,有:
经过Eigen Sparse Matrix表示,稀疏矩阵表示为下面四个数组:
Values:22 7 _ 3 5 14 _ _ 1 _ 17 8
InnerIndices:1 2 _ 0 2 4 _ _ 2 _ 1 4
OuterStarts:0 3 5 8 10 12
InnerNNZs:2 2 1 1 2
由上述表示可知,在Values数组中为新增元素预留了空间,对于这种稀疏矩阵表示方式,每一次向量化都会预留大量的free space为了新增元素,新增地址空间占用大量内存,影响向量化速度;并且当特征维度过大时,会访问大量的没有值的特征,从而导致了过多的无用访问。
为此,本发明提供了一种稀疏矩阵的压缩方法,以下具体介绍本发明的稀疏矩阵压缩方法,可参见图2,其示出了一种稀疏矩阵压缩方法流程示意图,可应用于服务器侧,所述方法包括:
S210.构建原始特征集合。
这里的原始特征集合可以是后台服务器根据大批量的用户历史样本数据所总结出来的一个大的特征空间集合,可以认为该空间集合包含了所有用户相关的特征信息;也可以是后台服务器预设的特征空间集合,将可能的特征信息列举出来,形成原始特征集合。当然,对于上述的原始特征集合是不断的更新的,即会不断有新的特征添加到该集合当中,形成更加完备的特征集合。
S220.获取用户的样本数据,根据所述用户的样本数据从所述原始特征集合中确定用户的稀疏特征集合;其中,所述稀疏特征集合是根据所述原始特征集合中的部分特征得到的。
分批次地获取用户的样本数据,对于每个批次获取的用户样本数据中,可能包含一个或者多个用户的样本信息,需要从这些样本信息中确定出相关的特征,并进行处理,具体过程可参见图3,其示出了一种稀疏特征集合确定方法,包括:
S310.对所述用户的样本数据进行处理,将处理后的结果与所述原始特征集合中的元素进行匹配,得到用户样本特征集合;其中,所述用户样本特征集合包括多个用户的样本特征,所述样本特征集合中的每个元素均包括特征标识。
原始特征集合中的每个特征都有与其对应的特征标识,本实施例中可通过数字来标识各个不同的具体特征,比如:特征1、特征2、特征3……,即只需要能够区分不同的特征即可,也可以通过其他方式来标识,比如字母、文字等其他标识方式。
获取的用户样本数据都会带有相应的用户标识,这里可以分别根据不同用户的样本数据进行样本特征的确定,以一具体用户A为例:
收集到的来自用户A的样本数据信息中包含有性别、年龄、地域、爱好、点击的文章特征等特征属性,将这些特征属性的具体信息与原始特征集合中的特征进行匹配,发现用户A的特征属性与原始特征集合中的特征1、特征3、特征10、特征22、特征100相匹配,则最终得到用户A的样本特征集合为:A={1,3,10,22,100}。
S320.根据所述特征标识,对所述用户样本特征集合中的元素进行去重,得到所述稀疏特征集合。
以某一批次的用户浏览记录样本数据为例,假设样本中出现的特征如表1所示:
表1某批次用户样本特征
特征ID | 1 | 2 | 3 | … | 100 | … | 99999 | 100000 | 100001 |
权重 | W1 | W2 | W3 | … | W100 | … | W99999 | W100000 | W100001 |
如上述表1所示,本批次的所有用户的浏览范围都在表1中,用户之间可能会有相似的浏览记录,提前找出用户间重复的特征ID,只保留一份,这样可以节省存储空间,也可以为后续的计算简化流程,避免进行多次重复的操作节约资源,具体去重过程可如图4所示,假设本批次的用户数据样本中包含2个用户的样本信息,并且用户1的特征为:1,3,5,20,56,80,85,90,100;用户2的特征为:1,3,5,25,56,80,85,94,96,100,100001;由此可见,用户1和用户2具有相同的特征:1,3,5,56,80,85,100,将用户1和用户2的特征进行组合,并只保留一份相同的特征,再组合上两个用户分别不相同的特征,由此得到了本批次的用户特征集合,包括:1,3,5,20,25,56,80,85,90,94,96,100,100001。用户1和用户2的原始的特征总量为20,经过去重之后,特征总量只有13个,极大地节约了空间资源。
由于某个批次得到的用户特征数相比于总的原始特征集合中特征数是较少的,只涉及到原始特征集合中的极少数特征,故相对于总的特征来说,本批次得到的特征是稀疏的,所以对于本批次用户特征所构成的集合可称为稀疏特征集合。这里的稀疏可以看成是相对于特征ID而言,即稀疏特征集合中特征的特征ID是稀疏的。
S230.对所述稀疏特征集合中的元素进行压缩编码,得到压缩特征集合,建立所述稀疏特征集合中的元素与所述压缩特征集合中的元素的一一对应关系。
得到了包含本批次用户所有特征的稀疏特征集合之后,其中与各特征对应的特征ID是稀疏且不连续的,本实施例中可以通过对这些稀疏且不连续的特征ID进行连续编码,为每一个特征赋予一个新的编码特征ID,具体地,一种连续编码方法可参见图5,所述方法包括:
S510.获取所述稀疏特征集合中每个元素的所述特征标识,对非连续的所述特征标识进行连续编码,得到与每个所述特征标识相对应的编码标识。
具体地,首先确定连续编码的初始编码值,从所述初始编码值开始递增进行连续编码,得到编码标识,由于这里的连续编码是相对于稀疏特征ID进行编码的,而特征ID又与稀疏特征集合中的特征一一对应,所以所述编码标识的个数为所述稀疏特征集合中元素的个数。
为每个所述特征标识分配一个编码标识,生成所述标识与所述编码标识的索引表。
本实施例中可以整数编码的形式进行编码,从初始编码值开始,以1为间隔进行递增,每生成一个数字编码即对应一个特征ID,生成特征ID与编码标识的索引表,从该索引表中可以根据特征ID查找对应的编码标识,通过编码标识可以查找到对应的特征ID。
S520.存储所述特征标识与所述编码标识的一一对应关系。
对上述生成的特征ID与编码标识的索引表进行存储。
以图4为例来说明连续编码的具体过程:
由于稀疏特征集合中的特征ID是稀疏且不连续的,因此首先根据稀疏特征集合的大小,重新编码特征ID,为每个本次用到的特征ID赋予一个新的连续的特征ID,新的最大的特征ID就代表了本次计算中特征矩阵的列维度,表1中,原来的稀疏特征ID的范围为1~100001,并且有很大一部分特征ID并未在本批次出现,经过重新编码后,特征ID的范围为0~12,每一个连续特征ID都在本批次出现,如表2所示:
表2特征ID连续编码
稀疏编码 | 1 | 3 | 5 | 20 | 25 | 56 | 80 | 85 | 90 | 94 | 96 | 100 | 100001 |
压缩编码 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
存储表2中的索引关系,相较于现有技术中稀疏特征的表示方法,上述对应关系的存储占用的内存及开销可忽略。
S240.根据所述用户的样本数据、所述稀疏特征集合、所述压缩特征集合,以及所述对应关系,构建用户特征压缩矩阵。
经过对稀疏特征进行的重新编码,特征ID被压缩至一个较小的特征空间,此时批量用户的特征可用以特征矩阵来表示,具体过程可参见图6,其示出了一种用户特征压缩矩阵的构建方法,包括:
S610.以所述用户的样本数据中的用户数量为行数、以所述编码标识的个数为列数,构建初始特征矩阵;其中,所述初始特征矩阵的每一列对应一个编码标识。
具体地,以每个用户特征为矩阵中的一行,且对于每一个用户的每一列对应一个特征,列索引对应重新编码后的特征ID。
S620.根据每一列的编码标识获取用户的特征信息,将所述用户的特征信息存入所述初始特征矩阵,生成所述用户特征压缩矩阵。
由于不同用户的特征存在部分差异,而特征空间重编码是对本批次用户的所有特征重新编码,所以可能会出现某些用户没有某些特征的情况,所以本实施例中,在用户的特征矩阵中,1代表该用户具有该特征,0代表该用户不具有该特征,具体地,在获取用户特征信息时的具体方法请参见图7,所述方法包括:
S710.对于每个用户,根据所述索引表,确定所述初始特征矩阵中每一列的编码标识对应的特征标识。
S720.根据所述特征标识从所述用户样本特征集合中获取用户的特征信息,将所述用户的特征信息存入所述初始特征矩阵中。
对于图4中的用户1来说,初始特征中的列编码标识为0~12,根据表2的索引关系,对应出其原始的特征ID,例如,对于矩阵的第3列,其编码标识为2,对应的特征ID为20,在用户1的样本特征空间中查找是否存在特征ID为20的特征,查找该特征之后,将初始特征矩阵的第1行第3列对应的元素置为1;对于矩阵的第10列,其编码标识为9,对应的特征ID为94,在用户1的样本特征空间中没有找到特征ID为94的特征,将初始特征矩阵的第1行第10列置为0;依次类推,最终得到用户特征压缩矩阵。
结合图4和表2的相关信息,可知对于用户1和用户2,与其对应的用户特征压缩矩阵如下所示:
其中,上述稠密矩阵的每一行代表一个用户所对应的特征。
由上述实施例可知,特征的访问范围已由1~100001压缩至0~12,相比于现有技术中的Eigen Sparse Matrix稀疏矩阵表示方法,四个表示数组已被优化为一个共享的特征索引表和一个稠密矩阵。
本实施例提供的稀疏矩阵压缩方法,具有如下有益效果:
有效利用内存空间:特征总量对于每批次都是固定的,不需要有预留位置来扩充特征向量,这样可以充分的利用一段连续的内存,减少因为预留空间而产生的内存浪费;而Eigen Sparse Matrix每次向量化都会预留大量的free space为了新增元素,新增地址空间占用大量内存,影响向量化速度。
加速访问速度:当特征维度过大时,本实施例对特征ID重新编码,对于未在本批数据中出现的特征,会将对应的特征ID从特征矩阵中剔除,特征矩阵中仅保留本批次数据中出现的特征,通过重新编码特征ID,确保了出现在特征矩阵中的每一个特征都是有用的,从而可以将特征值放入一段连续的内存中,因为对内存的连续访问是高效的,加快了对特征的访问速度;从而避免了当特征维度过大时,会访问大量的没有值的特征,从而导致了过多的无用访问。
减少无用数组:本实施例利用了稠密矩阵来表示稀疏矩阵,摆脱了Eigen SparseMatrix中过多的数组来表示稀疏矩阵;从而避免了无用数组占用大量的内存空间的问题。
基于本实施例上述的稀疏矩阵压缩方法,本实施例还提出了一种基于稀疏矩阵压缩的参数训练方法,需要说明的是,该参数训练方法的相关实施细节与本实施例上述的稀疏矩阵压缩方法一致,对于未在本方法中详细说明的技术细节,可参见上述的稀疏矩阵压缩方法,请参见图8,所述参数训练方法包括:
S810.构建原始特征集合,确定与所述原始特征集合中每个元素相对应的参数向量。
这里的参数向量可以理解为,每个特征都对应一个权重,具体的本实施例中可通过embedding向量来表示权重,在训练的时候,每个特征的embedding向量是随机初始化的。embedding向量为用来表示一个向量来表示特征在算法中的具体形式。
S820.获取用户的样本数据,根据所述用户的样本数据从所述原始特征集合中确定用户的稀疏特征集合。
这里得到用户稀疏特征集合方法与本实施例上述方法类似,同样包括特征匹配以及特征去重的过程。
S830.拉取与所述稀疏特征集合中每个元素相对应的参数向量。
根据稀疏特征集合中每个特征的特征ID,去拉取与其对应的参数向量,这里由于对不同用户的特征进行了去重,对于可能相同的特征只需要拉取一次参数向量,避免了参数向量的重复拉取,从而节约了资源。
S840.对所述稀疏特征集合中的每个元素进行压缩编码,得到压缩特征集合,建立所述稀疏特征集合中的元素与所述压缩特征集合中的元素的一一对应关系。
S850.根据所述对应关系、所述稀疏特征集合中每个元素对应的参数向量以及所述压缩特征集合,计算所述压缩特征集合中每个元素对应的参数向量的梯度。
具体地,请参见图9,对于参数向量的梯度计算方法包括:
S910.根据所述用户样本特征集合以及所述对应关系,以所述样本数据中用户数量为行数、以编码标识的个数为列数,创建用户特征压缩矩阵;其中通过列索引对应的特征标识获取用户的特征信息。
S920.根据所述对应关系、与所述特征标识对应的参数向量以及所述编码标识,确定与所述编码标识对应的参数向量。
根据对应关系,对于某个编码标识,对应找到与该编码标识对应的特征ID,并获取与该特征ID相对应的参数向量,建立该编码标识与该参数向量的对应关系。对于本批次的其他编码标识,采用同样的方式找到与其对应的参数向量,并根据本批次涉及的参数向量,建立参数向量矩阵。
S930.根据所述特征压缩矩阵和所述编码标识对应的参数向量,计算所述编码标识对应的参数向量的梯度。
根据特征压缩矩阵、参数向量矩阵以及其他相关的梯度计算算法,可以计算出各参数向量的梯度。
S860.根据所述梯度更新所述压缩特征集合中每个元素对应的参数向量。
对于参数向量的更新,首先根据每个编码标识对应的参数向量的梯度,更新相应编码标识对应的参数向量;然后根据所述特征标识与所述编码标识的对应关系,将更新之后的参数向量同步给所述编码标识对应的特征标识。
对于上述的参数训练方法,可看成是模型训练过程中的一次参数更新过程,通过本实施例上述的方法,可对预设的深度学习模型进行有监督训练,从而得到应用于信息推荐场景的推荐模型。
在模型训练过程中,以用户特征和用户点击标签为模型输入,其中,用户特征可以包括用户的各种属性特征,例如年龄、性别、学历、地域、爱好、历史信息等,用户点击标签为用户是否点击了某条信息,并假设已点击为标签1,未点击为标签0。
对于上述输入的信息通过预设的深度学习模型计算出该用户点击该条信息的概率,并通过模型内部的梯度计算不断更新模型内部参数,从而使得模型输出的概率值趋近于输入的标签。
在训练的过程中根据样本数据对embedding向量进行修改,最终得到效果较好的embedding向量,所有的embedding向量就是模型的一部分,在线上使用模型的时候,用户过来的时候会组装出该用户所有的特征,然后根据特征从模型去的对应的embedding向量,再进行计算。
在模型训练过程中,本实施例上述的稀疏矩阵压缩方法主要用于梯度计算的过程中,通过稀疏矩阵压缩方法,就可以将一个极度稀疏的矩阵变成一个相对稠密的矩阵,矩阵的列维度可以从千亿级别降到十万级别,同时拉取对应的权重,然后进行矩阵计算。假设批训练样本为1000个,压缩前,样本矩阵为1000*千亿,权重向量为千亿,计算梯度的时候需要1000*千亿的矩阵和千亿的向量相乘,需要消耗极大的内存,内存占用达到74GB,占用如此大的内存资源,导致无法正常训练模型;压缩后,矩阵为1000*10万,权重向量为10万,内存仅需要3MB,耗时仅需要15ms,极大地降低了内存和耗时。计算完成后可以得到每个权重的梯度,通过这些梯度完成权重的更新,这样就可以高效地完成模型的训练了。在超大规模的机器学习框架中,高效计算显得尤为重要,可以快速处理海量的样本和大规模的模型;并且对于推荐feeds流和搜索直达等时效性非常强的业务,采用本发明实施例提供的方法可以快速的训练新模型,为用户筛选出最想看的信息。
具体地,可通过以下表格来说明本发明的有益效果:
(1)通过对稀疏特征的重新编码,减小了向量化时的特征空间,减小了需要开辟的内存空间。采用Eigen Sparse Matrix和本发明实施例提供的方法在特征向量化时需要开辟内存空间大小的比较结果如下:
表3占用内存空间比较结果
Eigen Sparse Matrix | 74GB |
本方法 | 3MB |
(2)开辟大块内存的耗时远大于开辟小块内存耗时,本发明实施例提供的方法由于只需要开辟小块内存,间接的加速了整个计算过程。采用Eigen Sparse Matrix和本发明实施例提供的方法为批量用户向量化开辟内存空间所需的耗时对比如下:
表4开辟内存的耗时比较结果
Eigen Sparse Matrix+单线程 | 150ms |
Eigen Sparse Matrix+多线程 | 40ms |
本稀疏矩阵优化方法 | 15ms |
本发明实施例提供的方法适用于算法库中多种推荐模型(DNN,DSSM,WD等),是一种end-to-end的优化方案,用户不需要了解如何实现和如何使用,框架本身会对此类场景提供优化,优化计算过程,加速计算速度。在业务应用效果上,将上述方法应用于资讯推荐场景上,整体曝光效率相对有很大提升,主feed曝光效率相对也有很大提升。
请参见图10,其示出了一种分布式机器学习设计框架,本发明实施例的上述方法均可基于该框架进行实现,主要由两种逻辑节点组成:server服务节点负责存储和优化整个计算集群的参数;worker工作节点每次向server节点拉取最新的参数,利用数据和参数计算相对应的梯度。Server与worker的通信拓扑结构为星形。
对该框架中的相关角色做以下解释:
Scheduler:负责任务节点的管理,与般若资源管理器进行交互,拉起Server和Worker,同时对Server和Worker进行任务分发、心跳监控、故障恢复。
Server:负责模型参数分片的存储和模型参数的更新,以及模型参数更新的一致性协议控制,模型参数的导入和导出。
Worker:负责远程训练样本数据的读取,模型参数的拉取,样本数据的梯度计算,以及梯度的推送。
采用该框架进行模型训练时,主要包括以下过程:
Read:读取数据,将数据从分布式文件系统HDFS上拉取到本地;
Pull:worker读取到样本数据后,到server端拉取对应的权重;
Compute:worker拿到的样本数据和对应的模型权重,计算梯度,本发明的稀疏矩阵压缩方法主要作用于worker节点上,在梯度计算上发挥了非常重要的作用。
Push:worker计算完梯度后推送梯度到server端。
Update:server拿到worker推送过来的梯度后,再调用优化器对模型权重进行更新。
以上5步是一个完整的训练过程,在训练完成后,server会将模型导出到指定机器,然后上线进行模型预测。在用户过来后,通过模型对资讯文章进行打分,得到用户最想看的文章。
本实施例还提供了一种稀疏矩阵压缩装置,请参见图11,所述装置包括:
原始特征集合构建模块1110,用于构建原始特征集合。
稀疏特征集合构建模块1120,用于获取用户的样本数据,根据所述用户的样本数据从所述原始特征集合中确定用户的稀疏特征集合。
压缩编码模块1130,用于对所述稀疏特征集合中的元素进行压缩编码,得到压缩特征集合,建立所述稀疏特征集合中的元素与所述压缩特征集合中的元素的一一对应关系。
压缩矩阵构建模块1140,用于根据所述用户的样本数据、所述稀疏特征集合、所述压缩特征集合,以及所述对应关系,构建用户特征压缩矩阵。
请参见图12,所述压缩编码模块1130包括:
连续编码模块1210,用于获取所述稀疏特征集合中每个元素的所述特征标识,对非连续的所述特征标识进行连续编码,得到与每个所述特征标识相对应的编码标识。具体地,可用于确定连续编码的初始编码值,从所述初始编码值开始递增进行连续编码,得到编码标识,其中所述编码标识的个数为所述稀疏特征集合中元素的个数;为每个所述特征标识分配一个编码标识,生成所述标识与所述编码标识的索引表。
存储模块1220,用于存储所述特征标识与所述编码标识的一一对应关系。
请参见图13,所述稀疏特征集合构建模块1120包括:
特征匹配模块1310,用于对所述用户的样本数据进行处理,将处理后的结果与所述原始特征集合中的元素进行匹配,得到用户样本特征集合;其中,所述用户样本特征集合包括多个用户的样本特征,所述样本特征集合中的每个元素均包括特征标识;
特征去重模块1320,用于根据所述特征标识,对所述用户样本特征集合中的元素进行去重,得到所述稀疏特征集合。
请参见图14,所述压缩矩阵构建模块1140包括:
初始特征矩阵构建模块1410,用于以所述用户的样本数据中的用户数量为行数、以所述编码标识的个数为列数,构建初始特征矩阵;其中,所述初始特征矩阵的每一列对应一个编码标识。
特征信息存入模块1420,用于根据每一列的编码标识获取用户的特征信息,将所述用户的特征信息存入所述初始特征矩阵,生成所述用户特征压缩矩阵。
请参见图15,所述特征信息存入模块1420包括:
索引模块1510,用于对于每个用户,根据所述索引表,确定所述初始特征矩阵中每一列的编码标识对应的特征标识;
特征信息获取模块1520,用于根据所述特征标识从所述用户样本特征集合中获取用户的特征信息,将所述用户的特征信息存入所述初始特征矩阵中。
上述实施例中提供的装置可执行本发明任意实施例所提供方法,具备执行该方法相应的功能模块和有益效果。未在上述实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的方法。
本实施例还提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行如本实施例上述的任一方法。
本实施例还提供了一种设备,如图16所示,该设备1600可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,CPU)1622(例如,一个或一个以上处理器)和存储器1632,一个或一个以上存储应用程序1642或数据1644的存储介质1630(例如一个或一个以上海量存储设备)。其中,存储器1632和存储介质1630可以是短暂存储或持久存储。存储在存储介质1630的程序可以包括一个或一个以上模块(图示未示出),每个模块可以包括对设备中的一系列指令操作。更进一步地,中央处理器1622可以设置为与存储介质1630通信,在设备1600上执行存储介质1630中的一系列指令操作。设备1600还可以包括一个或一个以上电源1626,一个或一个以上有线或无线网络接口1650,一个或一个以上输入输出接口1658,和/或,一个或一个以上操作系统1641,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。本实施例上述的任一方法均可基于图16所示的设备进行实施。
本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤和顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或中断产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
本实施例中所示出的结构,仅仅是与本申请方案相关的部分结构,并不构成对本申请方案所应用于其上的设备的限定,具体的设备可以包括比示出的更多或更少的部件,或者组合某些部件,或者具有不同的部件的布置。应当理解到,本实施例中所揭露的方法、装置等,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分仅仅为一种逻辑功能的划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元模块的间接耦合或通信连接。
基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员还可以进一步意识到,结合本说明书所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但这种实现不应认为超出本发明的范围。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种稀疏矩阵压缩方法,其特征在于,包括:
构建原始特征集合;
获取用户的样本数据,根据所述用户的样本数据从所述原始特征集合中确定用户的稀疏特征集合;其中,所述稀疏特征集合是根据所述原始特征集合中的部分特征得到的;
对所述稀疏特征集合中的元素进行压缩编码,得到压缩特征集合,建立所述稀疏特征集合中的元素与所述压缩特征集合中的元素的一一对应关系;
根据所述用户的样本数据、所述稀疏特征集合、所述压缩特征集合,以及所述对应关系,构建用户特征压缩矩阵。
2.根据权利要求1所述的一种稀疏矩阵压缩方法,其特征在于,所述获取用户的样本数据,根据所述用户的样本数据从所述原始特征集合中确定用户的稀疏特征集合包括:
对所述用户的样本数据进行处理,将处理后的结果与所述原始特征集合中的元素进行匹配,得到用户样本特征集合;其中,所述用户样本特征集合包括多个用户的样本特征,所述样本特征集合中的每个元素均包括特征标识;
根据所述特征标识,对所述用户样本特征集合中的元素进行去重,得到所述稀疏特征集合。
3.根据权利要求2所述的一种稀疏矩阵压缩方法,其特征在于,所述对所述稀疏特征集合中的每个元素进行压缩编码,得到压缩特征集合,建立所述稀疏特征集合中的元素与所述压缩特征集合中的元素的一一对应关系包括:
获取所述稀疏特征集合中每个元素的所述特征标识,对非连续的所述特征标识进行连续编码,得到与每个所述特征标识相对应的编码标识;
存储所述特征标识与所述编码标识的一一对应关系。
4.根据权利要求3所述的一种稀疏矩阵压缩方法,其特征在于,所述对非连续的所述特征标识进行连续编码,得到与每个所述特征标识相对应的编码标识包括:
确定连续编码的初始编码值,从所述初始编码值开始递增进行连续编码,得到编码标识,其中所述编码标识的个数为所述稀疏特征集合中元素的个数;
为每个所述特征标识分配一个编码标识,生成所述标识与所述编码标识的索引表。
5.根据权利要求4所述的一种稀疏矩阵压缩方法,其特征在于,每个特征标识均对应一项特征信息,所述根据所述用户的样本数据、所述稀疏特征集合、所述压缩特征集合,以及所述对应关系,构建用户特征压缩矩阵包括:
以所述用户的样本数据中的用户数量为行数、以所述编码标识的个数为列数,构建初始特征矩阵;其中,所述初始特征矩阵的每一列对应一个编码标识;
根据每一列的编码标识获取用户的特征信息,将所述用户的特征信息存入所述初始特征矩阵,生成所述用户特征压缩矩阵。
6.根据权利要求5所述的一种稀疏矩阵压缩方法,其特征在于,根据每一列的编码标识获取用户的特征信息,将所述用户的特征信息存入所述初始特征矩阵包括:
对于每个用户,根据所述索引表,确定所述初始特征矩阵中每一列的编码标识对应的特征标识;
根据所述特征标识从所述用户样本特征集合中获取用户的特征信息,将所述用户的特征信息存入所述初始特征矩阵中。
7.一种稀疏矩阵压缩装置,其特征在于,包括:
原始特征集合构建模块,用于构建原始特征集合;
稀疏特征集合构建模块,用于获取用户的样本数据,根据所述用户的样本数据从所述原始特征集合中确定用户的稀疏特征集合;其中,所述稀疏特征集合是根据所述原始特征集合中的部分特征得到的;
压缩编码模块,用于对所述稀疏特征集合中的元素进行压缩编码,得到压缩特征集合,建立所述稀疏特征集合中的元素与所述压缩特征集合中的元素的一一对应关系;
压缩矩阵构建模块,用于根据所述用户的样本数据、所述稀疏特征集合、所述压缩特征集合,以及所述对应关系,构建用户特征压缩矩阵。
8.根据权利要求7所述的一种稀疏矩阵压缩装置,其特征在于,所述稀疏特征集合中的每个元素均包括特征标识,所述压缩编码模块包括:
连续编码模块,用于获取所述稀疏特征集合中每个元素的所述特征标识,对非连续的所述特征标识进行连续编码,得到与每个所述特征标识相对应的编码标识;
存储模块,用于存储所述特征标识与所述编码标识的一一对应关系。
9.一种设备,其特征在于,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1至6任一项所述的稀疏矩阵压缩方法。
10.一种计算机存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行如权利要求1至6任一项所述的稀疏矩阵压缩方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910520951.4A CN110334067B (zh) | 2019-06-17 | 2019-06-17 | 一种稀疏矩阵压缩方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910520951.4A CN110334067B (zh) | 2019-06-17 | 2019-06-17 | 一种稀疏矩阵压缩方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110334067A true CN110334067A (zh) | 2019-10-15 |
CN110334067B CN110334067B (zh) | 2023-12-12 |
Family
ID=68142033
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910520951.4A Active CN110334067B (zh) | 2019-06-17 | 2019-06-17 | 一种稀疏矩阵压缩方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110334067B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111538464A (zh) * | 2020-05-10 | 2020-08-14 | 智博云信息科技(广州)有限公司 | 一种基于物联网平台的数据清理方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103336758A (zh) * | 2013-06-29 | 2013-10-02 | 中国科学院软件研究所 | 一种稀疏矩阵的存储方法CSRL及基于该方法的SpMV实现方法 |
CN105593843A (zh) * | 2013-08-30 | 2016-05-18 | 微软技术许可有限责任公司 | 稀疏矩阵数据结构 |
US20190004998A1 (en) * | 2017-06-30 | 2019-01-03 | Seagate Technology Llc | Sparse matrix representation |
-
2019
- 2019-06-17 CN CN201910520951.4A patent/CN110334067B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103336758A (zh) * | 2013-06-29 | 2013-10-02 | 中国科学院软件研究所 | 一种稀疏矩阵的存储方法CSRL及基于该方法的SpMV实现方法 |
CN105593843A (zh) * | 2013-08-30 | 2016-05-18 | 微软技术许可有限责任公司 | 稀疏矩阵数据结构 |
US20190004998A1 (en) * | 2017-06-30 | 2019-01-03 | Seagate Technology Llc | Sparse matrix representation |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111538464A (zh) * | 2020-05-10 | 2020-08-14 | 智博云信息科技(广州)有限公司 | 一种基于物联网平台的数据清理方法及装置 |
CN111538464B (zh) * | 2020-05-10 | 2021-05-07 | 浙江智飨科技有限公司 | 一种基于物联网平台的数据清理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110334067B (zh) | 2023-12-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107832406B (zh) | 海量日志数据的去重入库方法、装置、设备及存储介质 | |
CN112800095B (zh) | 一种数据处理方法、装置、设备及存储介质 | |
US20230033019A1 (en) | Data processing method and apparatus, computerreadable medium, and electronic device | |
CN108288208A (zh) | 基于图像内容的展示对象确定方法、装置、介质及设备 | |
CN112528067A (zh) | 图数据库的存储方法、读取方法、装置及设备 | |
CN114327857A (zh) | 操作数据处理方法、装置、计算机设备和存储介质 | |
CN106599122B (zh) | 一种基于垂直分解的并行频繁闭序列挖掘方法 | |
CN111667018B (zh) | 一种对象聚类的方法、装置、计算机可读介质及电子设备 | |
CN110334067A (zh) | 一种稀疏矩阵压缩方法、装置、设备及存储介质 | |
WO2015102514A1 (en) | Systems and methods for providing music recommendations | |
CN111723089A (zh) | 一种基于列式存储格式处理数据的方法和装置 | |
CN113407702B (zh) | 员工合作关系强度量化方法、系统、计算机和存储介质 | |
US20210357955A1 (en) | User search category predictor | |
CA3153550A1 (en) | Core recommendation method, device and system | |
CN107168944A (zh) | 一种lda并行优化方法 | |
CN114357180A (zh) | 知识图谱的更新方法及电子设备 | |
CN113918577A (zh) | 数据表识别方法、装置、电子设备及存储介质 | |
CN109299112B (zh) | 用于处理数据的方法和装置 | |
CN105279157B (zh) | 一种正则查询的方法和装置 | |
CN110309367B (zh) | 信息分类的方法、信息处理的方法和装置 | |
CN113392124B (zh) | 一种基于结构化语言的数据查询方法及装置 | |
CN110851438A (zh) | 一种数据库索引优化建议与验证的方法和装置 | |
CN110879853A (zh) | 信息向量化方法与计算机可读存储介质 | |
CN114817315B (zh) | 数据处理方法以及系统 | |
Narula et al. | Comparison of Apriori and Parallel FP Growth over Single-node and Multi-node Hadoop Cluster |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |