技术解析 | 反绎学习 (Abductive Learning):如何让机器学会“猜”与“证”的循环?

技术解析 | 反绎学习 (Abductive Learning):如何让AI学会“猜想与验证”? 本文深入解析了反绎学习这一融合机器学习与逻辑推理的新范式。它让AI像侦探一样,在信息不全时运用背景知识进行“猜想与验证”,通过迭代修正提升推断的合理性与可解释性。文章以玛雅历法破译等案例,阐述了其核心模块与在符号识别、科学发现等领域的应用潜力,并探讨了知识表示、符号优化等工程挑战。 阅读详情

1. 从“猜谜游戏”到“反绎学习”:一个全新的AI范式

想象一下,你正在玩一个“看图猜成语”的游戏。你看到一张图片,上面画着一匹马,马背上站着一只猴子。你可能会猜“心猿意马”,但感觉不太对,因为图片里没有“心”的元素。然后你结合“马上有猴”这个谐音,再想想成语库,突然灵光一现——是“马上封侯”!这个过程,其实就暗含了“反绎学习”的核心思想:先根据不完整的观察(图片)提出一个初步的猜想(“心猿意马”),然后用已有的知识(成语库和常识)去验证这个猜想,发现矛盾后,再提出新的、更合理的假设(“马上封侯”),如此循环,直到找到一个最符合所有线索和知识的答案。

在传统的人工智能领域,机器学习和逻辑推理长期像是两个住在同一栋楼里却从不打招呼的邻居。机器学习,尤其是深度学习,就像一个天赋异禀但有点“死脑筋”的感知天才。你给它看一万张猫的图片,它就能学会认出猫,但它完全不知道“猫是一种哺乳动物”或者“猫会抓老鼠”这些常识。它的世界只有数据和概率。而逻辑推理则像一位严谨的哲学家,它精通“如果A等于B,B等于C,那么A等于C”这样的规则,但它无法从一张真实的照片里识别出A、B、C具体是什么。它活在符号和规则的世界里。

反绎学习,恰恰就是要打破这堵墙,让这两位“邻居”坐下来好好合作。它的目标不是让其中一个取代另一个,而是构建一个“猜想-验证”的协同循环。让机器学习模型(感知部分)大胆地“猜”(生成伪标签),然后让逻辑推理系统(知识部分)严格地“证”(用知识库约束进行验证)。如果猜得不对,逻辑系统会指出矛盾所在,并给出修正建议,机器学习模型再根据这个反馈去学习、调整,下一次猜得更准。这个循环往复的过程,就是“反绎”。它让AI不仅能看到(感知),还能理解(推理),最终做出符合常识和逻辑的判断。

我第一次接触到这个概念时,感觉它就像给AI装上了一套“自我质疑和修正”的机制。我们人类在学习新事物时,不也常常这样吗?看到一个模糊的字迹,先猜一个读音,发现放到句子里读不通,就再结合上下文猜另一个。反绎学习正是试图让机器模拟这种更接近人类本质的学习方式。接下来,我们就深入这个循环的内部,看看“猜”与“证”究竟是如何携手工作的。

2. 拆解ABL核心循环:“猜”与“证”如何共舞?

反绎学习的整个流程,可以看作一个精心设计的双人舞。一方是负责“猜想”的机器学习模型,另一方是负责“验证”的逻辑推理引擎。它们踩着“不一致性”的节拍,不断调整舞步,最终趋向和谐。

2.1 第一幕:初始猜想——机器学习的“直觉”输出

一切从一个不完美的开始。假设我们的任务是识别一些古老而模糊的手写数学方程图片,比如“1+1=2”。我们有一个初始的机器学习模型,它可能是一个简单的卷积神经网络,或者甚至只是一个预训练好的图像分类器。这个模型的任务是“看”图片序列中的每一个字符,然后输出它认为最可能的符号,比如“1”、“+”、“1”、“=”、“2”。

这里的关键在于,这些输出在ABL框架里被称为“伪标签”。为什么叫“伪”?因为它们只是模型的“直觉”或“猜测”,还没有经过任何逻辑规则的检验,很可能是有错误的。比如,模型可能把模糊的“+”号误认成了“-”,或者把破损的“2”看成了“7”。在传统监督学习中,我们会直接用人工标注的“真标签”去纠正它。但在ABL里,我们暂时没有或者只有很少的真标签,我们主要依靠的是另一件武器:领域知识。

举个例子,我曾在处理一些工业仪表盘识别项目时遇到过类似情况。摄像头拍到的数字可能因为反光、污渍而残缺不全。初期模型单独识别每个数字的错误率可能高达15%。如果直接把这些识别结果串起来当作读数,很可能会得到“压力值=999.9MPa”这种明显荒谬的结果(因为仪表量程只有1.6MPa)。这时,我们就需要引入“知识”——仪表的量程范围、数值变化的物理连续性等——来质疑和修正这些初步识别结果。ABL正是将这个过程形式化和自动化了。

