自然语言发展历史

什么是自然语言

自然语言处理(Natural Language ProcessingNLP)是研究人与计算机交互语言问题的一门学科。其任务大致分为两类——自然语言理解和自然语言生成。

研究方法分类

20 世纪 50 年代到 70 年代自然语言处理主要采用基于规则的方法(符号派),研究人员们认为自然语言处理的过程和人类学习认知一门语言的过程是类似的,所以大量的研究员基于这个观点来进行研究,这时的自然语言处理停留在理性主义思潮阶段,以基于规则的方法为代表。但是基于规则的方法具有不可避免的缺点,首先规则不可能覆盖所有语句,其次这种方法对开发者的要求极高,开发者不仅要精通计算机还要精通语言学,因此,这一阶段虽然解决了一些简单的问题,但是无法从根本上将自然语言理解实用化。 

70 年代以后随着互联网的高速发展,丰富的语料库成为现实以及硬件不断更新完善, 自然语言处理思潮由理性主义向经验主义过渡,基于统计的方法(随机派)逐渐代替了基于规则的方法。在这一阶段,自然语言处理基于数学模型和统计的方法取得了实质性的突破。

理性主义的问题求解方法包括基于规则的分析方法和建立符号处理系统。理想主义方法认为人的很大一部分语言知识是与生俱来的,由遗传决定。该方法坚持对自然语言处理进行完整且全面的剖析,强调了语言结构以及对输入的解析,使输入的语句转换成结构单元,通过语言所必须遵守的一系列原则来描述语言,其过程具有较高的准确性和完整性;

经验主义的问题求解方法是基于大规模真实语料的计算方法。参与者多是统计学的专业研究人员。其通过搜索、整理、分析相关数据,坚持以概率统计的相关思想对自然语言处理的结果进行相关推测,这样的处理过程具有高效及便于推广的特点,也是当时大多数人支持的思路。

      50年代中期开始到60年代中期,以Chomsky为代表的符号派学者开始了形式语言理论和生成句法的研究,60年代末又进行了形式逻辑系统的研究。而随机派学者采用基于贝叶斯方法的统计学研究方法,在这一时期也取得了很大的进步。两种方法的研究都取得了长足的发展。

发展过程

早期有三项基础性的研究非常重要。第一项是A. M. Turing算法计算模型的研究,第二项是 N. Chomsky(乔姆斯基)关于形式语言理论的研究,第三项是香农概率和信息论模型的研究。

20世纪50年代提出的自动机理论来源于Turing1936年提出的算法计算模型,这种模型被认为是现代计算机科学的基础。

 

上世纪50年代初,Kleene在有限自动机和正则表达式方面的工作,在计算语言学和理论计算机科学中发挥了重要作用。

 

1948年,Shannon把离散马尔可夫过程的概率模型应用于描述语言的有限自动机,接着他又把热力学中”(entropy)的概念引用于语言处理的概率算法中。

 

1956 年,Chomsky Shannon的工作中吸取了有限状态马尔可夫过程的思想,提出了上下文无关语法。首先把有限状态自动机作为一种工具来刻画语言的语法,该方法主要采用代数和集合论把形式语言定义为符号的序列,每个字符串可以被视为由有限自动机产生的符号序列。

 

基于深度学习的自然语言处理

随着运算能力与存储能力的提升,人们将神经网络引入自然语言处理方法中

神经语言模型

语言模型在文章《A Neural Probabilistic Language Model》中提出,语言模型是判断一个句子是否正确(不一定符合语法规则)。根据马尔科夫假设一个单词只与其前面n个单词有关,根据条件概率,把问题转化为给定已出现词语的文本中,预测下一个单词的任务。在该文章中同时也提出了词嵌入的概念,但在文章所对应的任务中只是个副产品。随后Mikolov等人也提出了RNNLM

多任务学习

多任务学习是在多个任务下训练的模型,任务之间共享参数。多任务学习鼓励模型学习对多个任务有效的表征描述。共享单词嵌入使模型能够在单词嵌入矩阵中协作和共享一般的低级信息,对于学习一般的低级表示,在有限量的训练数据的设置中特别有用。
Word嵌入

