Towards an Appropriate Query, Key, and Value Computation for Knowledge Tracing

面向知识跟踪的适当Q、K和V计算

ABSTRACT

知识追踪是通过学习活动对学生的知识进行建模的行为,是计算机辅助教育领域广泛研究的问题。 借助专注于目标预测相关信息的注意力机制,循环神经网络和基于 Transformer 的知识追踪模型的性能优于贝叶斯知识追踪和协同过滤等传统方法。 然而,当前最先进的知识追踪模型的注意力机制有两个限制。 首先,这些模型未能利用深度自注意力计算来进行知识追踪。 结果,随着时间的推移,他们无法捕捉练习和反应之间的复杂关系。 其次,为知识追踪的自注意力层构建QKV的适当特征尚未得到广泛探索将练习和交互(练习-响应对)分别用作QK/V的通常做法缺乏经验支持

在本文中,我们提出了一种新颖的基于 Transformer 的知识追踪模型,SAINT分离的自注意力神经知识追踪。 SAINT 具有编码器-解码器结构,其中练习和响应嵌入序列分别进入编码器和解码器。编码器将自注意力层应用于练习嵌入序列,解码器将自注意力层和编码器-解码器注意力层交替应用于响应嵌入序列。这种输入分离允许我们多次堆叠注意力层,从而改善接收器操作特征曲线 (AUC) 下的面积。据我们所知,这是第一项提出用于知识跟踪的编码器-解码器模型的工作,该模型将深度自注意力层分别应用于练习和响应

我们在一个活动的移动教育应用程序 Santa 收集的大规模知识追踪数据集 EdNet 上对 SAINT 进行了实证评估,该数据集有 627,347 个用户、72,907,005 个响应数据点以及自 2016 年以来收集的一组 16,175 个练习。结果表明,与当前最先进的模型相比,SAINT 在知识跟踪方面实现了最先进的性能,AUC 提高了 1.8%。

INTRODUCTION

创建一个个性化的教育代理,提供适合每个学生能力和需求的学习路径是人工智能在教育中的长期挑战。知识追踪是开发这种智能体的一个基本问题,其任务是根据学生随时间的学习活动预测学生对目标学科的理解。例如,可以预测学生正确回答给定练习的概率。跟踪学生的理解状态可以根据他们的能力和需求有效分配资源。

传统的知识追踪方法包括贝叶斯知识追踪 [3] 和协同过滤 [20, 11]。 随着深度学习在机器翻译、医疗保健和其他模式中的应用的进步,循环神经网络(RNN)和 Transformer [22] 等神经网络架构已成为知识追踪模型中的常见构建块。 这些模型有效地捕捉了学生学习活动随时间推移的复杂性质,通常表示为高维和顺序数据。 特别是,[12, 8] 使用带有注意力的 RNN 来预测学生对练习的反应的概率分布。  [14] 中的模型具有相同的目的,但它基于利用自注意力机制的 Transformer 模型。当学生进行不同的练习时,他们的技能与他们对之前练习的反应相关。 因此,注意力机制是知识追踪的自然选择,因为它们学会捕捉练习和响应之间的相互依赖关系,并赋予与预测相关的条目更多的权重 [13, 22]。

尽管它们有优势,但目前应用于知识追踪的注意力机制有两个限制,如图 1 所示。首先,以前的模型的注意力层太浅,无法捕捉不同练习和响应之间可能存在的复杂关系。 特别是,[12,8,14] 中的模型只有一个注意层,而 [14] 显示当自我注意层堆叠多次时性能会下降。 其次,构建适合知识追踪的QKV的适当特征尚未得到彻底探索。 给定学生的一系列交互(练习响应对),以前的工作依赖于相同的配方:练习作为Q,交互作为k和v [12,8,14]。 其他选择可能会显著提高性能,因此需要进行测试。

在本文中,我们解决了寻找合适的方法来构建知识追踪的QKV的问题。在一系列广泛的实证探索的支持下,我们提出了一种新颖的基于 Transformer 的知识追踪模型,SAINT:分离的自注意力神经知识追踪SAINT 由一个编码器和一个解码器组成,它们是由多头自注意力和逐点前馈网络组成的几个相同层的堆栈,如图 2 所示。编码器将练习嵌入序列作为QKV,并通过重复的自我注意机制产生输出解码器将响应嵌入的顺序输入作为QKV,然后将自注意力和注意力层交替应用于编码器输出。与当前最先进的模型相比,分离练习序列和响应序列,并将它们分别馈送到编码器和解码器,是使 SAINT 通过深度自我捕捉练习和响应之间复杂关系的独特功能。

