【图神经网络:原理与实战】第十章 可解释性与可证实性

人工智能技术白皮书 —— 你的AI入门手册 深入定义状态 (State, S)、动作 (Action, A)、奖励 (Reward, R) 以及状态转移概率 (Transition Probability, P),构建一个完整的决策模型。强化学习是关于“决策”的科学,它让智能体(Agent)在与环境的持续互动中,通过试错和回报,学习一套能获得最大长期利益的最优行为策略。学习它,就是学习如何驱动机器的“想象力”。:一个迷宫地图,智能体(小机器人)在每个交叉口(状态)选择方向(动作),根据路径上的宝藏(奖励)或陷阱,更新自己的寻宝地图(策略)。 阅读详情

代码复现

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
第10章 可解释性工具箱 - 可执行示例代码
- 包含:可微掩码优化、梯度归因、代理线性模型、反事实生成、评估指标(充分性/必要性/稳健性/显著性/对抗性)
- 注释与打印为中文,便于实验和教学
- 依赖:numpy, scipy, sklearn, torch, matplotlib

运行示例:
    python Chapter10_Interpretability_Tools.py

注意:本文件生成和使用合成数据与简单神经网络模型以示范方法流程。
"""

import numpy as np
import torch
import torch.nn as nn
import torch.optim as optim
from torch.utils.data import TensorDataset, DataLoader
from sklearn.linear_model import Ridge
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt
from copy import deepcopy
import time

# -----------------------------
# 全局设置与工具函数
# -----------------------------
SEED = 12345
np.random.seed(SEED)
torch.manual_seed(SEED)

def set_seed(s=SEED):
    np.random.seed(s)
    torch.manual_seed(s)

def sigmoid(x):
    return 1/(1+np.exp(-x))

# 将张量转换为 numpy
def to_np(t):
    return t.detach().cpu().numpy()

# -----------------------------
# 数据与模型:合成分类任务
# -----------------------------

def generate_synthetic_classification(n_samples=1000, n_features=20, informative=5):
    """生成二分类数据,前 informative 个特征为判别特征"""
    rng = np.random.default_rng(SEED)
    X = rng.normal(0,1,(n_samples,n_features))
    # 线性可分性 + 非线性项
    w = np.zeros(n_features)
    w[:informative] = rng.normal(2.0,0.5,size=informative)
    logits = X @ w + 0.5*np.sin(X[:,0])
    probs = sigmoid(logits)
    y = (rng.random(n_samples) < probs).astype(int)
    return X.astype(np.float32), y.astype(np.int64)

class SimpleMLP(nn.Module):
    def __init__(self, n_features, hidden=64):
        super().__init__()
        self.net = nn.Sequential(
            nn.Linear(n_features, hidden),
            nn.ReLU(),
            nn.Linear(hidden, hidden//2),
            nn.ReLU(),
            nn.Linear(hidden//2,2)
        )
    def forward(self,x):
        return self.net(x)

# -----------------------------
# 1. 可微掩码优化 (Learning a soft mask)
# -----------------------------

def optimize_soft_mask(model, x, baseline=None, lr=0.1, steps=200, l1=1e-2):
    """
    对单个输入 x 优化可微掩码 m in [0,1]^d
    目标:最小化 task loss 保持输出,同时压缩掩码稀疏性
    返回:soft mask, 二值化 mask
    注释:使用模型在预测概率层面保持相似性作为约束
    """
    model.eval()
    x_t = torch.tensor(x, dtype=torch.float32).unsqueeze(0)
    if baseline is None:
        baseline = torch.zeros_like(x_t)
    # 初始 mask 参数为 logit 空间
    d = x.shape[0]
    m_param = torch.zeros(d, requires_grad=True)
    optimizer = optim.Adam([m_param], lr=lr)
    with torch.no_grad():
        y_orig_logits = model(x_t)
        y_orig_prob = torch.softmax(y_orig_logits, dim=-1)[0,1].item()

    for step in range(steps):
        optimizer.zero_grad()
        m = torch.sigmoid(m_param)
        xm = x_t * m + baseline * (1-m)
        logits = model(xm)
        prob = torch.softmax(logits, dim=-1)[0,1]
        # 保持原始概率相近的损失
        loss_task = (prob - y_orig_prob)**2
        # 掩码稀疏性
        loss_reg = l1 * torch.sum(m)
        loss = loss_task + loss_reg
        loss.backward()
        optimizer.step()
        if step%50==0:
            print(f"[掩码优化] step={step}, loss_task={loss_task.item():.6e}, mask_sum={m.sum().item():.4f}")
    m_final = torch.sigmoid(m_param).detach().cpu().numpy()
    m_bin = (m_final>=0.5).astype(int)
    return m_final, m_bin

# -----------------------------
# 2. 梯度/敏感性归因 (Gradient-based saliency)
# -----------------------------

def gradient_saliency(model, x, target_class=1):
    """计算 gradient * input 作为归因分数"""
    model.eval()
    x_t = torch.tensor(x, dtype=torch.float32).unsqueeze(0)
    x_t.requires_grad_()
    logits = model(x_t)
    prob = torch.softmax(logits, dim=-1)[0,target_class]
    prob.backward()
    grad = x_t.grad.detach().cpu().numpy()[0]
    saliency = grad * x
    saliency = saliency
    return saliency

# -----------------------------
# 3. 代理线性模型 (Surrogate explanation)
# -----------------------------

def surrogate_linear_model(f_model, X, n_samples=500, alpha=1.0):
    """在输入邻域上拟合线性代理(岭回归),返回系数和截距"""
    rng = np.random.default_rng(SEED)
    idx = rng.choice(len(X), size=min(n_samples,len(X)), replace=False)
    X_sub = X[idx]
    with torch.no_grad():
        model = f_model
        X_tensor = torch.tensor(X_sub, dtype=torch.float32)
        logits = model(X_tensor)
        probs = torch.softmax(logits, dim=-1)[:,1].detach().cpu().numpy()
    ridge = Ridge(alpha=alpha)
    ridge.fit(X_sub, probs)
    return ridge.coef_, ridge.intercept_, ridge

# -----------------------------
# 4. 反事实生成 (Counterfactual via optimization)
# -----------------------------

def generate_counterfactual(model, x, target_label=1, lr=0.05, steps=200, lambda_norm=0.01):
    """最小化 L2 距离 + 分类误差,得到反事实 x'"""
    model.eval()
    x_var = torch.tensor(x, dtype=torch.float32).unsqueeze(0).clone()
    x_var = x_var.requires_grad_()
    opt = optim.Adam([x_var], lr=lr)
    for step in range(steps):
        opt.zero_grad()
        logits = model(x_var)
        loss_cls = nn.CrossEntropyLoss()(logits, torch.tensor([target_label]))
        loss_dist = lambda_norm * torch.sum((x_var - torch.tensor(x,dtype=torch.float32))**2)
        loss = loss_dist + loss_cls
        loss.backward()
        opt.step()
        if step%50==0:
            with torch.no_grad():
                pred = torch.argmax(model(x_var),dim=-1).item()
            print(f"[反事实] step={step}, loss_cls={loss_cls.item():.6e}, pred_label={pred}")
    return x_var.detach().cpu().numpy()[0]

