Implementación de Pytorch de redes relacionales: un módulo de red neuronal simple para razonamiento relacional
Implementado y probado en la tarea de tipo de CLEVR.
La versión simplificada de Clevr. está compuesta por 10000 imágenes y 20 preguntas (10 preguntas relacionales y 10 preguntas no relacionales) por cada imagen. 6 colores (rojo, verde, azul, naranja, gris, amarillo) se asignan a la forma elegida al azar (cuadrado o círculo), y se colocan en una imagen.
Las preguntas no relacionales están compuestas por 3 subtipos:
Estas preguntas son "no relacionales" porque el agente solo necesita centrarse en cierto objeto.
Las preguntas relacionales están compuestas de 3 subtipos:
Estas preguntas son "relacionales" porque el agente debe considerar las relaciones entre objetos.
Las preguntas se codifican en un vector de tamaño de 11: 6 para un vector único para cierto color entre 6 colores, 2 para un vector único de preguntas relacionales/no relacionales. 3 para un vector único de 3 subtipos.

Es decir, con la imagen de muestra que se muestra, podemos generar preguntas no relacionales como:
Y preguntas relacionales:
Crear entorno CondA desde el archivo environment.yml
$ conda env create -f environment.yml
Activar entorno
$ conda activate RN3
Si no usa Conda Instale Python 3 normalmente y usa pip install para instalar las dependencias restantes. La lista de dependencias se puede encontrar en el archivo environment.yml .
$ ./run.sh
o
$ python sort_of_clevr_generator.py
para generar un conjunto de datos de CLEVR y
$ python main.py
Para entrenar el modelo Binario RN. Alternativamente, use
$ python main.py --relation-type=ternary
Para entrenar el modelo Ternary RN.
En el documento original, la tarea de tipo de CLEVR utilizó un modelo diferente de la tarea CLEVR. Sin embargo, debido a que el modelo usado CLEVR requiere mucho menos tiempo para calcular (la red es mucho más pequeña), este modelo se usa para la tarea de tipo CLEVR.
| Redes relacionales (20th Epoch) | CNN + MLP (sin RN, época número 100) | |
|---|---|---|
| Cuestión no relacional | 99% | 66% |
| Cuestión relacional | 89% | 66% |
CNN + MLP ocurrió con el sobreajuste a los datos de entrenamiento.
Las redes relacionales muestran resultados mucho mejores en preguntas relacionales y preguntas de no relatación.
@GNGDB acelera el modelo por 10 veces.