sheng的学习笔记-AI-归纳逻辑程序设计(ILP)

AI目录:sheng的学习笔记-AI目录-CSDN博客

规则学习(rule learning): sheng的学习笔记-AI-规则学习(rule learning)-CSDN博客

一阶规则学习: sheng的学习笔记-AI-FOIL(First-Order Inductive Learner)-CSDN博客

基础知识

归纳逻辑程序设计(Inductive Logic Programming,简称ILP)在一阶规则学习中引入了函数和逻辑表达式嵌套。

  • 一方面,这使得机器学习系统具备了更为强大的表达能力;
  • 另一方面,ILP可看作用机器学习技术来解决基于背景知识的逻辑程序(logic program)归纳,其学得的“规则”可被PROLOG等逻辑程序设计语言直接使用。

但是,函数和逻辑表达式嵌套的引入也带来了计算上的巨大挑战

最小一般泛化

什么是最小一般泛化

归纳逻辑程序设计采用自底向上的规则生成策略,直接将一个或多个正例所对应的具体事实(grounded fact)作为初始规则,再对规则逐步进行泛化以增加其对样例的覆盖率。

泛化操作可以是将规则中的常量替换为逻辑变量,也可以是删除规则体中的某个文字。

 为简便起见,暂且假定“更好(X,Y)”仅决定于(X,Y)取值相同的关系,正例  “更好(1,10)”和“更好(1,15)”所对应的初始规则分别为

  • 更好(1,10)←根蒂更蜷(1,10)∧声音更沉(1,10)∧脐部更凹(1,10)∧触感更硬(1,10);
  • 更好(1,15)←根蒂更蜷(1,15)∧脐部更凹(1,15)∧触感更硬(1,15)。

这两条规则只对应了特殊的关系数据样例,难以具有泛化能力。因此,我们希望把这样的“特殊”规则转变为更“一般”的规则。为达到这个目的,最基础的技术是“最小一般泛化”​(Least General Generalization,简称LGG)​

示例

给定一阶公式r1和r2,

  1. LGG先找出涉及相同谓词的文字,
  2. 对文字中每个位置的常量逐一进行考察,
  3. 若常量在两个文字中相同则保持不变,记为LGG(t,t)=t;否则将它们替换为同一个新变量,并将该替换应用于公式的所有其他位置:假定这两个不同的常量分别为s,t,新变量为V,则记为LGG(s,t)=V,并在以后所有出现LGG(s,t)的位置用V来代替。

例如对上面例子中的两条规则,先比较“更好(1,10)”和“更好(1,15)”​,由于文字中常量“10”≠“15”​,因此将它们都替换为Y,并在r1和r2中将其余位置上成对出现的“10”和“15”都替换为Y,得到

  • 更好(1,Y)←根蒂更蜷(1,Y)∧声音更沉(1,10)∧脐部更凹(1,Y)∧触感更硬(1,Y);
  • 更好(1,Y)←根蒂更蜷(1,Y)∧脐部更凹(1,Y)∧触感更硬(1,Y)。

LGG忽略r1和r2中不含共同谓词的文字,因为若LGG包含某条公式所没有的谓词,则LGG无法特化为那条公式。在这个例子中需忽略“声音更沉(1,10)”这个文字,得到

更好(1,Y)←根蒂更蜷(1,Y)∧脐部更凹(1,Y)∧触感更硬(1,Y)。(15.4)

式(15.4)仅能判断瓜1是否比其他瓜更好。为了提升其泛化能力,假定另有一条关于瓜2的初始规则

更好(2,10)←颜色更深(2,10)∧根蒂更蜷(2,10)∧敲声更沉(2,10)∧脐部更凹(2,10)∧触感更硬(2,10),(15.5)

可求取式(15.4)与(15.5)的LGG。

注意到文字“更好(2,10)”和“更好(1,Y)”的对应位置同时出现了常量“10”与变量“Y”​,于是可令LGG(10,Y)=Y2,并将所有“10”与“Y”成对出现的位置均替换为Y2.最后,令LGG(2,1)=X并删去谓词不同的文字,就得到如下这条不包含常量的一般规则:

更好(X,Y2)←根蒂更蜷(X,Y2)∧脐部更凹(X,Y2)∧触感更硬(X,Y2)。

上面的例子中仅考虑了肯定文字,未使用“¬”符号。实际上LGG还能进行更复杂的泛化操作。

在归纳逻辑程序设计中,获得LGG之后,可将其看作单条规则加入规则集,最后再用前几节介绍的技术进一步优化,例如对规则集进行后剪枝等。

逆归结

什么是逆归结

在逻辑学中,​“演绎”(deduction)与“归纳”(induction)是人类认识世界的两种基本方式。

