解释性人工智能(XAI)

news2024/11/28 12:49:50

引言

        解释性人工智能(XAI)是指一类旨在使人能够理解和解释机器学习模型的方法和技术。XAI的目标是提高AI系统的透明度和可理解性,让人们能够理解机器学习模型的决策过程、推理方式和结果。这对于社会应用和用户信任非常重要,因为AI系统的不可解释性可能带来风险和问题。

        例如,在医疗领域,基于机器学习的诊断系统可能会出现错误的判断,如果这些错误不能被解释或理解,就会严重影响医生和患者的信任和满意度。同样,在金融领域,决策树或神经网络等模型的输出结果可能会影响到人们的投资和贷款等决策,如果这些决策不能被理解或解释,就难以建立起用户对AI系统的信任和依赖。

        因此,XAI对于提高AI系统的透明度和可理解性具有重要的作用和意义。通过XAI技术,人们可以更好地理解机器学习模型的决策过程,从而提高其可靠性和准确性。

1. 概念和背景

        解释性人工智能(XAI)是指一类旨在使人能够理解和解释机器学习模型的方法和技术。其目标是提高AI系统的透明度和可理解性,让人们能够理解机器学习模型的决策过程、推理方式和结果。

AI系统的透明度和可理解性对于社会应用和用户信任非常重要的原因如下:

  1. 可解释性促进可信度:当AI系统的决策过程可以被解释和理解时,人们更容易相信该系统的准确性和可靠性。这对于关键领域如医疗、金融和法律等至关重要,因为这些领域的决策往往需要有合理的解释和依据。

  2. 误判和错误纠正:如果AI系统做出错误的决策,可解释性使人们能够追溯决策的原因,并纠正错误。例如,在医疗诊断中,如果机器学习模型错误地将一个患者诊断为正常,医生可以通过理解模型的决策过程来找到错误的原因并进行修正。

  3. 避免偏见和不公平:AI系统的不可解释性可能导致潜在的偏见和不公平现象。例如,招聘中使用的自动筛选系统可能会对某些人群产生不公平的影响,但如果无法解释其决策过程,就很难发现和纠正这个问题。

下面是几个实际案例,说明AI系统的不可解释性可能带来的问题和风险:

  1. 信用评分系统:银行和金融机构使用AI算法来评估借款人的信用风险。然而,这些算法通常非常复杂且不可解释,导致借款人难以理解为何被拒绝贷款。这可能引发争议和不满,破坏用户对金融系统的信任。

  2. 自动驾驶汽车:自动驾驶汽车依赖于深度学习模型进行决策和感知。然而,当发生事故时,由于无法解释模型的决策过程,很难确定责任和原因。这可能引发法律纠纷和安全担忧。

  3. 医疗诊断系统:医疗领域利用AI系统进行疾病诊断和预测。如果这些系统不能提供解释和依据,医生和患者难以信任其结果。此外,不可解释的系统也难以满足医疗行业对于透明性和责任的要求。

        为了解决这些问题,XAI技术被广泛研究和应用,例如使用特征重要性分析、模型可视化和规则提取等方法来提高模型的可解释性和透明度。通过增加AI系统的可解释性,我们可以提高其社会应用的可信度和用户的信任水平。

2. XAI的应用和意义

  1. 医疗领域:XAI在医疗诊断和治疗决策中具有重要作用。通过解释模型的决策过程,医生可以更好地理解AI系统如何做出诊断,并与其共同决策。例如,通过可视化模型的特征重要性,医生可以了解到模型在诊断中关注的关键特征,从而提高对疾病的理解和判断。

代码示例:

# 使用LIME算法解释模型的决策过程
import lime
import lime.lime_tabular
​
# 创建LIME解释器
explainer = lime.lime_tabular.LimeTabularExplainer(training_data, feature_names=feature_names, class_names=class_names)
​
# 解释一个样本的预测结果
exp = explainer.explain_instance(test_sample, model.predict_proba, num_features=5)
exp.show_in_notebook()  # 在Jupyter Notebook中显示解释结果
  1. 金融领域:XAI在信用评分、风险管理和投资决策中发挥着重要作用。通过解释机器学习模型的决策过程,金融从业者可以更好地理解模型的预测依据,并评估其合理性和准确性。同时,可解释性还有助于发现和纠正潜在的偏见和不公平现象。

