我打算运行一种学习节点值和边权重的机器学习算法。该算法与值迭代算法here非常相似。每个节点代表一个位置,每个边是一个到新位置的路径。每个节点和边缘都保持一个表示其期望值的值。这些值在每次迭代时都会根据前一次迭代的值进行更新。
我计划使用neo4j作为后端。现在将有大约600,000个节点和100,000,000个边缘,但稍后可能会添加更多(图形将不适合内存)。保留上一次迭代的值的最佳方法是什么?想到的两种方式是:
人们通常如何做到这一点?还有更好的方法吗?
答案 0 :(得分:3)
图表的大小是多少,你做了多少次迭代?对于较小的图形,我会在版本中复制图形,在磁盘上作为新图形,或者作为同一数据库中的子图形。
如果金额较大,我认为财产归档方法更好。
答案 1 :(得分:3)
您引用的MDP文章对值和策略迭代进行了很好的概述,但没有提到异步动态编程。事实是,您不需要对图表执行完全孤立的扫描,以使值收敛[1];您可以按任意顺序一次更新一个顶点,前提是您不要忽略它们中的任何一个。也就是说,您根本不需要复制图形。
[1] Bertsekas,D.,1982。分布式动态规划。 IEEE自动控制交易,27(3),p.610-616。