演绎是从一般性规律出发来探讨具体事物,而归纳则是从个别事物出发概括出一般性规律。一般数学定理证明是演绎实践的代表,而机器学习显然是属于归纳的范畴。

一阶谓词演算中的演绎推理能用一条十分简洁的规则描述,这就是数理逻辑中著名的归结原理(resolution principle)[Robinson,1965]​。根据归纳推理提出了“逆归结”(inverse resolution),这对归纳逻辑程序设计的发展起到了重要作用。

基于归结原理,我们可将貌似复杂的逻辑规则与背景知识联系起来化繁为简;而基于逆归结,我们可基于背景知识来发明新的概念和关系

示例

 

归结、逆归结都能容易地扩展为一阶逻辑形式;与命题逻辑的主要不同之处是,一阶逻辑的归结、逆归结通常需进行合一置换操作。

 逆归结的一大特点是能自动发明新谓词,这些新谓词可能对应于样例属性和背景知识中不存在的新知识,对知识发现与精化有重要意义。但自动发明的新谓词究竟对应于什么语义,例如“q”意味着“更新鲜”​?​“更甜”​?​“更多日晒”​?……这只能通过使用者对任务领域的进一步理解才能明确

上面的例子中我们只介绍了如何基于两条规则进行逆归结。在现实任务中,ILP系统通常先自底向上生成一组规则,然后再结合最小一般泛化与逆归结做进一步学习

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/427398.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是 SSL 代理?

您可能已经对代理有所了解,例如移动代理、住宅代理和数据中心代理之间的区别。但是 SSL 代理到底是什么?它与其他类型的代理相比有何不同? 让我们分析一下,看看 SSL 代理有何特殊之处。 1.什么是 SSL/HTTPS 代理? SS…

《高等代数》分块矩阵(应用)

说明:此文章用于本人复习巩固,如果也能帮助到大家那就更加有意义了。 注:1)利用分块矩阵的相关公式进行证明

[PTA]7-5 求组合数

[PTA]7-5 求组合数 输入格式: 输入在一行中给出两个正整数m和n&#xff08;m≤n&#xff09;&#xff0c;以空格分隔。 输出格式: 按照格式“result 组合数计算结果”输出。题目保证结果在double类型范围内。 输入样例: 2 7 输出样例: result 21 代码 #include<stdio…

【Linux进程控制】进程程序替换

目录 进程程序替换 替换函数 看现象 替换原理 多进程替换 exec*函数使用&#xff08;部分&#xff09;&#xff0c;并且认识函数参数的含义 1.execl 2.execv 3.execvp 4.execvpe execlp 和execlpe 替换函数总结 进程程序替换 替换函数 有六种以exec开头的函数&am…

unity将多层嵌套的结构体与json字符串相互转化

定义多个结构体&#xff0c;将结构体内容输入到最终的JObject中&#xff0c;然后将其转为字符串打印出来&#xff0c;即可。 代码内容如下&#xff1a; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using UnityEngine;public class Test : MonoBehaviour {private Ap…

3.接口测试的基础/接口关联(Jmeter工具/场景一:我一个人负责所有的接口,项目规模不大)

一、Jmeter接口测试实战 1.场景一&#xff1a;我一个人负责所有的接口&#xff1a;项目规模不大 http:80 https:443 接口文档一般是开发给的&#xff0c;如果没有那就需要抓包。 请求默认值&#xff1a; 2.请求&#xff1a; 请求方式:get,post 请求路径 请求参数 查询字符串参数…

二分算法——优选算法

个人主页&#xff1a;敲上瘾-CSDN博客 个人专栏&#xff1a;游戏、数据结构、c语言基础、c学习、算法 本章我们来学习的是二分查找算法&#xff0c;二分算法的应用非常广泛&#xff0c;不仅限于数组查找&#xff0c;还可以用于解决各种搜索问题、查找极值问题等。在数据结构和算…

web - JavaScript

JavaScript 1&#xff0c;JavaScript简介 JavaScript 是一门跨平台、面向对象的脚本语言&#xff0c;而Java语言也是跨平台的、面向对象的语言&#xff0c;只不过Java是编译语言&#xff0c;是需要编译成字节码文件才能运行的&#xff1b;JavaScript是脚本语言&#xff0c;不…

【Java版】云HIS系统源码

云HIS系统介绍 云HIS系统是一款满足基层医疗机构各类业务需要的健康云产品。该产品能帮助基层医疗机构完成日常各类业务&#xff0c;提供病患挂号支持、病患问诊、电子病历、开药发药、会员管理、统计查询、医生站和护士站等一系列常规功能&#xff0c;还能与公卫、PACS等各类…

