2009-09-09 4 views
2

Clause de non-responsabilité: Je ne suis pas un génie mathématique et je n'ai aucune expérience dans l'écriture de réseaux de neurones. Donc, s'il vous plaît, pardonnez toutes les choses idiotes que je peux dire ici. J'ai toujours lu sur les réseaux de neurones utilisés pour l'apprentissage automatique, mais en expérimentant l'écriture de machines virtuelles simples, j'ai commencé à me demander si elles pourraient être appliquées d'une autre manière.Une machine virtuelle peut-elle être implémentée en tant que réseau de neurones?

Spécifiquement, une machine virtuelle peut-elle être créée en tant que réseau de neurones? Si oui, comment cela fonctionnerait (n'hésitez pas à utiliser une description abstraite ici, si nécessaire)?

J'ai entendu parler de la machine Joycean, mais je ne trouve aucune autre information que des explications très, très vagues.

EDIT: Ce que je cherche ici est une explication de la manière exacte dont une machine virtuelle basée sur un réseau neuronal interpréterait l'assemblage. Comment les intrants seraient-ils traités, etc.? Chaque entrée individuelle serait-elle une adresse mémoire? Let's brainstorm!

+0

En réponse à l'édition: Connaissez-vous l'architecture de l'ordinateur? Une VM de réseau neuronal pourrait être (comme dans une approche) équivalente à l'émulation de chaque morceau de matériel informatique avec une VM. Par exemple, la CPU peut être un NN avec des entrées qui sont les bits et les sorties de l'instruction courante qui sont les bits du registre de contrôle. Est-ce le type de question que vous posez? –

+2

Ou vous pouvez simplement demander si les réseaux de neurones sont en train de se terminer. – quillbreaker

+2

Je pense que si le cerveau humain est un réseau neuronal et que vous pouvez penser à travers les étapes d'une simple VM, alors oui, vous pouvez faire une VM en utilisant un réseau neuronal – mcjabberz

Répondre

2

Vous avez vraiment fait mon copain jour ...

Depuis un réseau de neurones déjà formé ne sera pas très différent de celui d'une machine d'état régulière, il n'y a pas de point d'écrire un réseau de neurones VM pour un jeu d'instructions déterministe.

Il peut être intéressant de former une telle VM avec plusieurs jeux d'instructions ou un jeu inconnu. Cependant, je doute qu'il soit pratique d'exécuter une telle formation et même un interprète correct ne sera d'aucune utilité pour le bytecode conventionnel. La seule utilisation d'un réseau neuronal auquel je peux penser est l'exécution d'un programme qui contient des constructions de logique floue ou des heuristiques d'algorithme AI.

Quelques exemples de machine à pile stupide pour démontrer l'idée:

push [x1] 
push [y1] ;start coord 
push [x2] 
push [y2] ;end coord 
pushmap [map] ;some struct 
stepastar ;push the next step of A* heuristics to accumulator and update the map 
pop ;do sth with is and pop 
stepastar ;next step again 
... ;stack top is a map 
reward ;we liked the coordinate. reinforce the heuristic 
stepastar 
... ;stack top is a map 
punish ;we didn't like the next coordinate. try something different 

Il n'y a pas heuristique explict ici. Supposons simplement que nous conservons tous les états dans * map, y compris l'algorithme heuristique. Vous voyez qu'il semble stupide et pas complètement sensible au contexte, mais un réseau de neurones n'a aucune valeur s'il n'apprend pas en ligne.

1

Bien sûr. Avec un réseau plutôt complexe sans doute.

Une grande partie de l'analyse des bytecodes/opcodes correspond à la correspondance des modèles sur lesquels les réseaux neuronaux excellent.

0

Vous pourriez certainement le faire avec un réseau de neurones - je pourrais facilement voir apprendre les transitions d'état correctes pour un morceau de bytecode donné.

entrée pourrait être quelque chose comme:

  • Valeur en haut de la pile
  • Valeur dans l'accumulateur en cours
  • code octet au pointeur d'instruction en cours
  • valeur d'octet au pointeur de données en cours
  • Précédente drapeaux

Sortie c ould être quelque chose comme:

  • Modification pointeur d'instruction
  • Modification pointeur de données
  • Modification de l'accumulateur
  • fonctionnement de la pile (push, pop, ou rien)
  • Utilisation de la mémoire (lire l'accumulateur , écrire accumulateur ou rien)
  • drapeaux nouveaux

H Cependant, je ne sais pas pourquoi vous voudriez le faire en premier lieu. Un réseau neuronal serait beaucoup moins efficace (et ferait potentiellement des erreurs à moins que vous ne l'ayez suffisamment bien entraîné) comparé à l'exécution directe du bytecode. De toute façon, dans mon expérience, les réseaux de neurones ont tendance à être bons pour la reconnaissance des formes, addition ou XOR) une fois que vous obtenez au-delà d'une certaine échelle (c'est à dire plus de quelques bits). Donc, en fonction de la complexité de votre jeu d'instructions, le réseau pourrait prendre beaucoup de temps à s'entraîner.

Questions connexes