欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 国际 > NLP系列【自然语言处理的深度学习模型综述】

NLP系列【自然语言处理的深度学习模型综述】

2025/4/26 5:36:34 来源:https://blog.csdn.net/qq_51580006/article/details/147456916  浏览:    关键词:NLP系列【自然语言处理的深度学习模型综述】

自然语言处理的深度学习模型

  • 摘要
  • 传统自然语言处理模型(略 不作重点)
  • 神经网络自然语言处理模型
    • 经典神经网络
    • CNN网络模型
    • Word2Vec模型
    • RNN模型
    • GPT网络模型
    • BERT网络模型
  • BERT变体模型
    • 提升模型性能
    • 模型压缩

摘要

在自然语言处理任务方面,依据语料的长度分为词汇句子篇章三层面,每一层面又有若干具体任务。

  • 在词汇层面,有命名实体识别、中文分词、词性标注、关系抽取等任务;
  • 在句子层面,有智能问答、机器翻译、文本匹配和文本纠错等任务;
  • 在篇章层面,有文本分类、文本生成、机器阅读、信息过滤与信息推荐等任务。
    本文从传统自然语言处理模型神经网络自然语言处理模型两方面着手,分别介绍相应模型及模型特点、优缺点等相关特性;之后,对目前流行的BERT模型变体从提升模型性能和压缩模型大小两个方面进行介绍,并对每个模型从特点、优缺点及性能方面进行总结归纳;再者,本文阐述目前自然语言处理面临的挑战与解决办法;最后,对本文工作进行总结及展望。

传统自然语言处理模型(略 不作重点)

传统自然语言处理模型,从形式上可以分为基于规则和基于统计两种子类型。
在这里插入图片描述

神经网络自然语言处理模型

目前来说,神经网络模型分为经典神经网络模型、CNN网络模型、Word2Vec模型、RNN网络模型、GPT网络模型、BERT网络模型。

经典神经网络

神经网络语言模型(Nerual Network Language Model,NNLM)
NNLM由Bengio于2003年提出,该模型由四层组成,分别为输入层、嵌入层、隐藏层和输出层。NNLM接受的输入是一个长度为N的词序列,输出是下一个词的类别。模型的训练过程为:首先接受词序列的index,然后将index进行嵌入处理后送入网络进行训练,其中以tanh作为激活函数,最后送入带Softmax的输出层中进行概率输出,模型如下图所示。
在这里插入图片描述
NNLM作为第一个具有重大影响力的神经网络模型,泛化能力强于传统自然语言处理模型。但是由于当时软硬件条件限制,相对于其他传统自然语言处理模型,NNLM具有参数量巨大、训练速度慢、输入序列要求为定长和不能利用完整历史信息等缺点。
多任务学习(Multi-Task Learning,MTL)
多任务学习基于共享表示,是将多个相关性任务放在一起学习的机器学习方法。相对于单任务模型,多任务学习往往可以取得更好的效果,模型如下图所示。
在这里插入图片描述
多任务学习涉及多个相关任务并行学习,梯度同时反向传播。多个任务通过底层的共享表示来互相帮助学习,提升泛化效果。从共享形式上来说,多任务学习包括硬共享模型、软共享模式、共享-私有模式、函数共享模式、多级共享模式和辅助任务模式等。
多任务学习具有隐式的数据增强功能(一个任务的语料相对较少时,实现多个事物时语料量就得到了扩充)、更好地表示学习、能在一定程度上防止过拟合等优点。但是,多任务学习基于任务的宽度扩展,在深度学习的通常情况下,在相同代价的条件下,越深的模型比越宽的模型效果好。因此,若要达到较高性能,多任务学习比单任务学习所需要的耗费更高。
小结
经典神经网络由于模型层数较浅,导致整体性能不高,在计算能力和条件不发达的当时,并未引起研究人员太大的关注。但是,经典神经网络模型是深度神经网络模型的基石,随着软硬件的大力发展,越来越多的研究者转向深度神经网络模型。

CNN网络模型