代码示例:

# 使用SHAP算法解释模型的预测结果
import shap
​
# 创建SHAP解释器
explainer = shap.Explainer(model)
​
# 解释一个样本的预测结果
shap_values = explainer(test_sample)
shap.plots.waterfall(shap_values[0])  # 绘制瀑布图来展示特征对预测结果的贡献
  1. 自动驾驶:XAI在自动驾驶领域有助于提高系统的可靠性和安全性。通过解释模型的决策过程,车辆乘客和监管部门可以更好地理解自动驾驶系统如何进行决策,并评估其合理性和安全性。这对于调查事故责任、改进系统设计和满足监管要求非常重要。

代码示例:

# 使用LIME算法解释模型的决策过程
import lime
import lime.lime_image
​
# 创建LIME解释器
explainer = lime.lime_image.LimeImageExplainer()
​
# 解释一张图像的预测结果
explanation = explainer.explain_instance(image, model.predict_proba, top_labels=1, hide_color=0, num_samples=1000)
explanation.show_in_notebook()  # 在Jupyter Notebook中显示解释结果

XAI不仅提供了更可靠和可解释的决策支持,还在解决AI伦理和偏见问题上发挥着重要作用:

  1. 减少算法歧视:通过解释模型的决策过程,可以发现和纠正潜在的算法歧视问题。例如,在招聘中使用自动筛选系统时,可解释性可以帮助评估其决策是否受到性别、种族等因素的影响,并采取相应的措施来减少偏见。

  2. 错误判断纠正:当AI系统做出错误的决策时,XAI可以帮助用户理解错误的原因,并采取相应的措施进行纠正。例如,在司法系统中使用AI进行罪犯判定时,如果模型的决策结果存在错误,可解释性可以帮助律师和法官理解模型的决策依据,从而发现和纠正错误。

        XAI在医疗、金融、自动驾驶等领域的应用能够提供更可靠和可解释的决策支持,帮助用户理解AI系统的决策过程。同时,它还有助于解决AI伦理和偏见问题,减少算法歧视和错误判断。通过使用适当的XAI技术和方法,可以增强AI系统的透明度和可信度,推动其在各个领域的应用。

XAI的研究领域和方法

1. 算法改进

  1. 透明机器学习算法

        透明机器学习算法是指那些可以提供模型决策过程的详细信息的算法。这些算法通常使用可解释性模型(例如线性回归、决策树等)或添加了可解释性约束的复杂模型(例如LASSO回归、ElasticNet等)来进行训练。这些算法的主要优点是提供了对模型决策过程的深入理解,从而帮助提高模型的可信度和预测准确性。

代码示例:

# 使用透明机器学习算法(如决策树)进行分类
from sklearn.tree import DecisionTreeClassifier
​
model = DecisionTreeClassifier()
model.fit(X_train, y_train)
​
# 显示模型的特征重要性
feature_importances = model.feature_importances_
print(feature_importances)
        2.规则提取

规则提取是一种从黑盒模型中提取可理解规则的技术。它通常通过分析模型的输入输出关系来提取模型的行为和决策规则。这些规则可以用于解释模型的预测结果,并帮助用户理解模型的决策依据。

代码示例:

# 使用规则提取算法(如OneR)进行分类
from sklearn.naive_bayes import GaussianNB
from sklearn.datasets import load_iris
from sklearn.metrics import accuracy_score
​
iris = load_iris()
X, y = iris.data, iris.target
​
model = GaussianNB()
model.fit(X, y)
​
# 使用OneR算法提取规则
from sklearn.experimental import enable_hist_gradient_boosting
from sklearn.tree import DecisionTreeClassifier, export_text
​
rules = export_text(DecisionTreeClassifier(random_state=42).fit(X, y))
print(rules)
        3.局部可解释性模型

        局部可解释性模型是指那些可以提供关于单个预测的解释的模型。这些模型通常使用局部拟合算法来训练,例如局部加权线性回归(LWLR)或局部加权核密度估计(LWKDE)。这些模型的主要优点是提供了针对单个预测的解释和可信度评估,从而帮助用户更好地理解AI系统的决策过程。

代码示例:

