CN111125620A - 推荐系统中基于矩阵分解的并行随机梯度下降算法 - Google Patents
推荐系统中基于矩阵分解的并行随机梯度下降算法 Download PDFInfo
- Publication number
- CN111125620A CN111125620A CN201911061727.XA CN201911061727A CN111125620A CN 111125620 A CN111125620 A CN 111125620A CN 201911061727 A CN201911061727 A CN 201911061727A CN 111125620 A CN111125620 A CN 111125620A
- Authority
- CN
- China
- Prior art keywords
- parameter vector
- data
- parallel
- user
- updating
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明属于推荐技术领域,具体为推荐系统中基于矩阵分解的并行随机梯度下降算法。本发明根据用户历史评分数据对未评分数据进行预测,采用混合交替更新的方式使其在高度并行的情况下依然保持良好的准确性;通过递归地将评分矩阵分成2×2的子矩阵,先并行处理左上角和右下角子矩阵,再并行处理右上角和左下角的子矩阵,避免了训练数据导致的参数向量依赖问题;在更新过程中固定一个参数向量求解另一个参数向量,解除了计算时的参数向量之间的依赖关系,降低了并行造成的精度损失。本发明通过引入混合交替更新的方式,解决了并行随机梯度下降算法在矩阵分解场景下参数向量更新时依赖的问题,并具有良好的准确性和扩展性。
Description
技术领域
本发明属于推荐技术领域,具体涉及推荐系统中基于矩阵分解的并行随机梯度下降算法。
背景技术
随机梯度下降算法是求解机器学习模型时常用的优化算法。随机梯度下降算法在更新过程中的序列依赖问题使得该算法的并行化变得困难。矩阵分解是网络推荐系统中的一种评分预测方法,该方法将用户对物品的评分数据构造成评分矩阵,评分矩阵的行数与用户数目相等,评分矩阵的列数与物品数目相等。评分矩阵被拆分成用户参数向量和物品参数向量,用户参数向量P的行数与评分矩阵的行数相等,物品参数向量Q的列数与评分矩阵的列数相等,用户参数向量P的列数与物品参数向量Q的行数相等。通过将训练后的用户参数向量与物品参数向量相乘,使评分矩阵的缺失值得到补全。在处理矩阵分解任务时,由于用户参数向量与物品参数向量之间存在依赖关系,并行随机梯度下降算法在并行度增大时,准确性的损失也相应增大。
解决用户参数向量与物品参数向量在更新过程中的依赖关系,是提升并行随机梯度下降算法扩展性的重要因素。FPSGD算法是一种经典的并行随机梯度下降算法,该算法将评分矩阵分成T×T的数据块,T的取值大于分配的线程数目,在算法开始时每个线程处理对角线上的数据块,当有线程完成了更新任务时,通过调度器为该线程分配与正在处理的数据块行列无依赖的数据块,以此避免用户参数向量与物品参数向量的依赖。FPSGD算法是并行随机梯度下降算法中的杰出算法,但由于FPSGD算法在为数据块标记状态时需要使用全局锁,因此当数据块的数量增多时,FPSGD算法的性能将大大降低,FPSGD算法的扩展性较低。HOGWILD!算法是最先提出采用无锁方式更新的并行随机梯度下降算法,更新过程中每个线程同时处理分配到的数据,避免了全局锁带来的限制。但HOGWILD!算法没有考虑用户参数向量和物品参数向量之间的依赖问题,导致并行度的增大会降低准确性。
因此,需要一种可扩展的并行随机梯度下降算法,在不损失准确性的前提下解决参数更新的依赖问题。
发明内容
本发明的目的在于提供一种能够不依赖于用户参数向量和物品参数向量,并能依然保持良好的准确性和收敛性的推荐系统中基于矩阵分解的并行随机梯度下降算法。
本发明提供的推荐系统中基于矩阵分解的并行随机梯度下降算法,采用混合交替更新的方式,解决了更新过程中用户参数向量和物品参数向量的依赖问题,并使得在高并行度的场景下依然保持良好的准确性和收敛性;同时根据用户历史评分数据对用户未评分数据进行预测,具体步骤包括:
(1)交替更新行列不冲突的数据块
步骤一,首先将评分数据划分为训练集和测试集,训练集用于训练模型,测试集用于评估模型的性能;
步骤二,训练集数据用于构造评分矩阵,评分矩阵包含A×B个数据块,每个数据块将由一个并行单元进行模型训练;
步骤三,用随机数初始化用户参数向量P和物品参数向量Q,用户参数向量P的行数与评分矩阵的行数相等,物品参数向量Q的列数与评分矩阵的列数相等,用户参数向量P的列数与物品参数向量Q的行数相等;
步骤四,进行并行迭代计算
在每轮迭代中,将评分矩阵递归地划分为2×2的子矩阵,每个子矩阵包含若干数据块;子矩阵交给并行单元处理,先并行地处理左上角和右下角的子矩阵,完成后再并行地处理右上角和左下角的子矩阵,直至子矩阵的大小缩小到一个数据块;将数据块分配给并行单元处理,每个并行单元处理的数据块所在行列都不依赖。这种数据块分配策略解决了训练数据导致的用户参数向量与物品参数向量依赖问题,提供了一种无锁的调度方案。
(2)交替更新用户参数向量和物品参数向量
在每轮迭代中,多个并行单元进行并行计算;当评分矩阵递归到一个数据块单元时,由并行单元使用该数据块对用户参数向量P和物品参数向量Q进行独立更新。
在更新参数向量时,将用户参数向量P和物品参数向量Q独立更新,具体步骤为:
步骤1,固定物品参数向量Q,更新用户参数向量P:
Puk=Puk+η*((Rui-Pu TQi)Qik-λPuk)
步骤2,固定用户参数向量P,更新物品参数向量Q:
Qik=Qik+η*((Rui-Pu TQi)Puk-λQik)
其中,Pu为第u行参数向量P,Qi为第i行参数向量Q,Puk为参数向量P在第u行第k列的值,Qik为参数向量在第i行第k列的值,η为学习率,λ为正则化系数,Rui表示用户u对物品i的真实评分。η、λ均为超参数,对于不同数据集调整η、λ,使均方根误差RMSE尽量小。
(3)在每轮迭代完成后,计算训练误差和测试误差。由更新后的用户参数向量P和物品参数向量Q相乘得到预测评分数据,预测评分数据与训练集数据之间的误差为训练误差,预测评分数据与测试集数据之间的误差为测试误差。使用均方根误差RMSE计算训练误差和测试误差,均方根误差RMSE定义如下:
本发明根据用户历史评分数据对用户未评分数据进行预测,采用混合交替更新的方式使其在高度并行的情况下依然保持良好的准确性;通过递归地将评分矩阵分成2×2的子矩阵,先并行处理左上角和右下角子矩阵,再并行处理右上角和左下角的子矩阵,避免了训练数据导致的参数向量依赖问题;计算过程借鉴交替最小二乘算法思想,在更新过程中固定一个参数向量求解另一个参数向量,解除了并行随机梯度下降算法求解矩阵分解问题时的参数向量之间的依赖关系,降低了并行造成的精度损失。本发明通过引入混合交替更新的方式,解决了并行随机梯度下降算法在矩阵分解场景下参数向量更新时依赖的问题,并具有良好的准确性和扩展性。
附图说明
图1为本发明与HogWild!算法的准确性对比图。
图2为本发明与HogWild!算法的扩展性对比图。
图3为本发明的算法详细流程图示。
图4为用户参数向量P和物品参数向量Q独立更新图示。
具体实施方式
下面结合附图和实施例对本发明技术方案做进一步说明。
本发明提供的推荐系统中基于矩阵分解的并行随机梯度下降算法,其流程如图3所示,具体步骤如下:
(1)首先将评分数据划分为训练集和测试集,训练集用于训练模型,测试集用于评估模型的性能;
(2)训练集数据用于构造评分矩阵,评分矩阵包含A×B个数据块,每个数据块将由一个并行单元进行模型训练;
(3)用随机数初始化用户参数向量P和物品参数向量Q,用户参数向量P的行数与评分矩阵的行数相等,物品参数向量Q的列数与评分矩阵的列数相等,用户参数向量P的列数与物品参数向量Q的行数相等;
(4)进行并行迭代计算
在每轮迭代中,将评分矩阵递归地划分为2×2的子矩阵,每个子矩阵包含若干数据块;先并行地处理左上角和右下角的子矩阵,完成后再并行地处理右上角和左下角的子矩阵,直至子矩阵的大小缩小到一个数据块;将数据块分配给并行单元处理,每个并行单元处理的数据块所在行列都不依赖。这种数据块分配策略解决了训练数据导致的用户参数向量与物品参数向量依赖问题,提供了一种无锁的调度方案。
并行单元处理一个数据块时,使用该数据块对用户参数向量P和物品参数向量Q进行独立更新。如图4所示,在更新参数向量过程中,用户参数向量P和物品参数向量Q的更新相互独立,解除了计算过程中用户参数向量与物品参数向量之间的依赖,更新的具体步骤为:
步骤一,固定物品参数向量Q,更新用户参数向量P:
Puk=Puk+η*((Rui-Pu TQi)Qik-λPuk)
步骤二,固定用户参数向量P,更新物品参数向量Q:
Qik=Qik+η*((Rui-Pu TQi)Puk-λQik)
其中,Pu为第u行参数向量P,Qi为第i行参数向量Q,Puk为参数向量P在第u行第k列的值,Qik为参数向量在第i行第k列的值,η为学习率,λ为正则化系数,Rui表示用户u对物品i的真实评分。η、λ均为超参数,对于不同数据集调整η、λ,使均方根误差RMSE尽量小。
在每轮迭代完成后,计算训练误差和测试误差。由更新后的用户参数向量P和物品参数向量Q相乘得到预测评分数据,预测评分数据与训练集数据之间的误差为训练误差,预测评分数据与测试集数据之间的误差为测试误差。使用均方根误差RMSE计算训练误差和测试误差,均方根误差RMSE定义如下:
使用MovieLens 1M数据集,将本发明提出的ALSPSGD并行随机梯度下降算法与论文“HOGWILD!:A Lock-Free Approach to Parallelizing Stochastic GradientDescent”提出的HOGWILD!算法进行准确性和扩展性方面的比较。实验使用的测试误差是均方根误差,均方根误差越小,说明算法的准确性越好。实验使用线程来改变并行度,随线程数目增加,测试均方根误差增幅越小,说明算法的扩展性越好。
图1为准确性对比,横坐标是训练时间,以秒为单位,纵坐标是测试误差。如图所示,随训练时间的变化,ALSPSGD算法比HOGWILD!算法收敛速度更快,且最终的测试误差更小。说明本发明提出的并行随机梯度下降算法ALSPSGD具有更好的准确性和收敛性。
图2为扩展性对比,横坐标为线程数目,纵坐标为测试误差。从实验结果可得,HOGWILD!算法随线程数增多,测试误差呈上升趋势,而ALSPSGD算法在并行度增大的情况下测试误差保持稳定。说明本发明提出的并行随机梯度下降算法ALSPSGD具有良好的扩展性。
Claims (2)
1.一种推荐系统中基于矩阵分解的并行随机梯度下降算法,其特征在于,采用混合交替更新的方式,解决了更新过程中用户参数向量和物品参数向量的依赖问题,并使得在高并行度的场景下依然保持良好的准确性和收敛性;同时根据用户历史评分数据对用户未评分数据进行预测,具体步骤包括:
(1)交替更新行列不冲突的数据块
步骤一,首先将评分数据划分为训练集和测试集,训练集用于训练模型,测试集用于评估模型的性能;
步骤二,训练集数据用于构造评分矩阵,评分矩阵包含A×B个数据块,每个数据块将由一个并行单元进行模型训练;
步骤三,用随机数初始化用户参数向量P和物品参数向量Q,用户参数向量P的行数与评分矩阵的行数相等,物品参数向量Q的列数与评分矩阵的列数相等,用户参数向量P的列数与物品参数向量Q的行数相等;
步骤四,进行并行迭代计算
在每轮迭代中,将评分矩阵递归地划分为2×2的子矩阵,每个子矩阵包含若干数据块;子矩阵交给并行单元处理,先并行地处理左上角和右下角的子矩阵,完成后再并行地处理右上角和左下角的子矩阵,直至子矩阵的大小缩小到一个数据块;
(2)交替更新用户参数向量和物品参数向量
在每轮迭代中,多个并行单元进行并行计算;当评分矩阵递归到一个数据块单元时,由并行单元使用该数据块对用户参数向量P和物品参数向量Q进行独立更新;
(3)在每轮迭代完成后,计算训练误差和测试误差
其中,训练误差为预测评分数据与训练集数据之间的误差,测试误差为预测评分数据与测试集数据之间的误差;预测评分数据由更新后的用户参数向量P和物品参数向量Q相乘得到;使用均方根误差RMSE计算训练误差和测试误差,均方根误差RMSE定义如下:
2.根据权利要求1所述并行随机梯度下降算法,其特征在于,步骤(2)中所述对用户参数向量P和物品参数向量Q进行独立更新,具体步骤为:
步骤1,固定物品参数向量Q,更新用户参数向量P:
Puk=Puk+η*((Rui-Pu TQi)Qik-λPuk)
步骤2,固定用户参数向量P,更新物品参数向量Q:
Qik=Qik+η*((Rui-Pu TQi)Puk-λQik)
其中,Pu为第u行参数向量P,Qi为第i行参数向量Q,Puk为参数向量P在第u行第k列的值,Qik为参数向量在第i行第k列的值,η为学习率,λ为正则化系数,Rui表示用户u对物品i的真实评分。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911061727.XA CN111125620B (zh) | 2019-11-01 | 2019-11-01 | 推荐系统中基于矩阵分解的并行随机梯度下降方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911061727.XA CN111125620B (zh) | 2019-11-01 | 2019-11-01 | 推荐系统中基于矩阵分解的并行随机梯度下降方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111125620A true CN111125620A (zh) | 2020-05-08 |
CN111125620B CN111125620B (zh) | 2023-04-07 |
Family
ID=70496116
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911061727.XA Active CN111125620B (zh) | 2019-11-01 | 2019-11-01 | 推荐系统中基于矩阵分解的并行随机梯度下降方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111125620B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112507225A (zh) * | 2020-12-11 | 2021-03-16 | 南京大学 | 一种基于双层优化的推荐系统数据调试方法 |
CN116166890A (zh) * | 2023-04-25 | 2023-05-26 | 中国科学技术大学 | 基于浅层自动编码器模型的推荐方法、系统、设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105975440A (zh) * | 2016-05-05 | 2016-09-28 | 浙江理工大学 | 一种基于图计算模型的矩阵分解并行化方法 |
US20160284003A1 (en) * | 2015-03-26 | 2016-09-29 | Xerox Corporation | Time-sensitive collaborative filtering through adaptive matrix completion |
CN108139887A (zh) * | 2015-10-22 | 2018-06-08 | 国际商业机器公司 | 跨硬件加速器并行化矩阵分解 |
CN108280217A (zh) * | 2018-02-06 | 2018-07-13 | 南京理工大学 | 一种基于差分隐私保护的矩阵分解推荐方法 |
-
2019
- 2019-11-01 CN CN201911061727.XA patent/CN111125620B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160284003A1 (en) * | 2015-03-26 | 2016-09-29 | Xerox Corporation | Time-sensitive collaborative filtering through adaptive matrix completion |
CN108139887A (zh) * | 2015-10-22 | 2018-06-08 | 国际商业机器公司 | 跨硬件加速器并行化矩阵分解 |
CN105975440A (zh) * | 2016-05-05 | 2016-09-28 | 浙江理工大学 | 一种基于图计算模型的矩阵分解并行化方法 |
CN108280217A (zh) * | 2018-02-06 | 2018-07-13 | 南京理工大学 | 一种基于差分隐私保护的矩阵分解推荐方法 |
Non-Patent Citations (1)
Title |
---|
王振军;黄瑞章;: "基于Spark的矩阵分解与最近邻融合的推荐算法" * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112507225A (zh) * | 2020-12-11 | 2021-03-16 | 南京大学 | 一种基于双层优化的推荐系统数据调试方法 |
CN112507225B (zh) * | 2020-12-11 | 2021-09-28 | 南京大学 | 一种基于双层优化的推荐系统数据调试方法 |
CN116166890A (zh) * | 2023-04-25 | 2023-05-26 | 中国科学技术大学 | 基于浅层自动编码器模型的推荐方法、系统、设备及介质 |
CN116166890B (zh) * | 2023-04-25 | 2023-07-18 | 中国科学技术大学 | 基于浅层自动编码器模型的推荐方法、系统、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111125620B (zh) | 2023-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110533183B (zh) | 流水线分布式深度学习中异构网络感知的任务放置方法 | |
Çatalyürek et al. | On two-dimensional sparse matrix partitioning: Models, methods, and a recipe | |
Naumov et al. | Parallel graph coloring with applications to the incomplete-lu factorization on the gpu | |
CN111027732B (zh) | 一种多风电场出力场景的生成方法及系统 | |
Zeng et al. | A GA-based feature selection and parameter optimization for support tucker machine | |
CN111125620B (zh) | 推荐系统中基于矩阵分解的并行随机梯度下降方法 | |
CN113850385B (zh) | 一种粗细粒度联合的神经网络剪枝方法 | |
CN103399841A (zh) | 基于gpu的稀疏矩阵lu分解方法 | |
Calgaro et al. | Incremental incomplete LU factorizations with applications | |
CN105929690A (zh) | 一种基于分解多目标进化算法的柔性车间鲁棒调度方法 | |
CN113344174A (zh) | 基于概率分布的高效神经网络结构搜索方法 | |
CN112016253A (zh) | 一种适用于cfd不确定度量化的高保真度混沌多项式修正方法 | |
CN106845519A (zh) | 一种分布式实现的稀疏子空间聚类方法 | |
CN107590538B (zh) | 一种基于在线序列学习机的危险源识别方法 | |
CN111401413A (zh) | 一种基于优化理论的带规模约束的并行聚类方法 | |
CN104915566A (zh) | 一种支持增量更新的深度计算模型设计方法 | |
CN110704023B (zh) | 一种基于拓扑排序的矩阵分块划分方法及装置 | |
Osawa et al. | PipeFisher: Efficient training of large language models using pipelining and Fisher information matrices | |
Liu et al. | pGRASS-Solver: a parallel iterative solver for scalable power grid analysis based on graph spectral sparsification | |
CN115358485A (zh) | 一种基于图自注意力机制与霍克斯过程的交通流预测方法 | |
Acer et al. | SPHYNX: Spectral Partitioning for HYbrid aNd aXelerator-enabled systems | |
CN108879691B (zh) | 一种大规模连续潮流计算的方法及装置 | |
CN112651488A (zh) | 一种改善大型图卷积神经网络的训练效率的方法 | |
CN109074348A (zh) | 用于对输入数据集进行迭代聚类的设备和迭代方法 | |
Zhao | Expand and Contract: Sampling graphs with given degrees and other combinatorial families |
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 |