# -----------------------------
# 5. 评估指标实现
# -----------------------------

def sufficiency_metric(model, x, mask, baseline=None, k=None):
    """保真-充分性:仅保留 mask 指示特征后预测距离"""
    model.eval()
    x_t = torch.tensor(x, dtype=torch.float32)
    if baseline is None:
        baseline = torch.zeros_like(x_t)
    if k is not None:
        # 保留前 k 特征索引
        idx = np.argsort(-mask)[:k]
        m = np.zeros_like(mask); m[idx]=1
    else:
        m = mask
    xm = x_t * torch.tensor(m,dtype=torch.float32) + baseline * (1-torch.tensor(m,dtype=torch.float32))
    with torch.no_grad():
        p_orig = torch.softmax(model(x_t.unsqueeze(0)),dim=-1)[0,1].item()
        p_mask = torch.softmax(model(xm.unsqueeze(0)),dim=-1)[0,1].item()
    return abs(p_orig - p_mask)


def necessity_metric(model, x, mask, baseline=None, k=None):
    """必要性:移除被认为重要的特征后预测距离"""
    model.eval()
    x_t = torch.tensor(x, dtype=torch.float32)
    if baseline is None:
        baseline = torch.zeros_like(x_t)
    if k is not None:
        idx = np.argsort(-mask)[:k]
        m = np.ones_like(mask); m[idx]=0
    else:
        m = 1-mask
    xm = x_t * torch.tensor(m,dtype=torch.float32) + baseline * (1-torch.tensor(m,dtype=torch.float32))
    with torch.no_grad():
        p_orig = torch.softmax(model(x_t.unsqueeze(0)),dim=-1)[0,1].item()
        p_mask = torch.softmax(model(xm.unsqueeze(0)),dim=-1)[0,1].item()
    return abs(p_orig - p_mask)


