【读论文】Learning perturbations to explain time series predictions

news2024/10/6 10:41:53

文章目录

  • Abstract
  • 1. Introduction
  • 2. Background Work
  • 3. Method
  • 4. Experiments
    • 4.1 Hidden Markov model experiment
    • 4.2 MIMIC-III experiment
  • 5. Conclusion
  • References

  • 论文地址:Learning Perturbations to Explain Time Series Predictions
  • 代码地址:https://github.com/josephenguehard/time_interpret
  • 收录于:PMLR 2023
  • 引用格式【GB/T 7714】:Enguehard J. Learning perturbations to explain time series predictions[C]//International Conference on Machine Learning. PMLR, 2023: 9329-9342.

Abstract

解释“基于多变量时间序列数据的预测”的困难在于:不仅要处理多个特征,还要处理时间依赖性。而且根据时间信息的不同,相同的特征可能会对预测产生截然不同的影响。(在多变量时间序列预测上进行解释的难点)

以前的工作使用了基于扰动的显著性方法来解决这个问题,使用可训练的掩码来对输入进行扰动,以发现哪些特征在哪些时间驱动了模型的预测结果。然而,这类方法从静态数据的类似方法中得到启发,引入了固定的扰动,而在时间序列数据上似乎没有什么动机这样做。(原有方法存在的问题)

在这项工作中,我们的目标是通过不仅学习掩码,而且通过学习相关的扰动来解释预测。(本文的做法)

我们的经验表明,学习这些扰动显著提高了在时间序列数据上解释结果的质量。(效果)

1. Introduction

尽管目前已经提出了许多解释神经网络的方法,但在多元时间序列数据上的解释方法的研究还相对不足。然而,这种类型的数据在医疗领域尤其重要,其中的数据可以是带有时间戳的医疗事件列表或生命体征测量值。因此,对于这种时间因素的处理是至关重要的。

目前,针对多元时间序列数据的解释方法研究主要包括:

  • RETAIN1,这是一种基于注意力的模型,可以通过特征和时间来学习这种注意力;
  • FIT2,它通过量化预测分布的变化来估计特征随时间的重要性;
  • DynaMask3,将基于扰动的方法应用于多元时间序列。

在这项工作中,我们的目标是进一步改进基于扰动的解释方法,以使其适应于多变量时间序列数据。

在 Fong & Vedaldi (2017)4 和 Crabbé & Van Der Schaar (2021)3 等人的研究中,虽然掩码(mask)是可学习的,但这个掩码引起的扰动是固定的。例如,Fong & Vedaldi (2017)4 根据特征的掩码值用高斯模糊(特征周围数据的加权平均值)替换特征,掩码值越低,模糊量越高。Crabbé & Van Der Schaar (2021)3 也采用了这种方法,在时间上对数据进行高斯模糊。这种方法对于图像似乎是合理的,其中的信息可以被认为是局部的,这就解释了为什么卷积神经网络(cnn)具有有限的过滤器大小,但在这类数据上仍然表现得很好。然而,多变量时间序列可能具有长期依赖性,这使得使用时间高斯模糊作为扰动不那么明显。

我们可能不想用局部平均值替换被掩盖的特征,而是想用时间更远的数据来替换它。这就需要用可学习的扰动来代替固定的扰动

2. Background Work

在这一节中,作者介绍了 Fong & Vedaldi (2017)4 和 Crabbé & Van Der Schaar (2021)3 等人的研究。

3. Method

虽然 Crabbé & Van Der Schaar (2021) 提出的时间扰动是 Fong & Vedaldi (2017) 在计算机视觉环境中定义的扰动的适应,但这些扰动是固定的和局部的。它们实际上要么被定义为移动平均扰动,要么被定义为时间高斯模糊。然而,时间数据通常具有长期依赖性,因此局部信息可能不足以确定特定时间特征的重要性。

