Renforcement apprentissage avec Neo4j: faire 2 copies du graphique vs magasin 2 copies de toutes les valeurs sur 1 graphique

StackOverflow https://stackoverflow.com/questions/8828637

Question

Je prévois sur l'exécution d'un algorithme d'apprentissage machine qui prend connaissance des valeurs et des nœuds poids des arêtes. L'algorithme est très similaire à la valeur itération algorithme ici . Chaque nœud représente un emplacement et chaque bord est un trajet vers un nouvel emplacement. Chaque noeud et le bord maintient une valeur qui représente la façon dont il est souhaitable. Ces valeurs sont mises à jour chaque itération sur la base des valeurs de l'itération précédente.

Je prévois d'utiliser Neo4j comme le back-end. Il y aura environ 600 000 nœuds et 100.000.000 bords pour l'instant, mais plus peut être ajouté plus tard (Le graphique ne rentre pas dans la mémoire). Quelle est la meilleure façon de conserver les valeurs de l'itération précédente? 2 façons qui viennent à l'esprit sont:

  1. clone la base de données en cours et l'utilisation 1 copie comme la « itération courante » copier et 1 copie que la copie « de l'itération précédente ».
  2. A la fin de chaque itération déplacer toutes les valeurs de chaque nœud et bord à une propriété « itération précédente ».

Comment les gens font habituellement cela? Est-il possible de mieux?

Était-ce utile?

La solution

quelle est la taille du graphique, et combien d'itérations vous faites? Avec des graphiques plus petits, je dupliquer le graphique dans les versions, soit sur le disque comme un nouveau graphique, ou tout simplement comme un sous-graphe dans la même base de données.

Avec de plus grandes quantités, je pense que l'approche archivage de la propriété est une meilleure.

Autres conseils

L'article MDP vous référencez donne un bon aperçu de la valeur et l'itération de la politique, mais ne va pas mentionner la programmation dynamique asynchrone. Le fait est que vous n'avez pas besoin d'effectuer des balayages isolés pleins du graphique pour les valeurs de Converge [1]; vous pouvez mettre à jour les sommets un à la fois dans l'ordre, étant donné que vous ne négligez aucun d'entre eux. Autrement dit, vous n'avez pas besoin de faire une copie du graphique du tout.


[1] Bertsekas, D., 1982. Distribuée programmation dynamique. IEEE Transactions on contrôle automatique , 27 (3), p.610-616.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top