CN112417089B - 一种基于深度学习的高并行性阅读理解的方法 - Google Patents
一种基于深度学习的高并行性阅读理解的方法 Download PDFInfo
- Publication number
- CN112417089B CN112417089B CN201910773587.2A CN201910773587A CN112417089B CN 112417089 B CN112417089 B CN 112417089B CN 201910773587 A CN201910773587 A CN 201910773587A CN 112417089 B CN112417089 B CN 112417089B
- Authority
- CN
- China
- Prior art keywords
- layer
- convolution
- model
- octave
- output
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/332—Query formulation
- G06F16/3329—Natural language query formulation or dialogue systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/334—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Biophysics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明涉及一种基于深度学习的高并行性阅读理解的方法,包括数据预处理,嵌入层,编码层,交互层,输出层。使用bert模型对预训练进行优化;使用Octave卷积替换原模型中的深度可分离卷积。本发明在原有的高并行机器阅读理解算法——QANet的基础上,改进其嵌入层和编码块的结构,将嵌入层的预训练模型改为BERT,并重构了整个编码块。在编码块中应用了多头自注意力机制,固定了编码块的卷积层的数量,并将本次设计的编码块内所需用到的所有卷积层都改为Octave卷积。并提出将参数量较少其计算较快的的深度可分离卷积应用于Octave卷积中,提升Octave卷积在提升速度的同时提升模型的泛化能力,并将之应用于机器阅读理解任务。
Description
技术领域
本发明涉及机器阅读理解任务技术领域,具体的说是一种基于深度学习的高并行性阅读理解的方法。
背景技术
在机器阅读理解任务中,基于传统特征工程的模型也曾有过一段时间的辉煌,其核心在于选择不同的特征,然后基于所选的特征构建并学习三元评分函数f(a,q,d),具有最高分数的候选答案a将被视为文档d中问题q的答案。常见的评分函数包括线性模型和对数线性模型。基于传统特征工程的方法具有较大的局限性,即使在部分阅读理解任务上能够取得较好的效果,但仍然存在很多不能解决的问题。一般而言,因为传统特征工程方法通常是基于离散字符串匹配,因此难以解决人类语言表达多样性的问题。另外,基于窗口(window)匹配的传统特征工程方法也很难处理多个句子间的长距离依赖问题。
经过多年的发展,用于机器阅读理解任务模型经历了从基于传统特征的方法到深度学习方法的变迁,随着完型填空式数据集的发布,记忆网络、指针网络和自注意力模型等在自然语言处理方向具有较强建模能力的深度学习模型被相继提出用于解决这类问题。
现有技术中使用的预训练模型老旧,不能充分的利用语义信息。使用的预训练模型为glove,这个模型是循环结构的,它限制了模型再集群上的计算速度,导致该模型的训练时间较长。使用的深度分离卷积虽然该卷积泛化能力强,但是有一个很大的缺点,那就是在深层网络里容易导致梯度消失,所以不适用于深层的网络。从而导致模型对文章的编码能力不够强,最终会导致该模型对语言建模的能力不足,产生错误的回答;对阅读理解时间过长,这在需要即时翻译的阅读理解中是很大的缺点;深层的网络里面该模型并不适用。
另一方面,机器阅读理解任务在近几年来已经取得了长足进步,但目前的常用模型存在着计算耗时较长,并行化程度低等问题,机器阅读理解作为需要及时反馈的问答系统的基础任务,缓慢的计算过程会给用户糟糕的体验,在实际应用中是难以忍受的,所以考虑结合近两年的表现较佳的模型和算法,打造出一个并行程度高且表现良好的机器阅读理解模型,用来解决因为模型老旧导致的阅读理解的速度较慢和不适用于深度网络等技术问题。
发明内容
针对上述现有技术不足,本发明提供一种基于深度学习的高并行性阅读理解的方法。
本发明提供的一种基于深度学习的高并行性阅读理解的方法是通过以下技术方案实现的:
一种基于深度学习的高并行性阅读理解的方法,包括数据预处理,嵌入层,编码层,交互层,输出层,其中,
数据预处理:在给定数据中,每个问题的答案对应给出了答案初始索引及答案全文,依据模型,需要计算出结束索引,并结构化存储拆解的数据,构建PyTorch(一种深度学习框架)的Dataset类;关于始末标签,设定如下:
y1=POSs
y2=y1+Lt
其中POSs是数据集中的“answer_start”,该属性给出了答案在文章中的首字符位置,Lt是数据集中“text”的字符长度;在后续的处理中,该处的两个索引将被修改为以单词为索引量,任何一个标点符号也会被记为一个单词,在具体实现中,将对其分词,得到tokens(分词得到的结果),并将分词结果遍历后对y1,y2重新赋值;对于所有的文章,在将其分词后,均将长度填充至400,对于所有的问题,在将其分词后,均将长度填充至50,并在填充时生成遮罩矩阵备用,即有效部分值为1,填充部分值为0的等大小的二值矩阵;
嵌入层:本次设计选取了bert-as-service开源库作为的BERT编码器,bert-as-service是依据BERT的预训练模型而开发的库,可以在本地开启一个使用BERT预训练模型编码的服务,便捷地将文本的tokens进行编码;
其中tokens是一批篇章或者问题,经过BERT编码后得到的V便是一个二维矩阵,l为篇章或者问题的长度,每个单词在本次设计使用的预训练模型中将被编码为768维的向量,将篇章和问题依照上述方法分别编码并使用0向量填充,分别得到篇章嵌入矩阵和问题嵌入矩阵为加快模型的训练,使用批训练的方法,即将多个矩阵进行拼接,每个张量的第一维为批大小,本次设计将批大小设置为32,即之后将它们转置后分别使用一维卷积变换至使用一维卷积进行线性变换;
在该线性变换中,改变的是数据的第一维,输入通道为5,该一维卷积共有一个卷积核,故输出单通道,即第一个维度是1;在嵌入层使用一维卷积进行线性变换后,通过两层的Highway Network;
对Highway Network中的两个线性层而言,均使用前面的一维卷积来实现,并保证一维卷积的输入和输出通道一致,这样就能保证Highway Network的输入和输出为同一纬度;至此,整个嵌入层的基础网络均已实现,对这些基础的网络进行"组装",便可得到整个嵌入层的网络结构
编码层:在该层中,使用了一个编码块,在使用代码实现编码块前,首先使用代码实现了位置编码、Octave卷积、多头自注意力;对于层标准化代码使用了PyTorch的官方实现,位置编码直接根据公式进行计算;由于Octave卷积在整个模型中运用较多,为了降低模型的参数,使用了一维的深度可分离卷积来实现一维的Octave卷积,并将Octave卷积代码进行模块化处理,使首末的Octave卷积均可使用该处代码进行定义,由于在本次设计的编码块中,多个Octave卷积是直接相连的,在层数过深后极易产生梯度消失的问题,参考了HighwayNetwork和LSTM对Octave卷积加以改造,并加上relu这一激活函数,以实现其内部的残差连接;
以conv为起始的变量均为一维深度可分离卷积,且卷积操作后数据的维度不变,故该种实现方式在此处是可行的,对于位于首末的octave卷积,默认首层输入和末层输出均只有高频;
在完成多个卷积运算后,输出经过层标准化等操作后输入至多头自注意力模型,先将X线性变换为Memory和Query并转置,之后再将最后一个维度拆分,并计算对应位置的注意力后与Value相乘;
将Key,Value和缩放后的Query的最后一个维度对半拆分,并将对应的Key和Query做点积得到注意力权重,在做softmax后与Value相乘,再将得到的Y拼接后转置,得到该层的输出结果;在本次设计中,由于GPU内存限制,将多头自注意模型的头数设为4;随后进行编码块模块代码的组织,由于用到了多层的Octave卷积,但就模型而言,希望输入和输出只有一个频段,所以单独定义了首末层的Octave卷积,保证其首末层仅适用高频分别输入和输出;此外,利用了PyTorch的nn.ModuleList()函数来循环定义位于中间的Octave卷积;
S=S1+S2+S3
其中,W1,W2,W3均为可学习的权重矩阵,expand函数是将对应非-1的维度通过复制的方式扩增至指定的大小,由以上算法,将O(n2)时间复杂度的算法通过提高占用内存容量以降低运算时间的方法和矩阵运算的策略,成功降至O(1)时间复杂度,在GPU等高并行运算硬件的支持下,大大减少了该层的计算时间耗费;
在得到S后,分别对其进行行列两个方向的softmax计算,并计算出A、B,并根据A、B计算出本层输出;
将前面得到的相似性矩阵S在行、列两个方向分别计算softmax后得到S1和S2,之后将S1与Q做点积得到A,同时S1与转置后的S2做点积后再与C做点积,得到B,之后将C,A,C与A的积,C与B的积四个向量拼接得到Y。之后将Y转置后赋值给X,X通过一个一维卷积进行线性变换后经过4个串联的编码块组,分别得到M1,M2,M3和M4,且编码块组之间参数共享,其中的每个编码块参数不共享;在编写编码块的代码时,复用了编码层的代码,由于在本次设计中,每个编码块组之间是权值共享的,故仅需要在模型中定义一个交互层的编码块组即可,初步设定每个编码块组有7个编码块,每个编码块Octave卷积层数为4;
输出层:在输出层中,使用PyTorch内置的cat函数将M1和M3拼接得到p1,M2和M4拼接得到p2,由于框架自带的交叉熵算法会计算softmax,所以在此并不使用softmax函数计算出概率分布,而是用直接将模型的输出作为最终输出,但是在输出前,为了防止填充位置的值过大,导致后续计算概率分布时概率应为0的填充位置具有较大概率,将对填充位置的值加上一个较大的负值,称之为遮罩函数,这样在之后算softmax的时候,其概率逼近于0;
损失计算及参数优化:在得到P1和P2后,需要将其与标准答案的y1,y2计算预测的损失,将它们进行softmax运算后取对数,得到p1和p2,再分别其对它们与目标索引求负对数似然损失,即得出两个P1和P2对索引的交叉熵损失,在使用PyTorch框架时,可直接使用其内置的交叉熵函数,最后将两个交叉熵损失的和作为本次的计算偏差的损失。
所述一维卷积进行线性变换中,由于在本次设计中,需要多次使用一维卷积进行维度变换,故此处使用了模块化的代码结构,此外可自定义该模型是否有激活函数,同时为了加速模型的训练并提高表现,使用了PyTorch内置的参数初始化。
所述编码层中,使用了两种编码块,其中卷积层数量分别是4和5。该经过编码后张量维度并未发生改变,即
它们将作为本层的输出输入到交互层。
所述输出层中,在计算loss之前,已经定义了一个Adamax优化器。考虑到,在训练初期损失较大,可以使用较大的学习率进行参数更新,但到后期,模型参数已经学习至局部最优点附近,此时如果还是使用较大的学习率进行参数更新的话,将会不停地在局部最优点附近震荡,所以,使用了一个函数使学习率随着训练的次数的增长逐步下降。
本发明的有益效果是:
1、在SQuAD v1.1数据集上有更快的速度和更好的效果;降低了阅读理解所需要的时间;使得本模型适用于深层的网络;
2、在嵌入层选用目前最好的的预训练模型——BERT的word embedding(词嵌入)作为输入,该技术降低了阅读理解所花的时间;并将目前性能和速度表现最好的卷积层——Octave Convolution替换原有的Deepwise Separable Convolution(深度可分离卷积),对编码块中的层标准化进行策略调整,以进一步提升模型的表现,该技术能够使模型适用于深层网络。
附图说明
图1是本发明结构示意图;
图2为BERT编码示意图;
图3为一维卷积示意图;
图4为双向注意力计算过程示例。
具体实施方式
下面将通过实施例对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1至图4所述的一种基于深度学习的高并行性阅读理解的方法,包括数据预处理,嵌入层,编码层,交互层,输出层,其中,
数据预处理:在给定数据中,每个问题的答案对应给出了答案初始索引及答案全文,计算出结束索引,并结构化存储拆解的数据,构建PyTorch(一种深度学习框架)的Dataset类。关于始末标签,我们有如下设定:
y1=POSs
y2=y1+Lt
其中POSs是数据集中的“answer_start”,该属性给出了答案在文章中的首字符位置,Lt是数据集中“text”的字符长度。在后续的处理中,该处的两个索引将被修改为以单词为索引量,任何一个标点符号也会被记为一个单词,在具体实现中,我们将对其分词,得到tokens(分词得到的结果),并将分词结果遍历后对y1,y2重新赋值。对于所有的文章,我们在将其分词后,均将长度填充至400,对于所有的问题,我们在将其分词后,均将长度填充至50。并在填充时生成遮罩矩阵备用,即有效部分值为1,填充部分值为0的等大小的二值矩阵。
嵌入层:本次设计选取了bert-as-service开源库作为我们的BERT编码器,bert-as-service是依据BERT的预训练模型而开发的库,可以在本地开启一个使用BERT预训练模型编码的服务,便捷地将文本的tokens进行编码。
如图2所示,其中tokens是一批篇章或者问题,经过BERT编码后得到的V便是一个二维矩阵,l为篇章或者问题的长度,每个单词在本次设计使用的预训练模型中将被编码为768维的向量。将篇章和问题依照上述方法分别编码并使用0向量填充,分别得到篇章嵌入矩阵和问题嵌入矩阵为加快模型的训练,我们使用批训练的方法,即将多个矩阵进行拼接,每个张量的第一维为批大小,本次设计将批大小设置为32,即 之后将它们转置后分别使用一维卷积变换至使用一维卷积进行线性变换如图3所示。
在该线性变换中,改变的是数据的第一维,在图3中,输入通道为5,该一维卷积共有一个卷积核,故输出单通道,即第一个维度是1。由于在本次设计中,我们需要多次使用一维卷积进行维度变换,故此处使用了模块化的代码结构,此外可自定义该模型是否有激活函数等,同时为了加速模型的训练并提高表现,使用了PyTorch内置的参数初始化。在嵌入层使用一维卷积进行线性变换后,通过两层的Highway Network。
对Highway Network中的两个线性层而言,我们均使用前面的一维卷积来实现,并保证一维卷积的输入和输出通道一致,这样就能保证Highway Network的输入和输出为同一纬度。至此,整个嵌入层的基础网络均已实现,我们对这些基础的网络进行"组装",便可得到整个嵌入层的网络结构
编码层:在该层中,我们使用了一个编码块,在使用代码实现编码块前,我们首先使用代码实现了位置编码、Octave卷积、多头自注意力等。对于层标准化代码我们使用了PyTorch的官方实现,位置编码直接根据公式进行计算,鉴于篇幅有限,本节主要介绍Octave卷积的一维实现和多头自注意力机制的实现。由于Octave卷积在整个模型中运用较多,为了降低模型的参数,我们使用了一维的深度可分离卷积来实现一维的Octave卷积,并将Octave卷积代码模块化处理,使首末的Octave卷积均可使用该处代码进行定义,由于在本次设计的编码块中,多个Octave卷积是直接相连的,在层数过深后极易产生梯度消失的问题,我们参考了Highway Network和LSTM对Octave卷积加以改造,构造了一个选通函数,并加上relu这一激活函数,以实现其内部的残差连接。
以conv为起始的变量均为一维深度可分离卷积,且卷积操作后数据的维度不变,故该种实现方式在此处是可行的,对于位于首末的octave卷积,我们默认首层输入和末层输出均只有高频。
在完成多个卷积运算后,输出经过层标准化等操作后输入至多头自注意力模型,我们先将X线性变换为Memory和Query并转置,之后再将最后一个维度拆分,并计算对应位置的注意力后与Value相乘。
我们将Key,Value和缩放后的Query的最后一个维度对半拆分,并将对应的Key和Query做点积得到注意力权重,在做softmax后与Value相乘,再将得到的Y拼接后转置,得到该层的输出结果。在本次设计中,由于GPU内存限制,我们将多头自注意模型的头数设为4。随后我们进行编码块模块代码的组织,由于我们用到了多层的Octave卷积,但就模型而言,我们希望输入和输出只有一个频段,所以我们单独定义了首末层的Octave卷积,保证其首末层仅适用高频分别输入和输出。此外,我们利用了PyTorch的nn.ModuleList()函数来循环定义位于中间的Octave卷积。在本次设计中,我们使用了两种编码块,其中卷积层数量分别是4和5。该经过编码后张量维度并未发生改变,即
它们将作为本层的输出输入到交互层。
S=S1+S2+S3
其中,W1,W2,W3均为可学习的权重矩阵,expand函数是将对应非-1的维度通过复制的方式扩增至指定的大小。
由以上算法,我们将O(n2)时间复杂度的算法通过空间换时间和矩阵运算的策略,成功降至O(1)时间复杂度,在GPU等高并行运算硬件的支持下,大大减少了该层的计算时间耗费。
在得到S后,分别对其进行行列两个方向的softmax计算,并计算出A、B,并根据A、B计算出本层输出。
如图4所示,将相似性矩阵S在行、列两个方向分别计算softmax后得到S1和S2,之后将S1与Q做点积得到A,同时S1与转置后的S2做点积后再与C做点积,得到B,之后将C,A,C与A的积,C与B的积四个向量拼接得到Y。之后将Y转置后赋值给X,X通过一个一维卷积进行线性变换后经过4个串联的编码块组,分别得到M1,M2,M3和M4,且编码块组之间参数共享,其中的每个编码块参数不共享。在编写编码块的代码是,复用了编码层的代码,由于在本次设计中,每个编码块组之间是权值共享的,故仅需要在模型中定义一个交互层的编码块组即可,初步设定每个编码块组有7个编码块,每个编码块Octave卷积层数为4。
输出层:在输出层中,我们使用PyTorch内置的cat函数将M1和M3拼接得到p1,M2和M4拼接得到p2,由于框架自带的交叉熵算法会计算softmax,所以在此我们并不使用softmax函数计算出概率分布,而是用直接将模型的输出作为最终输出,但是在输出前,为了防止填充位置的值过大,导致后续计算概率分布时概率应为0的填充位置具有较大概率,我们将对填充位置的值加上一个较大的负值,我们称之为遮罩函数,这样在之后算softmax的时候,其概率逼近于0。
损失计算及参数优化:在得到P1和P2后,我们需要将其与标准答案的y1,y2计算预测的损失,将它们进行softmax运算后取对数,得到p1和p2,再分别其对它们与目标索引求负对数似然损失,即得出两个P1和P2对索引的交叉熵损失,在使用PyTorch框架时,可直接使用其内置的交叉熵函数,最后将两个交叉熵损失的和作为本次的计算偏差的损失。
在计算loss之前,我们已经定义了一个Adamax优化器。我们考虑到,在训练初期损失较大,可以使用较大的学习率进行参数更新,但到后期,模型参数已经学习至局部最优点附近,此时如果还是使用较大的学习率进行参数更新的话,将会不停地在局部最优点附近震荡,所以,我们使用了一个函数使学习率随着训练的次数的增长逐步下降。
本发明使用bert模型对预训练进行优化;使用Octave卷积替换原模型中的深度可分离卷积。
本发明在原有的高并行机器阅读理解算法——QANet的基础上,改进其嵌入层和编码块的结构,将嵌入层的预训练模型改为BERT,并重构了整个编码块。在编码块中应用了多头自注意力机制,固定了编码块的卷积层的数量,并将本次设计的编码块内所需用到的所有卷积层都改为Octave卷积。并提出将参数量较少其计算较快的的深度可分离卷积应用于Octave卷积中,提升Octave卷积在提升速度的同时提升模型的泛化能力,并将之应用于机器阅读理解任务。
本方案中释义如下中,
1、嵌入层
Context:代指本次模型给定的篇章或文本;Question:指本次阅读理解中给的问题;BERT encoder:依靠bert模型对给定篇章进行解码;Linear:线性层,线性变换,用来改变解好码的向量维度;HighwayNetwork:嵌入层,保证模型在无法对预训练模型进行调整时对词嵌入向量的调整。
2、编码层
Encoder blocks:编码层,将嵌入层的输出进行编码;PE:做位置编码;LayerNorm:残差连接并层归一化;FirstOctaveConv:MidOctaveConvs:LastOctaveConv:以上三个公式作用为接多层的Octave卷积层;LayerNorm:残差连接并层归一化;MultilleadSelfAttention:一个多头注意力层;FeedforwardLayer:一个前馈层;
3、交互层
上层得到的双向注意力进行拼接后转置,共使用了4个编码块组,将4个编码块组进行串接,将4个编码块组的输出临时保存以供输出层调用。EncoderBlocks:四个编码块进行输出。
4、输出层
Softmax:利用本函数求解起始点和结束点的概率分布。
5、损失函数的作用:度量模型的输出的预测值,与实际值之间的差距的一种方式。
6、优化算法:优化网络参数,使矩估计更加稳定。
以上所述实施例仅表示本发明的实施方式,其描述较为具体和详细,但并不能理解为对本发明范围的限制。应当指出的是,对于本领域的技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明保护范围。
Claims (4)
1.一种基于深度学习的高并行性阅读理解的方法,其特征在于:包括数据预处理,嵌入层,编码层,交互层,输出层,其中,
数据预处理:在给定数据中,每个问题的答案对应给出了答案初始索引及答案全文,计算出结束索引,并结构化存储拆解的数据,构建深度学习框架PyTorch的Dataset类;关于始末标签,设定如下:
y1=POSs
y2=y1+Lt
其中POSs是数据集中的“answer_start”,该属性给出了答案在文章中的首字符位置,Lt是数据集中“text”的字符长度;在后续的处理中,该处的两个索引将被修改为以单词为索引量,任何一个标点符号也会被记为一个单词,在具体实现中,将对其分词,得到分词结果tokens,并将分词结果遍历后对y1,y2重新赋值;对于所有的文章,在将其分词后,均将长度填充至400,对于所有的问题,在将其分词后,均将长度填充至50,并在填充时生成遮罩矩阵备用,即有效部分值为1,填充部分值为0的等大小的二值矩阵;
嵌入层:本次设计选取了bert-as-service开源库作为的BERT编码器,bert-as-service是依据BERT的预训练模型而开发的库,可以在本地开启一个使用BERT预训练模型编码的服务,便捷地将文本的tokens进行编码;
其中tokens是一批篇章或者问题,经过BERT编码后得到的V便是一个二维矩阵,l为篇章或者问题的长度,每个单词在本次设计使用的预训练模型中将被编码为768维的向量,将篇章和问题依照上述方法分别编码并使用0向量填充,分别得到篇章嵌入矩阵和问题嵌入矩阵为加快模型的训练,使用批训练的方法,即将多个矩阵进行拼接,每个张量的第一维为批大小,本次设计将批大小设置为32,即之后将它们转置后分别使用一维卷积变换至使用一维卷积进行线性变换;
在该线性变换中,改变的是数据的第一维,输入通道为5,该一维卷积共有一个卷积核,故输出单通道,即第一个维度是1;在嵌入层使用一维卷积进行线性变换后,通过两层的Highway Network;
对Highway Network中的两个线性层而言,均使用前面的一维卷积来实现,并保证一维卷积的输入和输出通道一致,这样就能保证Highway Network的输入和输出为同一纬度;至此,整个嵌入层的基础网络均已实现,对这些基础的网络进行"组装",便可得到整个嵌入层的网络结构
编码层:在该层中,使用了一个编码块,在使用代码实现编码块前,首先使用代码实现了位置编码、Octave卷积、多头自注意力;对于层标准化代码使用了PyTorch的官方实现,位置编码直接根据公式进行计算;由于Octave卷积在整个模型中运用较多,为了降低本模型的参数量,使用了一维的深度可分离卷积来实现一维的Octave卷积,并将Octave卷积代码进行模块化处理,使首末的Octave卷积均可使用该处代码进行定义,由于在本次设计的编码块中,多个Octave卷积是直接相连的,在层数过深后极易产生梯度消失的问题,参考了Highway Network和LSTM对Octave卷积加以改造,并通过relu这一激活函数,以实现其内部的残差连接;
以conv为起始的变量均为一维深度可分离卷积,且卷积操作后数据的维度不变,故该种实现方式在此处是可行的,对于位于首末的octave卷积,默认首层输入和末层输出均只有高频;
在完成多个卷积运算后,输出经过层标准化操作后输入至多头自注意力模型,先将X线性变换为Memory和Query并转置,之后再将最后一个维度拆分,并计算对应位置的注意力后与Value相乘;
将Key,Value和缩放后的Query的最后一个维度对半拆分,并将对应的Key和Query做点积得到注意力权重,在做softmax后与Value相乘,再将得到的Y拼接后转置,得到该层的输出结果;在本次设计中,由于GPU内存限制,将多头自注意模型的头数设为4;随后进行编码块模块代码的组织,由于用到了多层的Octave卷积,但就模型而言,希望输入和输出只有一个频段,所以单独定义了首末层的Octave卷积,保证其首末层仅适用高频分别输入和输出;此外,利用了PyTorch的nn.ModuleList()函数来循环定义位于中间的Octave卷积;
S=S1+S2+S3
其中,W1,W2,W3均为可学习的权重矩阵,expand函数是将对应非-1的维度通过复制的方式扩增至指定的大小,由以上算法,将O(n2)时间复杂度的算法通过空间换时间和矩阵运算的策略,成功降至O(1)时间复杂度,在GPU高并行运算硬件的支持下,大大减少了该层的计算时间耗费;
在得到S后,分别对其进行行列两个方向的softmax计算,并计算出A、B,并根据A、B计算出本层输出;
将相似性矩阵S在行、列两个方向分别计算softmax后得到S1和S2,之后将S1与Q做点积得到A,同时S1与转置后的S2做点积后再与C做点积,得到B,之后将C,A,C与A的积,C与B的积四个向量拼接得到Y;之后将Y转置后赋值给X,X通过一个一维卷积进行线性变换后经过4个串联的编码块组,分别得到M1,M2,M3和M4,且编码块组之间参数共享,其中的每个编码块参数不共享;在编写编码块的代码时,复用了编码层的代码,由于在本次设计中,每个编码块组之间是权值共享的,故仅需要在模型中定义一个交互层的编码块组即可,初步设定每个编码块组有7个编码块,每个编码块Octave卷积层数为4;
输出层:在输出层中,使用PyTorch内置的cat函数将M1和M3拼接得到p1,M2和M4拼接得到p2,由于框架自带的交叉熵算法会计算softmax,所以在此并不使用softmax函数计算出概率分布,而是用直接将模型的输出作为最终输出,但是在输出前,为了防止填充位置的值过大,导致后续计算概率分布时概率应为0的填充位置具有较大概率,将对填充位置的值加上一个较大的负值,称之为遮罩函数,这样在之后算softmax的时候,其概率逼近于0;
损失计算及参数优化:在输出层得到P1和P2之后,需要将其与标准答案的y1,y2计算预测的损失,将它们进行softmax运算后取对数,得到p1和p2,再分别其对它们与目标索引求负对数似然损失,即得出两个P1和P2对索引的交叉熵损失,在使用PyTorch框架时,可直接使用其内置的交叉熵函数,最后将两个交叉熵损失的和作为本次的计算偏差的损失。
2.根据权利要求1所述的一种基于深度学习的高并行性阅读理解的方法,其特征在于:所述一维卷积进行线性变换中,由于在本次设计中,需要多次使用一维卷积进行维度变换,故此处使用了模块化的代码结构,此外可自定义该模型是否有激活函数,同时为了加速模型的训练并提高表现,使用了PyTorch内置的参数初始化。
4.根据权利要求1所述的一种基于深度学习的高并行性阅读理解的方法,其特征在于:所述输出层中,在计算loss之前,已经定义了一个Adamax优化器;考虑到,在训练初期损失较大,可以使用较大的学习率进行参数更新,但到后期,模型参数已经学习至局部最优点附近,此时如果还是使用较大的学习率进行参数更新的话,将会不停地在局部最优点附近震荡,所以,使用了一个函数使学习率随着训练的次数的增长逐步下降。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910773587.2A CN112417089B (zh) | 2019-08-21 | 2019-08-21 | 一种基于深度学习的高并行性阅读理解的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910773587.2A CN112417089B (zh) | 2019-08-21 | 2019-08-21 | 一种基于深度学习的高并行性阅读理解的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112417089A CN112417089A (zh) | 2021-02-26 |
CN112417089B true CN112417089B (zh) | 2022-12-09 |
Family
ID=74779742
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910773587.2A Active CN112417089B (zh) | 2019-08-21 | 2019-08-21 | 一种基于深度学习的高并行性阅读理解的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112417089B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113627152B (zh) * | 2021-07-16 | 2023-05-16 | 中国科学院软件研究所 | 一种基于自监督学习的无监督机器阅读理解训练方法 |
CN115080715B (zh) * | 2022-05-30 | 2023-05-30 | 重庆理工大学 | 基于残差结构和双向融合注意力的跨度提取阅读理解方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107766506A (zh) * | 2017-10-20 | 2018-03-06 | 哈尔滨工业大学 | 一种基于层次化注意力机制的多轮对话模型构建方法 |
CN109492227A (zh) * | 2018-11-16 | 2019-03-19 | 大连理工大学 | 一种基于多头注意力机制和动态迭代的机器阅读理解方法 |
CN109657246A (zh) * | 2018-12-19 | 2019-04-19 | 中山大学 | 一种基于深度学习的抽取式机器阅读理解模型的建立方法 |
CN109685212A (zh) * | 2018-12-14 | 2019-04-26 | 安徽省泰岳祥升软件有限公司 | 一种机器阅读理解模型的分阶段训练方法及装置 |
CN109947912A (zh) * | 2019-01-25 | 2019-06-28 | 四川大学 | 一种基于段落内部推理和联合问题答案匹配的模型方法 |
-
2019
- 2019-08-21 CN CN201910773587.2A patent/CN112417089B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107766506A (zh) * | 2017-10-20 | 2018-03-06 | 哈尔滨工业大学 | 一种基于层次化注意力机制的多轮对话模型构建方法 |
CN109492227A (zh) * | 2018-11-16 | 2019-03-19 | 大连理工大学 | 一种基于多头注意力机制和动态迭代的机器阅读理解方法 |
CN109685212A (zh) * | 2018-12-14 | 2019-04-26 | 安徽省泰岳祥升软件有限公司 | 一种机器阅读理解模型的分阶段训练方法及装置 |
CN109657246A (zh) * | 2018-12-19 | 2019-04-19 | 中山大学 | 一种基于深度学习的抽取式机器阅读理解模型的建立方法 |
CN109947912A (zh) * | 2019-01-25 | 2019-06-28 | 四川大学 | 一种基于段落内部推理和联合问题答案匹配的模型方法 |
Non-Patent Citations (3)
Title |
---|
"Tensor Comprehensions: Framework-Agnostic High-Performance Machine Learning Abstractions";Nicolas Vasilache et al.;《Facebook AI Research Technical Report》;20180213;正文2-35页 * |
"基于注意力机制的机器阅读理解技术研究";刘伟杰;《中国优秀硕士学位论文全文数据库 信息科技辑》;20190815(第08期);第26-53页 * |
"基于深度层次特征的阅读理解模型";霍欢等;《中文信息学报》;20181231;第32卷(第12期);第133-140页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112417089A (zh) | 2021-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110209801B (zh) | 一种基于自注意力网络的文本摘要自动生成方法 | |
CN112559702B (zh) | 基于Transformer的土木建筑信息领域自然语言问题生成方法 | |
CN112000772B (zh) | 面向智能问答基于语义特征立方体的句子对语义匹配方法 | |
CN113254616B (zh) | 面向智能问答系统的句向量生成方法及系统 | |
CN112417089B (zh) | 一种基于深度学习的高并行性阅读理解的方法 | |
CN112560456B (zh) | 一种基于改进神经网络的生成式摘要生成方法和系统 | |
CN112000770A (zh) | 面向智能问答的基于语义特征图的句子对语义匹配方法 | |
CN113312919A (zh) | 一种知识图谱的文本生成方法及装置 | |
CN116662502A (zh) | 基于检索增强的金融问答文本生成方法、设备及存储介质 | |
CN112612881A (zh) | 基于Transformer的中文智能对话方法 | |
CN115358289A (zh) | 一种融合多类型知识库和推理技术的文本生成算法 | |
CN114896371A (zh) | 一种自然语言处理模型的训练方法和装置 | |
CN113535902A (zh) | 一种融合对抗训练的生成式对话系统 | |
CN112287641B (zh) | 一种同义句生成方法、系统、终端及存储介质 | |
CN113113000B (zh) | 基于自适应掩膜和分组线性变换的轻量级语音识别方法 | |
CN113051938B (zh) | 一种基于Transformer模型的机器翻译模型优化方法 | |
CN115422329A (zh) | 一种基于知识驱动的多路筛选融合对话生成方法 | |
CN114611510A (zh) | 基于生成模型辅助机器阅读理解的实现方法及装置 | |
CN114880527A (zh) | 一种基于多预测任务的多模态知识图谱表示方法 | |
CN114972907A (zh) | 基于强化学习和对比学习的图像语义理解及文本生成 | |
CN110390010A (zh) | 一种自动文本摘要方法 | |
Chen et al. | Eliciting knowledge from language models with automatically generated continuous prompts | |
CN117271761A (zh) | 低资源场景下基于稳健自学习策略的跨语言抽象摘要方法 | |
CN117594115A (zh) | 基于知识图谱和消息传递神经网络的药物重定位方法及系统 | |
CN115270813A (zh) | 一种基于伪token空间映射的文本表征方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |