差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
home:students:2022undergraduate_thesis:xrwang [2022/05/17 16:56]
18307110337 [数学应用题自动求解器]
home:students:2022undergraduate_thesis:xrwang [2022/05/17 17:08]
18307110337
行 31: 行 31:
 其编码器部分由数个编码器模块构成,每个编码器模块都由多头自注意力层和前馈神经网络构成,并且通过加入残差联接来使得搭建更深的神经网络成为可能,此外,在层与层之间还加入了归一化层进行标准处理。 其编码器部分由数个编码器模块构成,每个编码器模块都由多头自注意力层和前馈神经网络构成,并且通过加入残差联接来使得搭建更深的神经网络成为可能,此外,在层与层之间还加入了归一化层进行标准处理。
 其解码器部分同样由数个解码器模块组成,每一个解码器模块由一层多头自注意力、一层交叉注意力和一层前馈神经网络组成。交叉注意力的特性是其$Q$矩阵来自于上一层解码器的输出矩阵,而$K$、$V$矩阵来自于编码器的对应深度模块,从而实现了跨越网络主体对输入进行查询提高了输出与输入的强关联性。与编码器模块类似,解码器模块在层与层之间同样加入了残差联接和归一化层。 其解码器部分同样由数个解码器模块组成,每一个解码器模块由一层多头自注意力、一层交叉注意力和一层前馈神经网络组成。交叉注意力的特性是其$Q$矩阵来自于上一层解码器的输出矩阵,而$K$、$V$矩阵来自于编码器的对应深度模块,从而实现了跨越网络主体对输入进行查询提高了输出与输入的强关联性。与编码器模块类似,解码器模块在层与层之间同样加入了残差联接和归一化层。
 +{{ :​home:​students:​2022undergraduate_thesis:​2022.05.01_10.13.38.png?​200 |}}
  
-![OverviewOfTransformer](pic/​2022.05.01_10.13.38.png) 
 ===== uniLM简介===== ===== uniLM简介=====
 UniLM(Unified Language Model),即统一预训练模型。UniLM是基于BERT提出的新型自然语言处理和生成架构,同BERT一样,也由数个Transformer编码器块构成,但是其相对初始的Tranformer编码器做了掩码方面的改进以适应不同的应用场景。其相对于BERT的最大不同在于UniLM不仅仅可以用于自然语言理解的任务,也可以完成自然语言生成的任务。 UniLM(Unified Language Model),即统一预训练模型。UniLM是基于BERT提出的新型自然语言处理和生成架构,同BERT一样,也由数个Transformer编码器块构成,但是其相对初始的Tranformer编码器做了掩码方面的改进以适应不同的应用场景。其相对于BERT的最大不同在于UniLM不仅仅可以用于自然语言理解的任务,也可以完成自然语言生成的任务。
行 49: 行 49:
 ===== 词嵌入简介===== ===== 词嵌入简介=====
 词嵌入指的是将自然语言中的单个词汇投射为一个多维向量,而该向量中包含了该词汇的语义信息。例如在完成词嵌入之后,词性的转换过程应当有着类似的向量,含义相似的词语应当在向量空间中具备着非常靠近的位置。如下图所示: 词嵌入指的是将自然语言中的单个词汇投射为一个多维向量,而该向量中包含了该词汇的语义信息。例如在完成词嵌入之后,词性的转换过程应当有着类似的向量,含义相似的词语应当在向量空间中具备着非常靠近的位置。如下图所示:
 +{{ :​home:​students:​2022undergraduate_thesis:​2022.05.01_08.12.44.png?​400 |}}
 +{{ :​home:​students:​2022undergraduate_thesis:​2022.05.01_08.19.02.png?​400 |}}
  
-![simword1](pic\2022.05.01_08.12.44.png)![simword2](pic\2022.05.01_08.19.02.png) 
  
 作为自然语言处理领域的基本方法,词嵌入方法多样,发展迅速。 作为自然语言处理领域的基本方法,词嵌入方法多样,发展迅速。