2.2 第二幕:逻辑验证——知识库的“规则”审判

伪标签生成后,不会直接被采纳。它们会被转换成一种逻辑推理系统能理解的格式,即“伪事实”。比如,识别结果 [“1”, “+”, “1”, “=”, “2”] 被转换成一组逻辑断言:symbol(1, ‘1’), symbol(2, ‘+’), symbol(3, ‘1’), symbol(4, ‘=’), symbol(5, ‘2’)。

现在,轮到知识库登场了。知识库里存放着关于这个任务的硬性规则和常识。对于手写方程解密任务,知识库至少包含两类核心知识:

  1. 结构知识:一个合法的等式必须符合“数字 + 数字 = 数字”的语法结构。“1 + = 2”这样的序列在结构上就是非法的。
  2. 语义知识:等式必须成立。“1+1=3”在算术上是错误的。

逻辑推理引擎的工作,就是检查这些由伪标签转换来的“伪事实”,是否与知识库中的所有规则兼容。如果完全兼容,皆大欢喜,循环结束,这些伪标签被“扶正”。但绝大多数初期情况下,都会出现不一致。比如,模型可能输出了 [“1”, “+”, “1”, “=”, “1”],转换成的伪事实在结构上没问题,但 1+1=1 违反了算术规则。

这时,逻辑引擎不会简单地抛出一句“错了”。它会启动“反绎推理”机制。反绎推理可以理解为:给定观察到的结果(伪事实)和背景理论(知识库),去推断出哪些假设(对伪事实的修改)能够解释观察结果,并使其与理论一致。在上面的例子里,观察结果是 1+1=1,理论是“加法运算规则”。逻辑引擎会尝试提出最小化的修改假设:是不是第一个“1”其实是“0”?或者第二个“1”是“0”?或者结果“1”应该是“2”?它会系统地探索各种可能的修正方案。

2.3 第三幕:反馈与迭代——在修正中逼近真理

逻辑引擎生成一组或多组“修正假设”后(例如,假设第三个符号‘1’其实是‘0’,使得等式变为 1+0=1 从而成立),这些假设会被转换回机器学习模型能理解的格式——反绎标签。

这些反绎标签,可以看作是一种高质量的、经过逻辑“消毒”的监督信号。它们可能不完全正确(因为逻辑引擎的修正也可能只是多种可能之一),但它们比模型自己瞎猜的伪标签要可靠得多,因为它们至少符合领域规则。接下来,机器学习模型就用这些反绎标签作为新的训练数据,来更新自己的参数。目标是让模型下一次看到类似的模糊“1”或“0”时,能更准确地区分它们。

更新后的模型再次对训练数据(甚至同一批数据)进行预测,生成新一轮的伪标签。新的伪标签再次送入逻辑引擎验证……如此循环往复,形成一个闭合的“猜想-验证-修正-再学习”的环路。每一轮迭代,机器学习模型的感知能力都在向逻辑规则靠拢,而整个系统输出的结果,也变得越来越符合我们预设的领域知识。

我自己的体会是,这个过程很像带一个聪明的实习生。一开始他可能经常犯一些违背基本行业规范的错误(模型输出伪标签)。你不是直接告诉他答案,而是指出他的结果哪里不符合公司规定(逻辑验证),并引导他思考应该怎么改才能合规(反绎推理)。他根据你的反馈去学习、调整(模型更新),下次再做类似任务时,犯同样错误的几率就大大降低了。几轮下来,他不仅能完成任务,还能深刻理解背后的规则。ABL让机器经历的就是这样一个“在规则框架内学习”的过程。

3. 超越手写识别:ABL能解决哪些棘手问题?

ABL的威力远不止于破解手写方程。它的核心价值在于处理那些数据标注成本极高、甚至无法获取,但领域规则相对明确的任务。在这些场景下,传统监督学习束手无策,而无监督学习又太“散漫”,ABL提供了一条折中而高效的路径。

3.1 场景一:古文字与历史文献破译

这几乎是ABL的“诞生场景”之一,就像原始文章里提到的玛雅历法破译。考古学家面对大量残缺、变形的古代字符,每个字符的真实含义可能都是未知的。但人类拥有关于这种文字系统的“碎片化知识”:比如知道它是表意文字,某些字符组合代表日期或神祇,文本的排列有一定语法顺序等。

我们可以构建一个初始模型,也许基于字符的形状聚类,给未知字符分配一些临时的、基于视觉相似性的“伪标签”(比如,这个图案像太阳,先标为“日”)。同时,我们将已知的碎片化知识(如“王的名字通常出现在句首”、“表达日期的格式是年-月-日”)形式化为知识库。当模型把一篇铭文的伪标签序列输出后,逻辑引擎会检查:“如果这个字符是‘日’,它出现在这里是否符合历法语法?它和后面疑似数字的字符组合起来,是否构成一个合理的日期?”如果产生大量矛盾,逻辑引擎会提出假设:“或许第3个和第7个字符的标签互换一下,整篇文意就通顺了。”这些假设反馈给视觉模型,让它重新审视那几个字符的形态特征。通过多轮迭代,系统有可能逐渐“猜”出那些从未被标注过的字符的真实含义。