def stability_metric(explainer_func, model, x, n_pert=20, noise_scale=1e-2):
    """稳健性:对输入进行微扰,评估解释向量差异"""
    set_seed()
    s0 = explainer_func(model, x)
    S = []
    for i in range(n_pert):
        x_pert = x + np.random.normal(0,noise_scale,size=x.shape)
        s = explainer_func(model, x_pert)
        S.append(s)
    S = np.stack(S)
    # 归一化后计算平均相对差
    s0n = np.linalg.norm(s0,ord=1)+1e-12
    diffs = np.linalg.norm(S - s0[None,:], ord=1, axis=1) / s0n
    return diffs.mean()

def permutation_significance(explainer_func, model, X, x_idx=0, n_perm=100):
    """置换检验:在置换输入特征时计算解释值分布,估计每个特征的 p-value"""
    set_seed()
    x = X[x_idx].copy()
    s_obs = explainer_func(model, x)
    pvals = np.ones_like(s_obs)
    for j in range(len(s_obs)):
        greater = 0
        for _ in range(n_perm):
            x_perm = x.copy()
            # 打乱第 j 个特征在样本集中的顺序来构建置换
            x_perm[j] = np.random.permutation(X[:,j])[0]
            s_perm = explainer_func(model, x_perm)
            if abs(s_perm[j]) >= abs(s_obs[j]):
                greater += 1
        pvals[j] = (greater+1)/(n_perm+1)
    return pvals

