Pregunta

Descargo de responsabilidad: no soy un genio matemático, ni tengo experiencia en escribir redes neuronales. Así que, por favor, perdona cualquier cosa idiota que diga aquí. ;)

Siempre he leído que las redes neuronales se utilizan para el aprendizaje automático, pero al experimentar con la escritura de máquinas virtuales simples, comencé a preguntarme si podrían aplicarse de otra manera.

Específicamente, ¿se puede crear una máquina virtual como una red neuronal? Si es así, ¿cómo funcionaría (siéntase libre de usar una descripción abstracta aquí, si tiene que hacerlo)?

He oído hablar de la máquina Joycean, pero no puedo encontrar ninguna otra información que no sean explicaciones muy vagas.

EDITAR: Lo que estoy buscando aquí es una explicación de cómo exactamente una VM basada en una red neuronal interpretaría el ensamblaje. ¿Cómo se manejan los insumos, etc.? ¿Sería cada entrada individual una dirección de memoria? ¡Hagamos una lluvia de ideas!

¿Fue útil?

Solución

Realmente hiciste mi amigo de día ...

Dado que una red neuronal ya entrenada no será muy diferente de una máquina de estado regular, no tiene sentido escribir una red neuronal VM para un conjunto de instrucciones determinista.

Podría ser interesante capacitar a una máquina virtual de este tipo con múltiples conjuntos de instrucciones o un conjunto desconocido. Sin embargo, dudo que sea práctico ejecutar tal entrenamiento e incluso un intérprete correcto de% 99 será de alguna utilidad para el código de bytes convencional.

El único uso de una red neuronal VM que se me ocurre es ejecutar un programa que contenga construcciones lógicas difusas o heurísticas de algoritmo AI.

Un ejemplo de máquina de pila tonta para demostrar la idea:

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

Aquí no hay una heurística explícita. Solo supongamos que mantenemos todo el estado en * mapa, incluido el algoritmo heurístico.

Usted ve que parece tonto y no es completamente sensible al contexto, pero una red neuronal no tiene ningún valor si no se aprende en línea.

Otros consejos

Por supuesto. Con una red bastante compleja sin duda.

Gran parte del análisis de bytecodes / opcodes es una coincidencia de patrones en la que las redes neuronales son excelentes.

Ciertamente, podría hacer esto con una red neuronal: podría ver fácilmente el aprendizaje de las transiciones de estado correctas para una determinada pieza de bytecode.

La entrada podría ser algo como:

  • Valor en la parte superior de la pila
  • Valor en el acumulador actual
  • Código de bytes en el puntero de instrucción actual
  • Valor de byte en el puntero de datos actual
  • Banderas anteriores

La salida podría ser algo como:

  • Cambiar a puntero de instrucción
  • Cambiar a puntero de datos
  • Cambiar al acumulador
  • Operación de pila (push, pop, o nada)
  • Operación de memoria (leer en el acumulador, escribir acumulador o nada)
  • Nuevas banderas

Sin embargo, no estoy seguro de por qué querría hacer esto en primer lugar. Una red neuronal sería mucho menos eficiente (y podría cometer errores a menos que la haya entrenado lo suficientemente bien) en comparación con solo ejecutar el código de bytes directamente. Probablemente necesitarías escribir un evaluador de código de bytes preciso de todos modos solo para crear suficientes datos de entrenamiento ...

Además, en mi experiencia, las redes neuronales tienden a ser buenas en el reconocimiento de patrones pero muy malas en el aprendizaje de operaciones lógicas (como la adición binaria o XOR) una vez que se supera una cierta escala (es decir, más de unos pocos bits). Por lo tanto, dependiendo de la complejidad de su conjunto de instrucciones, la red podría tardar mucho tiempo en entrenar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top