3.2 场景二:科学发现与假设生成

在生物信息学或材料科学中,我们常常面对海量的实验数据(如基因序列、分子光谱图像)和一个庞大的、但可能不完整的科学理论网络(如代谢通路、化学键合规则)。ABL可以在这里大显身手。

例如,在药物发现中,我们有一堆分子结构图(感知数据),以及关于哪些化学基团可能具有毒性或活性的知识(逻辑规则)。一个视觉模型可以先识别出分子图中的子结构(生成伪标签:“这里有个苯环,那里有个羟基”)。逻辑引擎则根据药物化学知识进行审查:“如果一个分子同时含有A基团和B基团,那么它很可能具有心脏毒性。你识别出的这个分子似乎同时含有两者,但毒性实验数据显示为阴性,这存在矛盾。”

此时,反绎推理可能会生成几种假设:1)视觉模型把某个类似A的基团认错了;2)知识库里的这条规则在此类分子上存在例外;3)实验数据本身有噪声。系统可以优先采纳假设1,反馈给视觉模型去重点复核相关区域;如果多轮迭代后矛盾依然存在,则可能将假设2或3提示给研究人员,从而推动科学知识的修正或实验的复现。这相当于让AI扮演了一个“提出科学假说”的角色。

3.3 场景三:复杂工业检测与诊断

在工厂的质量检测线上,产品缺陷可能形态各异,难以收集全所有缺陷样本进行标注。但产品的设计图纸、工艺规范、物理原理构成了强大的知识库。

假设检测电路板。一个深度学习模型扫描图像,标记出疑似异常的区域(伪标签:此处可能短路、此处可能虚焊)。逻辑引擎则调用电路设计图(知识库):标记为“短路”的这两个点,在设计上本就不该有连接;标记为“虚焊”的这个焊点,其负载电流很小,工艺上允许一定的焊接瑕疵。于是,逻辑引擎会质疑第一个“短路”伪标签的可能性更高,而第二个“虚焊”伪标签可能是个误报。它将“重点复查疑似短路点”的反馈给视觉模型。模型在下一次检测中,就会对“短路”这类违背设计规则的异常更加敏感。这样,系统无需见过所有类型的短路样本,就能依靠“设计规则”这根准绳,快速提升对严重缺陷的检出率。

从这些场景可以看出,ABL特别适合做“规则约束下的模式发现”。它不要求一开始就有完美数据,而是允许模型在“犯错-被纠正”的循环中,利用规则知识作为导航仪,逐渐摸索到正确的模式。这大大降低了对大量标注数据的依赖,是通向“小样本学习”甚至“零样本学习”的一条重要路径。

4. 实战指南:如何构建你的第一个ABL系统?

理论说了这么多,是不是觉得有点抽象?我们来点实际的。虽然完整的工业级ABL系统涉及复杂的符号推理引擎(如Prolog)和机器学习框架的深度集成,但我们可以用一个高度简化的Python示例,来亲手搭建一个ABL的“玩具”版本,感受其核心循环。我们的任务还是经典的“手写算式验证”,但进行极大简化。

4.1 环境与问题设定

假设我们有一个非常简单的“知识库”:一个有效的等式必须满足“数字+数字=数字”的格式,并且加法运算要正确。我们有一些手写字符图片(0, 1, +, =),但标注非常少。我们的目标是训练一个系统,它能识别图片序列,并判断这个等式是否成立。

步骤1:准备“不完美”的初始模型 我们用一个在MNIST(手写数字)上预训练好的简单CNN模型,但它只认识0和1,不认识“+”和“=”。对于“+”和“=”,我们随机初始化一些权重,或者用极少的样本(比如每类5张图)微调一下。这个模型就是我们的“初始分类器”,它的识别率,尤其是对“+”和“=”,会很低。这就是我们面临的现实:感知模型不完美。

import torch
import torch.nn as nn
import torch.optim as optim

# 一个极其简单的CNN,用于识别4类字符:0, 1, +, =
class SimpleCNN(nn.Module):
    def __init__(self, num_classes=4):
        super().__init__()
        self.conv1 = nn.Conv2d(1, 10, kernel_size=5)
        self.conv2 = nn.Conv2d(10, 20, kernel_size=5)
        self.fc1 = nn.Linear(320, 50)
        self.fc2 = nn.Linear(50, num_classes)
    def forward(self, x):
        x = torch.relu(torch.max_pool2d(self.conv1(x), 2))
        x = torch.relu(torch.max_pool2d(self.conv2(x), 2))
        x = x.view(-1, 320)
        x = torch.relu(self.fc1(x))
        return self.fc2(x)

# 初始化模型和优化器
model = SimpleCNN(num_classes=4)
optimizer = optim.Adam(model.parameters(), lr=0.001)
criterion = nn.CrossEntropyLoss()