图2我们提出的模型 SAINT 的架构。与以前的模型不同,分离练习序列和响应序列并分别应用编码器和解码器是允许 SAINT 通过深度自注意力计算捕获练习和响应之间的复杂关系的显著特征。

我们对一个大型知识追踪数据集EdNet[2]进行了广泛的实验研究,该数据集由一个活跃的移动教育应用程序Santa收集,自2016年以来收集了16175个练习,该应用程序拥有627347个用户和72907005个响应数据点。我们将SAINT与当前最先进的模型和基于转换器的深度知识跟踪模型进行比较。我们的实验结果表明,SAINT优于所有其他竞争对手,并在知识追踪方面达到了最先进的水平,与当前的先进模型SAKT相比,该模型以接收器工作特性曲线(AUC)下的面积衡量,提高了1.8%。

总之,我们做出了以下贡献:我们提出了SAINT,一种新的基于变压器的编码器模型,用于知识跟踪,其中练习嵌入序列和响应嵌入序列分别进入编码器和解码器。SAINT通过深度自我关注的计算有效地捕捉到练习和反应之间的复杂关系。我们的经验表明,与目前最先进的知识追踪模型相比,SAINT在AUC方面实现了1.8%的增长

RELATED WORKS

知识追踪是对学生在经历不同学习活动时随时间变化的知识状态的建模。这是计算机辅助教育领域中广泛研究的问题。例如,可以预测学生正确回答给定练习的概率。这种理解可以有效地分配适合每个学生能力和需求的资源。

传统的知识追踪方法包括贝叶斯知识追踪 (BKT) [3]、协同过滤 (CF) [20, 11] 等。  BKT 是一种经典的、突出的知识追踪方法,随着时间的推移已经被广泛研究 [3, 4, 23, 17, 15, 16, 21, 18, 9, 19]。  BKT 将学生的知识状态表示为二进制V的元组。 每个V代表学生是否理解单个概念。 这些V由隐藏的马尔可夫模型使用实际学生的回答进行更新。

随着深度学习 (DL) 的兴起,基于 DL 的知识跟踪模型,如运动感知知识跟踪 (EKT) [8]、神经教学代理 (NPA) [12] 和自注意力知识跟踪 (SAKT) [14]已被证明优于传统模型。 EKT 和 NPA 是双向长短期记忆 (Bi-LSTM) 模型,其注意力机制建立在顶层。 SAKT 是一个基于 Transformer 的模型,其中练习作为注意力Q,过去的交互(练习-响应对)作为注意力K/V。为了进行有效的知识追踪,需要分析学习活动数据不同部分之间的关系。注意力机制通过权衡数据中更相关的部分来进行预测,从而达到这个目的。

然而,基于深度学习的知识追踪模型目前有两个限制。 首先,注意力层很浅,因此它无法捕捉学生随着时间的推移而学习活动的复杂性,这些活动通常表示为高维和序列数据。  [14] 中的网络不将自注意力应用于交互和练习,而是直接使用嵌入层的潜在特征作为注意力层的输入。 此外,他们在交互和练习之间只使用一个注意力层。  [12, 8] 中的网络具有深层 LSTM 层,可以分析交互的顺序性质,但练习是直接嵌入的,而且它们仅在交互和练习之间使用单层注意力。

其次,尚未彻底探索适合知识追踪的注意力QKV的不同特征组合。 所有 [12, 8, 14] 都使用相同的方法:给定学生的一系列交互,他们使用练习来构建Q,交互来构建K/V。 其他可能性,例如,在练习或反应上使用自注意力,仅举一种可能性,可能会提供实质性的改进,因此应该进行测试。

PROPOSED MODEL

问题定义

考虑到学生如何对一系列练习做出反应的历史,SAINT预测了学生正确回答特定新练习的可能性。形式上,学生练习记录为交互Ii = (Ei,Ri) 的序列I1......In。这里Ei表示练习信息,是给学生的第i个带有相关元数据 (例如练习类型) 的练习。类似地,响应信息Ri表示具有相关元数据 (例如学生响应的持续时间) 的学生对Ei的响应ri。如果学生的第i个响应正确,则学生响应ri ∈ {0,1} 等于1,如果不正确,则等于0。因此,SAINT被设计为预测学生正确回答第 i 个练习概率:

输入表示

SAINT采用练习信息E1、......、Ek和响应信息R1、......、Rk−1的序列作为输入,并预测第k个用户响应rk。SAINT中的嵌入层将每个Ei和Ri映射到潜在空间中的一个向量,生成练习嵌入序列Ee 1,···,Ee k和反应嵌入序列Re 1,··,Re k−1.该层嵌入了Ei和Ri的以下属性

• 练习 ID:一个潜在向量被分配给每个练习唯一的ID

• 练习类别:每个练习都属于领域主题的一个类别。 为每个类别分配一个潜在向量。

• 位置:输入序列中练习或响应的位置(第 1、第 2、...)表示为位置嵌入向量。 位置嵌入在练习序列和响应序列中共享。

• 响应:为学生响应ri 的每个可能V(0 或1)分配一个潜在向量。

• 已用时间:学生以秒为单位的反应时间被四舍五入为整数V。 一个潜在向量被分配给 0 到 300 之间的每个整数,包括 0 到 300。 任何超过 300 秒的时间都被限制为 300 秒。

• 时间戳:记录学生接受每个练习的绝对时间的月、日和小时。 为月、日和小时的每个可能组合分配一个唯一的潜在向量。

最终的嵌入 Ee i 或 Re i 是其构成属性的所有嵌入向量的总和(见图 3)。 例如,练习信息 Ei 由练习 ID、练习类别和位置组成,因此我们通过对相应的练习 ID 嵌入、类别嵌入和位置嵌入求和来构造练习嵌入 Ee i。 虽然我们没有直接在 SAINT 中嵌入交互 Ii,但我们将在基于 Transformer 的深度知识跟踪模型变体中使用交互嵌入进行比较。

深度自注意编码器-解码器.

我们提出的模型 SAINT,基于 [22] 中提出的 Transformer 架构,由编码器和解码器组成,如图 2 所示。编码器采用序列 Ee= [Ee 1, · · · ,Eek] 的练习嵌入并将处理后的输出 O = [O1,····,Ok] 馈送到解码器解码器采用 O 和另一个带有起始令牌嵌入 S顺序输入 Re= [S,Re 1,···,Re k−1] 响应嵌入,并产生预测响应 ^r = [^r1,···, ^rk ]。

编码器和解码器是多头注意力网络的组合,是 SAINT 的核心组件,其次是前馈网络。与原始的 Transformer 架构不同,SAINT 为所有多头注意力网络屏蔽了与来自未来的信息相对应的输入,以防止无效参与。这确保了 ^rk 的计算仅取决于前面的练习 E1,···,Ek 和响应 R1,···,Rk-1。我们在以下小节中提供了架构的详细说明。

多头注意力网络

多头注意力网络采用 Qin、Kin 和 Vin,每个分别代表Q、K和V的序列。多头注意力网络只是将注意力网络应用于具有不同投影矩阵的相同输入序列 h 次。注意力层首先通过将矩阵 WQ i 、 WK i 和 WV i 和每个 Qin、Kin 和 Vin 相乘投影到潜在空间。

其中 q、k 和 v 分别是投影Q、K和V。 每个V与给定Q的相关性由Q和与该V对应的K之间的点积确定。

SAINT 中的注意力网络需要一种屏蔽机制,以防止当前位置关注后续位置。掩蔽机制用 -∞ 替换来自点积的矩阵 QiKT i 的上三角部分,在 softmax 操作之后,具有将后续位置的注意力权重归零的效果。注意力头,headi,是V Vi 乘以被掩蔽的注意力权重。

其中,d的平方根除以q和k的维数用于缩放。

h 个注意力头的串联乘以 WO 以聚合不同注意力头的输出。这个连接的张量是多头注意力网络的最终输出

前馈网络

位置前馈网络应用于多头注意输出,为模型添加非线性,

其中,M=[M1,··,Mk]=多头(Qin、Kin 、 Vin),WFF 1,WFF 2,bFF 1和bFF 2是不同Mi之间共享的权重矩阵和偏差向量。

编码器

编码器是一堆 N 个相同的层,它们是前馈网络,后面是多头注意力网络。在公式中,每个相同的层是