行 69: 行 70:
 ===== 前缀表达式===== ===== 前缀表达式=====
 前缀表达式是一种特殊的数学运算记录方法。我们通常所使用的中缀表达式中,运算符被放在两个操作数之间。而在前缀表达式中,我们将运算符写在前边,而将操作数写在运算符之后。下图给出了同样的数学运算在前缀表达式和中缀表达式中的不同书写方法。 前缀表达式是一种特殊的数学运算记录方法。我们通常所使用的中缀表达式中,运算符被放在两个操作数之间。而在前缀表达式中,我们将运算符写在前边,而将操作数写在运算符之后。下图给出了同样的数学运算在前缀表达式和中缀表达式中的不同书写方法。
 +{{ :​home:​students:​2022undergraduate_thesis:​2022.05.15_15.33.49.png?​400 |}}
  
-![](pic/​2022.05.15_15.33.49.png) 
  
 前缀表达式具有不需要明确运算符优先级即可按指定顺序完成定义明确的运算的特性,这赋予了前缀表达式两大优势。一是其不包括括号,所以缩短了表达式的长度同时又减少了表达式中可能出现的符号种类,这对于提高生成任务的准确率而言非常重要;另一方面,其生成的表达式只需要通过简单的出栈入栈即可完成运算,而不涉及运算符优先级的判别,故而对于在对表达式字符串进行计算以获得结果的环节中也具备优势。 前缀表达式具有不需要明确运算符优先级即可按指定顺序完成定义明确的运算的特性,这赋予了前缀表达式两大优势。一是其不包括括号,所以缩短了表达式的长度同时又减少了表达式中可能出现的符号种类,这对于提高生成任务的准确率而言非常重要;另一方面,其生成的表达式只需要通过简单的出栈入栈即可完成运算,而不涉及运算符优先级的判别,故而对于在对表达式字符串进行计算以获得结果的环节中也具备优势。
  
 故而在我们的生成系统内部实际选择了使用前缀表达式,达到提高生成准确度的目的。为了实现与人类的交互,系统在对外接口时需要与易于人类理解的中缀表达式进行转换,故而我们在预处理时即将数据集的中缀表达式转换为前缀表达式方便机器学习,而在机器生成前缀形式的答案表达式之后又将其转换为中缀表达式输出,以让不具备专业知识的使用者理解。 故而在我们的生成系统内部实际选择了使用前缀表达式,达到提高生成准确度的目的。为了实现与人类的交互,系统在对外接口时需要与易于人类理解的中缀表达式进行转换,故而我们在预处理时即将数据集的中缀表达式转换为前缀表达式方便机器学习,而在机器生成前缀形式的答案表达式之后又将其转换为中缀表达式输出,以让不具备专业知识的使用者理解。
 +{{ :​home:​students:​2022undergraduate_thesis:​2022.05.15_16.09.29.png?​400 |}}
  
-![](pic/​2022.05.15_16.09.29.png) 
  
 ===== 数据增强===== ===== 数据增强=====
行 105: 行 106:
 由于我们的数学应用题求解任务要根据问题生成答案,是序列到序列任务,即需要理解又需要生成,同时又需要在大量的自然语言预训练基础上完成,所以选择了uniLM作为基本框架。 由于我们的数学应用题求解任务要根据问题生成答案,是序列到序列任务,即需要理解又需要生成,同时又需要在大量的自然语言预训练基础上完成,所以选择了uniLM作为基本框架。
 在常规的BERT模型中,注意力可以被分散到序列中的任意一处。作为一种seq2seq任务,我们具体的问题情境并不满足这一条件。第一,我们需要根据题干(序列Q)来生成表达式(序列A),在这一过程中信息应当是单向地由题干流向表达式;第二,在生成的答案表达式某一符号的过程中,可以知晓已经生成的表达式的信息,而无法获得未来将要生成的符号的信息。以上两点要求我们修改注意力可以散布到每一处这一特性,而这可以通过修改注意力机制中权重的生成方式来实现。我们将不可能的信息传递方向对应的注意力的权重加上一个绝对值极大的负数,这样一来,在通过了softmax层后,该注意力的权重将趋近于0,从而实现了屏蔽不可能方向上的信息流动。 在常规的BERT模型中,注意力可以被分散到序列中的任意一处。作为一种seq2seq任务,我们具体的问题情境并不满足这一条件。第一,我们需要根据题干(序列Q)来生成表达式(序列A),在这一过程中信息应当是单向地由题干流向表达式;第二,在生成的答案表达式某一符号的过程中,可以知晓已经生成的表达式的信息,而无法获得未来将要生成的符号的信息。以上两点要求我们修改注意力可以散布到每一处这一特性,而这可以通过修改注意力机制中权重的生成方式来实现。我们将不可能的信息传递方向对应的注意力的权重加上一个绝对值极大的负数,这样一来,在通过了softmax层后,该注意力的权重将趋近于0,从而实现了屏蔽不可能方向上的信息流动。
 +{{ :​home:​students:​2022undergraduate_thesis:​2022.05.01_03.11.52.png?​400 |}}
  