# 使用局部加权线性回归(LWLR)进行预测
import numpy as np
from sklearn.linear_model import LinearRegression
​
def lwlr(test_point, x_data, y_data, k=1.0):
    m = np.shape(x_data)[0]
    weights = np.mat(np.eye((m)))
    for j in range(m):
        diff_mat = test_point - x_data[j, :]
        weights[j, j] = np.exp(diff_mat * diff_mat.T / (-2.0 * k ** 2))
    xTx = x_data.T * (weights * x_data)
    if np.linalg.det(xTx) == 0.0:
        return None
    ws = xTx.I * (x_data.T * (weights * y_data))
    return test_point * ws
​
# 使用LWLR进行预测
test_point = np.array([0.5, 0.5, 0.5, 0.5])
lwlr(test_point, X_train, y_train, k=1.0)

        透明机器学习算法、规则提取和局部可解释性模型是提高AI系统可解释性和可靠性的常用方法。它们都可以提供对模型决策过程的深入理解,并帮助用户更好地理解AI系统的决策依据。这些方法在各个领域都有广泛的应用,例如医疗、金融、自动驾驶等。

2. 可视化技术

        可视化技术在可解释人工智能(XAI)中起着至关重要的作用,它能够帮助用户理解AI系统的决策过程、增强对模型的信任,并提供直观的解释。以下是两个常见的可视化技术示例:特征重要性可视化和决策路径可视化。

        1.特征重要性可视化

        特征重要性可视化是一种展示模型特征对预测结果的相对重要性的方法。它可以帮助用户了解模型对不同特征的依赖程度,从而更好地理解模型的决策依据。

代码示例:

import matplotlib.pyplot as plt
from sklearn.ensemble import RandomForestClassifier
​
model = RandomForestClassifier()
model.fit(X_train, y_train)
​
# 获取特征重要性
feature_importances = model.feature_importances_
​
# 可视化特征重要性
plt.bar(range(len(feature_importances)), feature_importances)
plt.xticks(range(len(feature_importances)), feature_names, rotation=90)
plt.xlabel('Feature')
plt.ylabel('Importance')
plt.title('Feature Importance')
plt.show()

        上述代码使用随机森林分类器训练了一个模型,并通过feature_importances_属性获取了特征重要性。随后,使用matplotlib库进行可视化,将特征重要性以柱状图的形式展示出来。

        2.决策路径可视化

        决策路径可视化是一种将模型的决策路径以图形化的方式展示出来的技术。它可以帮助用户了解模型在预测过程中的决策流程,并提供对预测结果的解释。

代码示例:

from sklearn import tree
import graphviz
​
model = tree.DecisionTreeClassifier()
model.fit(X_train, y_train)
​
# 可视化决策树
dot_data = tree.export_graphviz(model, out_file=None, feature_names=feature_names, class_names=class_names, filled=True)
graph = graphviz.Source(dot_data)
graph.render("decision_tree")  # 将决策路径保存为PDF或图片文件
graph.view()  # 在浏览器中显示决策路径

        上述代码使用决策树分类器训练了一个模型,并使用export_graphviz函数将决策树导出为DOT格式的数据。随后,使用graphviz库将DOT数据渲染成决策树的可视化图形。

        通过特征重要性可视化和决策路径可视化,用户可以更好地理解AI系统的决策过程,并对预测结果的可靠性产生信任。这些可视化技术在XAI中起着关键作用,有助于提高用户对AI决策的理解和接受度。

3. 应用场景

  1. 医疗诊断

        在医疗诊断领域,AI系统可以通过分析患者的病历、体征和检查结果来预测病情,但这些AI系统通常是黑盒子,难以解释其决策依据。XAI技术可以帮助医生理解AI系统的决策过程,并提供更准确的判断依据。

        应用案例: 病情预测:AI系统可以根据患者的病历、体征和检查结果预测疾病的发展趋势,例如预测癌症的生存率或心脏病发作的风险。

XAI的帮助:

  • 解释特征重要性:XAI技术可以分析AI系统对预测结果所使用的特征,将其排序并显示给医生,从而帮助医生了解哪些特征对预测结果最为重要。

  • 提供可信的解释:通过可视化或文字形式的解释,XAI技术可以向医生解释AI系统如何结合特征进行决策,并提供对决策的信心度量。

