点击AladdinEdu,同学们用得起的【H卡】算力平台”,H卡级别算力80G大显存按量计费灵活弹性顶级配置学生更享专属优惠


引言:AI偏见——看不见的技术债务

2018年,亚马逊不得不废弃一套用于简历筛选的AI系统,因为它系统性歧视女性求职者。该系统通过分析十年间的招聘数据发现,男性求职者更受欢迎,于是学会了自动降低包含"女子俱乐部"、"女子学院"等词汇的简历评分。

这类事件揭示了一个严峻现实:AI模型会学习并放大人类社会的偏见。随着AI系统在招聘、信贷、司法等高风险领域的广泛应用,模型偏见已从技术问题演变为社会责任和商业风险问题。

本文将深入探讨AI偏见的检测与缓解技术,提供从理论到实践的完整解决方案,帮助开发者构建更加公平、负责任的AI系统。

一、偏见类型与公平性定义

1.1 偏见的主要类型

AI系统中的偏见主要来源于三个方面:
在这里插入图片描述

1.2 公平性的数学定义

不同的公平性定义对应不同的技术方案和伦理立场:

# 公平性定义实现示例
import numpy as np
from sklearn.metrics import confusion_matrixdef statistical_parity(y_pred, sensitive_attr):"""统计平价:预测结果在不同群体中分布相似P(Ŷ=1|A=0) = P(Ŷ=1|A=1)"""group_0 = y_pred[sensitive_attr == 0]group_1 = y_pred[sensitive_attr == 1]return abs(group_0.mean() - group_1.mean())def equal_opportunity(y_true, y_pred, sensitive_attr):"""均等机会:真正例率在不同群体中相等P(Ŷ=1|Y=1,A=0) = P(Ŷ=1|Y=1,A=1)"""tn_0, fp_0, fn_0, tp_0 = confusion_matrix(y_true[sensitive_attr == 0], y_pred[sensitive_attr == 0]).ravel()tn_1, fp_1, fn_1, tp_1 = confusion_matrix(y_true[sensitive_attr == 1], y_pred[sensitive_attr == 1]).ravel()tpr_0 = tp_0 / (tp_0 + fn_0) if (tp_0 + fn_0) > 0 else 0tpr_1 = tp_1 / (tp_1 + fn_1) if (tp_1 + fn_1) > 0 else 0return abs(tpr_0 - tpr_1)def predictive_equality(y_true, y_pred, sensitive_attr):"""预测平等:假正例率在不同群体中相等P(Ŷ=1|Y=0,A=0) = P(Ŷ=1|Y=0,A=1)"""tn_0, fp_0, fn_0, tp_0 = confusion_matrix(y_true[sensitive_attr == 0], y_pred[sensitive_attr == 0]).ravel()tn_1, fp_1, fn_1, tp_1 = confusion_matrix(y_true[sensitive_attr == 1], y_pred[sensitive_attr == 1]).ravel()fpr_0 = fp_0 / (fp_0 + tn_0) if (fp_0 + tn_0) > 0 else 0fpr_1 = fp_1 / (fp_1 + tn_1) if (fp_1 + tn_1) > 0 else 0return abs(fpr_0 - fpr_1)

二、偏见检测与评估框架

2.1 全面评估指标系统

构建完整的偏见评估需要多维度指标:

class BiasAuditFramework:"""AI系统偏见审计框架"""def __init__(self, y_true, y_pred, sensitive_attr):self.y_true = y_trueself.y_pred = y_predself.sensitive_attr = sensitive_attrself.groups = np.unique(sensitive_attr)def calculate_all_metrics(self):"""计算所有偏见评估指标"""metrics = {}# 基础性能指标metrics['accuracy'] = self._calculate_group_accuracy()metrics['precision'] = self._calculate_group_precision()metrics['recall'] = self._calculate_group_recall()metrics['f1_score'] = self._calculate_group_f1()# 公平性指标metrics['statistical_parity'] = statistical_parity(self.y_pred, self.sensitive_attr)metrics['equal_opportunity'] = equal_opportunity(self.y_true, self.y_pred, self.sensitive_attr)metrics['predictive_equality'] = predictive_equality(self.y_true, self.y_pred, self.sensitive_attr)# 高级指标metrics['disparate_impact'] = self._calculate_disparate_impact()metrics['theil_index'] = self._calculate_theil_index()return metricsdef _calculate_group_accuracy(self):"""计算各群体准确率"""accuracy_dict = {}for group in self.groups:mask = self.sensitive_attr == groupcorrect = (self.y_pred[mask] == self.y_true[mask]).mean()accuracy_dict[f'group_{group}'] = correctreturn accuracy_dictdef _calculate_disparate_impact(self):"""计算差异影响指数4/5规则:小于0.8或大于1.25可能存在偏见"""group_0 = self.y_pred[self.sensitive_attr == 0]group_1 = self.y_pred[self.sensitive_attr == 1]positive_rate_0 = group_0.mean()positive_rate_1 = group_1.mean()# 避免除零错误if min(positive_rate_0, positive_rate_1) > 0:return min(positive_rate_0, positive_rate_1) / max(positive_rate_0, positive_rate_1)return 0def _calculate_theil_index(self):"""计算泰尔指数(不平等程度度量)"""# 实现泰尔指数计算passdef generate_audit_report(self):"""生成详细偏见审计报告"""metrics = self.calculate_all_metrics()report = """AI系统偏见审计报告===================性能差异分析:"""for metric_name, metric_value in metrics.items():if isinstance(metric_value, dict):report += f"\n{metric_name}:\n"for group, value in metric_value.items():report += f"  {group}: {value:.4f}\n"else:report += f"\n{metric_name}: {metric_value:.4f}"# 添加偏见检测结果report += "\n\n偏见检测结果:\n"if metrics['disparate_impact'] < 0.8:report += "⚠️  检测到潜在偏见:差异影响指数 < 0.8\n"if metrics['statistical_parity'] > 0.1:report += "⚠️  检测到潜在偏见:统计差异 > 0.1\n"return report# 使用示例
# audit = BiasAuditFramework(y_true, y_pred, sensitive_attributes)
# report = audit.generate_audit_report()
# print(report)

2.2 可视化分析工具

可视化是理解偏见模式的重要手段:

import matplotlib.pyplot as plt
import seaborn as snsdef plot_fairness_metrics(metrics_dict, model_names):"""绘制多个模型的公平性指标对比"""fig, axes = plt.subplots(2, 2, figsize=(15, 12))# 统计差异对比statistical_parities = [m['statistical_parity'] for m in metrics_dict]axes[0, 0].bar(model_names, statistical_parities)axes[0, 0].set_title('Statistical Parity Difference')axes[0, 0].set_ylabel('Difference')# 均等机会对比equal_opportunities = [m['equal_opportunity'] for m in metrics_dict]axes[0, 1].bar(model_names, equal_opportunities)axes[0, 1].set_title('Equal Opportunity Difference')axes[0, 1].set_ylabel('Difference')# 差异影响指数对比disparate_impacts = [m['disparate_impact'] for m in metrics_dict]axes[1, 0].bar(model_names, disparate_impacts)axes[1, 0].set_title('Disparate Impact Ratio')axes[1, 0].set_ylabel('Ratio')axes[1, 0].axhline(y=0.8, color='r', linestyle='--', label='4/5 threshold')# 准确率对比accuracies = [list(m['accuracy'].values()) for m in metrics_dict]x = np.arange(len(model_names))width = 0.35for i, model_acc in enumerate(accuracies):axes[1, 1].bar(x[i] - width/2, model_acc[0], width, label='Group 0')axes[1, 1].bar(x[i] + width/2, model_acc[1], width, label='Group 1')axes[1, 1].set_title('Accuracy by Group')axes[1, 1].set_ylabel('Accuracy')axes[1, 1].set_xticks(x)axes[1, 1].set_xticklabels(model_names)axes[1, 1].legend()plt.tight_layout()plt.show()def plot_confidence_distribution(y_true, y_pred, sensitive_attr, model_name):"""绘制不同群体的置信度分布"""groups = np.unique(sensitive_attr)plt.figure(figsize=(10, 6))for group in groups:mask = sensitive_attr == groupgroup_probs = y_pred[mask]  # 假设y_pred是概率值sns.kdeplot(group_probs, label=f'Group {group}', fill=True)plt.title(f'Confidence Distribution - {model_name}')plt.xlabel('Prediction Confidence')plt.ylabel('Density')plt.legend()plt.show()