Word embeddingMikolov2013年在《Efficient Estimation of Word Representations in Vector Space》中引入,也就是大名鼎鼎的Word2vec词嵌入是通过浅层网络训练得到的一组向量。向量的维度相较于one-hot编码小的多,并且向量之间包含语义信息可以计算相似度等。Word2vec有两种计算方式,可以在下面图中看到:CBOWcontinuous bag-of-words)和skip-gram。它们的目标不同:CBOW是基于周围的单词预测中心词,而另一个则相反。通过该方法的到的向量没有考虑上下文的信息,无法解决一词多义的问题。这种词嵌入可以通过矩阵分解,像SVDLSA这样的经典矩阵分解方法可以获得类似的结果。

序列到序列模型(Seq2Seq

2014年,Sutskever等人提出了序列到序列学习方法参考《Sequence to Sequence Learning with Neural Networks》。该方法是一种encoder-decoder结构。通过使用神经网络将一个序列映射到另一个序列的通用框架,广泛应用于机器翻译中。在该框架中,编码器神经网络逐符号地处理句子并将其压缩成矢量表示;然后,解码器神经网络基于编码器输出的压缩向量和decoder的输入逐个预测输出符号,在每个步骤中将先前预测的符号作为预测下一个的输入.。但该方法有个问题就是encoder会把输入句子的所有信息压缩到一个长度固定的向量中,随着输入句子的长度边长,解码部分无法获取输入部分的全部信息,并且在解码过程中无法着重的考虑encoder中的那些信息与当前解码的信息关系最大。

注意力机制

注意力机制是神经MTNMT)的核心创新之一,也是使NMT模型优于基于经典短语的MT系统的关键思想在《Neural Machine Translation by jointly learning to align and translate》中提出。序列到序列学习的主要瓶颈是它需要将源序列的整个内容压缩成固定大小的矢量。一方面在解码时无法获取全部信息,另一方面在解码时无法把注意力放在与当前解码最相关的信息上。Attention机制通过在解码时,为每个输出计算一个向量C用于记录编码部分那些信息与当前信息最为相关。Attention提高了翻译时的精准度但是在每次解码时要遍历一遍输出数据,计算量同时也增大了。

基于记忆的神经网络

注意力可以看作是模糊记忆的一种形式,其中记忆由模型的过去隐藏状态组成,模型选择从记忆中检索的内容。通常基于与当前状态的相似性来访问存储器,类似于注意机制,并且通常可以写入和读取存储器。

预训练语言模型

预训练将NLP带入一个全新时代,这里可以参考邱锡鹏老师的综述《Pre-trained Models for Natural Language ProcessingA Survey》。预训练和attention机制一样同是来自于视觉领域,预训练参考迁移学习的思想,对于大部分深层的神经网络,底层的网络层一般获取的是比较基础的,与任务无关的特征,这些特征可以应用于其他上层任务中。由于自然语言中含有大量无标记的数据,因此可以通过预训练获取较为通用的语言表示,为模型提供较好的初始化参数并加速收敛。

介于预训练的优点,预训练模型大量涌现。

  1. 由于word2vec无法解决一词多义的问题,是静态的词向量,为解决此问题提出了ELMO,采用双层双向LSTM解决了一次多意问题
  2. ELMO采用传统的RNN作为特征提取器,无法并行处理因此提出了GPT。该方法采用transformer作为特征提取器,可以并行处理,速度较快,随后还提出了GPT-2GPT-3,但是处理数据的方式是单向的即自回归。
  3. BERT采用Transformer作为特征提取器,并且双向处理,效果得到大幅提升。其类似的模型随后蜂拥而出出现了Bertnology。但是bert采用mask的方式训练任务,不适用于自编码模型因此产生了XLNet。这里介绍Google最新的综述方便统一理解Transformer,《efficient transformers A survey
  4. XLNet借鉴Transformer-XL,通过排列组合方式将部分单词放到上文单词的位置,采用自回归模型解决bertmask引起的预训练与微调数据的不统一。

Reference

https://www.colabug.com/2018/1002/4767741/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

siyan985

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值