步骤2:定义“逻辑验证与反绎”函数 这是ABL的核心。我们实现一个函数,输入是模型预测的字符序列(伪标签),输出是修正后的序列(反绎标签)以及一个“是否需要修正”的标志。

def logical_abduction(pseudo_labels):
    """
    伪标签示例: ['1', '+', '1', '=', '3']
    知识库规则:
    1. 序列必须是 [数字, '+', 数字, '=', 数字] 格式。
    2. 数字只能是 '0' 或 '1'(二进制)。
    3. 等式必须成立(二进制加法)。
    """
    # 规则1:格式检查
    if len(pseudo_labels) != 5:
        return pseudo_labels, False  # 无法处理,返回原标签
    if pseudo_labels[1] != '+' or pseudo_labels[3] != '=':
        # 如果‘+’或‘=’的位置不对,这是严重错误,但我们简单返回原样,靠后续数据驱动修正
        return pseudo_labels, False

    # 提取两个加数和结果
    try:
        num1 = int(pseudo_labels[0], 2)  # 二进制转十进制
        num2 = int(pseudo_labels[2], 2)
        predicted_result = int(pseudo_labels[4], 2)
    except ValueError:
        # 如果包含非0/1字符,说明模型识别格式错误严重,返回原样
        return pseudo_labels, False

    # 规则2和3:等式验证
    true_result = num1 + num2
    if predicted_result == true_result:
        # 等式成立!伪标签与知识库一致,无需修正。
        return pseudo_labels, False
    else:
        # 等式不成立!需要进行反绎推理。
        print(f"逻辑矛盾:{num1} + {num2} != {predicted_result}, 正确结果应为 {true_result}")
        # 最简单的反绎策略:假设结果是错的,用正确结果替换。
        # 更复杂的策略可以假设某个加数错了,但这里做简化。
        corrected_labels = pseudo_labels.copy()
        corrected_labels[4] = bin(true_result)[2:]  # 十进制转二进制字符串
        # 注意:这里假设结果位数不变。真实情况需处理进位导致的位数变化。
        print(f"反绎修正建议:将结果改为 {corrected_labels[4]}")
        return corrected_labels, True  # 返回修正后的标签和“已修正”标志

步骤3:实现ABL训练循环 现在,我们将不完美的模型和逻辑验证模块组合到迭代循环中。

def abl_training_loop(data_loader, model, optimizer, criterion, epochs=10):
    """
    ABL训练循环。
    data_loader: 提供图片序列批次,每个批次是 [batch_size, seq_len, channel, height, width]
    我们假设序列长度固定为5,对应 [数字, +, 数字, =, 数字]。
    每个图片有对应的真实标签(仅用于最终评估,训练中ABL不使用或少量使用)。
    """
    model.train()
    for epoch in range(epochs):
        total_corrected = 0
        for batch_idx, (images_seq, true_labels_seq) in enumerate(data_loader):
            # images_seq 形状: [batch_size, 5, 1, 28, 28]
            batch_size = images_seq.size(0)
            pseudo_labels_batch = []
            abduced_labels_batch = []
            need_correction_mask = []

            # 阶段1:生成伪标签
            for seq_idx in range(5):  # 遍历序列中的每个位置
                image = images_seq[:, seq_idx, :, :, :]  # 取第seq_idx个字符的所有批次图片
                outputs = model(image)
                _, predicted = torch.max(outputs, 1)  # 获取预测类别
                # 将类别索引映射为字符 '0','1','+','='
                # 假设映射关系:0->'0', 1->'1', 2->'+', 3->'='
                char_map = {0:'0', 1:'1', 2:'+', 3:'='}
                pseudo_labels_batch.append([char_map[p.item()] for p in predicted])

            # 重组:pseudo_labels_batch 现在是5个列表,每个列表长度为batch_size
            # 我们需要转换成 batch_size 个序列
            batch_pseudo_sequences = []
            for i in range(batch_size):
                seq = [pseudo_labels_batch[pos][i] for pos in range(5)]
                batch_pseudo_sequences.append(seq)

            # 阶段2:逻辑验证与反绎
            batch_abduced_sequences = []
            batch_correction_flags = []
            for seq in batch_pseudo_sequences:
                abduced_seq, corrected = logical_abduction(seq)
                batch_abduced_sequences.append(abduced_seq)
                batch_correction_flags.append(corrected)
                if corrected:
                    total_corrected += 1

            # 阶段3:用反绎标签训练模型
            # 我们需要将反绎标签序列转换回每个位置上的类别标签
            for seq_idx in range(5):
                # 为当前字符位置准备训练数据
                image = images_seq[:, seq_idx, :, :, :]
                # 构建目标标签:使用反绎标签
                target_labels = []
                for i in range(batch_size):
                    abduced_char = batch_abduced_sequences[i][seq_idx]
                    # 反向字符映射
                    reverse_char_map = {'0':0, '1':1, '+':2, '=':3}
                    target_labels.append(reverse_char_map[abduced_char])
                target = torch.tensor(target_labels).to(image.device)

                # 前向传播和反向传播
                optimizer.zero_grad()
                output = model(image)
                loss = criterion(output, target)
                loss.backward()
                optimizer.step()

        print(f'Epoch {epoch+1}, 本轮被逻辑修正的序列数: {total_corrected}')