三、偏见缓解技术实战

3.1 预处理方法:数据重加权

from sklearn.utils import class_weightclass DataReweighting:"""数据重加权偏见缓解"""def __init__(self, sensitive_attr, target_attr):self.sensitive_attr = sensitive_attrself.target_attr = target_attrself.weights = Nonedef calculate_fairness_weights(self):"""计算公平性权重"""# 交叉频数分析cross_tab = pd.crosstab(self.sensitive_attr, self.target_attr)# 计算理想分布(每个群体-类别组合的期望比例)ideal_distribution = cross_tab.sum(axis=1) / len(self.sensitive_attr)# 计算权重(反比于实际分布)weights = {}for sens_group in cross_tab.index:for target_class in cross_tab.columns:actual_prob = cross_tab.loc[sens_group, target_class] / cross_tab.sum().sum()ideal_prob = ideal_distribution[sens_group] * (cross_tab[target_class].sum() / cross_tab.sum().sum())if actual_prob > 0:weights[(sens_group, target_class)] = ideal_prob / actual_probelse:weights[(sens_group, target_class)] = 0self.weights = weightsreturn weightsdef apply_weights_to_dataset(self, X, sensitive_attr, target_attr):"""应用权重到数据集"""sample_weights = np.ones(len(X))for i, (sens, target) in enumerate(zip(sensitive_attr, target_attr)):sample_weights[i] = self.weights.get((sens, target), 1.0)return sample_weights# 使用示例
# reweighter = DataReweighting(sensitive_attr, y_train)
# weights = reweighter.calculate_fairness_weights()
# sample_weights = reweighter.apply_weights_to_dataset(X_train, sensitive_attr, y_train)
# model.fit(X_train, y_train, sample_weight=sample_weights)

3.2 处理中方法:对抗学习去偏

import torch
import torch.nn as nnclass AdversarialDebiasing(nn.Module):"""对抗学习去偏模型"""def __init__(self, main_model, adversary_model, lambda_val=0.1):super().__init__()self.main_model = main_modelself.adversary_model = adversary_modelself.lambda_val = lambda_valdef forward(self, x, sensitive_attr):# 主任务预测main_output = self.main_model(x)# 对抗预测(尝试从主任务输出预测敏感属性)adversary_output = self.adversary_model(main_output.detach())return main_output, adversary_outputdef compute_loss(self, main_output, adversary_output, y_true, sensitive_attr):# 主任务损失main_loss = nn.CrossEntropyLoss()(main_output, y_true)# 对抗损失(我们希望 adversary 无法预测敏感属性)adversary_loss = nn.CrossEntropyLoss()(adversary_output, sensitive_attr)# 总损失 = 主任务损失 - λ * 对抗损失total_loss = main_loss - self.lambda_val * adversary_lossreturn total_loss, main_loss, adversary_loss# 对抗训练循环示例
def adversarial_training(model, dataloader, num_epochs=50):"""对抗训练循环"""optimizer_main = torch.optim.Adam(model.main_model.parameters())optimizer_adversary = torch.optim.Adam(model.adversary_model.parameters())for epoch in range(num_epochs):for batch_x, batch_y, batch_sensitive in dataloader:# 训练对抗器model.adversary_model.train()model.main_model.eval()main_output = model.main_model(batch_x)adversary_output = model.adversary_model(main_output.detach())adversary_loss = nn.CrossEntropyLoss()(adversary_output, batch_sensitive)optimizer_adversary.zero_grad()adversary_loss.backward()optimizer_adversary.step()# 训练主模型(同时优化主任务和欺骗对抗器)model.adversary_model.eval()model.main_model.train()main_output, adversary_output = model(batch_x, batch_sensitive)total_loss, main_loss, adversary_loss = model.compute_loss(main_output, adversary_output, batch_y, batch_sensitive)optimizer_main.zero_grad()total_loss.backward()optimizer_main.step()

