Scallop, un lenguaje de programación neuro-simbólico
(scallop-lang.org)- Scallop es un lenguaje declarativo para incorporar razonamiento simbólico basado en reglas lógicas en aplicaciones de IA, y se basa en Datalog, un lenguaje de consulta para bases de datos relacionales
- El solver admite razonamiento discreto, probabilístico y diferenciable, lo que permite elegir el método de razonamiento según las necesidades de la aplicación
- Mediante bindings de Python, se pueden incluir módulos de razonamiento lógico dentro de un programa, y es posible integrarlos con pipelines de machine learning existentes en PyTorch
- En tareas de visión y NLP, se combinan componentes neuronales generados por CNN o Transformer con componentes de reglas lógicas
- Ofrece ejemplos end-to-end que aprenden conjuntamente componentes neuronales y reglas, como razonamiento visual CLEVR, determinación de conectividad en Pathfinder y evaluación de expresiones manuscritas
Componentes clave de Scallop
-
Language
- Scallop es un lenguaje declarativo para manejar razonamiento simbólico en aplicaciones de IA
- Se basa en Datalog, un lenguaje de consulta basado en reglas lógicas para bases de datos relacionales
-
Solver
- Scallop es un solver Datalog extensible
- Admite modos de razonamiento discreto, razonamiento probabilístico y razonamiento diferenciable
- Cada modo de razonamiento puede configurarse según distintos requisitos de aplicaciones de IA
-
Framework
- Proporciona bindings para usar módulos de razonamiento lógico dentro de programas Python
- Puede integrarse profundamente con pipelines de machine learning existentes en PyTorch
Aplicaciones de ejemplo
- CLEVR es una tarea de razonamiento visual que responde preguntas como “¿cuántos objetos azules hay?” sobre objetos 3D simples dentro de una imagen
- Un componente neuronal genera el grafo de escena (scene graph) de la imagen y una consulta programática (programmatic query) que representa la pregunta
- El componente de razonamiento especifica como reglas lógicas operaciones para seleccionar, comparar y contar objetos según los atributos dados
- Scallop integra estos componentes en un framework común y permite realizar aprendizaje end-to-end
- Pathfinder es una tarea de razonamiento de conectividad de largo alcance que determina si dos puntos están conectados por líneas punteadas en una imagen en blanco y negro
- Puede construirse con una arquitectura neuronal simple que detecta puntos y guiones, y unas pocas líneas de reglas lógicas en Scallop
- Las reglas presentadas toman
dash(x, y)como un camino y conectan recursivamentepath(x, z), dash(z, y)para determinaris_connected() - Esta configuración logra un rendimiento superior al de los Transformer más recientes
- La evaluación de expresiones manuscritas es una tarea que reconoce una secuencia de símbolos manuscritos compuesta por dígitos del 0 al 9 y operaciones aritméticas simples, y calcula la expresión
- El ejemplo toma
1 + 3 / 5como entrada y calcula el resultado1.6 - Con Scallop se puede crear un parser completo de gramática libre de contexto capaz de parsear entradas probabilísticas
- El parser y el evaluador pueden escribirse en 5 líneas de código Scallop
- Este programa puede entrenarse de manera end-to-end junto con un modelo neuronal de reconocimiento de símbolos individuales y, tras el entrenamiento, encuentra la expresión más probable y devuelve el resultado de la evaluación
- El ejemplo toma
Aún no hay comentarios.