gpt4 book ai didi

machine-learning - 使用 Lasagne 的 Adam 实现进行概率矩阵分解是否有希望?

转载 作者:行者123 更新时间:2023-11-30 08:29:38 24 4
gpt4 key购买 nike

我正在实现Probabilistic Matrix Factorization theano 中的模型并想利用 Adam gradient descent规则。

我的目标是拥有一个尽可能整洁的代码,这意味着我不想明确跟踪 Adam 算法中的“m”和“v”数量。

这似乎是可能的,尤其是在 seeing how Lasagne's Adam is implemented 之后:它将“m”和“v”数量隐藏在theano.function的更新规则中.

当处理不同数量的每个项形成负对数似然时,这种方法有效。但在概率矩阵分解中,每一项都包含一个潜在用户向量和一个潜在项目向量的点积。这样,如果我在每个术语上创建 Lasagne 的 Adam 实例,我将为同一个潜在向量拥有多个“m”和“v”数量,这不是 Adam 应该工作的方式。

我也posted on Lasagne's group ,实际上twice ,其中有一些更多细节和一些示例。

我考虑了两种可能的实现:

  1. 每个现有评级(这意味着全局 NLL 目标函数中的每个现有项)都有自己的 Adam,通过专门调用 theano.function 进行更新。不幸的是,这会导致 Adam 的不正确使用,因为相同的潜在向量将与 Adam 算法使用的不同“m”和“v”量相关联,这不是 Adam 应该工作的方式。
  2. 在整个目标 NLL 上调用 Adam,这将使更新机制类似于简单的梯度下降而不是 SGD,并具有所有已知的缺点(计算时间长、停留在局部最小值等)。

我的问题是:

  • 也许我对 Lasagne’s Adam 的工作原理有一些不正确的理解?

  • 选项 2 实际上会像 SGD 一样吗?从某种意义上说,对潜在向量的每次更新都会对使用该更新向量的另一个更新(在同一个 Adam 调用中)产生影响?

  • 对于如何实现您还有其他建议吗?

关于如何解决此问题并避免手动保留“v”和“m”数量的复制向量和矩阵有什么想法吗?

最佳答案

看起来他们在论文中建议您使用梯度下降立即优化整个函数:

We can then perform gradient descent in Y , V , and W to minimize the objective function given by Eq. 10.

所以我想说你的选项 2 是实现他们所做的事情的正确方法。

那里没有太多复杂性或非线性(除了 sigmoid 之外),因此您可能不太可能遇到与神经网络相关的典型优化问题,这些问题需要像 Adam 这样的东西。因此,只要一切都适合内存,我想这种方法就会起作用。

如果它不适合内存,也许可以通过某种方式设计损失的小批量版本来优化。您也有兴趣了解是否可以添加一个或多个神经网络来替换其中一些条件概率。但这有点偏离主题了......

关于machine-learning - 使用 Lasagne 的 Adam 实现进行概率矩阵分解是否有希望?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39415090/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com