卷积神经网络(Convolutional Neural Network,CNN)是一种建立在经典神经网络基础上的深度神经网络。在结构上,通常由卷积层、池化层、激励函数和全连接层组成。下图为CNN的结构。
在这里插入图片描述
Kim利用CNN模型进行文本分类任务,在该模型中,句子表示采用预训练好的词向量矩阵,这一矩阵作为卷积神经网络的输入层,通过标记好的语料训练出神经网络模型从而达到预测语料类别的效果。该模型在7种语料库上进行训练,弱化了各个文本语料之间的联系,为文本分类的泛化提供有利的前景。但是不同的语料有不同粒度的特征提取尺度,而该方法统一了特征提取尺度,会存在特征丢失现象。
Wang等人对CNN网络进行了一定的改进,主要改进措施为将各层进行密集连接以及多尺度的特征提取。通过密集连接,模型能够从可变的较小n-gram特征灵活生成较大的n-gram特征;通过关注多尺度特征,模型可以从多尺度特征中自适应地选择任务友好且有效地特征进行分类。
CNN的特征提取能力较强,用来提取图像等非序列性特征信息特别有效,但是该网络模型不擅长处理序列问题,若采用感受野叠加的方式进行自然语言处理,系统开销会呈指数级增大

Word2Vec模型

Word2Vec是Google于2013年开源的词嵌入(Word Embedding)模型。Embedding本质是用低维向量表示文本语料,距离相近的向量对应的语料有相似的含义。Word2Vec主要包含两个模型:连续词袋模型(Continuous Bag of Words,CBOW)和跳字模型(Skip-gram)。
连续词袋模型CBOW根据输入的上下文语料预测当前单词。模型输入为One-hot码;隐藏层为线性单元;输出层维度与输入层维度相同并在最后使用Softmax回归,模型如下图所示。
在这里插入图片描述
CBOW模型具体处理流程如下:
(1)输入层:上下文单词的独热码(设定语料向量空间维度为 V V V,上下文单词个数为 C C C);
(2)所有独热码分别乘以输入权重矩阵 W W W得到新向量( W W W矩阵大小为 V × N V×N V×N N N N为超参数);
(3)所得的向量(因为是独热码处理,所以是向量)相加求平均作为隐藏层向量;
(4)隐藏层向量乘以输出权重矩阵 W ′ W^\prime W N × V N×V N×V矩阵);
(5)激活函数处理得到V-dim概率分布(因为是独热码,因而每一维都代表着一个单词);
(6)概率最大的index所指示的单词为预测出的目标词(Target word);
(7)将目标词与真实值的独热码值作比较,误差越小越好(从而根据误差更新权重矩阵)。经过若干轮迭代训练后,即可得到模型。
Skip-gram模型的输入是特定单词的词向量,输出是特定单词对应的上下文单词。模型结构如下图所示,具体训练过程与CBOW模型类似。
在这里插入图片描述
无论是CBOW模型还是Skip-gram模型,研究人员更愿意使用模型训练过程中的副产品 W W W权重矩阵。输入层的每个单词向量与矩阵 W W W相乘得到的向量即为想要的词向量(预训练词向量只是其中的副产物)。后续任务用训练模型所学习的参数(例如隐层的权重矩阵)处理新任务,而非用已训练好的模型。
为了提高学习效率,Ma等人采用Word2Vec处理大量文本语料。首先对大量文本采用Word2Vec计算单词之间的相似度;然后采用k-means算法对相似单词进行分组以降低特征维度;最后再采用LinearSVC(Linear Support Vector Classifier)与LIBLINEAR算法评估分类性能。Siencnik将Word2Vec用于命名实体识别(从非结构化文本中识别出特定类别的实体,并将其分类到预定义的类别中)中并得出了增加未标记语料量不会提高分类器性能的结论。
由于Word2Vec考虑上下文关系,与传统Embedding相比,嵌入的维度相对更少、速度更快、通用性更强,从而效果更好,可以应用在多种自然语言处理任务中。然而,由于单词与向量是一对一的关系,无法解决一词多义问题。同时,Word2Vec是一种静态的方法,相对于RNN等模型,无法针对特定任务做动态优化,并且它的相关上下文不能太长

