Informed_machine_learning

Informed Machine Learning 逐篇精读、逻辑关系与渐进式复现路线

0. 这份文档怎么用

这份文档不是简单摘要,而是把当前文件夹里的核心论文整理成一条可执行的学习链。目标有四个:

  1. 让你知道每篇论文到底在解决什么问题。
  2. 让你知道它和前后论文的逻辑关系。
  3. 让你知道每篇论文最值得看的图、公式和关键词。
  4. 让你知道后续可以怎么做最小复现、标准复现和延伸复现。

阅读建议:

说明:


1. 先把整套材料看成两条主线

这批论文不是散的,实际上可以分成两条主线,再在后面汇合。

1.1 逻辑约束主线

这条线关心的问题是:

已知一些规则、逻辑、结构约束,怎样把它们注入神经网络,而不是只靠数据硬学?

对应论文:

  1. Survey
  2. Logic-net
  3. Semantic Loss
  4. DL2

这条线的推进顺序是:

1.2 Granular / Uncertainty / Knowledge 主线

这条线关心的问题是:

现实中的知识往往不是严格逻辑公式,而是模糊的、区间式的、带抽象层次的,那么如何把这种知识和数据一起建模?

对应论文:

  1. Survey
  2. Granular Computing for Machine Learning
  3. From Fuzzy Rule-Based Models to Granular Models
  4. Informed Machine Learning with Knowledge Landmarks

这条线的推进顺序是:

1.3 旁支:Rough Set / Attribute Reduction

rough_set_attribute_reduction_2025_asoc.pdf 对应的 rough set 论文不属于神经网络逻辑约束主线,但它和下面这些主题是相关的:

所以它更像一篇“相关方法论补充”,适合放在主线读完之后再看。


2. 论文之间的逻辑关系,按“上一篇解决了什么,下一篇为什么还需要存在”来理解

2.1 从总纲到逻辑注入

Survey -> Logic-net

Logic-net -> Semantic Loss

Semantic Loss -> DL2

2.2 从逻辑有效性到可信表达

DL2 -> Granular Computing for ML

Granular Computing -> Fuzzy Rule-Based to Granular Models

Fuzzy Rule-Based -> Knowledge Landmarks

2.3 Rough Set 旁支怎么放

Granular Computing / Knowledge Landmarks -> Rough Set


3. 总览表:每篇论文应该怎样定位

顺序 论文 核心问题 知识表示 注入位置 当前仓库资源 推荐动作
1 Survey informed ML 到底是什么 taxonomy 全流程 PDF, TXT 先建立地图
2 Logic-net 规则怎样进入 DNN soft logic / rule distillation 训练阶段 PDF, TXT 做最小 toy
3 Semantic Loss 逻辑如何直接变成 loss propositional logic 输出层 / loss PDF, TXT 做 exactly-one 复现
4 DL2 如何把逻辑做成系统 declarative constraints 训练 + 查询 PDF, TXT, Code 先读代码再做 toy
5 Granular Computing for ML 为什么需要粒化表达 intervals / fuzzy / probabilistic granules 数据层 + 模型层 + 知识层 PDF, TXT 建立第二条主线
6 From Fuzzy Rule-Based Models to Granular Models 如何从数值规则模型升级到粒化模型 interval / fuzzy / probabilistic granules 模型输出层 PDF, TXT 做区间输出 toy
7 Knowledge Landmarks 局部数据 + 全局模糊知识如何联合建模 input-output granule landmarks 增强损失 regularizer PDF 很适合后续自己延展
8 Rough Set / Attribute Reduction 混合数据下不确定性度量和约简 KNN-neighbourhood rough set 预处理 / 约简 PDF, TXT 放在第二阶段

4. 逐篇精读

4.1 Informed Machine Learning: A Taxonomy and Survey of Integrating Prior Knowledge into Learning Systems

文件位置

这篇的角色

这篇是总纲,是地图,不是武器本身。

如果你没有先读它,后面每篇都会像孤立技巧;如果你先读了它,后面的论文都会自动落到一个清楚的坐标系里。

Survey Figure 1

