System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及深度学习和自然语言处理领域,具体涉及一种适用于长序列的对数位置编码方法。
技术介绍
1、近年来,随着transformer模型的兴起,由于其采用的多头注意力模块无法对不同位置的相同词差别化,因而在其中加入位置编码是必不可少的,在现有的位置编码技术中,有很多多样的位置编码策略,然而在实际应用中也有着一些不可避免的缺点。第一,使用绝对编码,在模型输入阶段将词嵌入向量与绝对位置编码整合,这样的静态位置编码仅考虑每个词在序列中的绝对位置,但并没有直接反映词之间的相对距离。这限制了模型在处理长距离依赖时的能力,特别是在长序列中理解上下文的复杂性。第二,使用绝对编码进行训练特定长度的输入序列,导致模型对特定长度的输入过度适应,从而降低了模型对不同长度输入的泛化能力。这在处理高度动态长度的序列时尤为明显;第三,使用简单的相对编码,构建相对位置表达时,所有与中心词距离超过最大距离阈值的词被统一覆盖成距离为最大距离阈值的词相对位置表达,虽然简单的相对位置编码在处理长距离依赖有一定的效用,但是将所有远距离关系简化为单一的表达形式,限制了模型捕捉复杂序列特征的能力模型并且失去了区分不同远距离关系的能力。
2、申请号为202111595100.x的专利技术专利,公开了一种相对位置编码方法及系统,这种相对位置编码方法,尽管其对长序列训练有一定效果,但在实际使用中失去了对长距离元素的考量,无法捕捉复杂长序列特征。
技术实现思路
1、专利技术目的:为了克服
技术介绍
的不足,本专利技术公开
2、技术方案:本专利技术所述的适用于长序列的对数位置编码方法,包括以下步骤:
3、s1、从公共数据库中获取长序列数据,划分为训练集和验证集;
4、s2、构建一个用于定位序列元素的对数位置编码模块,获取序列的对数位置编码;
5、s3、搭建包括整合了对数位置编码的多头注意层,获取序列元素的注意层输出;
6、s4、基于自定义位置编码模块和多头注意层搭建数据编码器,对序列数据进行数据编码;
7、s5、将训练集序列数据输入到构建好的数据编码器模型中进行训练,使用性能指标评估模型性能,并保留表现最佳的模型。
8、进一步的,s1中长序列数据为词汇数量超过1000个的长序列。
9、进一步的,s1中长序列数据为氨基酸数量超过1000个的新冠病毒序列数据,并对其进行预处理。
10、其中,预处理包括:
11、只保留人类宿主相关序列;
12、只选择新冠病毒蛋白质序列刺突蛋白的部分;
13、筛选掉刺突蛋白序列长度小于1000个氨基酸残基的序列;
14、对蛋白质序列作去重处理;
15、去除具有十个以上连续氨基酸突变的序列。
16、进一步的,所述s2中:
17、通过对序列元素索引的对数变换来编码元素之间的相对位置信息,对于序列x=(x1,x2,…,xn),其对数位置编码aijk定义为:
18、
19、其中,wk是一组可学习的权重向量,k为自定义常数,logk表示以k为底的对数,|j-i|表示元素xi和xj在序列中的距离,当i=j时,即元素与其自身的距离为0,对数位置编码简化为同理,对数位置编码aijv类似aijk的定义,分别与不同的模型组成部分键k和值v相关联,且使用不同的权重向量。
20、进一步的,所述s3中:
21、多头注意层为每一个头分配数据,根据数据在该数据序列中的对数位置给数据分配注意力分数,同样的对于序列x=(x1,x2,…,xn),使用对数位置编码aijk代替简单的相对编码,计算注意力分数eij,表达式为:
22、
23、其中,wq和wk分别是查询q和键k的权重矩阵,此外,aijk是元素xi和xj之间的对数位置编码,反映了元素在序列中的相对位置信息,dz是一个常数,用于缩放点积的结果以防止梯度消失或爆炸;
24、基于元素xi和xj之间的相似度分数eij,进一步计算得到每个元素xi与其他元素xj之间的注意力权重αij,注意力权重αij是通过应用softmax函数对eij进行归一化得到的,表达式为:
25、
26、结合计算得到的注意力权重αij和对数位置编码值aijv来获得每个头为序列中的每个元素xi的输出zi,输出表示zi不仅取决于相应元素的注意力权重,而且还包括了与其它所有元素的加权贡献,表达式为:
27、
28、其中wv是值v的权重矩阵,aijv代表元素xi和xj之间的对数位置编码,与aijk类似,用于调整序列元素xj的贡献;
29、多头注意力的每个头分别计算得到了自己的输出zi,在多头注意力机制完成后,所有头的输出zi被拼接在一起,为了将多头注意力的多维信息合并成一个统一的表示,拼接后的输出通过一个全连接层进行线性变换,并使用权重矩阵和偏置来变换数据,最终得到注意力层的输出zout。
30、进一步的,s4中:
31、在训练集和验证集上,序列数据首先经过特征化处理,转换成模型可接受的向量形式,传入多头注意力层,多头自注意力层实例化后输出得到x:[b,l,d],b表示自定义的批次大小,l表示序列长度,d表示序列的隐藏层维度;
32、在模型的架构中,序列数据依次通过两个编码层,每个编码层都由一个多头注意力层和一个激活函数为relu的前馈神经网络组成,在每个编码层后,进行层归一化操作,稳定学习过程,最终输出一个与输入x维度相同的编码后张量e,保留了输入序列的批次大小b、序列长度l和隐藏层维度d。
33、进一步的,s5中:
34、模型训练前期,对训练和验证数据集进行随机洗牌,以避免模型学习到数据的特定排序并使用数据加载器生成大型训练和验证数据,增强模型的泛化能力;使用稀疏分类交叉熵作为损失函数,并使用sgd作为优化器对整个模型进行训练,自定义度量回调函数使用了稀疏分类准确率,精确率,召回率,f1指数,马修斯相关系数性能指标监控验证集上的性能。
35、有益效果:与现有技术相比,本专利技术的优点为:
36、(1)通过对序列元素索引的对数变换来编码,能够更有效地捕捉词之间的相对位置关系,相对于静态的绝对位置编码,对数位置编码通过其数学性质,可以区分不同的相对距离,而不是仅仅考虑绝对位置,这样的编码策略对于理解长序列中的依赖关系,特别是在上下文复杂性较高的情况下,能够提供丰富的信息;
37、(2)使用的对数位置编码对元素之间距离的编码是动态的,不会像静态的绝对位置编码那样固定地依赖于序列的特定长度,即当长度变化,模型不再适用。而对数位置编码即使在训练时序列的长度有所变化时,也能够适应不同长度的输入,从而提高了模型本文档来自技高网...
【技术保护点】
1.一种适用于长序列的对数位置编码方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的适用于长序列的对数位置编码方法,其特征在于:S1中长序列数据为词汇数量超过1000个的长序列。
3.根据权利要求1所述的适用于长序列的对数位置编码方法,其特征在于:S1中长序列数据为氨基酸数量超过1000个的新冠病毒序列数据,并对其进行预处理。
4.根据权利要求3所述的适用于长序列的对数位置编码方法,其特征在于,预处理包括:
5.根据权利要求1所述的适用于长序列的对数位置编码方法,其特征在于,所述S2中:
6.根据权利要求5所述的适用于长序列的对数位置编码方法,其特征在于,所述S3中:
7.根据权利要求6所述的适用于长序列的对数位置编码方法,其特征在于,S4中:
8.根据权利要求7所述的适用于长序列的对数位置编码方法,其特征在于,S5中:
【技术特征摘要】
1.一种适用于长序列的对数位置编码方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的适用于长序列的对数位置编码方法,其特征在于:s1中长序列数据为词汇数量超过1000个的长序列。
3.根据权利要求1所述的适用于长序列的对数位置编码方法,其特征在于:s1中长序列数据为氨基酸数量超过1000个的新冠病毒序列数据,并对其进行预处理。
4.根据权利要求3所述的适用于长序列的...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。