def adversarial_explain_change(explainer_func, model, x, budget=0.1):
    """最小扰动使解释 top-k 集合发生改变(近似:基于梯度方向)"""
    # 计算解释向量的梯度近似:对每个特征尝试沿 +/- 方向扰动并计算解释变化
    base_exp = explainer_func(model, x)
    topk = np.argsort(-np.abs(base_exp))[:max(1,len(base_exp)//5)]
    best_delta = None
    best_change = 0
    for sign in [+1,-1]:
        x_try = x.copy()
        # 扰动沿梯度方向: 使用模型输出对输入的梯度近似
        x_var = torch.tensor(x_try, dtype=torch.float32).unsqueeze(0).requires_grad_()
        logits = model(x_var)
        score = torch.softmax(logits,dim=-1)[0,1]
        score.backward()
        grad = x_var.grad.detach().numpy()[0]
        direction = np.sign(grad)
        delta = sign * budget * direction
        x_new = np.clip(x + delta, -np.inf, np.inf)
        new_exp = explainer_func(model, x_new)
        change = np.linalg.norm(new_exp - base_exp, ord=1)
        if change > best_change:
            best_change = change
            best_delta = delta
    return best_delta, best_change

# -----------------------------
# 6. 演示流程:训练模型、生成解释、评估
# -----------------------------

def demo_all():
    print('中文提示:开始可解释性工具箱演示')
    # 数据
    X, y = generate_synthetic_classification(n_samples=1000, n_features=20, informative=5)
    X_train, X_test = X[:800], X[800:]
    y_train, y_test = y[:800], y[800:]

    # 训练模型
    model = SimpleMLP(n_features=X.shape[1])
    optimizer = optim.Adam(model.parameters(), lr=1e-3)
    criterion = nn.CrossEntropyLoss()
    ds = TensorDataset(torch.tensor(X_train), torch.tensor(y_train))
    loader = DataLoader(ds, batch_size=64, shuffle=True)
    print('中文提示:训练简单神经网络模型...')
    for epoch in range(10):
        model.train()
        los = 0.0
        for xb, yb in loader:
            optimizer.zero_grad()
            logits = model(xb.float())
            loss = criterion(logits, yb)
            loss.backward()
            optimizer.step()
            los += loss.item()
        if (epoch+1)%2==0:
            print(f'  epoch {epoch+1}, 平均损失={los/len(loader):.6f}')
    model.eval()
    with torch.no_grad():
        preds = torch.argmax(model(torch.tensor(X_test).float()),dim=-1).numpy()
    print('中文提示:测试准确率=', accuracy_score(y_test,preds))

    # 选择一个测试样本
    x0 = X_test[0]
    print('\n中文提示:样本 x0 的前 8 个特征值:', x0[:8])

    # 1) 可微掩码优化
    print('\n中文提示:执行可微掩码优化...')
    m_soft, m_bin = optimize_soft_mask(model, x0, lr=0.2, steps=300, l1=1e-2)
    print('中文提示:soft mask 前8值=', np.round(m_soft[:8],3))
    print('中文提示:binary mask 前8值=', m_bin[:8])

    # 2) 梯度归因
    print('\n中文提示:计算梯度归因 (gradient * input) ...')
    grad_sal = gradient_saliency(model, x0)
    print('中文提示:梯度归因前8值=', np.round(grad_sal[:8],4))

    # 3) 代理线性模型
    print('\n中文提示:拟合线性代理模型 (Ridge) ...')
    coef, intercept, ridge = surrogate_linear_model(model, X_train, n_samples=400)
    print('中文提示:线性代理系数前8=', np.round(coef[:8],4))

    # 4) 反事实生成
    print('\n中文提示:生成反事实示例 (目标类别取反) ...')
    orig_label = int(torch.argmax(model(torch.tensor(x0).float().unsqueeze(0))).item())
    target_label = 1 - orig_label
    x_cf = generate_counterfactual(model, x0, target_label=target_label, lr=0.05, steps=300, lambda_norm=0.001)
    with torch.no_grad():
        pred_orig = int(torch.argmax(model(torch.tensor(x0).float().unsqueeze(0))).item())
        pred_cf = int(torch.argmax(model(torch.tensor(x_cf).float().unsqueeze(0))).item())
    print(f'中文提示:原始预测={pred_orig}, 反事实预测={pred_cf}')

    # 5) 评估指标
    print('\n中文提示:计算充分性与必要性指标...')
    suff = sufficiency_metric(model, x0, m_soft)
    nec = necessity_metric(model, x0, m_soft)
    print(f'中文提示:充分性差异={suff:.6f}, 必要性差异={nec:.6f}')

    print('\n中文提示:计算稳健性指标 (基于梯度归因) ...')
    stab = stability_metric(gradient_saliency, model, x0, n_pert=30, noise_scale=1e-3)
    print(f'中文提示:归因稳定性平均相对差={stab:.6f}')

    print('\n中文提示:置换检验估计 p-values (对前10个特征) ...')
    pvals = permutation_significance(gradient_saliency, model, X_test, x_idx=0, n_perm=200)
    print('中文提示:p-values 前10=', np.round(pvals[:10],4))

    print('\n中文提示:对抗性解释变化测试(近似)...')
    delta, change = adversarial_explain_change(gradient_saliency, model, x0, budget=0.1)
    print(f'中文提示:发现最优扰动 change={change:.6f}, delta前8={np.round(delta[:8],4)}')

    # 可视化:原始、反事实、掩码覆盖
    plt.figure(figsize=(10,6))
    plt.subplot(3,1,1)
    plt.plot(x0, label='原始输入'); plt.title('原始输入特征'); plt.legend()
    plt.subplot(3,1,2)
    plt.plot(x_cf, label='反事实输入'); plt.title('反事实输入特征'); plt.legend()
    plt.subplot(3,1,3)
    plt.bar(np.arange(len(m_soft)), m_soft); plt.title('可微掩码值 (soft mask)')
    plt.tight_layout(); plt.show()

    print('\n中文提示:演示完成。')

if __name__=='__main__':
    demo_all()

「文智助手」全场景办公AI助理AI+OPC全流程实践方案(大赛作品) 阅读详情

相关推荐

船载 OpenHarmony AIS 航海工作台:告警与防碰撞预警系统

船载OpenHarmony AIS航海工作台的告警与防碰撞系统,集成十余类告警(超速、偏航、会遇、SOS等),通过网格空间索引实现高效邻近判定,保障实时性。告警管理器统一调度规则、去重、通知与日志,支持悬浮球、语音、跑马灯、弹窗多渠道触达,确保航行安全。SOS紧急通道独立运行,避免干扰。系统设计强调性能优化与多场景适配,为航海安全提供核心支撑。

专注于计算机研发知识和资讯分享 305

人工智能技术白皮书专栏 — 完整总目录

本专栏《人工智能技术白皮书》系统整理了150余篇高质量AI技术文章,涵盖五大核心领域:1)基础理论与数学工具(概率论、张量计算等);2)物理信息神经网络(PINN)与神经算子(含GL-FNO、PINNACLE等创新方法);3)现代机器学习系统教材(模型架构、自监督学习等);4)几何深度学习(GCN/GAT原理及群论应用);5)大模型与生成式AI(Transformer架构解析、RAG实战、模型量化等)。专栏以理论推导结合工程实践为特色,平均质量分达87,为AI从业者提供体系化的学习路径。