其中,跳过连接[6]和层规范化[1]应用于每个子层。请注意,第一层的Qin、Kin和Vin是Ee,是练习嵌入的顺序,后续层的那些是前一层的输出。

解码器

解码器也是由N个相同层组成的堆栈,由多头注意网络和前馈网络组成。与编码器相似,跳过连接和层归一化应用于每个子层。每个相同的层由以下等式表示:

其中 O 是编码器的最终输出解码器第一层的 Qin、Kin 和 Vin 都是带有 start token embeddings 的响应序列 Re,后面的层是上一层的输出。最后,一个预测层,由一个线性变换层和一个 sigmoid 操作组成,应用于最后一层的输出,以便解码器输出是一系列概率V

基于transformer的深度知识追踪模型的变体

为了找到一种有效的知识追踪深度关注机制,我们对不同方式构建关注机制的QKV进行了广泛的实验。通过实验,我们探索了包括SAINT在内的具有多个堆叠注意力层的四种不同架构。在本节中,我们描述了其他三个模型的体系结构: 具有相互作用序列的下三角掩蔽变压器 (LTMTI),具有相互作用序列的上三角掩蔽变压器 (UTMTI) 和SAKT [14] 的堆叠变体 (SSAKT) (见图4)。

LTMTI

LTMTI模型分别通过练习Ek和过去的k-1个交互序列I=[I1,···,Ik−1] 预测反应rk。首先,编码器在加上起始令牌的过去的交互序列I上应用N次self attention,产生输出O=[O1,····,Ok]。然后,解码器的第一层将编码器输出O作为K和V,并将大小为k的常量序列Ek、··、Ek作为Q。下一个N−1层解码器将编码器输出O作为K和V,前一层的输出作为Q。LTMTI与SAINT的一个主要计算差异是,LTMTI将下三角遮罩应用于所有注意层,而不是SAINT中的上三角遮罩。这迫使LTMTI的第i个输出ˆrk,i只能从Ek和最近的(i−1) 互动推导。

请注意,LTMTI 的这一方面实际上是对训练数据的增强,其中历史被截断为各种长度。 也就是说,模型学习从单个输入推断具有多个过去交互历史 (Ek)、(Ik-1,Ek)、···、(I1、···、Ik-1,Ek) 的 rk。 对于测试,预测 ^rk 被定义为使用可用最长交互序列的输出 ^rk,i。

UTMTI

UTMTI模型遵循与SAINT相同的架构,只是在输入序列的选择上有所不同。与SAINT不同,UTMTI采用交互序列I1、.....、Ik−1作为编码器输入,练习序列E1,···,Ek作为解码器输入。这种方法遵循SAKT[14]和EKT[8]的注意机制。在SAKT中,练习作为Q嵌入,交互作为K和V嵌入。同样地,EKT通过一个深层Bi LSTM层处理交互序列,并将输出与由练习嵌入的余弦相似性给出的注意权重相结合。UTMTI遵循同样的模式,使用交互作为注意K/V,使用练习作为Q。

SSAKT

SSAKT 模型由一个单独的注意力块组成,该块使用练习嵌入作为Q,交互嵌入作为K/V。作者报告说,当注意力块堆叠多次时,AUC 会降低。 SSAKT 通过在把练习作为Q之前应用自注意力机制来解决此问题。练习自我注意块和练习交互注意块的输出进入相应的后续块作为其注意层的输入。

EXPERIENTS

数据集

我们对由 Santa 收集的大规模知识追踪数据集 EdNet [2] 进行了实验,该数据集是用于英语教育的活跃移动应用程序(图 6)。  Santa 是一款配备人工智能辅导系统的自学解决方案,可帮助学生准备国际交流英语 (TOEIC) 听力和阅读测试。  Santa 目前拥有 1,047,747 名注册用户,可在 Android 和 iOS 上使用。 该数据集包含自 2016 年以来收集的带有相应用户响应的多项选择练习。该数据集包含每个用户的交互历史记录。 交互历史是一系列记录,每个记录包含以下特征:用户收到每个练习的时间(Timestamp),每个练习唯一的ID(Exercise ID),每个练习所属的领域主题的类别 to(练习类别)、用户响应(Response)以及用户响应所用的时间长度(Elapsed time)(图5)。 该数据集共有 16,175 个练习和 72,907,005 个响应,有 627,347 名用户解决了多个练习。 我们根据用户将数据集分为三部分:训练集(439,143 个用户,51,117,443 个响应)、验证集(62,734 个用户,7,460,486 个响应)和测试集(125,470 个用户,14,329,076 个响应)(表 1)。