优势:

  • 提高诊断准确率:XAI技术帮助医生理解AI系统的决策过程,从而帮助医生更好地使用AI系统作出准确的诊断。

  • 个性化治疗:通过理解AI系统的决策过程,医生可以根据患者的特定情况制定个性化的治疗方案。

  • 增加对AI系统的信任:通过提供透明和可解释的决策过程,XAI技术增加了医生对AI系统的信任,使其更愿意接受和使用AI系统。

挑战:

  • 模型可解释性问题:大多数AI模型是黑盒子,难以解释其决策依据,这使得医生难以理解AI系统如何得出某一诊断结果。

  • 数据质量问题:医疗数据通常复杂且存在噪声,这可能影响AI系统的预测准确性,同时也增加了解释AI系统决策的难度。

  • 法律和伦理问题:解释AI系统的决策过程可能涉及患者隐私和数据保护等法律和伦理问题。

解决方案:

  • 可解释人工智能技术:使用XAI技术,如局部线性可解释性(LIME)或SHapley Additive exPlanations(SHAP),可以帮助解释AI模型的决策过程。

  • 数据清洗和预处理:通过对医疗数据进行清洗和预处理,可以提高数据质量,减少噪声和错误。

下面是一个使用LIME解释模型决策的示例代码:

import lime
import lime.lime_tabular
​
# 训练模型
model.fit(X_train, y_train)
​
# 初始化解释器
explainer = lime.lime_tabular.LimeTabularExplainer(X_train, feature_names=feature_names, class_names=class_names, discretize_continuous=True)
​
# 选择一条样本进行解释
sample_idx = 10
sample = X_test[sample_idx]
​
# 解释该样本的预测结果
explanation = explainer.explain_instance(sample, model.predict_proba)
​
# 可视化解释结果
explanation.show_in_notebook()
        金融风险评估

        在金融风险评估中,AI系统可以通过分析客户的个人信息、财务状况和历史信用记录来评估其信用风险。XAI技术可以帮助金融专家理解AI系统的决策过程,并提供更准确的判断依据。

        应用案例: 信用评分:AI系统可以根据客户的个人信息和历史信用记录评估其信用风险,例如为客户分配信用分数或决定是否批准贷款申请。

        XAI的帮助:

        特征重要性解释:XAI技术可以解释哪些特征对于AI系统评估信用风险最为重要,从而帮助金融专家了解决策的依据。

        决策可信度评估:XAI技术可以提供对AI系统预测结果的置信度评估,帮助金融专家判断AI系统的决策是否可靠。

        优势:

        提高风险评估准确率:通过理解AI系统的决策过程,金融专家可以更好地使用模型评估客户的信用风险,从而提高评估准确率。

        降低信贷风险:通过更准确地评估客户的信用风险,金融机构可以更好地管理信贷风险,减少坏账率。

        加快决策速度:AI系统可以快速评估客户的信用风险,从而加快贷款决策的速度。

        挑战:

        模型可解释性问题:大多数AI模型是黑盒子,难以解释其决策依据,这使得金融专家难以理解AI系统如何评估客户的信用风险。

        数据质量问题:金融数据通常包含噪声和缺失值,这可能影响AI系统的预测准确性,并增加解释AI系统决策的难度。

        法律和伦理问题:使用AI系统评估信用风险可能涉及公平性和歧视等法律和伦理问题。

解决方案:

  • 可解释人工智能技术:使用XAI技术,如SHAP或LIME,可以帮助解释AI模型的决策过程。

  • 数据清洗和预处理:通过对金融数据进行清洗和预处理,可以提高数据质量,并减少噪声和错误。

使用XAI方法改进算法可解释性

        当使用常见的机器学习算法(如决策树或逻辑回归)时,可以应用可解释性技术来改进算法的可解释性。下面是一个使用LIME(局部线性可解释性)技术来解释决策树模型的示例代码:

import numpy as np
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
import lime
import lime.lime_tabular
​
# 加载数据集
data = load_iris()
X = data.data
y = data.target
feature_names = data.feature_names
class_names = data.target_names
​
# 训练决策树模型
model = DecisionTreeClassifier()
model.fit(X, y)
​
# 初始化解释器
explainer = lime.lime_tabular.LimeTabularExplainer(X, feature_names=feature_names, class_names=class_names, discretize_continuous=True)
​
# 选择一条样本进行解释
sample_idx = 0
sample = X[sample_idx]
​
# 解释该样本的预测结果
explanation = explainer.explain_instance(sample, model.predict_proba, num_features=len(feature_names))
​
# 可视化解释结果
explanation.show_in_notebook()

        上述代码使用了sklearn库加载鸢尾花数据集,并使用DecisionTreeClassifier训练了一个决策树模型。接下来,我们使用lime.lime_tabular.LimeTabularExplainer初始化了一个解释器,并传入特征名称、类别名称和训练数据。然后,我们选择一条样本进行解释,并使用explain_instance方法来解释该样本的预测结果。最后,我们使用show_in_notebook方法将解释结果可视化展示出来。

        LIME技术通过生成局部可解释模型来解释决策树模型的决策过程。它通过对原始样本进行微小的特征扰动来生成类似的数据集,并使用这些数据集训练一个线性模型,从而解释原始样本的预测结果。在解释器中,我们使用num_features参数来指定要选择的特征数量。

        解释结果的可视化展示了特征的重要性和对预测结果的影响程度。在每个特征的解释中,我们可以看到特征的权重以及对应的预测结果的变化。这些解释可以帮助我们理解决策树模型是如何根据特征进行决策的,从而提高模型的可解释性。

通过使用XAI技术(如LIME)解释决策树模型,我们可以获得以下好处:

  1. 特征重要性解释:解释器会根据特征的权重显示出每个特征对预测结果的重要性,帮助我们理解模型是如何利用不同特征进行决策的。

  2. 决策可信度评估:解释器可以提供对预测结果的置信度评估,帮助我们判断模型的决策是否可靠。

结论

        首先,XAI可以增强AI系统的可理解性和透明度。传统的机器学习算法在解决实际问题时,常常缺乏可解释性,难以解释模型的运行过程,造成了不可信的感觉。而XAI技术可以提高AI系统的可解释性,帮助用户理解AI系统的决策和行为,增加对AI系统的信任度和透明度。

        其次,XAI对于AI技术发展和社会应用具有推动作用。AI技术的应用范围越来越广泛,但很多领域的AI系统都需要遵守一些道德、法律、规范等方面的要求。XAI可以帮助我们更好地理解AI系统的决策和行为,从而为制定相关规范和政策提供依据,推动AI技术的健康发展。

        未来,我们需要继续探索更先进的XAI技术,以提高AI系统的可解释性和透明度。同时,我们还需要解决一些挑战,例如:

  1. 如何平衡可解释性和预测性能之间的矛盾。

  2. 如何在处理大型、复杂数据集时提高解释器的效率和准确性。

  3. 如何应对对抗性攻击和隐私泄露等问题。

        为了解决这些挑战,我们需要加强学术界和工业界之间的合作,共同推动XAI技术的发展,并探索新的研究方向,以提高AI系统的可解释性和透明度,促进AI技术的健康发展。

下面是一个使用SHAP(Shapley Additive Explanations)技术来解释深度神经网络模型的示例代码:

import numpy as np
import tensorflow as tf
import shap
​
# 加载数据集
data = tf.keras.datasets.mnist.load_data()
X_train, y_train = data[0]
X_test, y_test = data[1]
​
# 构建深度神经网络模型
model = tf.keras.Sequential([
    tf.keras.layers.Flatten(input_shape=(28, 28)),
    tf.keras.layers.Dense(128, activation='relu'),
    tf.keras.layers.Dense(10)
])
model.compile(optimizer='adam', loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True), metrics=['accuracy'])
model.fit(X_train, y_train, epochs=5)
​
# 初始化解释器
explainer = shap.DeepExplainer(model, X_train[:100])
​
# 选择一条测试样本进行解释
sample_idx = 0
sample = X_test[sample_idx]
​
# 解释该样本的预测结果
explanation = explainer.shap_values(sample.reshape(1, -1))
​
# 可视化解释结果
shap.image_plot(explanation, -sample.reshape(1, 28, 28))

        上述代码使用了tensorflow库加载MNIST数据集,并使用Sequential模型构建了一个深度神经网络模型。接下来,我们使用shap.DeepExplainer初始化了一个解释器,并传入训练数据。然后,我们选择一条测试样本进行解释,并使用shap_values方法来解释该样本的预测结果。最后,我们使用shap.image_plot方法将解释结果可视化展示出来。

        SHAP技术通过对每个特征的影响进行分析来解释深度神经网络模型的决策过程。它通过对样本空间进行采样,生成类似的数据集,并使用这些数据集计算每个特征的Shapley值,从而解释原始样本的预测结果。在解释器中,我们使用shap.DeepExplainer来初始化一个解释器,并使用shap_values方法来解释样本的预测结果。

        解释结果的可视化展示了特征的重要性和对预测结果的影响程度。在每个特征的解释中,我们可以看到特征的权重以及对应的预测结果的变化。这些解释可以帮助我们理解深度神经网络模型是如何根据特征进行决策的,从而提高模型的可解释性。