3.3 后处理方法:阈值调整

class ThresholdOptimizer:"""通过阈值调整实现公平性"""def __init__(self, y_true, y_score, sensitive_attr):self.y_true = y_trueself.y_score = y_scoreself.sensitive_attr = sensitive_attrself.groups = np.unique(sensitive_attr)def find_fair_thresholds(self, fairness_metric='equal_opportunity', tolerance=0.05):"""为不同群体寻找最优阈值"""best_thresholds = {}fairness_values = {}for group in self.groups:mask = self.sensitive_attr == groupgroup_y_true = self.y_true[mask]group_y_score = self.y_score[mask]# 网格搜索最优阈值thresholds = np.linspace(0, 1, 100)best_fairness = float('inf')best_threshold = 0.5for threshold in thresholds:y_pred = (group_y_score >= threshold).astype(int)current_fairness = self._calculate_fairness(group_y_true, y_pred, fairness_metric)if current_fairness < best_fairness:best_fairness = current_fairnessbest_threshold = thresholdbest_thresholds[group] = best_thresholdfairness_values[group] = best_fairnessreturn best_thresholds, fairness_valuesdef _calculate_fairness(self, y_true, y_pred, metric_name):"""计算指定公平性指标"""if metric_name == 'statistical_parity':return abs(y_pred.mean() - self.y_pred_overall.mean())elif metric_name == 'equal_opportunity':return equal_opportunity(y_true, y_pred, np.ones_like(y_true))else:raise ValueError(f"Unknown metric: {metric_name}")def apply_fair_thresholds(self, y_score, sensitive_attr):"""应用公平阈值进行预测"""y_pred = np.zeros_like(y_score)for group in self.groups:mask = sensitive_attr == groupgroup_scores = y_score[mask]threshold = self.best_thresholds[group]y_pred[mask] = (group_scores >= threshold).astype(int)return y_pred# 使用示例
# optimizer = ThresholdOptimizer(y_val_true, y_val_score, val_sensitive)
# thresholds, fairness = optimizer.find_fair_thresholds(tolerance=0.05)
# fair_predictions = optimizer.apply_fair_thresholds(test_score, test_sensitive)

四、完整偏见审计与缓解流程

4.1 端到端偏见处理流程

class EndToEndBiasMitigation:"""端到端偏见处理流程"""def __init__(self, model, X, y, sensitive_attr):self.model = modelself.X = Xself.y = yself.sensitive_attr = sensitive_attr# 数据分割self.X_train, self.X_test, self.y_train, self.y_test, self.s_train, self.s_test = \self._split_data_with_sensitive(X, y, sensitive_attr)def _split_data_with_sensitive(self, X, y, sensitive_attr, test_size=0.3):"""保持敏感属性分布的数据分割"""from sklearn.model_selection import train_test_splitX_train, X_test, y_train, y_test, s_train, s_test = train_test_split(X, y, sensitive_attr, test_size=test_size, stratify=y, random_state=42)return X_train, X_test, y_train, y_test, s_train, s_testdef run_complete_pipeline(self):"""运行完整偏见处理流程"""print("1. 初始偏见检测...")initial_metrics = self._evaluate_model(self.model, self.X_test, self.y_test, self.s_test)print("2. 应用数据重加权...")reweighted_model = self._apply_reweighting()reweighted_metrics = self._evaluate_model(reweighted_model, self.X_test, self.y_test, self.s_test)print("3. 应用对抗学习...")adversarial_model = self._apply_adversarial_learning()adversarial_metrics = self._evaluate_model(adversarial_model, self.X_test, self.y_test, self.s_test)print("4. 应用阈值调整...")final_metrics = self._apply_threshold_adjustment(adversarial_model)# 生成对比报告comparison = {'initial': initial_metrics,'reweighted': reweighted_metrics,'adversarial': adversarial_metrics,'final': final_metrics}return comparisondef generate_comprehensive_report(self, comparison_results):"""生成综合报告"""report = """偏见缓解效果综合报告===================各阶段公平性指标对比:"""metrics_to_display = ['statistical_parity', 'equal_opportunity', 'disparate_impact']for metric in metrics_to_display:report += f"\n{metric}:\n"for stage, results in comparison_results.items():value = results[metric]if isinstance(value, dict):value = sum(value.values()) / len(value)  # 简化显示report += f"  {stage}: {value:.4f}\n"# 计算改善程度initial_fairness = comparison_results['initial']['statistical_parity']final_fairness = comparison_results['final']['statistical_parity']improvement = (initial_fairness - final_fairness) / initial_fairness * 100report += f"\n总体改善: {improvement:.1f}% 的偏见减少\n"return report# 使用示例
# pipeline = EndToEndBiasMitigation(model, X, y, sensitive_attr)
# results = pipeline.run_complete_pipeline()
# report = pipeline.generate_comprehensive_report(results)
# print(report)