例如,时间数据可以包括重复的模式(周期性)。比如下面这个例子:
在这里插入图片描述
在上图中,第1张图为原始数据图像。假设我们的目标是评估第三个尖峰的重要性,这个尖峰很可能不重要,可能只有最后一个尖峰才重要。然而,使用高斯模糊(第2张图)或移动平均(第3张图)会显著改变输入,这可能导致解释方法错误地声明该峰值很重要。另一方面,我们学习到的扰动(第4张图)应该用另一个峰值替换解释的数据,导致输出的差异很小,因此正确地说明该数据不重要。

这种见解需要一个广义的扰动,它可以调整到我们要解释的数据。

第一个想法是通过优化类似于 a r g min ⁡ m ∈ [ 0 , 1 ] n λ ∣ ∣ m ∣ ∣ 1 + L ( f ( x ) , f ( Φ ( x , m ) ) ) arg\min_{m\in [0,1]^n} \lambda ||m||_1 + \mathcal{L}(f(x),f(\Phi(x,m))) argminm[0,1]nλ∣∣m1+L(f(x),f(Φ(x,m))) 的函数,直接学习这个扰动 Φ ( x ) \Phi(x) Φ(x) ,而不需要掩码。然而,这种方法存在的问题在于,它给了扰动模型太多的自由,会鼓励输出稀疏的解释。

因此我们需要约束扰动算子来解释输入数据的每一部分。我们从 Crabbé & Van Der Schaar (2021) 设计的扰动算子中获得灵感,这些扰动算子通常定义为 m × x + ( 1 − m ) × μ ( x ) m\times x + (1-m)\times \mu(x) m×x+(1m)×μ(x) ,其中, μ ( x ) \mu(x) μ(x) 定义了扰动的方式。