VectorShift的博客 195

Windows10下MATLAB2017a安装与破解实战:手把手教你搞定双镜像加载

本文详细介绍了在Windows 10系统下安装和破解MATLAB 2017a的完整步骤,包括双镜像加载、许可证配置及常见问题解决方案。通过手把手教程,帮助用户顺利完成安装并优化性能,特别适合工程计算领域的初学者和专业人士。

weixin_29053383的博客 420

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 352

S4 Hana SD -信贷管理 - 02

在S4版本中,客户的信用管理数据在事务代码BP维护,业务伙伴角色是UKM000。在维护过程中,我们并不能直接输入信贷控制范围这个组织架构,而是需要输入一个信用段,并且在信用段的维度下去维护相应信用管理数据。对于信用段,可以分为主信用段(信用段是0000)和其他临时信用段,我们可以通过配置把次级信用段的客户信贷负债汇总到主信用段。当然,在后台也有配置,会把信用段和信贷控制范围这两者进行关联.3.2SPROIMG > 财务供应链管理 > 信用管理 > 信贷风险监视 > 主数据 > 创建信用段。

weixin_46525734的博客 1968

新手必看:用FileZilla从武大IGS中心下载GNSS数据,再到crx2rnx转换的完整流程

本文详细介绍了新手如何通过FileZilla从武汉大学IGS中心下载GNSS数据,并使用crx2rnx工具将数据转换为RINEX格式的完整流程。涵盖工具准备、FTP连接、文件解压、格式转换及常见问题排查,帮助测绘和地信专业人员高效处理GNSS观测值数据。

weixin_29292431的博客 427

AI 问数真的能替代 BI 报表吗?

AI问数赋能自然语言查询,提升临时分析效率,但无法替代传统报表。报表适用于稳定输出与持续监控,AI则擅长探索性提问。企业用好AI问数,关键在于夯实数据模型、统一指标口径、健全权限体系与结果校验机制。合理组合报表、仪表板与AI,才能实现高效、准确的业务洞察。

葡萄城技术团队博客 280

基于Playwright与反反爬技术的BOSS直聘数据爬取实战

本文将详细介绍如何使用Python最新技术栈(Playwright+Asyncio)构建一个高效、稳定的BOSS直聘数据爬虫系统。文章包含完整的技术选型分析、反爬机制破解方案、分布式爬虫架构设计以及数据处理存储方案,提供可直接运行的代码示例,并探讨爬虫开发中的法律与伦理问题。

2201_76125261的博客 1467

AI Agent之核心框架