五、实践建议与最佳实践

5.1 构建负责任AI系统的原则

  1. 多元化数据收集:确保训练数据覆盖所有相关群体
  2. 透明化文档:记录数据来源、标注过程和模型限制
  3. 持续监控:在生产环境中持续监控模型公平性
  4. 多方参与:包括领域专家、受影响群体代表在开发过程中

5.2 组织层面的实施框架

class OrganizationalBiasFramework:"""组织级偏见治理框架"""def __init__(self):self.policies = {}self.audit_logs = []self.mitigation_strategies = {}def define_fairness_policy(self, policy_name, metrics, thresholds):"""定义公平性政策"""self.policies[policy_name] = {'metrics': metrics,'thresholds': thresholds,'created_at': datetime.now()}def conduct_audit(self, model, dataset, policy_name):"""执行偏见审计"""policy = self.policies[policy_name]audit_result = {'timestamp': datetime.now(),'policy': policy_name,'results': {},'compliance': True}# 计算所有指标for metric in policy['metrics']:value = calculate_metric(metric, model, dataset)audit_result['results'][metric] = value# 检查是否符合阈值要求threshold = policy['thresholds'][metric]if value > threshold:audit_result['compliance'] = Falseself.audit_logs.append(audit_result)return audit_resultdef implement_mitigation(self, strategy_name, technique, parameters):"""实施偏见缓解策略"""self.mitigation_strategies[strategy_name] = {'technique': technique,'parameters': parameters,'implemented_at': datetime.now(),'effectiveness': None}def generate_compliance_report(self):"""生成合规性报告"""compliant_audits = [a for a in self.audit_logs if a['compliance']]compliance_rate = len(compliant_audits) / len(self.audit_logs) if self.audit_logs else 0report = f"""组织AI公平性合规报告生成时间: {datetime.now()}==============================总审计次数: {len(self.audit_logs)}合规次数: {len(compliant_audits)}合规率: {compliance_rate:.1%}最近审计结果:"""for audit in self.audit_logs[-5:]:  # 显示最近5次审计report += f"\n{audit['timestamp']}: {audit['policy']} - {'合规' if audit['compliance'] else '不合规'}"return report

结论:迈向公平可靠的AI未来

AI偏见问题不能仅靠技术解决,但技术是解决方案的重要组成部分。通过系统性的偏见检测和缓解策略,我们可以显著提高AI系统的公平性和可靠性。

关键要点总结:

  1. 检测先行:在使用任何缓解技术前,必须全面评估模型偏见
  2. 多层次策略:结合预处理、处理中和后处理方法
  3. 持续监控:公平性不是一次性的目标,而是持续的过程
  4. 组织承诺:需要技术、流程和文化的共同支持

未来发展方向:

  1. 自动化偏见检测:开发更智能的自动偏见检测工具
  2. 可解释性增强:更好地理解偏见产生的原因和机制
  3. 标准化评估:建立行业统一的偏见评估标准和基准
  4. 跨文化公平性:解决全球化AI系统中的跨文化偏见问题

通过采用本文介绍的技术和方法,开发者和组织可以构建更加公平、可靠的AI系统,为推动负责任AI发展做出贡献。