Crabbé & Van Der Schaar (2021) 设计的扰动算子:
Φ ( x , m ) t , i = { m t , i × x t , i + ( 1 − m t , i ) × μ t , i m t , i × x t , i + ( 1 − m t , i ) × μ t , i p ( 1 ) ∑ t ′ = 1 T x t ′ , i × g σ ( m t , i ) ( t − t ′ ) ∑ t ′ = 1 T g σ ( m t , i ) ( t − t ′ ) \Phi(x,m)_{t,i}=\begin{cases}m_{t,i} \times x_{t,i} + (1-m_{t,i})\times \mu_{t,i}\\m_{t,i} \times x_{t,i} + (1-m_{t,i})\times \mu^p_{t,i} \quad\quad\quad\quad\quad (1)\\\frac{\sum^T_{t'=1} x_{t',i} \times g_{\sigma(m_{t,i})}(t-t')}{\sum^T_{t'=1}g_{\sigma(m_{t,i})}(t-t')}\end{cases} Φ(x,m)t,i= mt,i×xt,i+(1mt,i)×μt,imt,i×xt,i+(1mt,i)×μt,ip(1)t=1Tgσ(mt,i)(tt)t=1Txt,i×gσ(mt,i)(tt)
其中,

μ t , i \mu_{t,i} μt,i x : , i x_{:,i} x:,i 在时间 t t t 前后 W W W 时间窗口上的平均值。即:
μ t , i = 1 2 W + 1 ∑ t − W t + W x t ′ , i ( 2 ) \mu_{t,i}=\frac{1}{2W+1}\sum^{t+W}_{t-W}x_{t',i} \quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad (2) μt,i=2W+11tWt+Wxt,i(2)
μ t , i p \mu^p_{t,i} μt,ip x : , i x_{:,i} x:,i 在时间 t t t W W W 时间窗口上的平均值。即:
μ t , i p = 1 W + 1 ∑ t − W t x t ′ , i ( 3 ) \mu^p_{t,i}=\frac{1}{W+1}\sum^{t}_{t-W}x_{t',i} \quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad (3) μt,ip=W+11tWtxt,i(3)
g σ ( m t , i ) ( t ) g_{\sigma(m_{t,i})}(t) gσ(mt,i)(t) 是时间高斯模糊,其计算方式为:
g σ ( m t , i ) ( t ) = e x p ( − t 2 2 σ 2 ) ; σ ( m ) = σ m a x ( 1 − m ) ( 4 ) g_{\sigma(m_{t,i})}(t)=exp(-\frac{t^2}{2\sigma ^2}); \sigma(m)=\sigma_{max}(1-m) \quad\quad\quad\quad\quad (4) gσ(mt,i)(t)=exp(2σ2t2);σ(m)=σmax(1m)(4)

在这项工作中,我们提出用神经网络 (NN) 来代替上述这些固定的扰动函数 (1)(2)(3),并结合掩码来进行训练。因此,我们的扰动定义为:
Φ ( x , m ) = m × x + ( 1 − m ) × N N ( x ) ( 5 ) \Phi(x,m)=m\times x + (1-m)\times NN(x) \quad\quad\quad\quad\quad\quad\quad\quad\quad (5) Φ(x,m)=m×x+(1m)×NN(x)(5)
其中, 0 ⩽ m ⩽ 1 0\leqslant m \leqslant 1 0m1

在实践中,我们将模型 N N ( x ) NN(x) NN(x) 定义为 x t , i , t ∈ { 1 , . . . , T } x_{t,i},t\in \{1,...,T\} xt,i,t{1,...,T} 的加权和,因此我们选择双向GRU模型5来定义这个神经网络。

在实验中,我们还将双向GRU模型和单向GRU模型进行了对比,单向GRU模型的效果更接近于 Crabbé & Van Der Schaar (2021) 中的 μ t , i p \mu^p_{t,i} μt,ip

和 Crabbé & Van Der Schaar (2021) 类似,我们旨在掩盖尽可能多的数据,同时保持与原始数据尽可能接近的预测。因此,我们的优化目标为:
a r g min ⁡ m , Θ ∈ N N λ ∣ ∣ m ∣ ∣ 1 + L ( f ( x ) , f ( Φ ( x , m ) ) ( 6 ) arg\min_{m,\Theta\in NN}\lambda ||m||_1 + \mathcal{L}(f(x),f(\Phi(x,m)) \quad\quad\quad\quad\quad\quad\quad\quad\quad (6) argm,ΘNNminλ∣∣m1+L(f(x),f(Φ(x,m))(6)
其中, Θ \Theta Θ 表示神经网络的参数, L \mathcal{L} L 表示原始预测与扰动预测之间的损失(在分类任务中可以是交叉熵,回归任务中可以是均方误差)。

这个目标函数存在的一个问题是,神经网络可能会倾向于生成更接近于 x x x 的扰动结果 N N ( x ) NN(x) NN(x) 。如果 m = 0 m=0 m=0 ,则 Φ ( x , m ) ≈ x \Phi(x,m) \approx x Φ(x,m)x (几乎没有进行扰动),此时目标函数(6)的取值趋近于0。为了防止这种行为,我们将公式(6)修改为:
a r g min ⁡ m , Θ ∈ N N λ 1 ∣ ∣ m ∣ ∣ 1 + λ 2 ∣ ∣ N N ( x ) ∣ ∣ 1 + L ( f ( x ) , f ( Φ ( x , m ) ) ( 7 ) arg\min_{m,\Theta\in NN}\lambda_1 ||m||_1 + \lambda_2 ||NN(x)||_1 + \mathcal{L}(f(x),f(\Phi(x,m)) \quad\quad (7) argm,ΘNNminλ1∣∣m1+λ2∣∣NN(x)1+L(f(x),f(Φ(x,m))(7)
在公式(7)中,我们设置了两个正则化项: ∣ ∣ m ∣ ∣ 1 ||m||_1 ∣∣m1 ∣ ∣ N N ( x ) ∣ ∣ 1 ||NN(x)||_1 ∣∣NN(x)1 。结合扰动公式 Φ ( x , m ) = m × x + ( 1 − m ) × N N ( x ) \Phi(x,m)=m\times x + (1-m)\times NN(x) Φ(x,m)=m×x+(1m)×NN(x) 可以看出:

  • m m m 越小, Φ ( x , m ) \Phi(x,m) Φ(x,m) 生成的扰动样本越接近于 N N ( x ) NN(x) NN(x) ,即正则化项 ∣ ∣ m ∣ ∣ 1 ||m||_1 ∣∣m1 诱导 Φ ( x , m ) \Phi(x,m) Φ(x,m) 生成的扰动样本接近于 N N ( x ) NN(x) NN(x)
  • N N ( x ) NN(x) NN(x) 越小, Φ ( x , m ) \Phi(x,m) Φ(x,m) 生成的扰动样本越接近于0(无信息),即正则化项 ∣ ∣ N N ( x ) ∣ ∣ 1 ||NN(x)||_1 ∣∣NN(x)1 诱导 Φ ( x , m ) \Phi(x,m) Φ(x,m) 生成的扰动样本接近于0(无信息);
  • 而公式(7)中的损失函数 L \mathcal{L} L 则诱导 f ( Φ ( x , m ) f(\Phi(x,m) f(Φ(x,m) f ( x ) f(x) f(x) 尽可能接近。

三者相互制约。

4. Experiments

作者在两个数据集上进行了实验:使用隐马尔可夫模型生成的合成数据集3 和 真实数据集MIMIC-III6

4.1 Hidden Markov model experiment

作者按照 Crabbé & Van Der Schaar (2021) 的做法,使用2状态隐马尔可夫模型生成1000个时间序列(具体做法可参考 Crabbé & Van Der Schaar (2021) 论文细节3),并训练一个单层GRU模型来根据 x t x_t xt 预测对应的 y t y_t yt

当知道该数据集的真实显著特征时,可以通过比较每种方法产生的显著特征与基础事实之间的相似性来评估我们的解释方法。和 Crabbé & Van Der Schaar (2021) 的做法相同,作者也使用了精确率曲线下面积 (AUP)、召回率曲线下面积 (AUR)、信息量 ( I M ( A ) I_M(A) IM(A)) 和 掩码熵 ( S M ( A ) S_M(A) SM(A)) 来作为评估指标。表1是实验结果。
在这里插入图片描述
实验结果表明,尽管我们的方法在AUP方面的表现略低于一些基线,但在其他指标上,它的表现明显优于所有其他方法。特别是,虽然它在AUP方面略优于DynaMask,但它在AUR、信息量和掩码熵方面明显产生了更好的结果。

此外,作者还对比了 λ 1 \lambda_1 λ1 λ 2 \lambda_2 λ2 的不同取值对实验结果的影响:
在这里插入图片描述
从实验结果中可以看出,

  • λ 1 \lambda_1 λ1 接近于1时才能产生较好的实验效果。事实上, λ 1 \lambda_1 λ1 较小时意味着较低的正则化,因此会保留很多不重要的特征;而当 λ 1 \lambda_1 λ1 较大时则会迫使 m m m 接近于0,从而导致大多数的特征被认为不重要。
  • 此外, λ 2 \lambda_2 λ2 需要至少为1才能迫使 N N ( x ) NN(x) NN(x) 学习到无信息的扰动。

4.2 MIMIC-III experiment

和 Crabbé & Van Der Schaar (2021) 的实验类似,作者在真实数据集 MIMIC-III 上对本文提出的解释方法进行了评估。

MIMIC-III 由重症监护病房(ICU)的患者组成,定期测量一些生命体征和实验室检查结果。这里的任务是根据48小时的数据预测每个病人的住院死亡率,每小时离散。缺失的值是使用以前可用的值来输入的。如果没有先前的特征,则输入标准值。

我们训练了一个隐藏层大小为200的单层GRU模型来预测这个住院死亡率(分类任务),我们的目标是解释这个模型。在这个数据集中,真正的显著特征是未知的,我们需要提供不同的指标来评估我们的方法。

评估方式为:将原始预测 与 特定比例的显著特征被掩盖之后的预测 进行了比较,这里用数据样本 对应特征时间维度上的平均值 来 替换被掩盖的特征,即 x ‾ t , i = 1 T ∑ t x t , i \overline{x}_{t,i} = \frac{1}{T}\sum_t x_{t,i} xt,i=T1txt,i ,其中, T = 48 T=48 T=48(小时)。在这里用到的评估指标有:

  • Accuracy (Acc) 准确率:我们屏蔽最显著的特征,并使用这些被屏蔽的数据计算结果的准确性。较低的准确率意味着做出准确预测的重要特征被删除了。因此,这个度量越低越好。
  • Cross-Entropy (CE) 交叉熵损失:我们掩盖最显著的特征,并计算用这些被掩盖的数据与原始数据做出的预测之间的交叉熵。数值越高,表明预测变化越显著,重要特征被删除。因此,这个度量越高越好。
  • Comprehensiveness (Comp) 综合性:我们掩盖最显著的特征,并计算预测类概率与原始类概率相比的平均变化。这个度量越高越好。
  • Sufficiency (Suff) 充分性:我们只保留最显著的特征,计算预测类概率相对于原始类概率的平均变化。这个指标越低越好。

作者在 表4(屏蔽了前20%最显著的数据,并将数据替换为对应特征时间维度上的平均值 x ‾ t , i = 1 T ∑ t x t , i \overline{x}_{t,i} = \frac{1}{T}\sum_t x_{t,i} xt,i=T1txt,i)和 表5(屏蔽了前20%最显著的数据,并将数据替换为对应特征时间维度上的平均值 x ‾ t , i = 0 \overline{x}_{t,i} = 0 xt,i=0)中报告了实验结果:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
实验结果表明,我们的方法在每个指标上都明显优于其他方法,无论是使用随时间的平均值还是使用零作为屏蔽数据。这也表明,在解释多元时间序列数据的预测时,使用学习扰动比使用固定扰动更可取。

作者还对比了不同扰动模型的实验效果:

(1)用每个特征随时间的总体平均值替换20%的数据:
在这里插入图片描述
(2)用零替换20%的数据:
在这里插入图片描述

5. Conclusion

我们的研究结果表明,与现有的方法(包括具有固定扰动的DynaMask方法)相比,使用学习扰动可以产生更好的解释。我们还研究了神经网络对扰动建模的选择,发现在MIMIC-III的住院死亡率任务上,单向GRU比双向GRU效果更好,更稳定。

References


  1. Choi, E., Bahadori, M. T., Sun, J., Kulas, J., Schuetz, A., and Stewart, W. Retain: An interpretable predictive model for healthcare using reverse time attention mechanism. Advances in neural information processing systems, 29, 2016. ↩︎

  2. Tonekaboni, S., Joshi, S., Campbell, K., Duvenaud, D. K., and Goldenberg, A. What went wrong and when?instance-wise feature importance for time-series black box models. Advances in Neural Information Processing Systems, 33:799–809, 2020. ↩︎

  3. Crabbé J, Van Der Schaar M. Explaining time series predictions with dynamic masks[C]//International Conference on Machine Learning. PMLR, 2021: 2166-2177. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  4. Fong, R. C. and Vedaldi, A. Interpretable explanations of black boxes by meaningful perturbation. In Proceedings of the IEEE international conference on computer vision, pp. 3429–3437, 2017. ↩︎ ↩︎ ↩︎

  5. Cho K, van Merriënboer B, Bahdanau D, et al. On the Properties of Neural Machine Translation: Encoder–Decoder Approaches[J]. Syntax, Semantics and Structure in Statistical Translation, 2014: 103. ↩︎

  6. Johnson, A. E., Pollard, T. J., Shen, L., Lehman, L.-w. H., Feng, M., Ghassemi, M., Moody, B., Szolovits, P., Anthony Celi, L., and Mark, R. G. Mimic-iii, a freely accessible critical care database. Scientific data, 3(1):1–9, 2016. ↩︎

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

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

相关文章

python中进程的几种创建方式

在新创建的子进程中,会把父进程的所有信息复制一份,它们之间的数据互不影响。 1.使用os.fork()创建 该方式只能用于Unix/Linux操作系统中,在windows不能用。 import os# 注意,fork函数,只在Unix/Linux/Mac上运行&am…

Webpack4从入门到精通以及和webpack5对比_webpack现在用的是哪个版本

3.1 打包样式资源css-loader、style-loader… {// 匹配哪些文件test: /\.less$/,// 使用哪些loader进行处理use: [// use数组中loader执行顺序:从右到左,从下到上,依次执行(先执行css-loader)// style-loader:创建style标签&#…

艺术创作加速器:三款AI绘画软件,让你的工作效率倍增!

在数字化浪潮的推动下,艺术创作正迎来革命性的变化。AI绘画软件的出现,不仅为艺术家提供了全新的创作工具,也为艺术爱好者开辟了一片创意的新天地。这些软件利用人工智能技术,根据用户的简单描述或草图,快速生成独特的…

Vector 例题

例题一&#xff1a; 下面这个代码输出的是( ) &#xfeff;#include <iostream> #include <vector> using namespace std; int main(void) { vector<int>array; array.push_back(100); array.push_back(300); array.push_back(300); array.push_back(300); a…

探索图神经网络(GNN):使用Python实现你的GNN模型

一、引言 图神经网络&#xff08;Graph Neural Network, GNN&#xff09;作为近年来机器学习和深度学习领域的热门话题&#xff0c;正逐渐吸引越来越多的研究者和开发者的关注。GNN能够处理图结构数据&#xff0c;在社交网络分析、推荐系统、化学分子结构预测等领域有着广泛的…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 任务安排问题(200分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 📎在线评测链接 https://app5938.acapp.acwing.com.cn/contest/2/problem/OD…

课程管理系统

摘 要 在大学里&#xff0c;课程管理是一件非常重要的工作&#xff0c;教学工作人员每天都要与海量的数据和信息打交道。确保数据的精确度和完整程度&#xff0c;影响着每一位同学的学习、生活和各种活动的正常展开&#xff0c;更合理的信息管理也为高校工作的正规化运行和规范…

ThinkPHP6图书借阅管理系统

有需要请加文章底部Q哦 可远程调试 ThinkPHP6图书借阅管理系统 一 介绍 此图书借阅管理系统基于ThinkPHP6框架开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。 技术栈 ThinkPHP6mysqlbootstrapphpstudyvscode 二 功能 用户 1 登录/注销…

Vitis Accelerated Libraries 学习笔记--Vision 库介绍

目录 1. 简介 2. 分类介绍 2.1 图像容器 2.2 图像处理基础 2.3 图像滤波和平滑 2.4 图像变换和增强 2.5 图像分析和特征检测 2.6 数学和算术操作 2.7 图像校正和优化 2.8 颜色和阈值处理 2.9 高级图像处理 2.10 光流和运动估计 2.11 图像转换和映射 2.12 其他特殊…

【服务器05】之【登录/注册账号成功转至游戏场景】

Unity登录注册数据库 打开【服务器01】的文章项目 导入新UI系统 点击2D 双击输入栏位置 修改输入框尺寸及位置 放大字体 修改默认输入文字 发现中文字变成了口口口口 原因是新UI系统不支持中文&#xff0c;解决这个问题需要更换字体 并且修改输入时字体大小 我们取电脑中找Fon…

【ARMv8/v9 GIC 系列 4.3 -- GIC 中断控制系统寄存器 ICC_SRE_ELn 使用介绍】

文章目录 GIC 中断控制系统寄存器 ICC_SRE_ELn寄存器位域介绍Interrupt BypassBypass IRQBypass FIQBypass 配置GIC 中断控制系统寄存器 ICC_SRE_ELn ICC_SRE_EL3是中断控制器系统寄存器(Interrupt Controller System Register),用于控制在异常级别3(EL3)下,对GIC CPU接口…

Hive基础教程

文章目录 Apache Hive 教程1. Hive-简介1.1 学习Hive的前置知识1.2 什么是Hive&#xff1f;1.3 Hive的架构1.4 Hive的工作流程 Apache Hive 教程 资料来源&#xff1a;Hive Tutorial (tutorialspoint.com) Hive是Hadoop中用于处理结构化数据的数据仓库基础设施工具。它驻留在H…

pywinauto入门指南:轻松掌握Windows GUI自动化

pywinauto库概述: pywinauto是一个Python库,主要用于自动化Windows应用程序的GUI测试和操作.它提供了一组简单而强大的API,可以模拟用户与Windows应用程序的交互,包括点击按钮、输入文本、选择菜单等操作. 安装 ##pywinauto可以通过pip进行安装,打开命令行运行: pip install…

AI落地不容乐观-从神话到现实

开篇 在这儿我不是给大家泼冷水&#xff0c;而是我们一起来看一下从2022年11月左右GPT3.0掀起了一股“AI狂潮”后到现在&#xff0c;AI在商用、工业、军用下到底有没有得到了大规模应用呢&#xff1f; 这个答案每一个参与者其实心里有数那就是&#xff1a;没有。 但是呢它的…

STM32学习和实践笔记(36):DAC数模转换实验

1.STM32F1 DAC简介 DAC&#xff08;Digital to analog converter&#xff09;即数字模拟转换器&#xff0c;它可以将数字信号转换为模拟信号。它的功能与ADC相反。在常见的数字信号系统中&#xff0c;大部分传感器信号被转化成电压信号&#xff0c;而 ADC 把电压模拟信号转换成…

算法设计与分析:分治法求最近点对问题

一、实验目的 1. 掌握分治法思想&#xff1b; 2. 学会最近点对问题求解方法。 二、实验内容 1. 对于平面上给定的N个点&#xff0c;给出所有点对的最短距离&#xff0c;即&#xff0c;输入是平面上的N个点&#xff0c;输出是N点中具有最短距离的两点。 2. 要求随机生成N个…

项目训练营第三天

项目训练营第三天 注册登录测试 前面我们编写了用户注册、登录的逻辑代码&#xff0c;每编写完一个功能模块之后&#xff0c;我们都要对该模块进行单元测试&#xff0c;来确保该功能模块的正确性。一般情况下使用快捷键Ctrl Shift Insert&#xff0c;鼠标左击类名可以自动生…

灵活的招聘管理系统有五种方法帮助成功招聘

还记得以前的时代吗&#xff1f;这取决于你的年龄&#xff0c;直到智能手机、流媒体电视和电子邮件出现。今天&#xff0c;任何活着的成年人都经历了技术上的巨大变化&#xff0c;这创造了一种新的行为方式。人才获取也是如此。 一个值得推荐的招聘管理系统 招聘团队被困在满足…

机器人系统工具箱的 Gazebo 模拟

Gazebo 联合仿真模块 机器人系统工具箱> Gazebo联合仿真模块库包含与仿真环境相关的 Simulink 模块。要查看该库&#xff0c;在 MATLAB 命令提示符下输入robotgazebolib。

AIGC-CVPR2024best paper-Rich Human Feedback for Text-to-Image Generation-论文精读

Rich Human Feedback for Text-to-Image Generation斩获CVPR2024最佳论文&#xff01;受大模型中的RLHF技术启发&#xff0c;团队用人类反馈来改进Stable Diffusion等文生图模型。这项研究来自UCSD、谷歌等。 在本文中&#xff0c;作者通过标记不可信或与文本不对齐的图像区域&…