A: 显式 Thought 有三类价值:可解释性(便于人类审计)、可调试性(定位哪一步选错工具)、学习信号(可做监督微调或评估中间步骤质量)。ReAct 把推理与 可执行行动 绑定,每一步行动后都有 真实 Observation 反馈,从而用工具结果约束生成,降低闭卷幻觉。做完不等于结束——还要 评估做得好不好,把 教训 记下来,下次 带着教训重试,反思作为 记忆,影响后续尝试的策略。工作流程:Action → Evaluation → Reflection → Retry。A: 普通 CoT 只在。

剑雨巍巍的博客 254

YOLO26涨点改进 | 独家创新,细节涨点改进篇 | CVPR 2025顶会 | YOLO26引入Mona即插即用模块, 含MoCAA和DyTMona二次创新改进,含多种创新改进高效发论文

本文给大家介绍Mona即插即用模块, 含MoCAA和DyTMona二次创新模块优化YOLO26模型。YOLO26引入 Mona通过引入多尺度视觉友好型卷积滤波器(如3x3、5x5、7x7深度卷积)和可伸缩归一化层来优化适配器设计,以更好地处理视觉信号并调节输入特征分布。YOLO26引入Mona即插即用模块, 含MoCAA和DyTMona二次创新改进,含多种创新改进高效发论文。适合目标检测、图像分割、图像分类等所有CV任务通用即插即用模块。

Ai缝合怪、助力小伙伴高效发论文 242

使用MiniExcel.SaveAsByTemplate快速地保存百万数据

该代码展示了如何使用MiniExcel快速生成并导出百万级销售数据。核心方法GenerateLargeData()可生成指定数量的随机销售记录,包含客户名、日期、VIP状态、积分等20个字段。通过随机函数模拟真实数据分布,并支持自定义数据量(默认100万条)。配合Excel模板使用MiniExcel.SaveAsByTemplate()方法,能高效地将大数据量导出为Excel文件,且处理速度极快。代码结构清晰,包含数据生成、随机日期辅助方法和数据模型类,适合需要批量生成测试数据或导出大型报表的场景。

大坡3D软件开发 255

ChatGPT、Perplexity、Gemini 与 AI Overviews 引用对比:谁的引用更可信

AI 引擎的引用机制差异很大:ChatGPT 以行内引用加 Sources 列表呈现来源,Perplexity 几乎逐句可溯源,Gemini 在回答中内嵌相关来源链接,AI Overviews 则把多源聚合答案与来源列表一起放在搜索结果顶部。本文从引用透明度、来源偏好、可干预性 3 个维度对比这 4 个引擎,并给出 GEO 的 3 点启示,帮企业在多引擎环境下提升被引用的概率。

淡然一笑 的专栏 191

热更新方案 HybridCLR 学习教程 |(一)原理及准备工作

前面文章介绍了热更新相关的知识,包括使用xLua实现热更新实战等 那本文就来介绍一下 热更新方案 HybridCLR(代号wolong,原huatuo)和基本使用方法。 若是想了解更多关于HybridCLR的东西也可以去 官网 详细查阅。

努力前行,总会成为自己心中的那道光 2万+

【从零理解 Spring AI · 12】MCP 的两种角色:做客户端还是做服务端

上一篇讲了 MCP 的概念:标准协议、三大角色、M+N 替代 M×N。

nice_lcj520的博客 563

课题申报书成功率提升85%!借助大模型AI精准选题、搭综述框架及提炼创新点(附实操AI提示词)

写一份高质量的课题申报书往往面临许多困难,对很多同仁来说,难就难在:选题既要新又要能落地,文献综述要结构清晰还得有观点,研究目标要写得有逻辑还不能夸大,创新点必须得新。而且就算你有思路,也卡在怎么组织语言,怎么压缩字数上。现在我们用ChatGPT等AI工具,可以帮我们从“选题策划 → 综述撰写 → 目标拆解 → 创新提炼 → 团队结构”实现申报工作的全流程,我们要做的就是设计好提示词和收集相关资料。这篇文章将会从申报工作的六个核心模块出发,并给出参考AI提示词,帮你快速提升课题申报效率。