截图解析:这里最值得看的不是正文,而是 Figure 1。它把 informed machine learning 和 conventional machine learning 的差别直接画出来了。重点是“Prior Knowledge”来自独立信息源,并被显式地集成到学习流程里。

4.1.1 它到底在解决什么问题

这篇论文想回答的是:

当数据不够、规则不能违反、或者模型需要更可解释时,单纯的数据驱动学习不够,那么如何系统地讨论“知识进入机器学习”?

它指出:

4.1.2 最核心的结构:三维 taxonomy

这篇最重要的不是某个具体案例,而是 taxonomy 的三个维度:

  1. 知识来源是什么
    • 专家知识
    • 科学知识
    • 世界知识
  2. 知识如何表示
    • 逻辑规则
    • 代数方程
    • 模拟结果
    • 图结构
    • 其他形式化表示
  3. 知识注入到哪里
    • 数据层
    • 模型结构
    • 训练目标 / loss
    • 输出后处理

4.1.3 这篇论文真正帮你建立了什么能力

它帮你建立的,不是一个算法,而是一种“分类和比较论文”的能力。

读完后你应该能做这件事:

这会直接决定你后面和博导、师兄讨论时是否显得条理清楚。

4.1.4 和后续论文的关系

这篇论文是后面所有论文的共同母图。

4.1.5 你读这篇时最该盯住的内容

4.1.6 潜在复现

这篇不适合直接做算法复现,但非常适合做“结构复现”:

最小复现

标准复现

更高价值的延展


4.2 Harnessing Deep Neural Networks with Logic Rules

文件位置

这篇的角色

这是逻辑规则进入神经网络最直观的入口。

如果你只想先抓到“规则注入”的第一感觉,那这篇比 Semantic Loss 和 DL2 都更容易上手。

Logic Net Figure 1

*截图解析:这页最重要。图中最关键的关系是“logic rules -> teacher q(y x) -> student p(y x)”。teacher 不是最终模型,而是把规则转成一个更守规则的中间监督信号。*

4.2.1 它到底在解决什么问题

这篇关心的是:

已有的神经网络很灵活,但不容易显式吸收高层规则;那么能否不改网络主体,而把规则通过训练过程注进去?

它的回答不是“把规则硬编码到网络结构里”,而是:

4.2.2 核心方法,必须看懂的三层逻辑

第一层:student 网络先给出当前预测。

第二层:利用 posterior regularization,把逻辑规则投影到一个更守规则的 teacher 分布上。

第三层:student 去模仿这个 teacher,同时也继续拟合原始标签。

可以把它压缩成下面这个训练思想:

L = (1 - pi) * L_label + pi * L_teacher

这里最重要的不是公式本身,而是:

4.2.3 这篇论文最有价值的直觉

它真正教你的不是一个公式,而是一个思想:

规则不一定要直接写到网络里,也可以先变成一个更“守规矩”的老师,再由学生网络吸收。

这对初学者很重要,因为它把“规则注入”从抽象概念,变成一个很能想象的训练过程。

4.2.4 实验上它想说明什么

论文里把这个框架用在:

核心结论不是某个具体百分点,而是:

4.2.5 它和前后论文的关系

相对 Survey

相对 Semantic Loss

相对 DL2

4.2.6 这篇的局限

4.2.7 潜在复现

最小复现

做一个二维 toy classification:

标准复现

仓库现状

汇报价值

这篇很适合拿来向导师和师兄解释:


4.3 A Semantic Loss Function for Deep Learning with Symbolic Knowledge

文件位置

这篇的角色

这篇是逻辑约束路线里最“干净”的一篇。

如果说 Logic-net 教你“规则可以通过老师传给学生”,那这篇教你的就是:

规则本身可以直接定义成一个损失函数。

Semantic Loss Figure 1

截图解析:图里列出了三类典型输出结构:one-hot、preference ranking、path in graph。作者想说明 semantic loss 不是只管简单分类,它本质上是在约束输出空间的结构。

4.3.1 它到底在解决什么问题

它要解决的核心问题是:

如果我们已经知道输出必须满足某个逻辑结构,那么能不能直接度量“当前输出到底离这个结构有多远”?

作者的回答是:

4.3.2 最核心的数学直觉

它的核心式子可以记成:

L_s(alpha, p) = - log [满足 alpha 的所有赋值的概率质量之和]

直观理解:

这篇最漂亮的地方就在这里:

4.3.3 这篇真正比 Logic-net 多做了什么

Logic-net 里,规则是间接通过 teacher 进入 student。

Semantic Loss 里,规则直接变成 loss。

所以两篇最大的区别是:

4.3.4 为什么这篇很重要

因为它教你建立一个很关键的思维方式:

如果知识能定义“哪些输出结构是合法的”,那它就有机会转成 differentiable objective。

这件事会直接帮你理解后面的 DL2。

4.3.5 实验层面它想证明什么

论文里不只是讨论简单分类,还讨论了:

这说明它的目标不是让分类多一点点 accuracy,而是让模型学会尊重结构化输出空间。

4.3.6 它和前后论文的关系

相对 Logic-net

相对 DL2

4.3.7 它的局限

4.3.8 潜在复现

最小复现

从 exactly-one constraint 开始最合适:

标准复现

更进一步的延展

仓库现状


4.4 DL2: Training and Querying Neural Networks with Logic

文件位置

这篇的角色

这篇是逻辑约束路线里最适合你进一步接代码的论文。

因为它不只是提出一个 loss,而是把“约束 + 神经网络”做成了一个系统。

DL2 querying examples

截图解析:这页展示了 DL2 的 querying 视角。它不只是训练模型满足约束,还能反过来问“什么输入会让两个网络输出不同”、“什么输入会激活某种行为”。这就是它比前两篇更像系统而不是单点方法的原因。

4.4.1 它到底在解决什么问题

它想解决两个问题:

  1. 如何用逻辑约束训练神经网络?
  2. 如何查询神经网络,寻找满足某些逻辑条件的输入?

这个“querying”很关键,因为它把逻辑从训练阶段扩展到了模型分析阶段。

4.4.2 DL2 最核心的思想

DL2 把逻辑约束翻译成一个非负损失,并希望它满足两个关键性质:

  1. 当且仅当约束满足时,loss 为 0
  2. loss 几乎处处可微

这两个性质一旦成立,就能用标准梯度方法训练或搜索。

你可以把它理解为:

先用逻辑写约束,再自动编译成可以优化的目标。

4.4.3 这篇和 Semantic Loss 的本质差异

Semantic Loss 更像“为某类输出逻辑约束定义一个漂亮的 loss”。

DL2 更像“给你一个约束语言,让你可以写很多种逻辑条件,然后系统自动把它们转成 loss”。

所以 DL2 的重点是:

4.4.4 为什么它对你特别重要

因为当前仓库里已经有对应代码:

这意味着你不必停留在“看懂论文”,而可以继续往:

这条路径对后面给导师、师兄展示代码尤其有价值。

4.4.5 读这篇时必须抓住的三个点

  1. 约束语言
    • 这是它的核心卖点之一
    • 你不是手写一个临时惩罚,而是在声明一个逻辑条件
  2. 训练与查询双重用途
    • 训练:让模型更满足知识
    • 查询:探索模型输入-输出行为
  3. 系统化而不是单公式
    • 这篇最重要的不是某一个式子
    • 而是整个设计范式

4.4.6 实验层面它想说明什么

论文覆盖了:

这说明作者不是把 DL2 限定为某个窄场景,而是想把它做成一个广义框架。

4.4.7 它和前后论文的关系

相对 Semantic Loss

相对 Granular 方向

4.4.8 潜在复现

最小复现

先不要碰完整论文实验,先做这三步:

  1. 读本地 README
  2. 跑一个最小 query case
  3. 再做一个最小 training constraint case

标准复现

更高价值的延展

难点

推荐顺序

先 toy,再读 dl2lib,最后再看是否需要跑原论文例子。


4.5 Granular Computing for Machine Learning: Pursuing New Development Horizons

文件位置

这篇的角色

这是第二条主线的总纲。

如果说前面三篇主要在问“模型有没有遵守规则”,这篇开始问的是:

模型给出的结果是否表达了合适的抽象层次、可信度和知识-数据协同关系?

Granular Computing abstract page