训练细节

超参数由第 4.4 节中的消融研究确定。我们从头开始训练模型,使用 Xavier 均匀 [5] 分布来初始化权重。窗口大小、丢失率和批量大小分别设置为 100、0.1 和 128。我们使用 Adam 优化器 [10],其中 lr = 0.001,β1 = 0.9,β2 = 0.999 和 epsilon = 1e−8。我们使用所谓的 Noam 方案来安排学习率,如 [22] 中将 warmup_steps 设置为 4000。我们选择在验证集上给出最佳结果的模型参数,并使用测试集对其进行评估。

实验结果

我们通过将 SAINT 与当前最先进的基于知识跟踪的方法和基于协同过滤的方法进行比较来评估它:多层感知器 (MLP) [7]、神经协同过滤 (NCF) [7]、神经教学代理 (NPA) ) [12] 和自注意力知识跟踪 (SAKT) [14]。在我们的实验中,我们使用了以前工作中常用的两个性能指标:接收器操作特征曲线下的面积(AUC)和准确度(ACC)。 AUC 显示对 1-特异性的敏感性(召回)。敏感性(resp.specificity)是正确预测为阳性(resp.negative)的真阳性(resp.negative)的比例。 ACC 是正确预测的比例。表 2 展示了我们评估的总体结果。它表明我们的模型在这两个指标上都优于其他模型。与当前最先进的模型相比,SAINT 的 ACC 高 1.1%,EdNet 数据集的 AUC 高 1.8 % .第 3.4 节中描述的其他基于 Transformer 的深度知识跟踪模型变体也比现有方法表现更好。

我们将经过充分训练、性能最佳的 SAINT 模型的注意力权重可视化,以分析 SAINT 的注意力机制。最后一个编码器和解码器块的自注意力权重显示出不同的趋势(见图 7)。这表明 SAINT 能够学习适合练习和响应的不同注意机制,并分别应用它们。图 8 显示了第一个解码器块的编码器-解码器注意力层的每个头部都以不同的模式参与练习序列。如图 9 所示,后面的解码器块中的注意力范围更加多样化。这可以解释为注意力机制捕获了值复杂性的增加,当值通过连续的解码器块时,这些值包含了练习和响应之间更复杂的关系。

消融研究

在本节中,我们将介绍建议模型的消融研究。首先,我们对具有不同超参数的每个架构进行消融研究。 图 10 显示,将深度注意力层分别应用于练习和响应的 SAINT 给出了最佳结果。SAINT 表现最好的模型有 4 层,潜在空间维度为 512。它显示 ACC 为 0.7368,AUC 为 0.7811。 在 SAINT 旁边,LTMTI 模型总体上显示出高 ACC 和 AUC。 这表明 LTMTI 中下三角掩码的数据增强效果提高了 ACC 和 AUC。 其次,当使用不同详细程度的输入进行训练时,我们评估性能最佳的SAINT模型。所有模型共享相同的嵌入方法进行练习。对于响应嵌入,嵌入A仅使用位置信息和用户响应值来构建响应嵌入,而嵌入B除了嵌入A使用的功能外,还使用练习类别,时间戳和经过时间。表3显示,使用更多信息来构建嵌入并没有改善结果。

CONCLUSION

在本文中,我们提出了 SAINT,这是一种具有深度注意力网络的最先进的知识追踪模型。我们凭经验展示了一种基于 Transformer 的架构,该架构在知识跟踪任务上表现出卓越的性能。此外,我们通过对注意力网络的Q、K和V的广泛实验表明,分别向编码器和解码器提供练习和响应是知识追踪任务的理想选择。此外,通过研究 SAINT 的注意力权重,我们发现编码器和解码器的自注意力结果表现出不同的模式。我们建议这支持我们的想法,即输入中的练习和响应的分离允许模型找到特别适合各自输入值的注意机制。最后,对大规模知识追踪数据集的 SAINT 评估表明,该模型优于现有的最先进的知识追踪模型。

