1、自然语言处理简介
自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。NLP是一门融语言学、计算机科学、数学于一体的科学,涉及自然语言(即人们日常使用的语言),所以它与语言学的研究有着密切的联系,但又有重要的区别。但NLP并不是一般地研究自然语言,而在于研制能有效地实现自然语言通信的计算机系统,特别是其中的软件系统,因此又和计算机科学密不可分。
早期,自然语言处理中存在着两种不同的研究方法,分别是基于规则的符号主义和基于概率的随机统计经验主义两种不同的方式。以乔姆斯基(Noam Chomsky)为代表的符号主义主张建立符号处理系统﹐由人工整理和编写初始的语言知识表示体系(通常为规则),构造相应的推理程序,系统根据规则和程序,将自然语言理解为符号结构——该结构的意义可以从结构中的符号的意义推导出来,形成了形式逻辑系统的研究。概率经验主义主张通过建立特定的数学模型来学习复杂的、广泛的语言结构,然后利用统计学,模式识别和机器学习等方法来训练模型的参数﹐以扩大语言使用的规模。但仅仅依靠其中的任意一种方法,都不能完全解决自然语言处理这一复杂问题。
进入21世纪之后,随着计算机的运行速度和内存的不断增加,算力得到了巨大提升,加之机器学习、大数据等技术的兴起,为自然语言处理提供了新的发展方向。而21世纪自然语言处理领域较大的进展如下文所述。
2、神经网络语言模型
2.1 N-Gram
语言模型解决的是在给定已出现词语的文本中,预测下一个单词的任务。语言模型是很多自然语言处理任务的基础,早期的 NLP 系统主要是基于手动编写的规则构建的,既费时又费力,而且并不能涵盖多种语言学现象。因此,人们提出了统计语言模型N-Gram算法,从而为由 N 个单词构成的序列 s 分配概率,即:
P ( s ) = P ( ω1, ω1, ⋯ , ωN , ) = p ( ω1 ) ∗ p ( ω2 │ ω1 ) ∗ p ( ω3 │ ω1 , ω2 ) ∗ ⋯ ∗ p ( ωN │ ω1 , ⋯ , ω ( m − 1 ) ) (1)
其中,ωi 代表序列 s 中的第 i 个单词。可以通过极大似然估计来进行参数估计,但却存在着许多缺点,如缺乏长期依赖,只能建模到前 n-1 个词;随着 n 的增大,参数空间呈指数增长;数据稀疏和泛化能力差等问题。因此,将神经网络引入到了连续空间的语言建模中。
2.2 前馈神经网络语言模型(FFNNML)
2003年,Bengio等[1]人提出了原始前馈神经网络语言模型(Forward Feedback Neural Network Language Model,FFNNLM)的架构。通过学习词的分布式表示来解决维度灾难,使得一个词能够使用一个低维向量(称之为embedding)表示:
y = b + W⋅x + U⋅tanh ( d + H⋅x ) (2)
其中,H、U 和 W 是层与层之间连接的权重矩阵;d 和 b 是隐藏层和输出层的偏置。
网络包含输入层、投影层、隐藏层和输出层。输入为前 n-1 个单词,然后将每个单词映射成为多维向量,再通过隐层去学习更深层次的表征,最后输出层通过softmax输出词表中每个单词出现的概率。
网络的第一层将前 n-1个单词的向量进行拼接成为 ( n − 1 ) ∗ m ( n − 1 ) ∗ m ( n − 1 ) ∗ m 维的向量,记为输出 x;第二层通过全连接的隐层进行训练 d + H ⋅ x ,其最后通过一个 tanh 激活函数。输出层的节点个数为词表的大小 ∣V∣,每个节点 yi 表示单词 ωi 预测为下个单词的概率,最终通过softmax进行归一化输出。利用神经网络去建模当前词出现的概率与其前 n-1 个词之间的约束关系,相比 n-gram 具有更好的泛化能力,但同样仅包含了有限的前文信息。
2.3 循环神经网络语言模型(RNNLM)
第一个循环神经网络(Recurrent neural network,RNN)语言模型由Mikolov等[2]于2011年提出。在第 t 个时间步,RNNLM可写作:
其中U,W,V都是权重矩阵,b,d是隐藏层和输出层的偏置值。
相较于FFNNLM,RNNLM取得了技术突破,因为RNN在处理序列数据时具有先天优势,其可以接受任何变长的输入。移动输入窗口时,由于RNN的内部状态机制从而避免了重复的计算。并且,在时间t由输入引起的内部状态变化,便揭示了这类时序信息,而RNN中的参数共享又进一步地减少了模型参数量。尽管RNNLM可以利用所有上下文进行预测,但是在训练时,模型很难做到长期依赖。因为RNN训练期间可能产生梯度消失或爆炸,从而使得训练速度变慢或参数值无穷大。
2.4 LSTM-RNNLM
2012年,Sundermeyer等[3]首次将LSTM引入到语言模型中,提出了LSTM-RNNLM。除了记忆单元和神经元网络的结构,LSTM-RNNLM的框架几乎与RNNLM完全相同。在LSTM记忆单元中,添加了三个门结构(包括输入,输出和遗忘门),以控制信息流。
2.5 卷积神经网络
训练数据的2014年,Kalchbrenner等[4]首次将广泛应用于计算机视觉的卷积神经网络(CNN)用于自然语言处理,用于文本的卷积神经网络仅在两个维度上操作,其中滤波器仅需要沿时间维度移动。卷积神经网络的一个优点是它们比RNN更容易并行化,因为每个时间步的状态仅取决于本地环境(通过卷积运算)而不是像RNN中的所有过去状态。
2017年,Bastings等[5]将句法结构融入图卷积神经网络的编译器模型,用于机器翻译。
3、多任务学习
多任务学习是在多个任务下训练的模型之间共享参数的一般方法。多任务学习鼓励模型学习对许多任务有效的表征描述。这对于学习一般的低级表示,集中模型的注意力或在有限量的训练数据的设置中特别有用。
在2008年,Collobert等[6]首次将多任务学习应用于NLP的神经网络。在这一框架下,词嵌入矩阵被两个在不同任务下训练的模型共享,共享单词嵌入使模型能够在单词嵌入矩阵中协作和共享一般的低级信息。
4、词嵌入
2013年,Google[7]开源了一款用于词向量计算的工具——word2vec,word2vec可以在百万数量级的词典和上亿的数据集上进行高效地训练;word2vec得到的训练结果——词向量(word embedding),可以很好地度量词与词之间的相似性。word2vec 是把文字转换成计算机可以识别的输入,是一个过程(技术),在这个过程中,将文本作为神经网络的训练数据,这个神经网络的输出向量被称作嵌入,这些嵌入(向量)在训练后会包含单词的语义信息。这个过程做的就是从每个单词有多个维度的空间嵌入到具有低得多维度的连续向量空间。
word2vec会产的向量(word embedding,词嵌入),可以作为后续任务中神经网络模型的输入。这些嵌入抓住了文本的语义,相似含义的词会具有更近的距离,最常见的相似度衡量方式是余弦相似度:
而训练 word2vec 的常用方法是CBOW 和 Skip-Gram。Skip-Gram是给定输入词(output word)来预测上下文;而CBOW是给定上下文,来预测输出词(output word)。
5、序列到序列模型
2014年,Sutskever等[8]人提出了序列到序列学习,一种使用神经网络将一个序列映射到另一个序列的通用框架。在该框架中,编码器神经网络逐符号地处理句子并将其压缩成矢量表示;然后,解码器神经网络基于编码器状态逐个预测输出符号,在每个步骤中将先前预测的符号作为预测下一个的输入。这是一个极为灵活的框架,为后续的机器翻译、基于图片生成描述、基于表格的文本等诸多应用的出现和提升起到了至关重要的作用。
序列到序列模型主要由两个部分组成,一个编码器(encoder)和一个解码器(decoder)。编码器和解码器一般都是由RNN类网络构成,常用LSTM,这是由于使用RNN可以自适应输入输出。
编码器指的是将信号进行编制,转换成容易传输的形式。而在这里,主要指的是将句子编码成一个能够映射出句子大致内容的固定长度的向量。解码器将由编码器得到的固定长度的向量再还原成对应的序列数据,一般使用和编码器同样的结构,也是一个RNN类的网络。
实际操作过程会将由编码器得到的定长向量传递给解码器,解码器节点会使用这个向量作为隐藏层输入和一个开始标志位作为当前位置的输入。得到的输出向量能够映射成为我们想要的输出结果,并且会将映射输出的向量传递给下一个展开的RNN节点。每一次展开,会使用上一个节点的映射输出所对应的向量来投入到下一个输入中去,直到遇到停止标志位,即停止展开。
6、注意力机制
注意力机制的基本思想是避免试图为每个句子学习单一的向量表示,而是根据注意力权值来关注输入序列的特定输入向量。在每一解码步骤中,解码器将被告知需要使用一组注意力权重对每个输入单词给予多少“注意”。这些注意力权重为解码器翻译提供上下文信息。
6.1 Bahdanau注意力机制
2015年Bahdanau等[9]提出了一种学习结合对齐和翻译的注意力机制,执行编码器状态和解码器状态的线性组合。编码器和解码器的所有隐状态(向前和向后)都用于生成上下文向量;注意力机制将输入和输出序列与前馈网络参数化的对齐,它有助于关注源序列中最相关的信息;根据与源位置相关联的上下文向量和先前生成的目标词来预测目标词。
6.2 Luong注意力机制
同年,Luong等[10]也提出了乘法注意力机制,通过简单的矩阵乘法将编码状态和解码状态降为注意力得分。简单的矩阵乘法使它更快,更节省空间。根据注意力在源序列中的位置,Luong提出了两种类型的注意力机制:全局注意力,关注所有来源位置;局部注意力,注意力只放在每个目标词的源位置的一小部分上。
6.3 Transformer
Transformer 是 Google[11] 团队在 2017 年提出的一种 NLP 经典模型,使用了 Self-Attention 机制,不采用 RNN 的顺序结构,使得模型可以并行化训练,而且能够拥有全局信息。和Attention模型一样,Transformer模型中也采用了 encoer-decoder 架构,但其结构相比于Attention更加复杂。
对于encoder,包含两层,一个self-attention层和一个前馈神经网络,self-attention能帮助当前节点不仅仅只关注当前的词,从而能获取到上下文的语义;decoder也包含encoder提到的两层网络,但是在这两层中间还有一层attention层,帮助当前节点获取到当前需要关注的重点内容。
注意力机制是神经网络机器翻译 (NMT) 的核心创新之一,广泛适用,并且可能对任何需要根据输入的某些部分做出决策的任务有用。现已被广泛应用于句法分析、阅读理解、单样本学习,并且在计算机视觉中也有较多应用。
7、预训练语言模型
随着计算机算力的不断增强,越来越多的通用语言表征的预训练模型(Pre-trained Models,PTMs)逐渐涌现出来。这对NLP 的实际应用非常有帮助,可以避免大量从零开始训练新的模型。对于大多数的 NLP 任务,构建一个大规模的有标签的数据集是一项很大的挑战。相反,大规模的无标签语料是相对容易构建的,为了充分利用这些无标签数据,我们可以先利用它们获取一个好的语言表示,再将这些表示用于其他任务。通过预训练,可以从大规模语料中学习得到通用的语言表示,并用于下游任务;提供了更优的模型初始化方法,有助于提高模型的泛化能力和加速模型收敛;还可以在一定程度上避免过拟合。
2018年前后, Cove、GPT系列、ELMo、BERT、UNILM、Transformer-XL、XLNet、MASS、RoBERTa、BART、ERNIE、State-of-Art等各种预训练模型相继出现,极大的推动了NLP的发展。
以GPT系列为例,Generative Pre-trained Transformer(GPT)系列是由OpenAI提出的非常强大的预训练语言模型,这一系列的模型可以在非常复杂的NLP任务中取得非常惊艳的效果,例如文章生成,代码生成,机器翻译,Q&A等,而完成这些任务并不需要有监督学习进行模型微调。而对于一个新的任务,GPT仅仅需要非常少的数据便可以理解这个任务的需求并达到很好的效果。GPT模型的训练需要超大的训练语料,超多的模型参数以及超强的计算资源。
8、Prompt Learning
2021年,各种关于Prompt Learning的研究十分火热,被称为近代自然语言处理技术发展“第四范式”,前三个范式分别为:非神经网络时代的完全监督学习 (Fully Supervised Learning, Non-Neural Network);基于神经网络的完全监督学习 (Fully Supervised Learning, Neural Network);预训练,精调范式 (Pre-train, Fine-tune)。
在Prompt Learning中,往往不对预训练语言模型改动太多,而是希望通过对合适prompt的利用将下游任务建模的方式重新定义。Prompt Learning是指对输入文本信息按照特定模板进行处理,把任务重构成一个更能充分利用预训练语言模型处理的形式。在Prompt Learning中,我们需要对不同任务进行重构,使得它达到适配预训练语言模型的效果。
参考文献
[1] Bengio Y, Ducharme R, Vincent P, et al. A neural probabilistic language model[J]. Journal of machine learning research, 2003, 3(Feb): 1137-1155.
[2]Mikolov T, Kombrink S, Deoras A, et al. Rnnlm-recurrent neural network language modeling toolkit[C]//Proc. of the 2011 ASRU Workshop. 2011: 196-201.
[3] Sundermeyer M, Schlüter R, Ney H. LSTM neural networks for language modeling[C]//Thirteenth annual conference of the international speech communication association. 2012.
[4] Kalchbrenner N, Grefenstette E, Blunsom P. A convolutional neural network for modelling sentences[J]. arXiv preprint arXiv:1404.2188, 2014.
[5] Bastings J, Titov I, Aziz W, et al. Graph convolutional encoders for syntax-aware neural machine translation[J]. arXiv preprint arXiv:1704.04675, 2017.
[6] Collobert R, Weston J. A unified architecture for natural language processing: Deep neural networks with multitask learning[C]//Proceedings of the 25th international conference on Machine learning. 2008: 160-167.
[7] Mikolov T, Chen K, Corrado G, et al. Efficient estimation of word representations in vector space[J]. arXiv preprint arXiv:1301.3781, 2013.
[8] Sutskever I, Vinyals O, Le Q V. Sequence to sequence learning with neural networks[C]//Advances in neural information processing systems. 2014: 3104-3112.
[9] Chorowski J, Bahdanau D, Serdyuk D, et al. Attention-based models for speech recognition[J]. arXiv preprint arXiv:1506.07503, 2015.
[10] Luong M T, Pham H, Manning C D. Effective approaches to attention-based neural machine translation[J]. arXiv preprint arXiv:1508.04025, 2015.
[11] Vaswani A, Shazeer N, Parmar N, et al. Attention is all you need[C]//Advances in neural information processing systems. 2017: 5998-6008.
版权声明:本文为CSDN博主「有梦想的雨」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41536160/article/details/125467747