-![matrix01](pic\2022.05.01_03.11.52.png) 
  
 具体到我们的问题情境中,我们将会把从答案到题干的信息流屏蔽,并且把从答案中偏后符号到较前符号的信息流屏蔽,因此我们设计出如图所示的掩码矩阵,借助与uniLM架构整合到我们的框架中,实现对注意力分布区域的限制。 具体到我们的问题情境中,我们将会把从答案到题干的信息流屏蔽,并且把从答案中偏后符号到较前符号的信息流屏蔽,因此我们设计出如图所示的掩码矩阵,借助与uniLM架构整合到我们的框架中,实现对注意力分布区域的限制。
行 113: 行 114:
 为了使得我们检索到的相似题信息能够汇入到待求解题目之中,我们需要对从上一步得到的各token向量进行进一步的处理。此环节中我们继续使用类似于?中使用的UniLM框架和掩码矩阵,但是不再将相似题和待求解题目分开处理,而是将二者放在一起以实现信息的交汇。 为了使得我们检索到的相似题信息能够汇入到待求解题目之中,我们需要对从上一步得到的各token向量进行进一步的处理。此环节中我们继续使用类似于?中使用的UniLM框架和掩码矩阵,但是不再将相似题和待求解题目分开处理,而是将二者放在一起以实现信息的交汇。
 相应地,我们需要重新设计掩码矩阵。如图所示,关于信息流向,我们有如下如下几条原则: 相应地,我们需要重新设计掩码矩阵。如图所示,关于信息流向,我们有如下如下几条原则:
 +{{ :​home:​students:​2022undergraduate_thesis:​2022.05.15_22.45.26.png?​400 |}}
  
-![](pic/​2022.05.15_22.45.26.png) 
  
 1. 信息由相似题单向流动到待求解题目。我们的目标是借鉴相似题的求解方法并运用到待求解题目之中,待求解题目中的内容不应该反向流动到待相似题之中 1. 信息由相似题单向流动到待求解题目。我们的目标是借鉴相似题的求解方法并运用到待求解题目之中,待求解题目中的内容不应该反向流动到待相似题之中
行 122: 行 123:
  
 根据以上原则,我们最终构建出如图所示的掩码矩阵: 根据以上原则,我们最终构建出如图所示的掩码矩阵:
-![](pic/2022.05.15_22.59.04.png)+ 
 +{{ :​home:​students:​2022undergraduate_thesis:​2022.05.15_22.59.04.png?400 |}}
 在利用UniLM框架并且使用以上掩码矩阵之后,可以认为待解题答案对应的向量表示中已经包含了足够的关于答案的信息。 在利用UniLM框架并且使用以上掩码矩阵之后,可以认为待解题答案对应的向量表示中已经包含了足够的关于答案的信息。
  
行 133: 行 135:
 ==== 固定词表生成==== ==== 固定词表生成====
 如图所示,固定词表生成功能的基本实现元件是一层前馈神经网络,用于对符号的向量表示进行运算得到它成为某一特定符号的概率分布。其中可能性最大的一个符号将会成为系统预测的下一个符号。 如图所示,固定词表生成功能的基本实现元件是一层前馈神经网络,用于对符号的向量表示进行运算得到它成为某一特定符号的概率分布。其中可能性最大的一个符号将会成为系统预测的下一个符号。
 +{{ :​home:​students:​2022undergraduate_thesis:​2022.05.15_21.29.31.png?​400 |}}
  
