memory - recurrente - redes neuronales convolucionales
Red neuronal/memoria de aprendizaje automático (5)
Cada red neuronal tendrá pesos de borde asociados con ellos. Estos pesos de borde se ajustan durante la sesión de entrenamiento de una red neuronal. Supongo que su duda es acerca de almacenar estos pesos de borde. Bueno, estos valores se almacenan por separado en una memoria secundaria para que puedan conservarse para su uso futuro en la red neuronal.
Actualmente estoy tratando de configurar una red neuronal para la extracción de información y tengo bastante fluidez con los conceptos (básicos) de las redes neuronales, excepto por uno que parece desconcertarme. Probablemente sea bastante obvio, pero parece que no puedo encontrar información al respecto.
¿Dónde / cómo almacenan su memoria las redes neuronales? ( / Aprendizaje automático)
Hay bastante información disponible en línea sobre Redes neuronales y Aprendizaje automático, pero todas parecen saltearse el almacenamiento de memoria. Por ejemplo, después de reiniciar el programa, ¿dónde encuentra su memoria para continuar aprendiendo / prediciendo? Muchos ejemplos en línea no parecen "retener" la memoria, pero no puedo imaginar que esto sea "seguro" para una implementación real / de gran escala.
Me resulta difícil redactar mi pregunta, así que avíseme si necesito elaborar un poco más. Gracias,
EDITAR: - Para dar seguimiento a las respuestas a continuación
Cada red neuronal tendrá pesos de borde asociados con ellos. Estos pesos de borde se ajustan durante la sesión de entrenamiento de una red neuronal.
Aquí es exactamente donde estoy luchando, ¿cómo debo / debo visualizar esta memoria secundaria? ¿Es esto como RAM? eso no parece lógico ... La razón por la que pregunto porque no he encontrado un ejemplo en línea que defina o especifique esta memoria secundaria (por ejemplo, en algo más concreto, como un archivo XML o tal vez incluso una gran variedad).
El almacenamiento de memoria es específico de la implementación y no forma parte del algoritmo per se. Probablemente sea más útil pensar qué necesita almacenar en lugar de cómo almacenarlo.
Considere un perceptrón multicapa de 3 capas (totalmente conectado) que tiene 3, 8 y 5 nodos en las capas de entrada, ocultos y de salida, respectivamente (para esta discusión, podemos ignorar las entradas de sesgo). Luego, una forma razonable (y eficiente) de representar los pesos necesarios es mediante dos matrices: una matriz de 3x8
para los pesos entre las capas de entrada y ocultos y una matriz de 8x5
para los pesos entre las capas ocultas y de salida.
Para este ejemplo, debe almacenar los pesos y la forma de la red (número de nodos por capa). Hay muchas maneras de almacenar esta información. Podría estar en un archivo XML o en un archivo binario definido por el usuario. Si estuviera usando python, podría guardar ambas matrices en un archivo binario .npy
y codificar la forma de red en el nombre del archivo. Si implementó el algoritmo, depende de usted cómo almacenar los datos persistentes. Si, por otro lado, está utilizando un paquete de software de aprendizaje automático existente, es probable que tenga sus propias funciones de E / S para almacenar y cargar una red capacitada.
Espero que la discusión del diseño del modelo (red neuronal) se mantenga separada de la discusión de la implementación, donde se abordan los requisitos de datos como la durabilidad.
Una biblioteca o un marco en particular puede tener una respuesta específica sobre el almacenamiento duradero, pero si lo hace desde cero, entonces depende de usted.
Por ejemplo, ¿por qué no solo escribir los pesos y la topología entrenados en un archivo? Algo como YAML o XML podría servir como un formato.
Además, mientras hablamos de redes de estado / almacenamiento y redes neuronales, es posible que esté interesado en investigar la memoria asociativa .
Esto puede ser respondido en dos pasos:
- ¿Qué es la "memoria" en una red neuronal (denominada NN)?
A medida que se entrena una red neuronal (NN), se construye un modelo matemático que le dice a la NN qué dar como salida para una entrada en particular. Piense en lo que sucede cuando entrena a alguien para hablar un nuevo idioma. El cerebro humano crea un modelo del lenguaje. De manera similar, una NN crea un modelo matemático de lo que estás tratando de enseñarlo. Representa la asignación de entrada a salida como una serie de funciones. Este modelo matemático es la memoria. Este modelo matemático es el peso de diferentes aristas en la red. A menudo, un NN está entrenado y estos pesos / conexiones se escriben en el disco duro (XML, Yaml, CSV, etc.). Cuando sea necesario utilizar una NN, estos valores se leen y la red se vuelve a crear.
- ¿Cómo puedes hacer que una red olvide su memoria?
Piensa en alguien a quien se le han enseñado dos idiomas. Digamos que el individuo nunca habla uno de estos idiomas durante 15 a 20 años, sino que utiliza el otro todos los días. Es muy probable que se aprendan varias palabras nuevas cada día y se olviden muchas palabras del lenguaje menos frecuente. La parte crítica aquí es que un ser humano está "aprendiendo" todos los días. En una NN, se puede observar un fenómeno similar al entrenar la red usando datos nuevos. Si los datos antiguos no se incluyeron en las nuevas muestras de entrenamiento, entonces el modelo matemático subyacente cambiará tanto que los datos de entrenamiento antiguos ya no estarán representados en el modelo. Es posible evitar que una NN "olvide" el modelo anterior cambiando el proceso de capacitación. Sin embargo, esto tiene el efecto secundario de que tal NN no puede aprender muestras de datos completamente nuevas.
Yo diría que su enfoque es incorrecto. Las redes neuronales no son volcados de memoria como vemos en la computadora. No hay direcciones donde reside un trozo particular de memoria. Todas las neuronas juntas se aseguran de que una entrada determinada conduzca a una salida particular.
Permite compararlo con tu cerebro. Cuando prueba el azúcar, las papilas gustativas de su lengua son los nodos de entrada que leen señales químicas y transmiten señales eléctricas al cerebro. Luego, el cerebro determina el sabor utilizando las diversas combinaciones de señales eléctricas.
No hay tablas de búsqueda. No hay memorias primarias y secundarias, solo memorias a corto y largo plazo.