RNN模型

循环神经网络(Recurrent Neural Network,RNN)是由Hopfield网络启发变种而来,Hopfield网络是1982年由Hopfield提出的网络结构,此类网络内部有反馈连接,能够处理信号中的时间依赖性。RNN用来处理序列建模问题,即给定一个长度为 T T T的输入序列 X = x 0 , x 1 , . . . , x t , . . . x T X={x_0,x_1,...,x_t,...x_T} X=x0,x1,...,xt,...xT,这里 x t x_t xt表示的是序列在 t t t时刻的输入特征向量,得到每个时刻的隐含特征 H = h 0 , h 1 , . . . , h t , . . . h T H={h_0,h_1,...,h_t,...h_T} H=h0,h1,...,ht,...hT,这些隐含特征用于后续网络层的特征输入。下图分别为RNN的总体模型及其展开式。
在这里插入图片描述
在这里插入图片描述
相较于CNN,RNN可以更好地处理时序相关问题,因此较适用于自然语言处理任务,但是该模型处理长时间问题时存在梯度弥散和梯度爆炸问题,这在一定程度上限制了RNN发展,为了解决这一问题,研究者们对RNN进行优化,提出了多种改进版本的RNN。
长短时记忆网络(Long Short-Term Memory,LSTM)在RNN基础上进行改进,主要解决长序列训练过程中的梯度消失和梯度爆炸问题。简单来说,相较于RNN,LSTM能够在更长的序列中有更好的表现。LSTM模型如下图所示。
在这里插入图片描述
具体而言,LSTM单元由输入门、遗忘门和输出门控制,通过若干LSTM单元依次连接即可构造一个序列神经网络,用于Seq2Seq形式的预测或序列数据的分类。
相对于RNN而言,LSTM在一定程度上解决了梯度弥散和梯度爆炸问题,但是对于一些量级较长的序列,LSTM仍存在一定的性能缺失,同时,该网络模型结构相对复杂且
不能并行运行

**门控循环单元(Gate Recurrent Unit,GRU)**是循环神经网络RNN的另外一种变体。GRU与LSTM一样,也是为了解决长期记忆和反向传播中的梯度消失等问题而提出来。GRU模型如下图所示。
在这里插入图片描述
GRU由更新门(Update Gate,控制前面记忆信息能够继续保留到当前时刻的数据量)与重置门(Reset Gate,控制要遗忘多少过去的信息)组成。
Cho等人使用了GRU作为RNN的基本单元,由于GRU相对于LSTM简单方便且性能相差不大,所以在一定程度上代替了LSTM。该方法不容易出现过拟合且该模型较早地将seq2seq应用在机器翻译领域,从而取得了不错的成绩。
Bansal等提出了一种深层递归神经网络GRU,将文本序列编码为潜在向量的方法,结合多任务学习,一定程度地解决数据稀疏问题,该论文结果表明推荐准确性明显上升的同时对冷启动问题也能得到一定程度的解决。
GRU与LSTM在大多数情况下性能大体相同,但是GRU相对于LSTM少一个门控单元,从数学的角度讲,就少了相应的矩阵乘法,在训练语料较大的情况下,GRU能节省一定训练时间。但是在语料较大的情况下,LSTM性能略微优于GRU且该模型仍不能并行处理语料。
**简单循环单元(Simple Recurrent Unit,SRU)**为了解决RNN训练速度较慢(包括LSTM和GRU)和网络结构的可解释性不足问题,Lei等人提出了一种简单的循环神经网络SRU,旨在提供简单快速并更具解释性的循环神经网络。SRU模型如下图所示。
在这里插入图片描述
与LSTM和GRU相似,通过若干叠加即可进行神经网络学习。张文等人采用SRU代替GRU,通过堆叠网络层数加深编码器和解码器的结构,从而提高了神经网络机器翻译模型的性能。他们在德语—英语和维语—汉语翻译任务上进行实验,结果表明,在神经网络机器翻译模型中使用SRU单元,可以有效地解决梯度消失带来的模型难以训练的问题,同时,通过加深模型能够显著地提升系统的翻译性能且保证训练速度基本不变,但是,所需要的系统开销会增大。
Peters等人提出ELMo模型(Embeddings from Language Models),该模型的本质思想是先用模型学习一个单词的嵌入表示(可以用Word2Vec或Glove等得到,原文中使用的是字符级别的残差CNN得到Token Embedding),此时无法区分多义词。在实际使用单词嵌入的时候,单词已经具备特定的上下文,这时可以根据上下文单词的语义调整单词的嵌入表示,这样经过调整后的单词嵌入更能表达上下文信息,自然就解决了多义词的问题。经过如上处理,ELMo在一定程度上解决了一词多义的问题,但是它仍存在一定不足:首先,在特征提取器方面,ELMo使用的是LSTM而非Transformer(在已有的研究中表明,Transformer的特征提取能力远强于LSTM);其次,ELMo采用的双向拼接融合特征方式比一体式融合方式要弱一些。
相对于LSTM和GRU,SRU去掉了前后时刻的依赖,从而可以将各个时刻之间的计算并行,进而获得更高的加速比。除此之外,基于以上结构的各种变体层出不穷。其中用得较多的有双向RNN(Bidirectional RNN,BRNN)、深度RNN(Deep RNN,DRNN)、深度双向RNN(Deep Bidirectional RNN,DBRNN)等(这里的RNN是泛指,即RNN及各种改进模型)。虽然RNN能在一定程度上为自然语言处理注入新的活力,但是相对于Transformer机制来说,存在明显不足,在现阶段,Transformer及变体机制在自然语言处理应用中占主流地位。