这个极度简化的例子揭示了ABL工作流的核心:模型预测、逻辑检查、生成修正、模型更新。在实际项目中,逻辑反绎模块要复杂得多,会使用专业的逻辑编程工具(如Prolog、Z3定理证明器)或符号优化库,并且要处理更复杂的知识表示和不确定性。但万变不离其宗,这个“猜想-验证”的循环是ABL的灵魂。通过亲手运行这段代码,你可以直观地看到,模型是如何在一次次被逻辑“打脸”和“纠正”的过程中,逐渐学会输出符合算术规则的等式的。一开始它可能经常输出“1+1=3”,但几轮之后,这种低级错误会越来越少,因为它从反绎标签中学习到了“1+1”应该对应“2”这个视觉-逻辑关联。

5. 优势、挑战与未来展望

走过了ABL的原理、场景和实战,我们最后来冷静地看看它的长处、短处以及未来的可能性。任何技术都不是银弹,ABL也不例外。

5.1 独特优势:当数据稀缺而规则明确时

ABL最大的魅力,在于它巧妙地利用了人类已有的领域知识。在很多专业领域(医疗、金融、工业),获取大量高质量标注数据成本高昂,但专家规则、行业标准、物理定律却相对丰富和明确。ABL提供了一条路径,将这些结构化知识直接“注入”学习过程,充当了数据匮乏时的“指路明灯”和“质量检验员”。

其次,ABL提升了模型的可解释性和可靠性。传统深度学习模型是黑箱,它说图片是“猫”,你很难追问“为什么”。而在ABL框架下,如果一个预测结果被输出,它必然已经通过了逻辑知识库的验证。你可以追溯是哪些逻辑规则保证了结果的合理性。这在医疗诊断、自动驾驶等高风险领域至关重要。

再者,ABL有助于发现数据与知识的不一致。在循环中,如果逻辑引擎始终无法为模型的某些预测找到合理的解释,这可能不是在提示模型错了,而是在暗示:我们的知识库可能不完整或有过时的地方。这为人类专家修正和丰富领域知识提供了线索,实现了人机互促的学习。

5.2 当前面临的挑战

当然,ABL的落地之路也布满荆棘。首当其冲的是知识表示与获取的难题。如何将模糊、非结构化的专家经验,精准地形式化为逻辑推理引擎能处理的知识库?这本身就是一个AI难题(知识工程)。知识库的构建成本可能很高,且一旦构建不当(有错误或遗漏),会直接误导整个学习过程。

其次是计算复杂度的挑战。逻辑反绎推理,特别是在大规模假设空间中进行搜索和优化,计算开销可能非常大。寻找与知识库“最大程度一致”的修正,本身就是一个组合优化问题,容易陷入局部最优或导致迭代过程缓慢。

第三是感知与符号的“语义鸿沟”。机器学习模型输出的是一个概率分布(比如,80%是‘1’,20%是‘7’),而逻辑引擎需要的是确定的符号(‘1’或‘7’)。如何将这种不确定性有效地传递给符号推理层?一种思路是让逻辑引擎也能处理概率化或模糊化的规则,但这又增加了系统的复杂性。

我在尝试将ABL思想应用于一个设备故障预测项目时就深有体会。设备运行日志(数据)和维修手册(知识)之间存在着巨大的gap。维修手册上说“轴承温度超过80度并伴随异响,可能预示故障”,但日志里只有温度传感器读数和一串描述性的文本告警。如何将文本告警“异响”转换成逻辑引擎能理解的符号“has_abnormal_sound(X) = true”?我们不得不引入额外的NLP模型来做初步转换,这又引入了新的误差源。整个系统的链条变长,调试起来非常头疼。

5.3 未来的演进方向

尽管有挑战,但ABL代表的方向——神经符号人工智能——无疑是激动人心的。未来的发展可能会集中在几个方面:

一是更紧密的神经-符号融合。不再严格区分“感知模型”和“逻辑引擎”两个阶段,而是设计端到端的可微分架构,让逻辑规则能以一种“软约束”的方式,通过梯度直接指导神经网络的学习。这样既能保留神经网络的表示能力,又能融入符号知识的可解释性。

二是更强大的自动知识获取与提炼。结合大语言模型在理解和生成文本方面的能力,或许能辅助甚至自动化地从非结构化文本(如论文、手册)中抽取逻辑规则,构建和更新知识库,降低知识工程的门槛。

三是处理不确定性与非单调逻辑。现实世界的知识往往不是非黑即白的。未来的ABL系统需要能处理“可能”、“通常”、“在某种条件下”这样的不确定性和例外情况,使用概率逻辑或模糊逻辑来增强其表达能力。