通过使用XAI技术(如SHAP)解释深度神经网络模型,我们可以获得以下好处:

  1. 特征重要性解释:解释器会根据特征的Shapley值显示出每个特征对预测结果的重要性,帮助我们理解模型是如何利用不同特征进行决策的。

  2. 决策可信度评估:解释器可以提供对预测结果的置信度评估,帮助我们判断模型的决策是否可靠。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Axure 怎么用?一篇文章告诉你

Axure RP 9 该软件是一个非常实用的原型设计工具,了解 Axure、学会使用 Axure,作为产品经理,UI、界面规划等岗位的基本技能。特别是对于产品经理来说,画出优秀的原型可以更好地表达产品需求,提高沟通效率。如何快速入门…

Leetcode第382场周赛

Leetcode第382场周赛 本人水平有限,只做前三道。 一、按键变更的次数 给你一个下标从 0 开始的字符串 s ,该字符串由用户输入。按键变更的定义是:使用与上次使用的按键不同的键。例如 s “ab” 表示按键变更一次,而 s “bBBb”…

网络工程师学习笔记——HDLCPPP

继续学习计算机网络技术——HDLC&PPP 一、HDLC HDLC( High-Level Data Link Control ):高级数据链路控制 HDLC是一种面向比特的链路层协议。 HDLC的作用:接口地址借用,节省IP地址,使地址更加稳定 …

Javaweb实现的学生宿舍管理系统

Javaweb实现的学生宿舍管理系统 文章目录 Javaweb实现的学生宿舍管理系统系统介绍技术选型成果展示源码获取账号地址及其他说明 系统介绍 Javaweb实现的学生宿舍管理系统采用jspservlet技术实现了如下功能模块,分别是宿舍管理员管理、学生管理、宿舍楼管理、缺勤记…

SwiftUI 动画入门之一:路径动画(Path Animations)

概览 在 SwiftUI 的开发中,我们往往需要使用千姿百态的动画把我们的界面元素妆点的更加鲜活灵动。 如上图所示,我们使用路径动画使折线图更加生动了!这是怎么做到的呢? 在本篇博文中,您将学到以下内容: 概览1. 路径与形状(Path and Shape)2. 路径动画的原理3. 让路径…

LeetCode刷题:使用栈解决150. 逆波兰表达式求值

给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。 注意: 有效的算符为 、-、* 和 / 。每个操作数(运算对象)都可以是一个整数或者另一个表达式。两个…

程序的内存模型

师从黑马程序员 内存分区模型 内存大方向划分为4个区域 1、代码区:存放函数体的二进制代码,由操作系统管理的 2、全局区:存放全局变量环和静态变量以及常量 3、栈区:由编译器自动分配释放,存放函数的参数值&#…

【笔试常见易错选择题01】else、表达式、二维数组、%m.ns、%m.nf、常量指针和指针常量、宏定义、传参、数组越界、位段

1. 下列main()函数执行后的结果为&#xff08;&#xff09; int func(){ int i, j, k 0; for(i 0, j -1;j 0;i, j){ k; } return k; } int main(){cout << (func());return 0; }A. -1 B. 0 C. 1 D. 2 判断为赋值语句&#xff0c;j等于0 0为假不进循环 选B. 2. 下面程…

市场复盘总结 20240201

仅用于记录当天的市场情况&#xff0c;用于统计交易策略的适用情况&#xff0c;以便程序回测 短线核心&#xff1a;不参与任何级别的调整&#xff0c;采用龙空龙模式 一支股票 10%的时候可以操作&#xff0c; 90%的时间适合空仓等待 昨日主题投资 连板进级率 6/27 22.2% 二进…