智能AI让学术科研更容易 909

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

AI 应用开发工程师技术实践:大模型接入、通用组件封装与性能优化

本文提出AI应用从PoC到生产的核心挑战:模型调用的持续可用、可控与可优化。通过构建统一LLM网关实现多供应商路由与故障转移,封装对话、工具调用与RAG组件以解耦业务逻辑,结合前缀缓存、批处理与流式背压治理等性能优化手段,形成“接通→接稳→接快”的工程路径,最终以工程化能力决定AI应用的生产可用性。

2301_79189962的博客 619

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

抽象主义人工智能和生命体AI的内在联系

彭军辉提出“抽象主义人工智能”作为第四大AI范式,批判符号主义、连接主义、行为主义剥离生命本体的误区,确立“智能是现象,生命是本体”的核心公理。主张原生智能必须依附具备存续诉求的生命本体,提出“生命体AI理论”,构建七层演化阶梯与自闭环工程框架,强调智能不可跳过底层存续机制直接模拟语言。该体系为生成式AI提供科学边界,推动从“仿真表象”向“原生智能”的范式跃迁,开辟硅基人工生命新赛道。

抽象主义人工智能和生命体AI 160

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

OpenClaw 深度调查:把 AI 助手做成你自己的控制平面

对 openclaw/openclaw 的完整技术尽调:Gateway 架构、Agent 运行时、工具与沙箱、30 个消息通道、181 个插件、安全信任边界、工程代价与采用建议。17 章 / 10 张图,全部数字标注口径,数据截至 2026-10-31。

厚积薄发 294

AI赋能智慧港口建设|造形家快速生成港口全要素三维场景

随着智慧港口、港口数字孪生项目的持续推进,港口三维场景的需求日益旺盛。传统港口三维建模,往往需要航拍倾斜摄影采集数据,再人工搭建吊机、岸桥、船舶、集装箱等大量工业设施模型,项目周期长、人力成本高,修改迭代繁琐,制约港口可视化项目落地效率。国产AI三维建模工具,依托卫星影像 AI 识别能力,无需航拍作业,一键快速搭建港口完整三维场景,为港口数字孪生、方案汇报、投标演示提供高效的场景解决方案。

m0_69539167的博客 51

企业微信iPad协议详解:接口接入、实时消息同步与语音转码实践

深入解析企业微信iPad协议的技术架构与开发思路,涵盖API接口接入、长连接通信、实时消息同步、Silk语音转码、异常重连及高并发优化,帮助开发者了解企业微信自动化系统的设计与实现。

欢迎来到祖安! 428

Product Hunt 热榜 2026-11-13:Plurai Simulation、YouArt Desktop App、Omnigraph

2026-11-13 Product Hunt 新产品精选:Plurai Simulation、YouArt Desktop App、Omnigraph。汇总 15 款产品的中文介绍、功能关键词和产品链接。

LaughingZhu的博客 488

AI作图软件技术选型:从4个技术维度出发的实测对比

AI作图软件技术选型:从4个技术维度出发的实测对比

Vbaoke的博客 252

【AI Agent面试系列】AI Agent可观测、评测、安全相关的知识点

之前的文章介绍了和,本文主要介绍AI Agent的测评、可观测等知识。

328

Docling 原理解读:是什么、为什么、怎么样

从论文视角拆解 Docling 的整体架构、DoclingDocument 数据模型、PDF 预处理、版面分析、OCR、TableFormer 双解码器、阅读顺序与装配流程,并解释版面框与 OCR 框的区别。

PLANTTHESON的博客 369

WorkBuddy 实战:一句话需求 → 七屏可交互原型,户外徒步 App 的 AI 设计全流程

WorkBuddy 实战:一句话需求 → 七屏可交互原型,户外徒步 App 的 AI 设计全流程,跟着博主一起来还原整个过程。

夜郎King的博客 5029
上一篇: 【无线电控制与数据链探测系统】书籍配套源码-python 版本 第二章至第六章
下一篇: 【图神经网络:原理与实战】第十章 可解释性与可证实性
VectorShift
博客等级 码龄1年 1839粉丝 1109原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

VectorShift

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值