SAINT:面向知识跟踪的适当Q、K和V计算相关推荐

  1. SAINT:一个基于transformer的知识跟踪模型

    1 简介 SAINT: Separated Self-AttentIve Neural Knowledge Tracing. 一个基于transformer的知识跟踪模型. 本文根据<Towar ...

  2. 面向知识图谱的信息抽取

    面向知识图谱的信息抽取 人工智能技术与咨询 点击蓝字 · 关注我们 来源:< 数据挖掘,> ,作者赵海霞等 关键词: 知识图谱:信息抽取:实体抽取:关系抽取:开放域 摘要: 摘要: 随着大 ...

  3. 墨天轮沙龙 | 北京大学李文杰:面向知识图谱应用的图数据库系统gStore

    在6月8日举办的[墨天轮数据库沙龙第七期-开源生态专场]中,北京大学重庆大数据研究院图数据库与知识图谱实验室副主任.北京大学王选计算机研究所全职博士后 李文杰老师分享了<面向知识图谱应用的图数据 ...

  4. 《Attention Is All You Need》注意力机制公式中Q,K,V的理解

    一.概述 <Attention Is All You Need>是一篇关于注意力机制里程碑的文章,从2017年发表至今2020年7月已经获得了上万的引用.该文的两大亮点一是提出了一个几乎仅 ...

  5. 通俗理解注意力机制中的Q、K和V表示的具体含义

    https://www.jianshu.com/p/7a61533fd73b 通俗理解讲解一 以翻译为例 source:我 是 中国人 target: I am Chinese 比如翻译目标单词为 I ...

  6. transform的q、k、v的计算过程

    q.k.v的理解:Attention机制详解(二)--Self-Attention与Transformer - 知乎 首先是来自于Vision Transformer 超详细解读 (原理分析+代码解读 ...

  7. 下一代面向知识的 BI 到底有何不同,从 nextionBI 数据解读能力中一探究竟

    2022年2月25日,nextionBI举办线上发布会,这是下一代BI首次正式与大众见面.nextionBI的定位是数据融合的增强分析型敏捷BI平台,面向知识设计,关注知识的积累.发现与应用.这一定位 ...

  8. 神经网络 注意力机制 Q K V 理解

    注意力机制 公式 为了简单假定       Q矩阵 K矩阵一样 Q                                                   K转置              ...

  9. 深度学习attention机制中的Q,K,V分别是从哪来的?

    提问:找了各种资料,也读了论文原文,都是详细介绍了怎么把Q,K,V通过什么样的运算得到输出结果,始终没有一个地方有解释Q,K,V是从哪来的?一个layer的输入不就是一个tensor吗,为什么会有Q, ...

最新文章

  1. 最高10万奖励!不限选题!高通AI应用创新大赛应用赛道详解
  2. Nginx--------地址重写
  3. c++和Python之rfind不同
  4. 相角裕量的指令 matlab,[转载]什么是相角裕量、增益裕量?
  5. .NET 基金会完成第一次全面改选
  6. 使用临时文件mkstemp和输出errno对应的错误描述信息strerror
  7. package 和 install的区别
  8. SQL数据库层面操作(DDL)
  9. 浅析HTML5高薪的原因所在
  10. 用这些进行PDF翻译,双语对照、翻译后排版不变、还免费!
  11. 学历是铜牌,能力是银牌,人脉是金牌,思维是王牌
  12. 如何清理多余的Windows桌面右键菜单
  13. python代码螺旋线怎么写_python实现画五角星和螺旋线的示例
  14. 【Pygame小游戏】超好玩的——Python版“愤怒的小鸟”,我能玩上一整天(附源码)
  15. HoloLens调试
  16. 获取IE浏览器版本号
  17. dwz php 联动,PHP利用DWZ.CN服务生成短网址
  18. C++题目分享之小鱼比可爱
  19. 用于二维范德华异质结构表征的低温探针台
  20. @WebFilter怎么控制多个filter的执行顺序

热门文章

  1. Android11源码中内置搜狗输入法(Rockchip)
  2. ios动态库注入把越狱手机上自制的动态库安装到普通手机上
  3. Qt实现中国象棋:(四)棋子绘制的实现
  4. Java实现奇偶数排序
  5. sql比较两张表,获取与不一样的数据
  6. 偏差、方差、精确率、召回率
  7. 论文阅读:SP-CIDS: Secure and Private Collaborative IDS for VANETs
  8. BEIT: BERT Pre-Training of Image Transformers(图像Transformer的BERT预训练)
  9. hive 如何解析包含 json 的字符串字段
  10. 2022-2028年中国猪肉分割肉行业市场研究及前瞻分析报告