Meta-Interpretive Learning (MIL), a branch of Inductive Logic programming (ILP), has been shown to be an effective method for learning logic programs, through the use of higher-order ‘meta-rules’, from which first order clauses can be built using meta-substitutions. In this paper we propose a new framework for understanding MIL as Second Order SLD-Resolution which we prove is sound and complete for induction, as for deduction. We implement two new learning and reasoning engines for MIL, one called Vanilla implemented in Prolog, and the other, Prolog \(^2\) implemented in Rust. We use Vanilla and Prolog \(^2\) to implement Top Program Construction (TPC). TPC in Prolog \(^2\) is a multi-threaded implementation, processing multiple instances of Second Order SLD-Resolution in parallel. Our results show that these systems can learn hundreds of clauses from over 600 examples in a matter of minutes for Vanilla-TPC, or Seconds in Prolog \(^2\) -TPC.

错误:搜索内容不能为空,请输入英文关键词
错误:关键词超出字数限制,请精简
高级检索

Meta-Interpretive Learning as Second Order Resolution

  • James Trewern,
  • Stassa Patsantzis,
  • Alireza Tamaddoni-Nezhad

摘要

Meta-Interpretive Learning (MIL), a branch of Inductive Logic programming (ILP), has been shown to be an effective method for learning logic programs, through the use of higher-order ‘meta-rules’, from which first order clauses can be built using meta-substitutions. In this paper we propose a new framework for understanding MIL as Second Order SLD-Resolution which we prove is sound and complete for induction, as for deduction. We implement two new learning and reasoning engines for MIL, one called Vanilla implemented in Prolog, and the other, Prolog \(^2\) implemented in Rust. We use Vanilla and Prolog \(^2\) to implement Top Program Construction (TPC). TPC in Prolog \(^2\) is a multi-threaded implementation, processing multiple instances of Second Order SLD-Resolution in parallel. Our results show that these systems can learn hundreds of clauses from over 600 examples in a matter of minutes for Vanilla-TPC, or Seconds in Prolog \(^2\) -TPC.