【论文阅读24】Better Few-Shot Text Classification with Pre-trained Language Model

论文相关

论文标题:Label prompt for multi-label text classification(基于预训练模型对少样本进行文本分类)
发表时间:2021
领域:多标签文本分类
发表期刊:ICANN(顶级会议)
相关代码:无
数据集:无

摘要

最近,预先训练过的语言模型在许多基准测试上都取得了非凡的性能。通过从一个大型的训练前语料库中学习一般的语言知识,该语言模型可以在微调阶段以相对少量的标记训练数据来适应特定的下游任务。更值得注意的是,带有175 B参数的GPT-3通过利用自然语言提示和很少的任务演示,在特定的任务中表现良好。受GPT-3成功的启发,我们想知道更小的语言模型是否仍然具有类似的少样本学习能力。不像在之前的少样本学习研究工作中,各种精心设计的任务,我们做得更实际。我们提出了一种基于问答问题的方法,通过将一个与标签相关的问题连接到每个候选句子中,来帮助语言模型更好地理解文本分类任务。通过利用语言模型在预训练阶段学习到的与标签相关的语言知识,我们的QA模型在英语和中文数据集上都优于传统的二进制和多类分类方法。之后,我们通过对多个预先训练过的语言模型进行少样本学习实验来测试我们的QA模型。我们惊讶地发现,即使是DistilBERT,这是我们测试的只有66 M参数的最小语言模型,仍然具有不可否认的少样本学习能力。此外,具有355 M参数的RoBERTa-large在只有100个标记训练数据的情况下,可以显著实现92.18%的高准确率。这个结果给人们提供了一个实用的指导方针,即当需要一个新的标记数据类别时,只需要标记多达100个数据。然后配合适当的预训练模型和分类算法,可以得到可靠的分类结果。即使没有任何标记的训练数据,即在零样本学习设置下,RoBERTa-large仍能达到84.84%的稳定准确率。

1.引言

随着深度学习的发展,各种预训练的语言模型(PLMs)已被广泛用于解决自然语言处理任务。第一代的PLMs,如Skip-Gram和GloVe,旨在学习无法捕获更高层次语义概念的与上下文无关的词嵌入。第二代plm,如ELMo、BERT和GPT,在上下文中表示单词。通过以自我监督的方式在一个大型语料库上进行预训练,plm只需要对特定下游任务的少量标记数据进行微调。从那时起,训练前和微调范式开始主导NLP。在Brown等人引入的4000亿个代币上训练了1750亿个参数。在2020年,将plm推到了新一个水平。当只提供一个描述和很少的任务例子时,GPT-3模型可以不需要梯度更新而做出准确的预测或微调。尽管已经获得了显著的少样本学习能力,但同样突出的是,GPT-3背后的大量参数使将其应用于现实应用具有挑战性。

作为一个机器学习问题,少样本学习比PLM有更长的历史。人类能够通过利用他们在过去学到的东西来快速学习新的任务。因此,研究人员认为,设计一种高效的少样本学习算法可以让机器达到与人类相同的智力水平。然而,受GPT-3的启发,我们认为少量学习是预先训练的语言模型本身的一种能力,而不是被视为一项任务。毫无疑问,具有少镜头学习能力的语言模型应该有较大的参数,并在较大的语料库上进行预训练。然而,有多大才足够呢?因此,在本研究中,我们通过文本分类实验来探索各种语言模型的少样本学习能力。我们测试的预先训练的语言模型包括DistilBERT 、BERT 和RoBERTa-large ,它们分别有66M、110M和355M的参数。扩展一个常规大小的自动编码器语言模型在文本分类中的少样本学习能力是很有吸引力的:

  • 文本分类是一个模型能够轻松掌握的下游任务;
  • 一些带有标记的样品很容易获取;
  • 这种模型可以在一般硬件上进行微调。
    因此,我们提出了一种可行的场景来制作更好的少样本文本分类器,并研究了语言模型尺度对其少镜头学习能力的影响。具体来说,本文的主要贡献如下:
  • 我们提出了一种基于问答的分类方法,该方法在英语和中文数据集上都优于传统的二进制和多类分类方法。
  • 我们在多个不同大小的预训练语言模型上进行了一系列的少镜头学习实验,范围从蒸馏室到RoBERTa-大。结果表明,所有这些模型都表现出不同水平的少镜头学习能力。有些人甚至实现了零样本学习。
  • 本文使用不同训练样本的每个模型的详细准确率。这些结果可以作为人们在实践中标记样本的指导方针。
  • 我们还对预先训练过的语言模型的注意机制进行了深入的说明和讨论。通过它,我们试图揭示少样本学习能力的奥秘。

