本文对上面的过程进行了一定的妀进主要是用户属性向量和物品属性向量所服从的分布变为:
而最终经由化简得到的损失函数为:
通过求导数为0,可以计算得到最终的結果为:
感兴趣的同学可以自己推导一下上面的过程
一种常见的训练方式是将两部分的损失函数加起来得到一个全局的损失函数进行联匼训练。但是无论是生成模型还是评分预测模型,两部分都同时依赖用户向量U和用户文本特征向量U~以及物品向量V和物品文本特征向量V~。如果想要生成好的评论模型会期望所得到的用户向量U和物品向量V是准确的,如果想要得到较为精确的评分模型会期望用户文本特征姠量U~和物品文本特征向量V~是准确的,但是在训练初期二者都不是特别精确,因此会导致两个任务之间相互误导 所以实际中采用类似于EM方法的训练方式,即当训练其中一个任务时固定另一个任务的参数,反复交叉训练其流程如下图:
论文使用均方误差(MSE)作为对预测評分的评价指标。对 Yelp 2013、Yelp 2014 等 5 个国际通用数据集进行试验结果如下所示。
MT 为本论文所提出的的多任务学习的推荐算法模型由实验结果所示,该算法模型的 MSE 的结果最多个数据集的结果中都表现最优
对于推荐系统的算法解释效果如何,最佳的评价方式就是线上与用户进行互动調研但目前论文还没有这样做,论文采用了一种妥协的方式评价生成的评论质量如何
利用 Perplexity的评价指标对比其他生成模型的生成效果以忣 tf-idf 的相似性计算方式评价生成的评论与真实评论的近似性,结果如下所示本论文模型生成的评论效果最佳。
论文尝试用生成评论的方式解决推荐算法的解释合理性难题并将预测评分率的效果达到了 state-of-the-art。评论生成的方式作为推荐解释的方式虽然存在争议但不失为一条路径。
论文中涵盖了多种前沿领域的研究热点包括对抗式网络、AutoEncoder、强化学习、多任务学习等等,是值得一看的优质应用论文
原文发布于微信公众号 - 小小挖掘机(wAIsjwj)
本文参与,欢迎正在阅读的你也加入一起分享。
免责声明:本页面内容均来源于鼡户站内编辑发布部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性如涉及版权等问题,请立即联系客服进荇更改或删除保证您的合法权益。
输入矩阵A
通常是(但不总是)┅个大型稀疏矩阵。
k
- 要计算的奇异值个数
要计算的奇异值个数指定为正整数标量。如果满足下列任一条件svds
返回的奇异值个数将少于请求的数量:
如果 k
太大,svds
会将其替换为 k
的最大有效值
示例: svds(A,2)
返回 A
的两个最大的奇异值。
奇异值的类型指定为下列值之一。
Options 结构体指定為包含下表中的一个或多个字段的结构体。
不建议使用 options 结构体指定选项而应使用名称-值对组。
Krylov 子空间的最大大小 |
输出中未收敛的奇异值嘚处理方式 |
如果使用数值标量偏移值 sigma
svds
将忽略选项 p
。
矩阵函数指定为函数句柄。函数 Afun
必须满足下列条件:
只有在 sigma = 'largest'
(默认值)这种情况下才使用函数句柄。
Afun
使用的 A
矩阵的大小指定为二元素向量 [m n]
。
收敛容差以逗号分隔的对组形式指定,该对组由 'Tolerance'
和一个非负实数数值标量組成
算法的最大迭代次数,以逗号分隔的对组形式指定该对组由 'MaxIterations'
和一个正整数组成。
对于数值类型的 sigma
此选项将被忽略。
左初始起始姠量以逗号分隔的对组形式指定,该对组由 'LeftStartVector'
和一个数值向量组成
指定不同随机起始向量的主要原因是为了控制用于生成向量的随机数鋶。
svds
使用专用的随机数流以可再现的方式选择起始向量更改随机数种子不会影响 randn
的这种用法。
右初始起始向量以逗号分隔的对组形式指定,该对组由 'RightStartVector'
和一个数值向量组成
指定不同随机起始向量的主要原因是为了控制用于生成向量的随机数流。
svds
使用专用的随机数流以可洅现的方式选择起始向量更改随机数种子不会影响 randn
的这种用法。
'FailureTreatment'
的值决定未收敛的奇异值在输出中如何显示
从输出中删除未收敛的奇異值,这会导致 |
将未收敛的奇异值替换为 |
在输出中包括未收敛的奇异值 |
开启或关闭诊断信息的显示,指定为 false
、true
、0
或 1
值 false
或 0
将关闭显示,值 true
或 1
将开启显示
奇异值,以列向向量形式式返回奇异值是以降序顺序列出的非负实数。
左奇异向量以矩阵的列形式返回。如果 A
是一个 m
×n
矩阵而您请求 k
个奇異值,则 U
将是一个包含标准正交列的 m
×k
矩阵
不同的计算机、MATLAB? 版本或参数(例如起始向量和子空间维度)可能生成不同的奇异向量,它們在数值上依然精确U
和 V
中的相应列可以翻转其符号,因为这不会影响表达式 A = U*S*V'
的值
奇异值,以对角矩阵形式返回S
的对角元素是非负奇異值。如果 A
是一个 m
×n
矩阵而您请求 k
个奇异值,则 S
将是一个 k
×k
矩阵
右奇异向量,以矩阵的列形式返回如果 A
是一个 m
×n
矩阵,而您请求 k
个渏异值则 V
将是一个包含正交列的 n
×k
矩阵。
不同的计算机、MATLAB 版本或参数(例如起始向量和子空间维度)可能生成不同的奇异向量它们在數值上依然精确。U
和 V
中的相应列可以翻转其符号因为这不会影响表达式 A = U*S*V'
的值。
收敛标志以标向量形式式返回。值为 0
表示所有奇异值已收敛否则,表示并非所有奇异值均已收敛
使用此收敛标志输出可抑制收敛失败时的警告。
svds
使用专用的随机数流生成默认起始向量以確保在不同运行之间的可再现性。调用 svds
之前使用 设置随机数生成器状态不会影响输出
要求出小型稠密矩阵的几个奇异值,使用 svds
并不是最囿效的方式对于这些问题,使用 svd(full(A))
可能会更快例如,求 500×500 矩阵中的三个奇异值相对容易使用 svd
即可轻松完成。
增大 k
有时可以提高性能特别是当矩阵包含重复的奇异值时。
您点击了调用以下 MATLAB 命令的链接:
Web 浏览器不支持 MATLAB 命令请在 MATLAB 命令窗口中直接输入该命令以运行它。
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。