-![](pic/​2022.05.15_21.29.31.png) 
  
 固定词表机制生成的主要内容包括四则运算符号和一些常识性数字(例如题干中给出“两个”时答案中可能会出现“2”)的生成。 固定词表机制生成的主要内容包括四则运算符号和一些常识性数字(例如题干中给出“两个”时答案中可能会出现“2”)的生成。
行 178: 行 180:
 基于SBERT和Word2Vec的原理进行分析,我们认为SBERT结合语境计算词向量的方法可以更精确地反映词语的语义,比起Word2Vec固定词向量的方式取得了更契合问题特性的词向量,故而在后续的句向量相似度计算时能够实现更高的精确度,为待求解题匹配了更恰当的相似题,从而最终将优势传导到了测试时所展现的准确度提升上。 基于SBERT和Word2Vec的原理进行分析,我们认为SBERT结合语境计算词向量的方法可以更精确地反映词语的语义,比起Word2Vec固定词向量的方式取得了更契合问题特性的词向量,故而在后续的句向量相似度计算时能够实现更高的精确度,为待求解题匹配了更恰当的相似题,从而最终将优势传导到了测试时所展现的准确度提升上。
  
-![](pic/​01_4.png) 
  
 +{{ :​home:​students:​2022undergraduate_thesis:​01_4.png?​400 |}}
  
 值得注意的是,我们按照以6字符为界限根据问题答案长度对问题进行二分类,并分别统计了两种方法收敛后的分类准确率如表格。可以发现SBERT所取得的模型在处理难题时取得了约2%的提升,而在处理相对较容易的问题时面对Word2Vec并不具备优势。SBERT模型相对于Word2Vec模型在综合准确率上的提升也完全来自于其处理相对较难的题目的能力有所提升。 值得注意的是,我们按照以6字符为界限根据问题答案长度对问题进行二分类,并分别统计了两种方法收敛后的分类准确率如表格。可以发现SBERT所取得的模型在处理难题时取得了约2%的提升,而在处理相对较容易的问题时面对Word2Vec并不具备优势。SBERT模型相对于Word2Vec模型在综合准确率上的提升也完全来自于其处理相对较难的题目的能力有所提升。
  
-![](pic/​2022.05.17_12.06.17.png) 
  
 +{{ :​home:​students:​2022undergraduate_thesis:​2022.05.17_12.06.17.png?​400 |}}
 表达式较长的题目意味着该题目内部蕴含着更为复杂的逻辑关系,所以其题干文本的表达也会相对复杂。而在处理相对复杂、词语之间关系更为重要的问题时,重视语境的SBERT能够更好地捕捉到词语之间的联系,使得文本之间的关系信息在生成句向量发挥作用。因此越是复杂的问题,使用SBERT作为相似题搜索器时相对Word2Vec的优势就越明显。 表达式较长的题目意味着该题目内部蕴含着更为复杂的逻辑关系,所以其题干文本的表达也会相对复杂。而在处理相对复杂、词语之间关系更为重要的问题时,重视语境的SBERT能够更好地捕捉到词语之间的联系,使得文本之间的关系信息在生成句向量发挥作用。因此越是复杂的问题,使用SBERT作为相似题搜索器时相对Word2Vec的优势就越明显。
 ==== 数据增强/​数据不增强==== ==== 数据增强/​数据不增强====
行 191: 行 193:
 在进行是否进行数据增广的效果对比时,我们在后续环节选择了表现相对较好的SBERT,统一在该机制下进行相似题检索和推理生成。 在进行是否进行数据增广的效果对比时,我们在后续环节选择了表现相对较好的SBERT,统一在该机制下进行相似题检索和推理生成。
  