2. 相关工作

2.1 语言模型(LM)

语言模型的演化可分为统计语言模型、神经语言模型和预训练语言模型三个阶段。统计语言模型从20世纪60年代到20世纪10年代占主导地位,如隐马尔可夫模型和条件随机场。自2010年以来,深度学习模型的出现在文本分类方面取得了显著进展。神经模型,如CNN 和LSTM ,只是数据驱动的,避免做特征工程。然而,他们不能处理少样本学习。
在这里插入图片描述
图1。近年来的语言模型(GPT系列为紫色;BERT系列为蓝色;transformer是BERT和GPT的基础,为绿色)。
随着transformer的发展,近年来语言模型出现了预训练(图1)。值得注意的是,类似gpt的自动回归语言模型在精心选择的提示下表现得非常好,而且在许多下游任务中只有几个例子。由于被这些少样本学习能力所吸引,研究人员开始探索类似bert的自动编码器语言模型,并发现它也具有少样本学习能力。

2.2 传统的少样本学习

多年来,深度学习在与数据绑定的行业中取得了巨大的成功,但当数据量很少时,它往往是不可行的。因此,在数据不足的情况下训练一个表现良好的模型自然被视为一项具有挑战性的任务。提出了多种处理少样本学习任务的方法,包括利用可访问数据生成更多样本的数据论证,计算特征之间相似性的孪生神经网络,以及学习多个数据集学习几个例子的元学习。这些方法似乎是“机械地”使用这些知识的方法。然而,受GPT系列研究的启发,我们认为少样本应该被认为是语言模型的固有属性。

2.3 基于预训练语言模型的少样本学习

使用提示来让语言模型做出更好的推断似乎更加“人性化”,在大型语料库上的预训练赋予了语言模型较强的语言技能,因此只需要在特定下游任务的少量标记数据中进行微调。自回归语言模型,如GPTs和CPM ,可以通过生成后续文本来进行预测,并提供上下文中任务的字面定义,称为提示。在最近的工作中,他们使用一个精细的构造模板来使语言模型完成完成任务,这有助于语言模型理解特定的任务。这似乎是有效的,但模板的局限性使上述方法不能适应任何任务。然而,偏离这些研究,我们关注语言模型本身的少样本学习能力,并提出了一种任务不可知的方法,称为QA分类。

3. 方法

3.1 文本分类

在本文中,我们通过文本分类进行实验(见图2),因为文本分类是语言模型易于学习的下游任务。因此,做文本分类可以使语言模型更容易显示出少样本的学习能力。
在这里插入图片描述
图2 我们使用了(a)多类分类、(b)多元分类、©将多类分类转化为问题回答的方法。

然后,我们采用做问题和回答的想法,可以帮助语言模型更好地利用知识,因为我们给模型提供了更多的信息。因此,我们将多类文本分类转换为问答(QA),这为语言模型提供了先验信息,并将任务转化为一个简单的二元分类。
我们用标签空间Y来微调数据集D上的一个BERT M。M接受一个序列 x i n x_{in} xin的输入,并输出该序列的表示。第一个输出总是[CLS],我们把它作为整个序列的表示,并微调M以最小化交叉熵。我们以M‘作为具有全连接层的M的表示,M的输出为P,它由类和 dim § = |Y|对应的概率组成。