对我而言,ABL最吸引人的地方在于它体现了一种谦逊而务实的人工智能哲学:承认单一方法(无论是数据驱动的学习还是知识驱动的推理)的局限性,转而寻求一种协同增效的路径。它不追求用一个巨型神经网络解决所有问题,而是倡导让合适的工具(感知模型、推理引擎)在合适的环节发挥作用,通过循环迭代达成共同目标。这种“组合式创新”的思路,或许比追求某个单一技术的突破,更能稳健地推动AI向更通用、更可靠的方向迈进。在探索ABL的过程中,我最大的收获不是掌握了某个特定工具,而是学会了以这种“协同循环”的视角,去重新审视和设计智能系统。

机器学习与深度学习-3 监督学习的基本思路很直观:从数据中学习一个函数fX→YfX→Y将输入XXX映射为输出YYY。通常XXX称为观测值YYY称为目标值。我们利用标记数据集Dtrainxiyii1NDtrain​{(xi​yi​i1N​来学习这个函数——"标记"指拥有成对的XXX和YYY,即每个XXX都对应一个YYY,通常称YYY为真实值/真实标签,共NNN个样本。什么是泛化?理想情况下,我们希望从DtrainD。 阅读详情

相关推荐

机器学习和深度学习-5

上次课讲了监督学习和深度学习的基础,简单提了提为什么用深度学习。今天聊一些进阶内容,帮你联想到现代深度学习模型,比如卷积神经网络、RNN、LSTM 和 Transformer。两种无监督学习范式:无监督学习(特别是生成模型)和自监督学习。和——它们在机器人领域都很实用。

智能机器人产学研基地 70

反绎学习简介

那么如果从这样的一个逻辑系统,我们马上就可以知道,第三句话,我们知道Lulu是Fifi的妈妈,那么从第2句话我们就知道她是Fifi的父母。但这很难,考古学家现在只知道这两个红色的应该是同一个数,蓝色的应该是另外一个数,但这个红色的既有可能是1,也有可能是8,也有可能是9。比方说如果我们认为红色的这个是1,那我们现在这个蓝色的就有几种可能,2 3 4 5 6 7这些可能都有,例如右边的最下面一行是1.18.5.7.0,这是从观察到的图像得出的猜测。我们要有很多label,这是关于训练样本的已经知道的结果。

CJK's Blog 2186

模电实验室:手把手教你调试共射放大电路静态工作点(避免波形失真)

本文详细介绍了共射放大电路静态工作点的调试方法,帮助避免波形失真问题。从实验准备、电路搭建到静态工作点测量,提供了实用的电阻选值策略和常见波形失真解决方案,适合电子相关专业学生和硬件工程师参考学习。

weixin_42531128的博客 373

论文阅读 (35):Abductive Learning (反绎学习)

如何开发一个统一的机器学习与逻辑推理的协同框架,是人工智能领域的“圣杯问题”。先贤道,当机器学习和逻辑推理合二为一,先进的智能技术就会出现。这是因为人类通常基于感知 (perception)和推理 (reason)解决问题,其中感知对应于可以通过机器学习实现的数据驱动过程 (data-driven process),而推理对应于可以通过逻辑推理实现的知识驱动过程 (knowledge-driven process)。然而,观人工智能研究历史,机器学习和逻辑推理几乎各行其道:机器学习自1990是冉冉新星,逻辑

因吉的博客 6354

已解决-Parallels Desktop 16 网络初始化失败:您的虚拟机将继续正常运作,但将无法连接网络

我是月球挖掘机,相信不少打工人为了尝鲜已经更新了MacOS 11 Big Sur,当然,苹果每次的系统大更新,都会给我们软件的功能无法使用惊喜,这次的也不例外。 这个问题是我在更新macOS Big Sur之后,Parallels Desktop打开虚拟机后,提示: 报错信息 网络初始化失败:您的虚拟机将继续正常运作,但将无法连接网络 这是我的软件版本: 起初我以为是我的虚拟机坏了,结果重装了一遍虚拟机,没有任何用处。我开始在网上找方法,只能找到那个使用命令行打开软件的命令,除此之外没有了

月球挖掘机 5万+

WSL2不能上网,Failed to connect to github.com port 443问题解决方案

WSL2不能上网: 问题:ping外网无效 例如:ping www.baidu.com失败 解决方案: 在wsl: $sudo vi /etc/wsl.conf wsl.conf: [network] generateResolvConf = false 在PowerShell: $sudo vi /etc/etc/resolv.conf resolv.conf: # This file was automatically generated by WSL. To stop automatic gen

Jason_Chen__的博客 9518

【机器学习】一文搞懂反绎学习(Abductive Learning,简称ABL) 完整源码复现

反绎学习的系统架构(周志华团队)反绎学习问题的严格形式化采用四元组结构,明确界定系统的各个组成部分及其相互关系。输入空间由原始数据分布定义,包含从感知环境获取的未标注或弱标注实例。这些实例通常以高维向量形式呈现,如图像像素、文本序列或传感器读数。原始数据分布刻画了问题域的统计特性,是机器学习模块的训练基础。逻辑事实空间建立了从原始数据到符号表示的映射。感知模型将输入实例转换为符号事实的候选集合,这些事实构成逻辑推理的观察前提。

u012133341的博客 699

ESP32S3开发实战:从Vscode+IDF环境配置到OpenOCD单步调试全流程

本文详细介绍了ESP32S3开发环境的完整搭建流程,重点讲解如何在Vscode中配置ESP-IDF开发框架,并利用OpenOCD工具实现硬件单步调试。内容涵盖从环境准备、工程创建、代码烧录到高级调试技巧的全方位实战指南,旨在帮助开发者快速掌握ESP32S3的高效开发与调试方法。

weixin_29168813的博客 202

今天来聊一聊什么是“反绎学习”

通过观察人类的行为,反推学习可以将人类的决策过程转化为机器人可以理解的形式,并生成适合人类需求和心理的智能机器人。此外,反推学习对于处理“迁移学习”和“零样本学习”等问题也有很大的优势,因为它不需要完整的数据集进行训练,只需利用一部分观测数据即可生成目标函数。反推学习无疑是机器学习领域的一种重要技术,日益受到工业界和学术界的关注。反推学习与传统强化学习的区别在于,传统强化学习是通过给定奖励函数来得到最优策略,而反推学习则是从专家(例如人类)的行为中学习奖励函数,然后再通过求解最优策略来得到机器人的决策。

419

基于VUE的智慧园区可视化平台(开题报告+源码)

本系统(程序源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景: 随着城市化进程的加速,园区作为城市发展的重要组成部分,其管理和运营效率直接影响到城市的经济发展和居民生活质量。传统的园区管理方式已经难以满足现代城市对于高效率、智能化的需求。因此,利用先进的信息技术构建一个智慧园区可视化平台显得尤为重要。Vue.js作为一个高效的前端框架,能够帮助开发一个动态的、用户友好的智慧园区可视化平台,实现园区管理的数字化和智能化。

liu10611的博客 1178

【libnice】meson + vs2022,生成win32工程

libnice

突围 940

干货!原始数据中的反绎知识归纳

点击蓝字关注我们AI TIME欢迎每一位AI爱好者的加入!在许多机器学习任务中,既存在着充满噪声的原始输入,又需要复杂的推理能力。因此,设计一个合适的端到端学习算法非常困难。神经符号学习将...

AITIME_HY的博客 1114

Claude Code 安装指南(Windows / macOS)

本文介绍了Claude Code的安装准备和基本流程。作为开发者工具,安装前需具备命令行操作能力、可用的Claude账号和稳定网络环境。Windows和macOS的安装都需通过终端完成,安装后以命令行形式运行。首次使用建议在熟悉项目中执行简单任务,逐步建立使用习惯。强调安装只是开始,后续需学习如何有效使用工具,包括任务提交流程和上下文提供方法。核心要点是:Claude Code是开发者工具,网络和终端环境是关键,建议先运行再深入理解。

sg_knight的专栏 4469

周志华:“数据、算法、算力”人工智能三要素,在未来要加上“知识”| CCF-GAIR 2020...

来源:雷锋网作者 | 李雨晨如何将“机器学习“与“逻辑推理”相结合,是人工智能领域的“圣杯问题””编者按:2020 年 8 月 7 日,全球人工智能和机器人峰会(CCF-GAIR 202...

人工智能学家 2385

利用 IP 中的集成调试功能来调试 PCI Express 链接训练问题

JTAG Debugger”和“In-system IBERT”功能结合在一起即可提供即时信息,用于判断链接训练问题的可能原因。“test_rd.tcl”文件可读取 BRAM 中存储的调试数据,并输出 *.dat 文件,如下所示。同样,您可能看到某一箭头旁的数字较大,表明可能存在不稳定的链接。要采集 PCIe 链接眼图,请在 IP 配置 GUI 的“Add. Debug Options”选项卡中选择“启用 In-System IBERT (Enable In-System IBERT)”选项。

qq_43416206的博客 530

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

数据算法算力知识反绎学习

2020 年 8 月 7 日,全球人工智能和机器人峰会(CCF-GAIR 2020)正式开幕。CCF-GAIR 2020 峰会由中国计算机学会(CCF)主办,香港中文大学(深圳)、雷锋网联合承办,鹏城实验室、深圳市人工智能与机器人研究院协办。从 2016 年的学产结合,2017 年的产业落地,2018 年的垂直细分,2019 年的人工智能 40 周年,峰会一直致力于打造国内人工智能和机器人领域规模最大、规格最高、跨界最广的学术、工业和投资平台。 在第一天的人工智能前沿专场上,南京大学计算机系主任、人工智能学

kyle1314608的博客 2705

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

直播预告 | 原始数据中的反绎知识归纳

点击蓝字关注我们AI TIME欢迎每一位AI爱好者的加入!1月20日晚 7:30-8:30AI TIME 青年科学家系列特别邀请英国帝国理工学院计算机系副研究员——戴望州老师,给大家带来分...

AITIME_HY的博客 376

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

机器学习笔记(20)读周老师《探索从纯学习到学习 + 推理的 AI》有感

写在前面 多数转载自:周志华教授发表首届国际学习与推理联合大会 IJCLR 开场 Keynote:探索从纯学习到学习 + 推理的 AI-ZAKER新闻 周志华老师每次讲这种综述性的话题时,讲到后半段就是自己的工作。我可真是太佩服了。 我有时候就在想即使周老师是位大牛,那他也不可能在每个ML领域都要做成果啊。我看了很多场周老师的汇报,似乎有好多独立的领域。今天看到这场报告才有了点眉目。 正文 南京大学计算机系主任兼人工智能学院院长周志华教授作了大会的开场主旨报告,分享了题为《利用无标签数据:从 「纯

qq_37662375的博客 814

反射学习

了解反射 为什么要用反射? 如果一个类的属性和方法不想在外部被访问时,我们只需将其设置为private或者protected即可,那有些情况下我们还需要访问类中私有的方法如何操作? 这个时候就需要用的反射了,那么什么是反射呢? 反射的概念 Java的反射(reflection)机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性,既然能拿到那么,我们就可以修改部分类型信息;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射(ref

weixin_45607985的博客 251

周志华:“数据、算法、算力”,人工智能三要素在未来还要加上“知识”

本文介绍了清周志华教授在全球人工智能和机器人峰会的演讲内容。 2020 年 8 月 7 日,全球人工智能和机器人峰会(CCF-GAIR 2020)正式开幕。CCF-GAIR 2020 峰会由中国计算机学会(CCF)主办,香港中文大学(深圳)、雷锋网联合承办,鹏城实验室、深圳市人工智能与机器人研究院协办。从 2016 年的学产结合,2017 年的产业落地,2018 年的垂直细分,2019 年的人工智能 40 周年,峰会一直致力于打造国内人工智能和机器人领域规模最大、规格最高、跨界最广的学术、工业和投资平台。

ctrigger的专栏 4433

数据 + AI 一体化 I 机器学习中心(CubeStudio)实现目标识别可视化训练与弹性部署,让视觉模型快速投产

AllData 数据中台内置机器学习中心 CubeStudio,核心思路就是把 AI 能力原生融入数据中台,打通数据治理、数据集管理、可视化标注、模型训练、效果评估、弹性推理、结果回写全链路,实现数据 + AI 一体化闭环。

AllDataDC的博客 161

共源共栅(Cascode)功率器件:让 SiC / GaN “兼容“你的硅栅驱动

默认状态(Si MOS 栅=0 V)下,Si MOS 关断,整条串联支路断开,无论上层 WBG 多"想导通"都没电流通道——整体是关断的。在同一片 4H-SiC 外延上:先长漂移层 → 浅硼(SiC 里用 Al)注入做 LV Si MOS 的 p-well → 干氧 + NO 退火长栅氧(SiC 栅氧界面态是公认难点)→ 多晶硅栅 → 再做 HV JFET 的 p 栅环与垂直沟道 → 金属互连层把两器件内部串接 → 背面减薄 + 镍硅化物漏极。两者的电气接法是:高压 WBG 器件的。

weixin_64228887的博客 218

机器学习课程架构思维导图

机器学习是人工智能专业核心课,研究如何从数据中自动获得规律并做出预测。课程以统计学习框架与模型评估为基础,涵盖线性与逻辑回归、决策树、神经网络与反向传播、支持向量机、集成学习、聚类降维与强化学习,贯穿泛化能力、优化求解与数据评估三条主线。

howard2005的专栏 234

腾讯云+TBDS+智算平台:多模态数据处理与机器学习一体化实践

本文重点以多模态数据处理和金融风控建模为例,介绍如何利用 TBDS 智算平台完成数据加工、XGBoost 模型训练与批量推理。

cloudbigdata的博客 202

导数与机器学习优化!

告诉参数应该往哪调才能减少误差。

m0_65595995的博客 252

金融数据分析技术栈拆解:从NumPy到机器学习,金融数学背景该如何补齐代码短板

金融数学专业应届生想入职金融数据分析岗,需要掌握Excel、SQL等数据处理工具,基础统计建模能力,对应细分金融业务逻辑,优先补充银行证券等对口实习,按需考取对应能力证明。这套准备路径仅适用于国内本科金融数学相关专业,毕业1年内想瞄准市场化机构金融数据分析岗的应届生,不适用于想走量化投研纯风控模型岗的同学。

2508_93342305的博客 184
上一篇: 从轮询到DMA:STM32F030多通道ADC的三种实现方式对比
下一篇: SpringBoot+Vue项目如何用宝塔面板实现自动化部署?保姆级教程来了
对方正在偷人346
博客等级 码龄3年 1176粉丝 1380原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值