蓝星多面体foc旋钮键盘复刻问题详解

介绍&#xff1a; 本教程是针对立创开源项目 承载我所有幻想的键盘 - 立创开源硬件平台 作者是 蓝星多面体 这里我总结一下我复刻过程中的一些问题 一 <<编译环境怎么搭建&#xff1f;>> 第一步 安装vscode 下载vscode &#xff08;可以在各大应用平台…

【HarmonyOS 】编译报错:Install Failed: error: failed to install bundle

此问题是由于支付宝sdk兼容性造成的&#xff0c;目前只能删除支付宝sdk依赖&#xff0c;如下图所示操作&#xff0c;删除后需要点右上角的 Sync Now&#xff0c;并等待 Sync 结束 删除后还需要点右上角的 Sync Now&#xff0c;并等待 Sync 结束 uniapp解决方案&#xff1a; htt…

mysql5.7小版本升级

最近因为mysql漏洞问题需要升级版本 目标&#xff1a;5.7.17升级到最新的5.7.44 提前准备&#xff1a;必须 MySQL :: Download MySQL Community Server (Archived Versions) 下载最新的5.7版本5.7.44&#xff0c;下载后&#xff0c;解压备用 ​ 方案1&#xff1a;卸载原有…

[C语言]第九节 函数一基础知识到高级技巧的全景探索

目录 9.1 函数的概念 9.2 库函数 9.2.1 标准库与库函数 示例&#xff1a;常见库函数 9.2.2 标准库与头文件的关系 参考资料和学习工具 如何使用库函数 ​编辑 9.3 ⾃定义函数 9.3.1 函数的语法形式 9.3.2函数的举例 9.4 实参与形参 9.4.1 什么是实参&#xff1f; 9…

求Huffman树及其matlab程序详解

#################本文为学习《图论算法及其MATLAB实现》的学习笔记################# 算法用途 求Haffman树 算法思想 根据定理4.17,给出求Huffman树的算法步骤如下: ①对给出的所要求的叶子顶点的权进行从小到大排序,写出的权重向量 ; ②根据定理4.17,写出兄弟的权重分别为…

《Pyramid Vision Transformer》论文笔记

原文笔记 What 为了解决VIT在视觉任务上的局限性并且探究Transformer模型在视觉任务上的应用&#xff0c;这项工作提出了一种纯 Transformer 主干&#xff0c;称为 Pyramid Vision Transformer (PVT)&#xff0c;它可以作为 CNN 主干在许多下游任务中的替代方案&#xff0c;包…

全网最适合入门的面向对象编程教程:50 Python函数方法与接口-接口和抽象基类

全网最适合入门的面向对象编程教程&#xff1a;50 Python 函数方法与接口-接口和抽象基类 摘要&#xff1a; 在 Python 中&#xff0c;接口和抽象基类&#xff08;Abstract Base Classes, ABCs&#xff09;都用于定义类的结构和强制子类实现特定的方法&#xff0c;Python 没有…

基于ExtendSim的 电子制造 仿真模型

说明&#xff1a; 此模型表示电路板制造设施。该过程有4个步骤&#xff1a; *焊料制备 *组件放置 *烤箱 *检查 详情&#xff1a; *烤箱的容量为10张卡&#xff0c;但如果烤箱循环开始时仅能处理5张卡&#xff0c;则最多只能处理5张。 *如果检查员发现问题&#xff0c;他们将修理…

【STM32系统】基于STM32设计的SD卡数据读取与上位机显示系统(SDIO接口驱动、雷龙SD卡)——文末资料下载

基于STM32设计的SD卡数据读取与上位机显示系统 演示视频&#xff1a; 基于STM32设计的SD卡数据读取与上位机显示系统 简介&#xff1a;本研究的主要目的是基于STM32F103微控制器&#xff0c;设计一个能够读取SD卡数据并显示到上位机的系统。SD卡的数据扇区读取不仅是为了验证存…

考研数据结构——C语言实现无向图邻接矩阵

首先&#xff0c;定义了一些基本的数据结构和常量&#xff1a; VertexType 和 EdgeType 分别用于表示图中的顶点和边的权重。MAXVEX 定义了图中最大顶点数为100。INFINITY 用于表示顶点之间没有直接的边相连&#xff0c;这里用65535作为无穷大的表示。 定义了一个图的结构体 MG…

react + antDesign封装图片预览组件(支持多张图片)

需求场景&#xff1a;最近在开发后台系统时经常遇到图片预览问题&#xff0c;如果一个一个的引用antDesign的图片预览组件就有点繁琐了&#xff0c;于是在antDesign图片预览组件的基础上二次封装了一下&#xff0c;避免重复无用代码的出现 效果 公共预览组件代码 import React…