GPT网络模型

**GPT模型(Generative Pre-Training)**用多层多个单向Transformer完成预训练任务,模型将12层Transform叠加,训练过程较简单,将句子的 n n n个词向量嵌入加上位置编码后输入到Transformer中, n n n个输出分别预测该位置的下一个词。下图为GPT的单向Transformer结构和GPT的模型结构。
在这里插入图片描述
具体而言,GPT分无监督Pre-Training和有监督Fine-tuning两个训练阶段,第一阶段预训练后有一个下游拟合阶段。该模型与ELMo流程类似,主要不同在于:首先,使用Transformer而非RNN作为特征抽取器,Transformer作为特征提取器,能有效提取语料特征;其次,GPT采用的是单向语言模型作为目标任务。但是,该模型采用的单向语言模型,丢失较多信息。为此,基于GPT的改进措施是研究者们关注的一个热点。

1.预训练任务通常是在大规模无标注数据集上通过自监督学习方式来学习与任务无关的通用知识,而微调任务则是在小规模标注数据集上通过监督学习方式来学习任务特定的知识。
2.提示学习(prompt learning)的核心思想在于利用LM在大量无标记数据上学习到的通用知识,通过特定任务的提示,帮助模型有效地表示和理解任务数据,从而将LM学习到的通用知识迁移到具体的下游任务中。这一过程减少模型对新任务数据的依赖,提高了LM在新任务上的泛化能力和适应性。

GPT-2网络模型依然沿用GPT单向Transformer的模式,在GPT模型上做了相应改进。首先,不再针对不同层分别进行微调,而是不定义这个模型做什么,模型根据下游任务自动识别出需要什么任务;其次,增加语料和网络的复杂度;再者,将每层的正则化(Layer Normalization)放到每个Sub-block之前,并在最后一个Self-attention之后再增加一个层正则化操作。相较于GPT模型,GPT-2提取信息能力更强,尤其是在文本生成方面性能优越。但是,该模型的缺点与GPT一样,采用单向的语言模型会丢失部分关键信息。
GPT-3网络模型是目前在通用知识领域性能最好的模型,核心聚焦于更通用的NLP模型,主要解决对领域内标签数据的过分依赖和对领域数据分布的过拟合问题。依旧沿用了单向语言模型训练方式,但是模型的大小增加到1750亿的参数量以及用45TB的语料进行相关训练。在通用NLP领域中,GPT-3的性能是目前最高的模型之一。但是,其在一些经济政治类问题上表现得不太理想。该模型由于参数量过于巨大,目前大部分学者只能遥望一二,离真正进入实用阶段还有一定距离。
Gao等受GPT-3模型的启发,使用较小的模型并采用少量语料来微调语言模型的权重,该方法相对于普通微调,性能最多可以提升30%。
GPT类模型尤其擅长于文本生成类任务且在通用类任务上也取得了不错的效果。 但是,GPT系列模型越来越大,不便于模型投入实际生产生活,同时,由于预训练语料参差不齐,在一些涉及道德、法律、伦理常识方面存在歧视问题。