二分类 在二值分类中,我们仅仅在M的预测标签概率 y p r e d i c t y_{predict} ypredict的下面添加了一个带有sigmoid激活函数的全连接层。
p ( y ∣ x i n ) = 1 1 + e x p ( − W ⋅ h [ C L S ] ) . . . . . . . . . . . . . . . . . . . . . . . . ( 1 ) p(y|x_{in})=\frac{1}{1+exp(-W·h_{[CLS]})}........................(1) p(yxin)=1+exp(Wh[CLS])1........................(1)
其中, h [ C L S ] h_{[CLS]} h[CLS]是[CLS]的隐藏状态,W是任务特殊矩阵。
在二元分类中, d i m ( P ) = 1 dim(P) = 1 dim(P)=1。所以对于每个序列,M’的输出是一个常数。我们使用一个阈值来确定序列属于哪个类别。所以这个类别是:
f ( x ) = { p o s i t i v e , p≥threshold n e g a t i v e , p<threshold f(x)= \begin{cases} positive,& \text{p≥threshold} \\ negative, & \text{p<threshold} \end{cases} f(x)={positive,negative,p≥thresholdpthreshold

多分类 在多类分类中,输入与二值分类相同。不同的是我们在M的顶部放了一个softmax层,标签y的概率是:
p ( y ∣ x i n ) = s o f t m a x ( W ⋅ h [ C L S ] ) p(y|x_{in})=softmax(W·h_{[CLS]}) p(yxin)=softmax(Wh[CLS])
其中W是一个特定任务矩阵。我们通过最大化正确标签的概率,共同调整来自BERT和W的参数。

基于QA的分类 结果表明,QA分类是一种二元分类。QA分类和二值分类的区别在于输入 x i n x_{in} xin。在QA分类中,输入的 x i n x_{in} xin为:
x q a − i n = [ C L S ] q u e s t i o n [ S E P ] c o n t e n t [ S E P ] x_{qa-in}=[CLS]question[SEP]content[SEP] xqain=[CLS]question[SEP]content[SEP]
我们也将[CLS]作为整个序列的表示,分类的过程与二元分类相同。对于问题,我们尽可能简单地手动构建问题,以避免过多的冗余(例如, For one content, we can ask ‘does this sentence contain anger?”还是“contains anger?’'我们选择了一个字母的)。我们将对每个句子问|Y|问题,并使用一个阈值来确定句子的类别。所以在这种情况下,它可以在一个句子中有多个答案,或者根本没有答案。

3.2 少样本分类

我们基于QA分类方法进行了少样本文本分类实验。输入与QA分类相同,唯一的区别是我们如何使用数据(见图3)。
在这里插入图片描述
图3 用一个例子说明我们如何少学习
在做少样本学习时:

  • 我们选择一个类作为目标,进行少样本学习;
  • 根据我们所选择的类,我们将训练集分成目标集(只包含一个类)和另一个训练集(包含其余的类);
  • 我们从目标集中随机选取K个正例子,从其他数据中随机选取K个负例子,由我们选择的形成少样本数据集的类进行提问。但我们使用恒定的随机种子S进行抽样,确保在改变语言模型的大小时样本是相同的;
  • 我们使用整个其他数据,由其余分类问题形成其他数据集;
  • 我们使用其他数据集来训练一个普通分类器,得到一个零样本分类器;
  • 我们使用来自少样本数据集的2K个例子来对少样本分类器进行微调,以获得少样本分类器。

4. 问题设置

4.1 数据集

我们对两个任务(表1)、中国情绪分类任务(OCEMOTION)和英语主题分类任务(AG’s News)进行了系统的研究。
表1:统计两个数据集
在这里插入图片描述
我们选择的所有数据集都是单句文本分类任务。我们的目标是基于 x i n x_in xin x q a − i n x_{qa−in} xqain做出预测。任务范围从情绪分析到主题分类,从汉语到英语。

4.2 评价方案

文本分类 我们将 D t r a i n D_{train} Dtrain D t e s t D_{test} Dtest分别作为传统分类的训练集和测试集。我们将每个数据集D分割成一个训练集 D t r a i n D_{train} Dtrain和一个测试集 D t e s t D_{test} Dtest或该数据集已经被分割。为了评价分类器的性能,我们选择了分类器的精度(accuracy)、微精度( micro-precision)、微召回率(micro-recall)、微F1(micro-f1)作为性能指标。并根据 D t e s t D_{test} Dtest计算这些指标,作为分类器的性能。

少样本学习 我们分别采用 D t r a i n ′ D'_{train} Dtrain序列和 D t e s t ′ D'_{test} Dtest作为QA分类的训练集和测试集。给给少样本分类器的数据在积极样本(目标标签样本)和消极样本之间具有平衡数据。换句话说,我们给少样本分类器的数据集D训练具有相同数量的正样本和负样本。值得一提的是,数据集D序列中的负样本已经被少样本分类器看到。在测试测试集 D t e s t ′ D'_{test} Dtest的时候,我们选择 D t e s t D_{test} Dtest中所有与目标相关的样本作为积极(目标-标签)样本,而 D t e s t D_{test} Dtest中其他样本的数量与消极样本相同。同时,我们使用恒数的种子S对负样本进行抽样,确保在评估分类器性能时与 D t e s t D_{test} Dtest是相同的。我们以每个目标标签之间的平均精度作为少样本分类器的性能指标。

5. 实验

5.1 文本分类分析

一般来说,在我们训练分类器的相同方法的条件下,当语言模型变得更大时,f1分数会更高。这反映了大模型可以学习更多的知识。必须指出的是,OCEMOTION是一个细粒度的情感分类数据集,而AG’s News是一个新闻分类数据集。因此OCEMOTION数据集对于预训练语言模型而言学习相对比较困难。同时,我们可以看到表2,在同一模型中,OCEMOTION的f1得分低于AG的News
在这里插入图片描述
表2 多二元分类、多类分类和QA分类的结果(精度、查全率和 f1分数)

通过比较不同的语言模型的尺度,我们可以很容易地发现,较大的模型在相同的情况下具有更好的性能。特别是e OCEMOTION数据集,从DistilBERT到BERT-base,性能平均提高了9.7%。然而,在AG’s News数据集的f1分数非常接近。因此,增加语言模型的规模可以提高分类器的性能,特别是在较硬的数据集上。
此外,在相同的尺度模型条件下,QA分类的性能接近于AG’s News数据集中的其他两种方法,而在OCEMOTION数据集中明显优于其他两种方法。此外,当模型变大时,QA模型的f1分数超过了多模型。关于这一现象,我们认为我们提供的先验知识是有效的,因为QA分类的大部分性能都优于二值分类。我们添加到模型中的问题可以帮助他们更好地理解任务,特别是有利于大规模模型和细粒度的任务。
此外,我们还注意到,在大多数QA分类中,召回率的值都高于精度。我们认为造成这种现象的原因是,先验知识有时会混淆QA模型。我们认为造成这种现象的原因是,先验知识有时会混淆QA模型。

5.2少样本学习的分析

我们收集了每个标签的平均准确性(avg- accuracy),作为少样本学习的指标。在表3中,我们认为当acc-avg在50.00%左右时,语言模型不能工作,因为该任务是一个二进制分类。
表3 少样本学习结果
在这里插入图片描述
为了比较学习样本的数量,我们可以看到,随着样本数量的增加,少镜头模型的性能更好。显然,提供的样本越多,语言模型可以学习的知识就越多。然而,随着样本数量的增加,这些模型的性能并不呈线性增长。从0个样本提高到10个样本,性能提高了8.91%,但从50个样本提高到100个样本,仅为2.98%。我们认为这是因为我们训练的语言模型可以很容易地学习一些新东西,但不能掌握它们,所以0到10的增量值大于50到100。根据我们的实验,10个标记样本是训练少镜头分类器的最经济有效的数量。

这个实验称之为稀疏性检验实验,验证模型适用于各种比例的数据集。

为了比较模型的尺度,我们可以看到较大的语言模型有更高的分数。我们在第5.1节中已经提到了这一现象。更大的模型可以更好地利用这些提示。特别是RoBERT-large的少样本分类器在AG的新闻数据集中的平均准确率为84.84%,高于DistilBERT和BERT-base的100少样本分类器的平均准确率。它强化了一个更大的模型可以通过利用额外的提示来更好地理解任务的想法。另一方面,这个值意味着RoBERTa-large的分类器实现了少样本学习。它也赞同了我们的观点,当一个语言模型足够强大时,它将实现少样本学习,甚至是零样本学习。

5.3 注意力的可视化

将多类分类与QA分类进行比较,我们发现QA分类的性能略优于多类分类或与多类分类相当。更奇妙的是,QA方法可以帮助语言模型进行少样本学习。为了弄清楚这里的原因,我们将其与注意机制联系起来。
所以在本节中,我们将注意力的可视化来解释问题的工作。如图4所示,我们从AG’s News数据集中随机抽取一个样本,并根据标签生成4个问题。
在这里插入图片描述
图4。基于bert基础的微调QA分类器的注意力可视化。其内容是:“Moore will replace banned world champion Torri Edwards in the Olympic 100 and 200 m races”,后者属于体育级别。

正如我们所见,当我们问“运动是什么吗?”,问题中的“体育”一词会注意到内容中的冠军和比赛(在蓝框中),这是代表某些类别的词。然后这个问题可以帮助[CLS]注意到这些关键字,所以我们使用[CLS],因为内容的表示是合乎逻辑的。但当我们问其他问题时,它似乎不太好,这个问题注意到了其他无关紧要的词。有趣的是,这些问题几乎注意到了单词the和单词和(在绿色方框中),这与分类无关。
在这里插入图片描述
图5 一个可视化的例子,(a)一个模特从未见过体育课;(b)一个模特刚刚看到了10个体育班的例子;©和(a)是相同的模型,问“是商人吗?”它已经看到了;(d)的一个模型已经看到了50个可视化类的例子。所有的模型都没有看到这些内容。

在图5中,对比(a)和©,©在绿色盒子中更干净。我们可以注意到,(a)的模型会关注“爱德华兹”、“100”和“200”,当我们问一个已经看到的不同问题时,该模型知道它不需要关注任何事情。bussiness其内容与此无关紧要。因此,©中内容的关注权重接近于0是合乎逻辑的。但在(a)中,语言模型猜测了应该注意的单词。在某种程度上,语言模型可以识别和利用提示符。在(b)和(d)中,显著的差异是在蓝色盒子和紫色盒子中。在紫色框中,我们认为更多的训练样本会导致了注意力的变化,问题对内容的关注较少,而对特殊标记的关注较多[SEP]。这一现象需要进一步讨论。

6. 结论

本文提出了一种基于QA的方法,帮助语言模型进行文本分类,探索语言模型的少镜头学习能力,它简单而有效。该方法使语言模型能够展示使用少样本学习能力,仅使用100个标记数据,平均准确率可达到92.18%,有些甚至实现零样本学习。在未来的工作中,我们将关注语言模型本身的少样本能力以及它存在的原因。

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

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

相关文章

Windows环境下VSCode安装PlatformIO Cero报错ERROR: HTTP error 403 while getting

安装PlatformIO插件成功,初始化失败 错误信息判断问题尝试访问https://pypi.tuna.tsinghua.edu.cn/simple/platformio/成功点击文件后报错如下: 解决问题- 换源 ( Windows下有两个地方需要更改)cmd命令行Pip文件 总结:…

Android如何用系统签名打包应用

前言 应用使用系统签名可以在用户不需要手动授权的情况下自动获取权限。适合一些定制系统中集成apk的方案商。 步骤 需要在AndroidManifest.xml中添加共享系统进程属性: android:sharedUserId"android.uid.system"如下图所示: 找到系统定制…

opencv基础40-礼帽运算(原始图像减去其开运算)cv2.MORPH_TOPHAT

礼帽运算是用原始图像减去其开运算图像的操作。礼帽运算能够获取图像的噪声信息,或者得到比原始图像的边缘更亮的边缘信息。 例如,图 8-22 是一个礼帽运算示例,其中: 左图是原始图像。中间的图是开运算图像。右图是原始图像减开运…

车载开发核心技术——SystemUI控制技术

SystemUI是指车载开发中的一个重要组件,它负责管理和控制车机的用户界面和交互功能。本文将详细介绍SystemUI的各项控制技术,包括音量控制、RingtonePlayer、电源管理、任务管理、通知栏和服务定制,并提供相关代码示例和解析。 一、音量控制…

百度Apollo规划算法——OBB障碍物检测代码解析

百度Apollo规划算法——Box障碍物检测代码解析 前言代码代码分析f1f2f3f4f5f6 参考 前言 本文主要分析Apollo代码中函数bool Box::HasOverlap(const Box2d &box) const {}的数学原理。 在阅读此部分代码时,第一遍没看懂return的一堆什么意思,百度之后…

iOS——Block签名

首先来看block结构体对象Block_layout(等同于clang编译出来的__Block_byref_a_0) #define BLOCK_DESCRIPTOR_1 1 struct Block_descriptor_1 {uintptr_t reserved;uintptr_t size; };#define BLOCK_DESCRIPTOR_2 1 struct Block_descriptor_2 {// requi…

谈谈关于新能源汽车的话题

新能源汽车是指使用新型能源替代传统燃油的汽车,主要包括纯电动汽车、插电式混合动力汽车和燃料电池汽车等。随着环境污染和能源安全问题的日益突出,新能源汽车已经成为全球汽车行业的发展趋势。下面我们来谈谈关于新能源汽车的话题。 首先,新…

uC-OS2 V2.93 STM32L476 移植:环境搭建篇

前言 uC-OS2 是比较经典的 RTOS,如今软件授权已经改为 Apache License Version 2.0,意味着可以免费商用了 当前 uC-OS2 的最新版本是: V2.93,打算研究一下 RTOS 的设计思想,所以想在已有的开发板:NUCLEO-L…

C语言阶段性测试题

【前言】:本部分是C语言初阶学完阶段性测试题,最后一道编程题有一定的难度,需要多去揣摩,代码敲多了,自然就感觉不难了,加油,铁汁们!!! 一、选择题 1.下面程…

【雕爷学编程】Arduino动手做(181)---Maixduino AI开发板12

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

使用 OpenCV 和 Python 卡通化图像-附源码

介绍 在本文中,我们将构建一个有趣的应用程序,它将卡通化提供给它的图像。为了构建这个卡通化器应用程序,我们将使用 python 和 OpenCV。这是机器学习令人兴奋的应用之一。在构建此应用程序时,我们还将了解如何使用 easygui、Tkinter 等库。在这里,您必须选择图像,然后应…

20天学rust(一)和rust say hi

关注我,学习Rust不迷路 工欲善其事,必先利其器。第一节我们先来配置rust需要的环境和安装趁手的工具,然后写一个简单的小程序。 安装 Rust环境 Rust 官方有提供一个叫做 rustup 的工具,专门用于 rust 版本的管理,网…

Modbus TCP转Profinet网关modbus tcp转以太网

大家好,今天我们来聊一聊如何使用捷米特的Profinet转modbusTCP协议转换网关在博图上进行非透传型配置。 1, 首先,我们需要安装捷米特JM-TCP-PN的GSD文件,并根据现场设备情况配置modbusTCP地址。然后,在博图中添加该GSD文件&#x…

Dockerfile构建MySQL镜像(yum方式)

目录 Dockerfile构建MySQL镜像 1、建立工作目录 2、编写Dockerfile文件 3、构建镜像 4、测试容器 Dockerfile构建MySQL镜像 1、建立工作目录 [roothuyang1 ~]# mkdir mysql [roothuyang1 ~]# cd mysql/ 2、编写Dockerfile文件 [roothuyang1 mysql]# vim Dockerfile 配置如…

SegNeXt:重新思考用于语义分割的卷积注意力

&原文信息 原文题目:《SegNeXt: Rethinking Convolutional Attention Design for Semantic Segmentation》 原文引用:Guo M H, Lu C Z, Hou Q, et al. Segnext: Rethinking convolutional attention design for semantic segmentation[J]. Advance…

把网站改为HTTPS访问方法

HTTPS是使用TSL/SSL加密超文本传输协议的扩展,用于跨网络的安全传输。网站更改为HTTPS,直接在网站形象上可以得到提升,更重要的是您的网站肯定会在排名和提升方面受益。机密信息的交换需要受到保护,以阻止未经授权的访问。 加密&a…

组件化、跨平台…未来前端框架将如何演进?

前端框架在过去几年间取得了显著的进步和演进。前端框架也将继续不断地演化,以满足日益复杂的业务需求和用户体验要求。从全球web发展角度看,框架竞争已经从第一阶段的前端框架之争(比如Vue、React、Angular等),过渡到…

Flink 系列四 Flink 运行时架构

目录 前言 介绍 1、程序结构 1.1、Source 1.2、Transformation 1.3、Sink 1.4、数据流 2、Flink运行时组件 2.1、Dispatcher 2.2、JobManager 2.3、TaskManager 2.4、ResourceManager 3、任务提交流程 3.1、standalone 模式 3.2、yarn 模式 4、任务调度原理 4…

精选5个AI绘画工具,灵感与创意迸发!

伴随着AI技术的发展,AI绘画工具也走进了人们的视线,今天本文将为大家推荐5个最近火爆的AI绘画神器,一起来看看吧! 1、即时灵感 即时灵感是一个国产的AI绘画神器,非常受国内设计师的欢迎。它支持设计师使用中文描述词…

OpenSource - 分布式重试平台

文章目录 概述重试方案对比设计思想流量管理平台预览场景应用强通知场景发送MQ场景回调场景异步场景 概述 在当前广泛流行的分布式系统中,确保系统数据的一致性和正确性是一项重大挑战。为了解决分布式事务问题,涌现了许多理论和业务实践,其…