LeetCode刷题:100.相同的树

题目&#xff1a; 解题思路&#xff1a;1.首先要判断根节点的情况&#xff0c;&#xff08;1&#xff09;首先是p为空&#xff0c;q不为空&#xff0c;或者p不为空&#xff0c;q为空则要返回false&#xff08;2&#xff09;p和q都为空则返回true&#xff0c;2.然后判断根节点的…

五、CPU针脚

电脑的两大厂商是Intel、AMD&#xff0c;区分他们两家的CPU&#xff0c;最简单的就是看CPU的针脚。 从形状上也大致能够看出来&#xff0c;AMD的logo占满了CPU的框框&#xff0c;Intel的是没有占满的。 CPU针脚针脚是什么呢&#xff1f; 如下&#xff0c;这一个个和小针一样的东…

【数据结构】 归并排序超详解

1.基本思想 归并排序&#xff08;MERGE-SORT&#xff09;是建立在归并操作上的一种有效的排序算法,该算法是采用分治法&#xff08;Divide andConquer&#xff09;的一个非常典型的应用。 将已有序的子序列合并&#xff0c;得到完全有序的序列&#xff0c;即先使每个子序列有序…

【操作系统·考研】文件系统

1.概述 文件系统(File System)提供高效和便捷的磁盘访问&#xff0c;以便允许存储、定位、提取数据。 严格来说&#xff0c;VFS并不是一种实际的FS&#xff0c;它只存在于内存中&#xff0c;不存在与任何外存空间中。 VFS在系统启动时建立&#xff0c;在系统关闭时消亡。 2.结…

Mask-Free Video Instance Segmentation

论文地址&#xff1a;[2303.15904] 无掩码视频实例分割 (arxiv.org) 论文代码&#xff1a;https://github.com/SysCV/MaskFreeVis 目录 一、摘要 二、介绍 三、方法 3.1 时间掩码一致性 3.2 时间KNN-patch Loss 3.3 训练MaskFreeVIS 四. 数据集 五.消融实验 六. 结果 七…

统计图表在线配置服务-百度 SugarBI的学习笔记

最近&#xff0c;有个产品要支持统计图表在线可配置&#xff0c;这样&#xff0c;当用户有新增统计指标的需求时&#xff0c;运维人员通过界面化配置&#xff0c;就可以增加统计指标了&#xff0c;不用开发写代码&#xff0c;画页面了。 上网查了下相关的组件&#xff0c;感觉…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之TextClock组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之TextClock组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、TextClock组件 TextClock组件通过文本将当前系统时间显示在设备上。支持不同…

推荐几款便宜雾锁王国(Enshrouded)游戏联机服务器

雾锁王国(Enshrouded)是一款多人在线游戏&#xff0c;为了获得更好的游戏体验&#xff0c;许多玩家会选择自行搭建游戏联机服务器&#xff0c;但是如何挑选价格合适、性能稳定的服务器成为一个难题&#xff0c;本文将为大家推荐几款便宜雾锁王国(Enshrouded)游戏联机服务器。 一…

【大厂AI课学习笔记】1.3 人工智能产业发展(4)——泛在的人工智能

人工智能走向泛在。 泛在&#xff0c;就是广泛存在。&#xff08;下图来自腾讯AI课。&#xff09; 没办法&#xff0c;被百度抛弃了&#xff0c;想学习&#xff0c;课程打不开&#xff0c;只好投想腾讯的怀抱。 之前考过腾讯云的认证&#xff0c;课程做的还是条理很清晰。 主…

【gRPC】Python建立服务端含接口映射

续之前《【gRPC】protoc文件转py文件》 基于之前的目录结构&#xff0c;微调下&#xff1a; |- example # 新增|- service|- api|- User.py|- configs.py |- example_proto|- core|- user.proto |- proto_output|- core # 续上文转化后的结果|- user_pb2.py|- user_pb2.pyi…

CANoe学习笔记——窗口类型

CANoe中的窗口类型&#xff0c;共分为三种 1&#xff1a;MDI windows 2&#xff1a;Standard Windows 3&#xff1a;Docking Windows 窗口有多种类型&#xff0c;每种类型都定义了特定的窗口行为。通过点击窗口顶部的区域&#xff0c;可以更改窗口类型。 如下图&#xff0…