BERT网络模型

**BERT网络模型(Bidirectional Encoder Representation from Transformers)**采用与GPT完全相同的两阶段模型,首先是模型预训练,即用大量的无标签语料对模型进行初步训练,得到一个半成品模型;其次是使用Fine-Tuning模式(迁移学习)解决下游任务。与GPT最主要的不同在于预训练阶段采用了类似ELMo的双向语言模型和Mask技术,下图为BERT模型。
在这里插入图片描述
Su等人提出了通用的视觉-语言预训练模型VL-BERT(Visual-Linguistic BERT),该模型采用Transformer作为主干网络,同时将其扩展为包含视觉与语言输入的多模态形式。该模型适合于绝大多数视觉-语言后续任务。
BERT采用双向Transformer技术,能较准确地训练词向量。但是,BERT采用的NSP机制(Next Sentence Prediction)会导致结果出现主题预测,采用随机Mask部分单词而不是连续的词组,这些都会导致BERT的效果出现折扣;同时,BERT相对于其他模型来说,参数量较大,难以部署在性能受限的边缘设备上。

BERT变体模型

基于BERT以上缺点,出现了对BERT改进的两大方向:
(1)尽可能提升BERT的性能;
(2)保持模型性能不受大的影响前提下,缩小BERT模型的规模。

提升模型性能

大体上可以分为多任务改进、多模态改进和预训练改进这三种方式。

  • 对于多任务改进,当监督语料过少时,BERT下游任务性能提升有限且性能稳定性较差。
  • 多模态改进是将BERT与其他模态进行结合用以提升模型性能。
  • 预训练任务改进主要针对BERT上游任务阶段进行改进,使其更好地与下游任务衔接,该方向是近年BERT性能提升的一个主流方向。预训练任务改进从本质上改变了模型的结构从而获得更高的性能;但是,由于BERT模型骨架参数量庞大,从头训练需要强大的硬件支持,这在一般的机构是很难实现的。
    在这里插入图片描述

模型压缩

由于BERT模型存在参数量巨大,难以部署在手机、日常家用电脑等计算资源受限设备上。部分学者在追求性能损失不大的基础上降低模型的复杂度。在该方向上,目前有模型剪枝、模型量化、知识蒸馏、参数共享与低秩分解等方法。

  • 模型剪枝是从模型中删除不太重要的一部分权重从而产生稀疏的矩阵,进而达到模型轻量化的结果。
  • 量化是通过减少每个参数所需要的比特数来压缩原始模型,可以显著降低内存。量化可以减少模型尺寸、储存空间、内存消耗、加快推理速度等优点。但是,模型量化增加了操作复杂度,在量化时需要做一些特殊的处理,否则精度损失更严重;同时,模型量化会损失一定的精度,虽然在微调后可以减少精度损失,但推理精度确实下降。
  • 知识蒸馏的核心是将复杂网络迁移进简单网络中,这之中重要的部分是将其中的“精华”蒸馏出来,再用其指导精简的网络进行训练,从而实现模型压缩。蒸馏是模型压缩中最为流行的一个方向,它可以使学生模型获得教师模型的知识从而提升学生模型的效果。但是良好的知识蒸馏模型需要较强的背景知识与经验判断且蒸馏的不确定性较高。
  • 参数共享与低秩分解是通过共享部分参数或降低参数的秩从而达到减小模型的目的。

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词