点击AladdinEdu,同学们用得起的【H卡】算力平台”,H卡级别算力80G大显存按量计费灵活弹性顶级配置学生更享专属优惠

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

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

相关文章

Trae + MCP : 一键生成专业封面

每日一句 人生只有走出来的美丽&#xff0c; 没有等出来的辉煌。 目录 每日一句 前言 一.核心工具与优势解析 二.操作步骤&#xff1a;从配置到生成广告封面 前期准备&#xff1a;确认环境与工具版本 第一步. 获取配置代码 第二步&#xff1a;在 Trae 中导入 MCP 配置…

Eureka与Nacos的区别-服务注册+配置管理

Eureka与Nacos的区别-服务注册配置管理 以下是 Eureka 和 Nacos 的核心区别对比&#xff0c;帮你清晰理解它们的不同定位和特性&#xff1a; ​1. 核心定位​ ​Eureka&#xff1a;​​ ​纯服务注册与发现中心&#xff0c;源自 Netflix&#xff0c;核心功能是维护服务实例清单…

这才是真正懂C/C++的人,写代码时怎么区分函数指针和指针函数?

1.介绍 很多初中级开发者常常在这两个术语之间感到困惑,分不清它们的定义、语法和应用场景,从而在实际编程中埋下隐患。本文旨在拨开迷雾,从概念定义、语法解析、核心区别及实战应用四个维度,对函数指针与指针函数进行一次全面、深入的辨析,帮助您彻底厘清这两个概念,并…

Go基础(④指针)

