R中歌曲建议软件的马尔可夫决策过程?

机器算法验证 r 机器学习 马尔科夫过程 强化学习
2022-04-10 08:59:20

我们有一个音乐播放器,它有不同的播放列表,并自动从我所在的当前播放列表中推荐歌曲。我想让程序学习的是,如果我跳过这首歌,它应该会降低再次在这个播放列表中播放的概率. 我认为这就是所谓的强化学习,我已经阅读了一些关于算法的内容,认为马尔可夫决策过程 (MDP) 似乎正是我们这里所拥有的。我知道在 MDP 中有不止一个状态,所以我认为对于这种情况,这意味着不同的播放列表。例如,根据我所处的状态(播放列表),它会选择它认为最适合的歌曲,如果选择错误会受到“惩罚”(通过跳过)。

大家觉得这是正确的做法吗?或者你会建议一个不同的算法?所有这些是否有意义,我应该提供更多信息吗?

如果听起来不错,我想请教一些关于 R 中 MDP 的教程或起点。我在网上搜索过,但只在 R 中找到了 MDP 工具箱,这对我来说真的没有意义. 你有什么建议吗?

3个回答

这个问题现在已经有几个月了,但它仍然很有趣。对我来说,这听起来像是一个庞大的列联表或稀疏数据、张量问题。这不会使任何 MDP 或强化学习问题变得毫无意义,它只是重新调整了它们建模的统计框架。

决策或因变量是是否选择来自可能非常大的播放列表的歌曲,以及一旦选择,它是否被拒绝或播放。如果我错了,请纠正我,但这不能用效果编码或 0, 1 表示是/否来处理——它播放了吗?-- 如果被拒绝,则为 -1?

基于这个问题,我认为没有任何理由将其视为顺序马尔可夫链或纵向时间序列,特别是考虑到播放列表中抽签的随机性,但可以另辟蹊径。此规则的例外情况可能包括考虑算法是否“学习”歌曲偏好作为函数,例如,流派。

稀疏性将是聚合选择的时间范围的间隔以及播放列表的大小的函数。如果间隔太短或播放列表太大,稀疏是必然的结果。

最先进的张量建模可能是 David Dunson 的论文,例如Bayesian Tensor Regression,但有很多人在该领域发表了大量论文(有关评论,请参见他的 Duke 网站上的 DDs 论文)。

该问题可以建模为马尔可夫决策问题。我试图在 MDP 框架中解决这个问题,让我知道这是否有帮助。

假设存在一种在播放列表“集群”中选择歌曲的方法,则状态将充当 MDP 的此类集群。

定义集群之间的转移概率矩阵,MDP 的动作将是这个矩阵的变化。在这里,应用程序用户输入将充当模型中的外部干扰。奖励/成本模型将取决于这些外部干扰。

总之,

状态:播放列表集群

行动:转移概率矩阵的更新

干扰:应用程序用户输入为接受/拒绝歌曲

成本函数:关于用户是否会接受/拒绝接下来的几个建议的随机输出

一个扩展是将用户行为模拟为一个随机过程,并根据实际数据推断参数。

这里有一个强化学习问题是对的。当这个人跳过这首歌时,消极的强化是积极的,当他/她不跳的时候是积极的。在这种情况下,动作将是选择歌曲,并且您希望状态成为播放列表。我不认为这是一个好主意。首先,每个播放列表(状态)会有不同数量的歌曲(因此动作),这没有多大意义。

我会概括一下:

  • 状态:例如人的心情或人的音乐偏好。
  • 行动:例如选择一种音乐/艺术家。
  • 奖励:跳过时为负数,否则为 0 或正数。

这种方法更通用,元数据(音乐类型、艺术家等)可以很容易地从例如 MP3 文件中提取出来。

我没有使用任何带有 MDP 的 R 包,但这个链接似乎很有趣: R 中的强化学习:马尔可夫决策过程 (MDP) 和价值迭代