-![](pic/​02.png) 
  
 +{{ :​home:​students:​2022undergraduate_thesis:​02.png?​400 |}}
 如图片所示,我们可以发现进行数据增广后的训练效果产生了两点重要的变化:一是其收敛速度显著加快,数据增广后的数据集在$Batch = 40$时间就能达到收敛,而如果不进行数据增广,则需要在约$Batch = 65$才能达到收敛。而在达到收敛之前($Batch \leq 30$),​比较同一训练轮次下的测试结果,可以发现数据增广后的测试效果显著高于不进行数据增广的同期增广效果。在$Batch = 25$时两者的准确率差值极大,达到约1.4%。 如图片所示,我们可以发现进行数据增广后的训练效果产生了两点重要的变化:一是其收敛速度显著加快,数据增广后的数据集在$Batch = 40$时间就能达到收敛,而如果不进行数据增广,则需要在约$Batch = 65$才能达到收敛。而在达到收敛之前($Batch \leq 30$),​比较同一训练轮次下的测试结果,可以发现数据增广后的测试效果显著高于不进行数据增广的同期增广效果。在$Batch = 25$时两者的准确率差值极大,达到约1.4%。
  
行 199: 行 201:
 结合我们所采取的数据增广方式来分析,数据增广后模型学习最终学习能力反而下降的原因可能是数据的平衡性下降问题所导致的。由于我们对原始数据集进行同一实体替换的过程中,部分题目产生了较多的子题目而部分题目则产生较少甚至没有产生。这一定程度上导致了训练题库类型与测试题库类型的不平衡。 结合我们所采取的数据增广方式来分析,数据增广后模型学习最终学习能力反而下降的原因可能是数据的平衡性下降问题所导致的。由于我们对原始数据集进行同一实体替换的过程中,部分题目产生了较多的子题目而部分题目则产生较少甚至没有产生。这一定程度上导致了训练题库类型与测试题库类型的不平衡。
  
-![](pic/​2022.05.17_14.49.45.png) 
  
 +{{ :​home:​students:​2022undergraduate_thesis:​2022.05.17_14.49.45.png?​400 |}}
 如图所示,以A,B两种类型的题目为例,A题目没有获得增广,而B题目获得了广泛的增广。此时数据集更偏向B类型的题目而测试集并没有发生变化。我们训练所获模型也会更特化于求解B类型题目,其求解B类型题目的能力将会获得优化,但是由于模型训练时以更多地答对训练集中的题目中的题目为目标,这会导致正确解答A类题目能力在训练目标中的权重下降,也就导致了模型解答A类题目的能力降低。最终在数据平衡性较好的测试集上测试解题能力时,解答A类题目(即那些没有被增广的题目类型)的能力偏弱可能会降低最终的综合准确率。 如图所示,以A,B两种类型的题目为例,A题目没有获得增广,而B题目获得了广泛的增广。此时数据集更偏向B类型的题目而测试集并没有发生变化。我们训练所获模型也会更特化于求解B类型题目,其求解B类型题目的能力将会获得优化,但是由于模型训练时以更多地答对训练集中的题目中的题目为目标,这会导致正确解答A类题目能力在训练目标中的权重下降,也就导致了模型解答A类题目的能力降低。最终在数据平衡性较好的测试集上测试解题能力时,解答A类题目(即那些没有被增广的题目类型)的能力偏弱可能会降低最终的综合准确率。
  
 ==== 最终结果==== ==== 最终结果====
-![](pic/2022.05.17_05.01.20.png)+ 
 +{{ :​home:​students:​2022undergraduate_thesis:​2022.05.17_05.01.20.png?400 |}}
 进行数据增广的做法可以取得更快的收敛速度但是效果上限不佳,所以最终我们选取了以SBERT作为相似题搜索器,不进行数据增广的模型作为效果最佳的数学应用题自动求解器。其处理不同难度的题目的准确率如图所示,最终能达到81.99%的综合准确率。 进行数据增广的做法可以取得更快的收敛速度但是效果上限不佳,所以最终我们选取了以SBERT作为相似题搜索器,不进行数据增广的模型作为效果最佳的数学应用题自动求解器。其处理不同难度的题目的准确率如图所示,最终能达到81.99%的综合准确率。
 ====== 结论与展望====== ====== 结论与展望======
  • home/students/2022undergraduate_thesis/xrwang.txt
  • 最后更改: 2022/05/17 17:08
  • 由 18307110337