👉 逻辑张量网络 LTN 入门:从一阶逻辑到实值语义

0 阅读10分钟

1. 摘要 📝

神经符号多被预测为下一代人工智能的潜在形式之一,近年来开展神经符号领域的研究愈来愈热门。逻辑张量网络作为神经符号紧耦合的一种形式,其核心价值,可以用人类可理解的逻辑规则,去约束神经网络的黑盒学习过程,让模型不仅能拟合数据,还能符合业务常识和先验知识。本篇将介绍逻辑张量网络的基本概念,作为逻辑张量网络(Logic Tensor Networks, LTN)入门篇,在介绍的过程中,也会穿插一些本人的思考、问题及答案(T&Q&A)🔍。

2. 前言 🧩

LTN有很多涉及到标准一阶逻辑的基础内容,标准一阶逻辑是LTN的「理论母体」:LTN 的所有符号体系、语法规则、推理逻辑,都完全继承自标准一阶逻辑,只是把经典的二值离散语义,扩展成了连续、张量化、可微的实值语义。而在扩展的过程中,用到了模糊逻辑领域的模糊连接算子、模糊聚合算子。

2.1 什么是标准一阶逻辑? 🤔

标准一阶逻辑(First-Order Logic, 简称 FOL,也叫一阶谓词逻辑、经典一阶逻辑),是一套把人类的自然语言推理、数学证明转化为无歧义、可严格验证、可机械推导的符号规则的数学框架。

2.1.1 “一阶”是什么意思?

“一阶”决定了表达边界:逻辑中的量词(\forall“所有”、\exists“存在”)只能用来量化「个体变量」,不能量化「谓词、函数、集合」。

  • 一阶合法表达:x((x)呼吸(x))\forall x (\text{人}(x) \rightarrow \text{呼吸}(x))(所有的人都会呼吸),这里量词只量化了个体变量xx
  • 超一阶的二阶表达:Px(P(x)¬P(x))\forall P \forall x (P(x) \vee \neg P(x))(所有谓词都满足排中律),这里量词量化了谓词PP,超出了一阶逻辑的范围。

2.1.2 标准一阶逻辑的核心组成 📋

标准一阶逻辑的完整体系分为4部分:

① 符号系统 📝

分为两大类:

符号类型包含内容核心特点
逻辑符号连接词(¬,,,    \lnot, \land, \lor, \implies)、量词(,\forall, \exists含义是逻辑系统固定不变的,和具体任务、论域无关,是通用的推理规则
非逻辑符号常量、变量、函数、谓词含义是自定义、任务相关的,逻辑系统不预设它的意义,必须通过「解释/接地(Grounding)」赋予具体含义
② 语法规则 📏

定义了什么样的符号组合是「合法的逻辑公式(合式公式)」,比如P(x)P(x)是合法公式,xP\land xP不是合法公式。

③ 语义规则 🌐

给抽象的符号公式赋予真假含义,核心是「论域 + 解释函数」:

  • 论域:逻辑中所有个体的取值范围,是一个离散的集合(比如D={,,}\mathcal{D}=\{\text{猫}, \text{狗}, \text{人}\}D={1,2,3}\mathcal{D}=\{1, 2, 3\});
  • 解释函数:给每个非逻辑符号赋予论域里的具体含义——常量映射为论域里的个体,谓词映射为论域上的二值关系,函数映射为论域上的离散函数;
  • 最终结果:每个合法公式都会被赋予{真(1), 假(0)}两个绝对的真值,没有中间值。
④ 推理规则 🧑‍🏫

定义了从真前提推导出真结论的机械规则(比如经典的肯定前件MP规则:如果A    BA \implies B为真,且AA为真,那么BB一定为真),保证推理过程完全无歧义、可验证,甚至可以由计算机自动执行。

2.2 模糊逻辑 🌀

2.2.1 模糊逻辑算子

  1. 为什么需要模糊连接算子和模糊聚合算子?

FOL的连接词(¬\lnot否定、\land合取、\lor析取、    \implies蕴含)是二值的,只能处理{0,1}的真假。同样,FOL的量词(\forall全称量词“所有”、\exists存在量词“存在”)也是二值的:xP(x)\forall x P(x)只有“所有x都为真”才输出1,否则输出0;xP(x)\exists x P(x)只要有一个x为真就输出1,否则输出0。

这种情况无法处理LTN中[0,1][0,1]的连续真度,也无法求导。

  1. 两个算子的本质:
    • 模糊连接算子,是把二值逻辑的连接词,扩展成[0,1][0,1]区间上的连续、可微函数,用来计算复合逻辑公式的真度。

    • 有两个谓词的真度a=P(x)[0,1]a=P(x)\in[0,1]b=Q(y)[0,1]b=Q(y)\in[0,1],模糊连接算子就是告诉你,怎么计算¬a\lnot aaba \land baba \lor ba    ba \implies b的复合真度,而且计算过程是可微的。

    • 模糊聚合算子,是把二值量词扩展成[0,1][0,1]区间上的连续、可微聚合函数,用来计算带量词的逻辑公式的整体真度。

    • 有一个变量xx,它有NN个取值,对应NN个真度[p1,p2,...,pN][p_1, p_2, ..., p_N],模糊聚合算子就是告诉你,怎么把这NN个真度聚合成一个整体的真度,代表“xP(x)\forall x P(x)”或“xP(x)\exists x P(x)”的满足程度,而且聚合过程是可微的。


3. 基本概念 🔑

3.1 Real Logic(实逻辑)

实值逻辑定义了Grounding的概念(区别于传统逻辑学中的Grounding概念),其本质是将逻辑域(即常量、变量和逻辑符号)映射至实数域中的张量,或基于张量的运算操作。这类运算可以是数学函数,也可以是可学习的神经网络。换言之,接地映射(记为G\mathcal{G})是一种将逻辑符号映射为实值张量或张量运算的函数。

首先介绍逻辑张量网络(LTN)的语义,即LTN对逻辑符号(常量、变量、谓词、公式等)的“含义解释规则”,与标准一阶逻辑不同,LTN的域是通过实数域中的张量来进行具体化解释的。

为了强调LTN通过实数特征来对符号进行解释,我们使用术语Grounding1Grounding^1(中文翻译:接地)来代表这一过程,符号表示为:G\mathcal{G}G\mathcal{G}可以将一个实数张量与逻辑中的任意符号相关联,也可以把逻辑公式映射到[0,1][0,1]区间的实数值。Grounding可以理解为LTN的「语义解释函数」——它给每一个逻辑符号,都赋予一个实数张量 / 可微函数的实际含义;

T&Q&A:为什么必须把逻辑公式映射成实数值?

这是LTN能把逻辑规则和深度学习结合的核心前提:

  1. 逻辑公式是符号的组合:比如xy(P(x)Q(y)R(x,y))\forall x \forall y (P(x) \land Q(y) \rightarrow R(x,y)),这只是一串抽象的符号组合,本身不能被优化、不能参与梯度下降;
  2. 映射成实数值 = 给公式赋予可优化的语义:通过Grounding,把公式映射成[0,1][0,1]区间的实数值(真度),这个值代表「这个逻辑规则被满足的程度」——越接近1,代表规则越被满足;越接近0,代表规则被违反;
  3. 实现端到端训练:这个实数值是可微的,我们可以把「最大化公式的真度」作为优化目标,用梯度下降更新模型参数,最终让逻辑规则约束深度学习模型的学习过程。

Real Logic由非逻辑部分(符号)、逻辑连接词和量词组成:

  • 常量:表示某个张量空间中的个体 n1ndNRn1××nd\bigcup\limits_{n_1 \dots n_d \in \mathbb{N}^*} \mathbb{R}^{n_1 \times \dots \times n_d}(任意阶数的张量)。这些格式可以是预定义的(数据、数据点)或者是可学习的(嵌入向量)。

  • 变量:表示个体的序列。

  • 函数:可以是任何数学函数,即可以是预定义,也可以是可学习的。

    • 可以是无训练参数的特征变换、距离函数、回归函数

    • 也可以使用pytorch中的任意操作来定义,实现可训练的特征映射、目标拟合,参数可通过梯度下降优化。例如线性函数、深度神经网络

  • 谓词:表示从某个n元域映射到实数值区间[0,1][0,1]的数学函数「打分函数」,可以理解为真度(满足程度)。

    • 真度的理解可以放到实际任务中,例如,谓词可以是相似度度量,那么谓词的结果可以理解为相似程度。谓词也可以是分类器,那么谓词的结果可以理解为属于这个类别的置信度。
  • 连接词:(¬,,,    \lnot, \land, \lor, \implies)使用模糊连接算子来建模。

  • 量词:使用模糊聚合算子来定义。

T&Q&A:跟我们平时理解的常量、变量、函数、谓词,差别是什么?

平时我们理解的是「纯符号/纯数值的通用定义」,而LTN里的这四类概念,是为可微逻辑推理量身定制的、张量化、带严格语义绑定的特化版本。

四类概念核心差异汇总表:

核心概念日常通用定义(数学/编程/标准一阶逻辑)LTN 中的特化定义
常量固定的数值/对象,比如数学里的π\pi、编程里的a=3,只能是固定值,不可学习不仅可以是预定义的固定张量,还可以是可学习的嵌入向量(比如nn.Embedding的输出);是任意阶的实数张量,核心是「逻辑个体的张量化表示」,而非单纯的固定值
变量单个值的占位符,比如数学里的xRx \in \mathbb{R}、编程里的循环变量,一次只能代表一个值是一批个体的序列(Batch),对应论域里的一组样本,不是单个占位符;自带维度语义,会自动完成笛卡尔积配对,核心是「论域中一批个体的张量化表示」,用来做量词聚合、批量逻辑推理
函数任意输入到输出的映射,无类型约束,比如数学里的f(x)=x+1f(x)=x+1、编程里的任意自定义函数,输出可以是任意类型必须是张量空间到张量空间的可微映射,输入输出只能是实数张量;必须保留变量的维度语义(笛卡尔积结构不展平);核心是「逻辑项的可微特征变换」,输出的还是逻辑个体,而非真度
谓词标准一阶逻辑中定义的n元离散关系,输入n个个体,输出只有{0,1}二值真假,比如数学里的x>yx>y,只有“是/否”两种结果是n元张量到[0,1][0,1]区间的可微函数,输出的是连续的「真度」,而非二值真假;核心是「逻辑命题的可微满意度打分」,是连接逻辑规则和深度学习的核心桥梁

1^1:Grounding的理解,中文文献中翻译成接地,听着很拗口,其实可以理解成对一种转换关系的称呼,例如映射。本文直接使用原始的英文表述。


下一篇博客将结合代码和简单示例来讲解一下,常量、变量、函数、谓词四类非逻辑符号以及连接词和量词这两类逻辑符号的 Grounding 规则,明确其从抽象符号到实数张量空间的语义映射方式。

补充问答(Q&A) ❓

Q:LTN 中的 Grounding(接地)和传统逻辑学中的 Grounding 有什么本质区别?

A:两者核心差异在于「映射目标和用途不同」。传统逻辑学中的Grounding,是将抽象符号映射到「离散的论域个体」(比如把“猫”映射到现实中的猫,把谓词“可爱”映射到{0,1}二值关系),目的是给符号赋予“真假意义”,用于逻辑推理;而LTN中的Grounding,是将抽象符号映射到「实数域的张量或可微函数」(比如把“猫”映射到嵌入向量,把谓词“可爱”映射到[0,1]的真度函数),目的是让逻辑公式可微、可优化,实现逻辑规则与深度学习的结合。

Q:实逻辑(Real Logic)和标准一阶逻辑的核心区别是什么?

A:最核心的区别是「语义体系不同」,具体有3点:① 论域不同:标准一阶逻辑的论域是离散集合,实逻辑的论域是实数张量空间;② 真值范围不同:标准一阶逻辑是二值(0/1),实逻辑是连续真度([0,1]);③ 可微性不同:标准一阶逻辑的公式无导数,无法优化,实逻辑的公式通过模糊算子和Grounding映射,变成可微函数,可通过梯度下降优化。简单说,实逻辑是“可微化、张量化的一阶逻辑”,是LTN实现神经符号结合的核心基础。