Trabalho de Conclusão de Curso

From Logic to Learning: A Framework for Converting Sentential Decision Diagrams into Differentiable Neural Networks

Matheus Sanches Jurgensen

Bacharelado em Ciência da Computação – Universidade de São Paulo (USP)

Orientador: Prof. Dr. Denis Deratani Mauá

Co-orientador: Jonas Rodrigues Lima Gonçalves

Resumo

A integração do raciocínio simbólico com as capacidades de aprendizado de redes neurais representa um desafio de fronteira na Inteligência Artificial. Enquanto a Programação por Conjunto de Respostas (ASP) e os circuitos lógicos oferecem robustas capacidades dedutivas, eles tradicionalmente carecem da flexibilidade para lidar com incertezas e aprender parâmetros a partir de dados.

Este trabalho propõe e implementa um framework de software abrangente para preencher essa lacuna, convertendo Diagramas de Decisão Sentencial (SDDs) — um subconjunto tratável e canônico de circuitos na Forma Normal de Negação (NNF) — em redes neurais diferenciáveis. Introduzimos um pipeline metodológico que transforma SDDs simbólicos em Circuitos Aritméticos compatíveis com ambientes de aprendizado profundo, garantindo a propriedade de suavidade para assegurar uma Contagem Ponderada de Modelos (WMC) válida.

A arquitetura resultante trata parâmetros probabilísticos como pesos aprendíveis, permitindo a unificação da inferência probabilística e do aprendizado dentro de um único grafo computacional baseado em PyTorch. O framework foi validado utilizando o estudo de caso da rede Bayesiana "Alarm", demonstrando eficiência na inferência e alta precisão na recuperação de parâmetros latentes.

Palavras-chave: IA Neuro-Simbólica, Diagramas de Decisão Sentencial, Programação Diferenciável, Inferência Probabilística.

Monografia

A monografia final pode ser acessada pelo seguinte link:

📄 Visualizar Monografia (PDF)

Pôster

O Pôster que foi exposto no IME-USP pode ser acessado pelo seguinte link:

📄 Visualizar Pôster (PDF)

Apresentação

Os slides apresentados no IME-USP podem ser encontrados pelo seguinte link:

📄 Visualizar Apresentação (PDF)

Repositório

O código-fonte deste projeto está disponível no GitHub.

Escopo

O escopo deste trabalho concentra-se na etapa final do pipeline de sistemas neuro-simbólicos (como o dPASP): a compilação de circuitos lógicos em redes neurais. O projeto foca especificamente em SDDs devido às suas propriedades de decomponibilidade e determinismo. O trabalho abrange desde o parsing de arquivos de definição lógica até a implementação de algoritmos para garantir a propriedade de suavidade (smoothness) — essencial para a validade matemática da inferência probabilística — e a construção de módulos PyTorch que mapeiam operações lógicas (E/OU) em operações aritméticas (Produto/Soma), permitindo otimização via backpropagation.

Objetivos

O objetivo principal é desenvolver e validar um framework de software robusto para converter SDDs em modelos neurais diferenciáveis. Os objetivos específicos incluem:

Métodos

O desenvolvimento foi conduzido através das seguintes etapas metodológicas:

  1. Fundamentação Teórica: Estudo aprofundado sobre Circuitos Lógicos, Forma Normal de Negação (NNF), propriedades estruturais de SDDs e Contagem Ponderada de Modelos (WMC).
  2. Design da Solução: Definição da lógica de codificação de inputs (variáveis e suas negações) e da estrutura do Circuito Aritmético para suportar diferenciação.
  3. Implementação: Desenvolvimento do framework em Python/PyTorch, incluindo parsers para arquivos .sdd e .json, e implementações de execução (recursiva e iterativa).
  4. Engenharia de Software: Aplicação de testes automatizados (unitários e de integração) para garantir a corretude das computações lógicas e probabilísticas.
  5. Estudo de Caso: Realização de experimentos com o problema "Alarm", analisando métricas de erro (MAE) e tempos de execução para inferência e treinamento.

Cronograma de Atividades Realizadas

Período Atividade
Fev – Março 2025 Revisão bibliográfica (SDDs, WMC, Neuro-Symbolic AI) e definição do escopo do framework.
Abril – Junho 2025 Implementação do núcleo do framework: Parsers e o conversor NetworkBuilder.
Implementação da lógica de suavização de circuitos.
Julho – Setembro 2025 Desenvolvimento dos módulos de Inferência (QueryExecutor) e Otimização (ProbabilityOptimizer).
Implementação de testes automatizados.
Outubro – Novembro 2025 Execução dos experimentos (Estudo de caso "Alarm").
Coleta de resultados e validação da convergência do aprendizado.
Novembro – Dezembro 2025 Redação da monografia final, formatação e revisão.

Bibliografia