Apresentando o Gym-Saturation: Uma Nova Ferramenta para Prova de Teoremas
Ajudas de saturação de ginásio ajudam provedores na prova automática de teoremas usando aprendizado por reforço.
― 7 min ler
Índice
Esse artigo fala sobre uma ferramenta chamada gym-saturation, que é usada na área de prova automática de teoremas. A ferramenta foi feita pra ajudar programas de computador chamados "provors" a encontrarem provas de afirmações matemáticas. Ela faz isso usando um método chamado Aprendizado por Reforço, que ensina esses programas a tomarem decisões com base no feedback que recebem. Gym-saturation é um conjunto de ambientes onde esses provors podem operar e serem treinados pra provar afirmações de forma mais eficaz.
O que é Gym-Saturation?
Gym-saturation é um pacote em Python que oferece um conjunto de ambientes pra diferentes provors, especificamente dois bem conhecidos chamados Vampire e iProver. Esses ambientes permitem que pesquisadores e desenvolvedores guiem os provors enquanto eles buscam por provas. A versão mais recente desse pacote facilita o trabalho com esses provors e inclui melhorias que ajudam os usuários a realizarem Experimentos de forma mais eficiente.
Recursos do Gym-Saturation
A versão mais recente do gym-saturation traz várias atualizações importantes:
Suporte a Múltiplos Provers: A ferramenta agora suporta dois provors populares ao invés de apenas um. Isso permite que os usuários testem e comparem seu desempenho facilmente.
Embutimentos para Lógica de Primeira Ordem: O pacote inclui opções pra representar afirmações lógicas de um jeito que seja útil pra aprendizado de máquina. Isso significa que os usuários podem escolher como representar os problemas em que estão trabalhando, tornando tudo mais flexível.
Exemplos de Experimentos: Ele fornece experimentos de exemplo usando diferentes algoritmos de aprendizado por reforço. Isso ajuda os novos usuários a verem como configurar seus próprios experimentos.
API Atualizada: Gym-saturation agora segue um padrão mais moderno, facilitando o uso e tornando-o mais compatível com outras ferramentas.
Instalação
Pra usar o gym-saturation, você precisa ter Python 3.8 ou mais recente instalado no seu computador. Você pode instalar o pacote facilmente rodando um comando no seu terminal. Tem duas maneiras principais de instalar: usando pip ou conda. Uma vez instalado, você pode configurar ambientes que correspondem ao Vampire ou ao iProver.
Aqui tá como começar:
import gymnasium
import gym_saturation
env = gymnasium.make("Vampire-v0") # ou "iProver-v0"
observation, info = env.reset()
Como Funciona
Uma vez que o ambiente está configurado, você pode começar a usá-lo pra treinar seu prover. O ambiente te dá informações sobre o estado atual do processo de prova. Você então decide qual ação tomar, que geralmente significa escolher uma cláusula pra trabalhar. À medida que o prover processa essa ação, você recebe feedback que diz se foi uma boa escolha ou não.
Os elementos chave desse processo incluem:
- Observação: Informações sobre o estado atual das provas que estão sendo trabalhadas.
- Ação: A escolha feita pelo usuário ou pelo sistema sobre qual cláusula trabalhar a seguir.
- Recompensa: Feedback recebido após tomar uma ação, indicando se a ação foi bem-sucedida ou não.
O objetivo é ensinar o prover a fazer escolhas melhores ao longo do tempo usando esse ciclo de feedback.
Trabalhos Relacionados
Tem outros projetos que também usam aprendizado por reforço pra guiar provors. No entanto, gym-saturation se destaca porque trabalha com versões estabelecidas e estáveis do Vampire e do iProver, ao invés de versões experimentais. Isso significa que os usuários podem esperar um desempenho consistente sem precisar modificar os provors eles mesmos.
Projetos anteriores geralmente dependiam de provors personalizados feitos especificamente pra isso, tornando-os menos gerais. Além disso, gym-saturation permite que os usuários desacoplem a representação lógica do processo de prova, facilitando a experimentação com diferentes abordagens.
Comunicação com Provers
Gym-saturation permite comunicação entre o ambiente e os provors de várias maneiras. Pra Vampire, a ferramenta interage através de uma interface de linha de comando que permite que o prover pause e espere por input do usuário. Pra iProver, está configurado como um sistema cliente-servidor, onde um servidor de relay facilita a comunicação entre o usuário e o prover.
Esse setup significa que os usuários podem facilmente alternar entre os dois provors e realizar seus experimentos sem precisar aprender sistemas diferentes pra cada prover.
Estrutura do Pacote
O pacote gym-saturation inclui duas classes principais: a classe Clause e a classe Environment.
Classe Clause
Uma cláusula representa uma parte específica de uma prova e inclui detalhes essenciais como:
- Literais: O conteúdo real da cláusula escrito em um formato específico.
- Label: Um identificador único pra cláusula.
- Role: O que a cláusula está fazendo na prova (como ser um axioma).
- Inference Rule: A regra lógica usada pra criar a cláusula.
Essa classe permite que os usuários manipulem as partes individuais de suas provas de uma forma estruturada.
Classe Environment
A classe Environment é onde toda a ação acontece. Ela gerencia o estado da prova e inclui:
- Real Obs: Uma representação de todas as cláusulas atuais que podem ser usadas na prova.
- Action Mask: Uma ferramenta pra determinar quais ações são permitidas no estado atual.
- Rewards: Informações sobre quão boa ou ruim foi uma certa ação.
Essa classe prepara o cenário pro processo de aprendizado por reforço, dando feedback ao usuário sobre as ações tomadas.
Recursos de Conveniência
Gym-saturation inclui ferramentas pra ajudar a facilitar o processo de configuração. Um desses recursos é a capacidade de configurar um problema padrão pra trabalhar, garantindo que os usuários possam começar a experimentar imediatamente. Isso é especialmente útil pra quem é novato nessa área, pois podem se concentrar em aprender como usar a ferramenta sem se perder em configurações iniciais complicadas.
Experimentos e Resultados
Pra ilustrar como o gym-saturation pode ser usado, o pacote inclui exemplos de vários experimentos. Esses experimentos mostram como usar os algoritmos de aprendizado por reforço fornecidos pela ferramenta pra guiar provors na solução de problemas.
Num dos exemplos, os usuários podem ver como configurar um processo simples de tomada de decisão que escolhe entre cláusulas com base em sua prioridade. Os resultados desses experimentos ajudam os usuários a entender a eficácia de diferentes estratégias e aprender com os sucessos e falhas de suas abordagens.
Conclusão
Gym-saturation representa uma ferramenta valiosa na área de prova automática de teoremas. Ela simplifica o processo de usar aprendizado por reforço com provors existentes e fornece um ambiente flexível pra experimentação. As atualizações recentes melhoram sua usabilidade e a tornam uma opção poderosa pra pesquisadores e desenvolvedores.
Trabalhos futuros visam melhorar a representação de afirmações lógicas, permitindo um melhor treinamento dos provors e, com isso, avançando nas capacidades de prova de teoremas. À medida que mais provors adicionam recursos compatíveis com o gym-saturation, a ferramenta pode se tornar ainda mais amplamente usada, ajudando a avançar o campo do raciocínio automatizado. Ao tornar a prova de teoremas mais acessível e eficaz, gym-saturation ajuda a unir aprendizado de máquina e raciocínio automatizado.
Título: gym-saturation: Gymnasium environments for saturation provers (System description)
Resumo: This work describes a new version of a previously published Python package - gym-saturation: a collection of OpenAI Gym environments for guiding saturation-style provers based on the given clause algorithm with reinforcement learning. We contribute usage examples with two different provers: Vampire and iProver. We also have decoupled the proof state representation from reinforcement learning per se and provided examples of using a known ast2vec Python code embedding model as a first-order logic representation. In addition, we demonstrate how environment wrappers can transform a prover into a problem similar to a multi-armed bandit. We applied two reinforcement learning algorithms (Thompson sampling and Proximal policy optimisation) implemented in Ray RLlib to show the ease of experimentation with the new release of our package.
Autores: Boris Shminke
Última atualização: 2023-09-16 00:00:00
Idioma: English
Fonte URL: https://arxiv.org/abs/2309.09022
Fonte PDF: https://arxiv.org/pdf/2309.09022
Licença: https://creativecommons.org/licenses/by/4.0/
Alterações: Este resumo foi elaborado com a assistência da AI e pode conter imprecisões. Para obter informações exactas, consulte os documentos originais ligados aqui.
Obrigado ao arxiv pela utilização da sua interoperabilidade de acesso aberto.
Ligações de referência
- https://pypi.org/project/gym-saturation/
- https://doi.org/10.48550/arxiv.2209.02562
- https://gymnasium.farama.org/environments/third_party_environments/
- https://gymnasium.farama.org/api/wrappers/observation_wrappers/
- https://gitlab.com/inpefess/ast2vec
- https://github.com/inpefess/ray-prover/releases/tag/v0.0.3