您好, 访客   登录/注册

基于BERT的对AI理解语言方式的研究

来源:用户上传      作者:

  【摘 要】2010年之后AI进入高速发展期。尤其是在深度学习领域,新的算法层出不穷,屡次突破前人极限。但在技术高速发展的同时,人类自己的想象力也给自己造成了困扰,一些不实的报道充斥着人工智能机器人已经有了自己的语言能力的宣传。事实真的是这样吗?本论文通过剖析目前最强大的BERT技术,来一层层分析AI處理人类的语言的方式,以得出AI尚无法理解人类语言的结论。
  【关键词】预训练模型;自注意;变压器;BERT
  中图分类号: H319 文献标识码: A 文章编号: 2095-2457(2019)05-0088-002
  1 关于语言模型
  那么AI如何处理一种语言呢?首先看看语言是什么。把语言拆开,一篇文章由几个段落组成,段落里是一句句的话。句子由词词连接而成,而词语是由字组成的。语言的最小单位就是字。
  如何了解语义呢?Harris 在1954 年提出了分布假说(distributional hypothesis):上下文相似的词,其语义也相似。 Firth 在1957 年对分布假说进行了进一步阐述和明确:词的语义由其上下文决定(a word is characterized by the company it keeps)。有了这个假说,一个语言学问题就被转化成了数学问题,可以利用计算机分析词语的上下文,以获得其语义。
  语序的重要性不言而喻。“你给我一千万”和“我给你一千万”的区别实在太明显了,必须知道如何按照正确的语序构造一句话。
  语言学的问题转化成数学问题,就要构造一个关于语言的模型。首先需要有一个足够大的语料库,然后需要一个比较深的神经网络结构,训练出有足够多参数的语言模型。这个模型需要包含所有字词之间的关系,也要包含句子之间的关系。
  语言模型生成以后,由于语言中每个词每个字在训练模型的过程中都已经被充分训练,放入一个新的句子,就可以生成数学上的句子向量,会包含很多维度,512维,或者768维,以包含足够的语言信息。
  深度神经网络结构只是生成一个语言模型的前提条件之一。除此以外,还需要更强大的算力,更强大的特征提取器,预训练模式等等。
  2 自注意力机制
  NLP需求,最常用的解决方案就是Encoder Decoder架构。先将输入的序列做编码操作,生成中间的语义编码向量,再将向量输出到解码器。
  注意力机制是什么?以翻译举例,输入是Tom chase Jerry,输出是三个词依次输出:汤姆、追逐、杰瑞。在生成三个中文词的过程中,中间的语义编码是动态的,就是说翻译汤姆时,我们的注意力在Tom这个词上多一些,占了60%的权重,而翻译追逐时,输入还是这句英文,但是注意力在Chase这个词多一些。这种注意力权重动态调整的机制称作Attention机制。
  self-attention就是输入的语句和输出的语句是完全相同的语句,那它的意义在哪里呢?使用这个机制,在生成输出的句子的过程中,可以发现每一个词和这句话里面其他词之间的关系,这就是新的特征提取器。
  特征提取器是什么?NLP里语义就是指词之间的关系,而这种关系就是语言学上的特征。CNN善于提取图像里的特征,RNN可以用来提取每句话的特征,现在self-attention也可以用来提取特征。
  那么self-attention和RNN相比,强大在哪里呢?RNN的一个很大的缺陷是无法并发运行,必须按照从左至右的顺序来跑。另外RNN类的LSTM虽然声称拥有长短期记忆,但长度还是有限制。但是self-attention根本没有距离的限制,几十甚至几百个字词之间的关系仍然能找到。
  3 Transformer架构
  Transformer架构是以encoder/decoder架构为基础,由六个或者更多的Transformer块构成。每块共四层架构,最下面一层是self-attention,是Transformer里最重要的部分。上面一层是归一化层、前馈网络层、归一化层。编码层输入经过这样的六个Transformer块之后,分别生成不同的语义编码,传送给右侧的decoder架构,最后经过一个线性回归线和softmax层,生成最终的结果。
  还有一个概念就是multi-head,中文叫‘多头’的一个概念。一个字或词输入到transformer,都是以向量的形式进入。假设这个向量是512维,当它经过六层encoder时,是将这512维分成8份,每份64维分别进行计算。把一个字词切成8部分,每份与句子中的其它词进行交互,可谓你中有我,我中有你,交融得非常彻底。
  4 BERT
  下面详细解释一下BERT的特点。
  首先BERT只有encoder没有decoder。这很容易理解,因为BERT是一个通用的预训练模型,可以接各种下游任务,它的输出只是文本表示,所以不能使用固定的decoder。
  第二点,BERT是百层左右的深度神经网络,才能把各种语言学的特征提取出来。BERT面世之前,NLP领域的神经网络基本上只有几层,Transformer架构之后才有可能将NLP网络推向几十上百层。浅层是分析语法,词法层级的特征,深层进入语义的范畴。
  第三点,非常重要的一点,BERT是一个预训练模型,这意味着做NLP项目的起点已经大幅提升。在2018年之前,任何一个NLP项目的起点都是以Word2Vec为代表的词向量。我们拿到一句话的词向量之后,自己构建句向量,再实现下游任务。构建句向量的过程往往是简单的词向量平均或者加总,难以实现深层语义的提取,导致下游任务效果较差。
  相信从BERT开始,会出现各种细分领域的语言模型,效果也会越来越好。   第四個特点,BERT是用self-attention作为特征提取器的能力。
  第五个特点,就是这个预训练模型是直接设计了两个下游任务作为预训练模型的任务,产生的句向量只是副产品。这两个任务一个是词级别的,一个是句子级别的。词任务就是单词预测,随机遮挡住15%的词进行预测,要正确预测就需要精准学习每个词与其它所有词的关系,学习词序。句子级别的任务就是预测两句话是不是上下句。这两个下游任务可以用作知识的来源。
  第六个特点就是对多义词的识别。在Word2Vec、GloVe等词向量的年代,所有的词向量都是静态的,就是训练之后词向量就不再变化,而固定下来了。但是一个词在不同句子不同语境里词义是会有或大或小的变化的,例如apple可以指代水果,也可以指代一家公司,词向量需要动态变化。
  BERT在训练过程中,同一个词会在非常多的语料里出现,训练后会混合所有的含义。使用时放到一个句子里,会根据上下文把这个词的语义提炼出来,表达在这个上下文里的具体含义,以解决多义词的问题。
  第七个特点就是双向语言模型。
  5 总结
  我们了解了目前阶段智能机器人的能力,知道了AI是怎么一步步地处理语言数据,这是目前为止最先进的AI处理人类语言的方式。在前面的研究中,我们知道AI处理的全部都是数字,输入时将每个字转化为一个多维数学向量,然后通过大量数据的训练,寻找每个字之间的关系。翻译也好,对话也好,对于AI都是数字对数字的游戏,我们最终看到的语言输出,只是这些数字最终通过字典翻译回了人类的语言。
  【参考文献】
  [1]Ashish Vaswani et al. Attention is All You Need. arXiv 1706.03762.
  [2]Jonas Gehring et al. Convolutional sequence to sequence learning. arXiv:1705.03122.
  [3]Yonghui Wu et al. Google’s neural machine translation system: Bridging the gap between human and machine translation. arXiv:1609.08144.
  [4]Christian Szegedy et al. Rethinking the inception architecture for computer vision. CoRR, abs/1512.00567.
  [5]Jacob Devlin et al. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. arXiv 1810.04805.
  [6]Denny Britz et al. Massive exploration of neural machine translation architectures. CoRR, abs/1703.03906.
  [7]Yonghui Wu et al. Google’s neural machine translation system: Bridging the gap between human and machine translation. arXiv:1609.08144.
转载注明来源:https://www.xzbu.com/8/view-14725252.htm