简单示例package mainimport "fmt"func main() {var num int 100var p *int &num // 指向int类型的指针fmt.Println(*p) // 解引用&#xff0c;输出 100*p 200 // 通过指针修改原变量fmt.Println(num) // 输出 200 }package mainimport "fmt…

java社交小程序源码支持APP多端springboot部署与功能模块详解

构建一个支持 多端访问、实时互动、商城交易 的综合型应用&#xff0c;已成为众多企业和开发团队的共同目标。由 宠友信息技术有限公司 打造的 友猫社区&#xff0c;正是基于 Spring Boot 技术栈 的全端解决方案&#xff0c;既能支持 微信小程序、APP、PC管理后台&#xff0c;又…

代理连接性能优化:提升网络效率的关键技术与实践

在当今数字化时代&#xff0c;代理连接性能优化已成为网络架构设计中的关键环节。本文将深入探讨如何通过技术手段提升代理服务器的响应速度、稳定性和资源利用率&#xff0c;帮助读者构建高效可靠的代理网络体系。 代理连接性能优化&#xff1a;提升网络效率的关键技术与实践 …

Rust 元组

简介 元组可以由多种类型组成&#xff0c;长度固定。 创建元组 // 固定类型 let tup1: (i32, f64, u8) (500, 8.8, 1);// 不固定类型 let tup2 (500.99, 8.8, 1, 9.99);println!("{}", tup2.0);用模式匹配解构元组 let tup (500.99, 8.8, 1, 9.99); let (x, y…

突破闭集限制:3D-MOOD 实现开集单目 3D 检测新 SOTA

【导读】 单目 3D 目标检测是计算机视觉领域的热门研究方向&#xff0c;但如何在真实复杂场景中识别“未见过”的物体&#xff0c;一直是个难题。本文介绍的 3D-MOOD 框架&#xff0c;首次提出端到端的开集单目 3D 检测方案&#xff0c;并在多个数据集上刷新了 SOTA。 目录 …

Python爬虫数据清洗实战:从杂乱无章到整洁可用

小伙伴们&#xff0c;做爬虫最头疼的不是抓数据&#xff0c;而是抓回来那一堆乱七八糟的内容&#xff01;价格里混着符号、日期格式千奇百怪、还有重复和缺失的值&#xff0c;看着就头大。别慌&#xff0c;咱们用Python几招就能搞定。Pandas处理表格数据是真香&#xff0c;正则…

打工人日报#20250906

打工人日报#20250906 周六了&#xff01; 今天出门读者特别痛&#xff0c;本来都想爽约了&#xff0c;不过忍下来了了&#xff0c;现在看来很值得&#xff01; 不过还是要好好吃早餐、和热水&#xff01; 阅读 《小米创业思考》 第一章 奇迹时代 看完了 就是快呀 好的产品 好的…

小型磨床设计cad+三维图+设计说明书

摘 要 随着现代加工技术的发展&#xff0c;各种各样的加工技术得到了广泛的应用&#xff0c;磨床在机械制造领域得到了广泛的应用&#xff0c;本文经过查阅相关文献&#xff0c;完成了一种小型磨床的结构设计。 本文设计的小型磨床其主要是由三部分组成的&#xff0c;第一部分…

音响皇帝BO,牵手全球第一AR眼镜雷鸟,耳机党坐不住了?

【潮汐商业评论/原创】自AI大模型技术实现突破以来&#xff0c;即引发一场终端革命&#xff0c;关于下一个智能终端入口&#xff0c;或者说关于下一代计算平台&#xff0c;市场有过很多“狼来了”的声音&#xff0c;大家纷纷猜测&#xff0c;在智能手机之后&#xff0c;究竟谁有…

中断和异常

中断和异常简介 在计算机体系结构和操作系统中&#xff0c;中断&#xff08;Interrupt&#xff09; 和 异常&#xff08;Exception&#xff09; 是CPU应对突发事件、实现多任务并发和错误处理的核心机制。二者均通过暂停当前任务、转去执行特定处理程序来响应事件&#xff0c;但…

Fab资源快速导入UE

有时候在Epic启动器导入进度会卡住可以直接使用ue内置Fab来导入资源 这样是百分百能导入的

Python错误测试与调试——文档测试

Doctest 通过解析文档字符串&#xff08;docstring&#xff09;中的交互式 Python 代码片段&#xff08;以 >>>开头&#xff09;进行测试&#xff0c;验证代码输出是否与预期一致。测试用例直接嵌入代码中&#xff0c;实现“文档即测试”核心语法&#xff1a;def func…

c#核心笔记

111&#xff0c;面向对象 1&#xff0c;面向过程编程&#xff1a;是一种以过程为中心的编程思想分析出解决问题所需要的步骤然后用函数把步骤一步一步实现使用的时候&#xff0c;一个一个依次调用。 2&#xff0c;面向对象编程&#xff1a;面向对象是一种对现实世界理解和抽象的…

【MySQL】从零开始了解数据库开发 --- 初步认识数据库

永远记住&#xff0c;你的存在是有意义的&#xff0c; 你很重要&#xff0c; 你是被爱着的&#xff0c; 而且你为这个世界带来了无可取代的东西。 -- 麦克西 《男孩、鼹鼠、狐狸和马》-- 从零开始了解数据库开发安装MySQL什么是数据库常见主流数据库初步了解SQL语句存储引擎安装…

Altium Designer(AD24)切换工作界面为浅灰色的方法

🏡《专栏目录》 目录 1,概述 2,界面介绍 1,概述 本文演示AD24软件黑色界面切换为浅灰色的方法。 2,界面介绍 第1步:点击设置小图标,然后点击View 第2步:在UI Theme,点击Current旁边的Altium Dark Gtay ,在下拉选项中选择Altium Light Gtay,然后点击OK确认 第4步…

SDRAM详细分析—07 存储器阵列寻址

大家好,这里是大话硬件 这篇文章将分析实际SDRAM内部是如何进行寻址以及内存单元分布方式。 根据前面的内容,从小容量到大容量进行迭代分析。 1. 1bit容量 这个存储单元只能存储1个bit位。假设现在需要8bit内存容量颗粒,则需要8颗这样的存储器件。 2. 4bit容量 这个存储…

【GitOps】Argo CD高级操作钩子

Argo CD高级操作钩子 文章目录Argo CD高级操作钩子资源列表一、Argo CD钩子1.1、钩子介绍1.2、构建的几个执行阶段1.3、钩子删除策略1.4、示例二、钩子演示2.1、创建GitLab公共仓库2.2、Argo CD创建Application2.3、同步&#xff08;SYNC&#xff09;资源列表 操作系统配置主机…