截图解析:这页的价值在摘要和导言。它明确把 granular computing 与隐私、安全、解释性、可信度、可持续计算联系起来,不再只盯着 accuracy。它实际上是在给后面的 granular / knowledge-data 方向搭理论舞台。

4.5.1 它到底在解决什么问题

这篇提出的核心判断是:

机器学习模型输出一个数值,不代表这个数值就值得信任。

现实中的很多问题需要的不是一个“尖锐的点预测”,而是:

4.5.2 这篇最重要的概念

  1. information granule
    • 可以是区间、模糊集、rough set、概率粒等
    • 它本质上是一种抽象表达
  2. information granularity
    • 不同问题需要不同粒度
    • 太细和太粗都可能不合适
  3. principle of justifiable granularity
    • 粒度不是越大越好或越小越好
    • 要在覆盖性和特异性之间平衡
  4. granular embedding
    • 把粒化知识、粒化表示嵌入到机器学习模型中

4.5.3 为什么这篇和前面逻辑论文不同

前面三篇的关键词是:

这篇的关键词则变成:

所以它不是逻辑线的替代,而是把 informed ML 从“约束满足”扩到“可信表达”。

4.5.4 这篇最值得抓住的收获

读完这篇你应该形成的判断是:

4.5.5 和后续论文的关系

相对 Fuzzy Rule-Based -> Granular

相对 Knowledge Landmarks

4.5.6 潜在复现

最小复现

做一个简单回归实验:

标准复现

更高价值的延展

难点


4.6 From Fuzzy Rule-Based Models to Granular Models

文件位置

这篇的角色

这是 granular 主线里最“可落到模型”的一篇。

它不是只说理念,而是在告诉你:

怎样把原来只输出数值的规则模型,升级为输出区间、模糊集或概率粒的 granular model。

From numeric to granular modeling

截图解析:Figure 1 很关键。它把“numeric TS model -> granular rule-based model”的升级路线画得很清楚:一条路走向 interval / fuzzy granulation,另一条路走向 probabilistic granulation。你可以把它理解为从点值输出走向带可信结构的输出。

4.6.1 它到底在解决什么问题

作者的出发点非常直接:

一个数值输出看起来很精确,但这种精确往往是幻觉。

传统 Takagi-Sugeno 规则模型输出的是数值。

问题是:

于是作者提出:

4.6.2 这篇最核心的概念

  1. type elevation
    • 从 numeric output 升级到 granular output
  2. G-TS / P-TS
    • granular Takagi-Sugeno
    • probabilistic Takagi-Sugeno
  3. justifiable granularity
    • 通过 coverage 和 specificity 平衡,决定 granule 应该多宽、多模糊
  4. granular equivalence
    • 讨论不同类型信息粒之间怎样比较、转换、等价

4.6.3 它和上一篇的关系

上一篇问的是:

这一篇回答的是:

所以这篇是“思想 -> 模型化”的关键一步。

4.6.4 这篇对你最有价值的地方

它会帮你建立一个很实用的研究视角:

预测不一定只能是点值。输出形式本身也可以被设计。

这对后面做自己的实验很重要,因为你不再只盯着“怎么提高准确率”,而会开始考虑:

4.6.5 实验层面它在说明什么

论文用 synthetic 和公开数据说明:

4.6.6 和后续论文的关系

相对 Knowledge Landmarks

4.6.7 潜在复现

最小复现

做一个简单局部加权回归模型:

标准复现

更高价值的延展

难点


4.7 Informed Machine Learning with Knowledge Landmarks

文件位置

这篇的角色

这是当前材料里最值得你后期重点盯住的一篇。

因为它不像传统 physics-informed ML 那样要求你必须有严格方程,而是允许:

这很接近很多真实科研场景。

Knowledge Landmarks page 2

截图解析:这页同时出现了 Figure 1 和增强损失的表达。Figure 1 说明知识 landmarks 覆盖整个输入空间,而数据只覆盖局部区域。公式部分则说明训练目标是“数据项 + 知识 regularizer”的平衡。

4.7.1 它到底在解决什么问题

它瞄准的是一个非常真实的问题:

现实里我们常常只有局部数值数据,但专家又能给出一些全局行为范围、趋势、区域性规律。怎样把这种知识系统地用起来?

传统数据驱动模型的问题是:

而传统 physics-informed ML 又常常要求:

很多实际问题不满足这些条件。

Knowledge Landmarks 的思路是:

4.7.2 这篇为什么很有启发性

它表达了一个很重要的判断:

知识不一定是方程,也不一定是硬逻辑。它也可以是“某类输入区域大概对应某类输出范围”的粒化知识。

这一步很关键,因为它把 informed ML 从“严格规则注入”推进到“模糊但结构化的知识注入”。

4.7.3 这篇和前面两条线是怎么汇合的

它同时继承了两条主线:

来自 Survey / informed ML 主线

来自 Granular 主线

所以这篇可以看成:

informed ML + granular knowledge 表达 的汇合点

4.7.4 这篇最值得抓住的结构

  1. 局部数据
    • 数值精确
    • 覆盖范围有限
  2. 全局知识 landmarks
    • 更抽象
    • 覆盖更广
    • 允许模糊与多场景变化
  3. 增强损失
    • 一部分拟合本地数据
    • 一部分约束模型遵守知识 landmarks

这对你后面做自己的 toy project 非常友好,因为结构清楚、容易人为构造。

4.7.5 实验层面它想说明什么

论文的目标不是追逐通用 benchmark,而是说明:

这和你未来自己做研究的思路是非常接近的。

4.7.6 它和 rough set 的关系

它们不在同一条直接链上,但有共鸣:

不同的是:

4.7.7 潜在复现

最小复现

做一个 1D 或 2D toy regression:

标准复现

更高价值的延展

为什么它适合拿给导师/师兄看


4.8 Uncertainty Measurement for Hybrid Data Using KNN-Neighbourhood Rough Set Model: Application to Attribute Reduction Based on Overlap Degree

文件位置

这篇的角色

这篇不是神经网络逻辑约束主线上的核心论文,但它和“粒化、不确定性、属性约简”这条补充路线高度相关。

如果你的目标是先建立 informed ML 主线,它应该放在后面读;如果你未来的方向更靠近粗糙集、混合数据、属性选择,它的价值会更高。

Rough set paper page 2

截图解析:这页最重要的是作者对 neighbourhood rough set 局限的分析,以及为什么要引入 KNN 机制。它实际上是在解决传统 neighbourhood 关系不能很好区分边界对象和孤立对象的问题。

4.8.1 它到底在解决什么问题

核心问题是:

在混合数据系统中,怎样更合理地度量不确定性,并据此做属性约简?

作者指出:

于是作者引入:

4.8.2 这篇最该抓住的点

  1. 它不是在做“知识注入神经网络”
  2. 它是在做“混合数据上的不确定性表达与属性约简”
  3. 它和 informed ML 的关系在于:
    • granules
    • uncertainty
    • 数据结构理解

4.8.3 它和主线的关系

它不应该插在 Logic-net 和 DL2 中间。

更合理的位置是:

4.8.4 什么时候值得你认真读它

4.8.5 潜在复现

最小复现

标准复现

更高价值的延展


5. 你应该怎样一篇篇地看:推荐阅读顺序

这里给出最适合当前阶段的阅读顺序。

第一轮:先搭框架,不追细节

  1. Survey
  2. Logic-net
  3. Semantic Loss
  4. DL2

第一轮目标不是完全吃透公式,而是建立下面三个判断:

第二轮:切换到 granular / knowledge-data 视角

  1. Granular Computing for ML
  2. From Fuzzy Rule-Based Models to Granular Models
  3. Knowledge Landmarks

第二轮要抓住:

第三轮:补充旁支

  1. Rough Set 论文

这时候再看它,就不会把它误当成主线核心,而会把它放在:


6. 最适合你的渐进式复现路线

这里不是“能不能复现”,而是“应该按什么顺序复现”。

6.1 第一阶段:只做最小 toy reproduction

目标:

推荐顺序:

  1. logic_net_toy
  2. semantic_loss_toy
  3. dl2_toy
  4. granular_interval_toy
  5. knowledge_landmarks_toy

6.1.1 logic_net_toy

最小目标:

你要学会的是:

代码入口:

6.1.2 semantic_loss_toy

最小目标:

你要学会的是:

这个 toy 在整条逻辑主线里的位置:

建议的最小实现:

当前目录结构:

repro/03_semantic_loss_toy/
  README.md
  notes.md
  config.py
  data.py
  constraints.py
  model.py
  trainer.py
  experiment.py
  run.py
  results/

每个文件建议负责什么:

当前实现状态:

潜在可复现点:

推荐实施顺序:

  1. 先把一个 4 类 toy 数据集上的纯监督 baseline 跑通。
  2. constraints.py 里只实现最简单的 exactly-one semantic loss。
  3. 先只在无标签样本上启用 semantic loss,确认 loss 曲线和指标都合理。
  4. 再增加错误约束对照,观察错误知识如何扭曲输出分布。
  5. 最后再补 sweep,例如扫 lambda_semantic、无标签比例、错误约束比例。

代码入口:

6.1.3 dl2_toy

最小目标:

你要学会的是:

这个 toy 在整条逻辑主线里的位置:

建议的最小实现:

建议目录(待创建):

repro/04_dl2_toy/
  README.md
  notes.md
  config.py
  toy_problem.py
  dl2_bridge.py
  run_query.py
  run_train.py
  experiment.py
  results/

每个文件建议负责什么:

本地代码参考入口:

待实现入口:

潜在可复现点:

推荐实施顺序:

  1. 先把本地 DL2READMEtrainingquerying 三个入口读通。
  2. 只挑一个最简单的 toy 约束,先做 query,不要先碰完整训练。
  3. 把 query 的输入、约束表达、输出解释都自己讲清楚。
  4. 再补一个最小 train 版本,把约束纳入训练循环。
  5. 最后再考虑要不要包装成和前两个 toy 一样的轻量项目结构。

6.1.4 granular_interval_toy

最小目标:

你要学会的是:

6.1.5 knowledge_landmarks_toy

最小目标:

你要学会的是:

代码入口:

6.1.6 当前已落地 toy 的读代码顺序总导航

如果你是第一次系统看代码,推荐总顺序:

  1. logic_net_toy
  2. semantic_loss_toy
  3. knowledge_landmarks_toy

这样排的原因是:

如果你只想先抓每个 toy 的主干,不想一上来读所有文件,建议这样读:

logic_net_toy

semantic_loss_toy

knowledge_landmarks_toy

6.2 第二阶段:做成能给导师和师兄看的项目

每个 toy 项目建议统一结构:

repro/
  01_logic_net_toy/
  02_knowledge_landmarks_toy/
  03_semantic_loss_toy/
  04_dl2_toy/
  05_granular_interval_toy/

每个目录建议固定有:

README.md
run.py
config.py
notes.md
results/

README.md 最少写清楚这 5 件事:

  1. 我复现的是原论文里的哪一个最小思想
  2. 我怎么简化的
  3. baseline 是什么
  4. 加知识以后 loss 多了什么
  5. 结果说明了什么

6.3 第三阶段:再考虑正式复现

只有当 toy 真的跑顺之后,再考虑:


7. 如果后面代码要发给博导和师兄,你从一开始就应该注意什么

7.1 他们最可能问你的问题

  1. 你这个实验到底对应原论文的哪一部分?
  2. 你是真的理解了方法,还是只是照着抄?
  3. 你的简化为什么合理?
  4. 你的 baseline 是什么?
  5. 知识注入到底起了什么作用?

所以你每个复现都必须能清楚回答:

7.2 真正能让人觉得你做得扎实的,不是代码量

而是:

7.3 哪几个项目最值得优先给别人看

优先级建议:

  1. knowledge_landmarks_toy
  2. dl2_toy
  3. logic_net_toy
  4. semantic_loss_toy
  5. granular_interval_toy

原因:


8. 最后把整套论文压成一句话

这组论文其实在讲同一件事的逐步升级:

先让机器学习不仅从数据里学,还从规则和知识里学;再让这些知识不只是精确逻辑,还可以是模糊的、粒化的、带可信范围的结构;最后把这些知识真正做成可训练、可解释、可扩展的学习系统。

如果后面继续推进,最自然的下一步不是再写一份摘要,而是直接动手做第一个项目:

这两个最适合把“看懂论文”变成“真正开始做研究”。