首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何减少密集矩阵分解任务的列车误差?

如何减少密集矩阵分解任务的列车误差?
EN

Stack Overflow用户
提问于 2017-09-06 16:22:21
回答 1查看 31关注 0票数 0

这个问题可能与正规矩阵分解任务有很大不同,后者在推荐系统中得到了广泛的应用。

我的问题描述如下:

给出稠密矩阵M

(约55000*200,可能含有许多负面元素,0.1< abs(Mi) <1 )

我必须找到两个矩阵A(55000*1400)和B(1400*200),这样:

AB=M

但是,我们有一些关于A的知识,我们有另一个矩阵C,如果Ci = 0,则Ai 必须是零,否则它可以是任意值(Ci= 1)。

在我的实践中,我使用机器学习来解决这个问题,我的损失函数是:

(A*C)(元素乘积)x B-M区(2)(L2范数)

我尝试过adagrad、动量、adadelta和其他一些优化方法,但是火车的误差很大,而且减小得很慢(learning_rate = 0.1)。

UP1:嗯,实际上我有一台32 got内存的机器,每一次只需要2分钟。当C中的对应元素被解析为1时,才在M中分解一个元素。实际上,我只在Ci =1时分解Mi,在分解Mi之后,求解Mi的梯度以更新Ai :和B:J。所以,我使用的批处理太小了--只包含一个元素。另外,我必须指出,C是一个非常稀疏的矩阵。对于C中的每一行,只有2-3个元素以1的形式出现。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-20 16:03:17

经过近半个月的努力,我终于得到了答案:我应该更快地更新矩阵A,比如说,以更小的步骤更新参数。我最初每次只更新A中的每个元素一次,远远少于B。然而,在我更改代码使A以与B相同的速度更新之后,意外发生了:它运行得很好!

也许更小的步骤会帮助SGD更好地工作?我不太相信数学上的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46080123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档