NLP面试题(9月4日笔记)

常见的分词方法

        分词是将连续的子序列按照一定的规则进行重新组合形成词序列的过程,是NLP领域内最基础的内容。常见的分词方法有jieba分词,jieba分词支持多种分词模模式:精确模式,全模式,搜索引擎模式。

1)精确模式:将句子最精确的进行切分,适合文本分析,在日常工作中最为常用;

2)全模式:将句子中所有可以成词的词语都扫描出来,速度非常快,但不能消除歧义。

3)搜索引擎模式:在精确模式的基础上,对长词进行再次切分,可提高召回率,适合用于搜索引擎分词。

        在jieba分词中还可根据用户的需求进行自定义词典,在添加自定义词典后,jieba能够精确识别出词典中出现的词汇,从而提升整体的识别准确率。

词向量化操作(文本张量表示)

        由于计算机不能够直接识别自然语言,在进行模型训练之前,需要把对应的文本信息转化为能够让计算机处理的输入信息,即词向量。常见的向量化操作有如下几种。

1)one-hot编码

one-hot编码又称独热编码,原理是将每个单词映射到词典中的一个位置,然后在此位置用数字1表示,其余位置均用0表示。

优势是当词典确定以后,不需要多余的计算;可以解决编码长度不一的问题;操作简单,容易理解.

缺点是割裂了词与词之间的联系;在大语料下,每个向量 的长度过大,占据大量内存。

2)word2vec

word2vec是一种将词汇表示为向量的无监督训练方法,通过构建神经网络模型将网络参数作为词汇的向量表示,利用了单词的上下文联系。包含CBOW和skipgrann两种训练模式。

CBOW是在给定文本的情况下,选定某段长度作为研究对象,使用上下文的词汇来对中间的词汇进行预测

skipgram是在给定文本的情况下,选顶某段长度作为研究对象,使用中间的词汇来对上下文的词汇进行预测

3)word Embedding

word embedding是通过一定的方式将词汇映射到指定维度(更高维度)的空间。

广义的word embedding包括所有密集词汇向量的表示方法;侠义的word embedding是指在神经网络中加入的embedding层,对整个网络进行巡礼那的同时产生的embedding矩阵,这个矩阵就是训练过程中所有输入词汇的向量表示组成的矩阵。

RNN在自然语言处理领域应用的原因

        自然语言处理领域内所需要处理的信息通常是文本、语音等序列化的数据,对应数据通常会有较强的上下文依赖关系,因此在对对应的数据进行处理时,不仅需要了解当前数据的相关信息,同时还需要能够对上下文之间的数据能够有所了解。

        RNN在对相应的数据进行处理时,通常是以序列数据作为输入 ,通过网络内部的结构设计能够有效的捕捉序列之间的关系特征,最终的输出结果一般也是序列化的形式。同时RNN的循环机制使得模型隐层的上一时间步产生的结果能够作为当前时间步输入的一部分,能够对当前时间步的输出产生一定的影响。

LSTM模型

        LSTM(Long Short-Term Memory,长短时记忆网络),是传统RNN的变体,与传统RNN相比能够有效的捕捉长序列之间的语义联系,同时可以缓解传统RNN中的梯度消失或者梯度爆炸现象。

        与传统RNN相比,LSTM的内部结构进行了更加精心的设计,加入了输入门,遗忘门、输出们和内部记忆单元。输入门控制当前计算的新状态及多大程度更新到记忆单元中;遗忘门控制前一步记忆单元中的信息有多大程度被遗忘掉;输出门控制当前的输出有多大程度取决于当前的记忆单元。

        在LSTM中,遗忘门、输入门和输出门使用Sigmoid函数作为激活函数;在生成候选记忆时,使用Tanh作为激活函数。这两个激活函数都是饱和的,即在输入达到一定值的情况下,输出就不会发生明显变化了。但激活函数的选择也不是一成不变的。

GRU模型

        GRU(Gated Recurrent Unit,门控循环单元)与LSTM一样,也是为了解决长期记忆和反向传播中的梯度等问题而提出来的,但结构要比LSTM简单,核心部分可分为两个部分去解析。

        更新门:定义了前面记忆保存到当前时间步的量;

        重置门:决定了如何将新的输入信息与前面的记忆相结合。

LSTM和GRU的异同

        GRU可看作是LSTM的一个变体,与LSTM相比,GRU只有两个门,将LSTM中的输入门和遗忘门合二为一,称为更新门,控制前边记忆信息能够继续保留到当前时刻的数据量,或者说决定有多少前一个时间步的信息和当前时间步的信息要被继续传递到未来;

        GRU中的另一个门被称为重置门,控制要遗忘多少过去的信息;取消了进行线性自更新的记忆单元,直接在隐藏单元中利用门控直线进行线性自更新;不再使用单独的记忆细胞单元存储记忆信息,而是直接利用隐藏单元记录历史状态,利用重置门控制当前信息和记忆信息的数据量,并生成新的记忆信息继续向前传递;利用更新门计算当前时刻隐藏状态的输出。

注意力机制

        在计算能力有限的情况下,注意力机制作为一种资源分配方案,将有限的计算资源用来处理更重要的信息,是解决信息超载的主要手段。目的是从众多的信息中选择出对当前任务目标更关键的信息。在注意力计算时有三个指定的输入Q(query)、K(key)、V(value)。

Seq2Seq

        Seq2Seq核心思想时通过深度神经网络将一个作为输入的序列映射为一个作为输出的序列,这一过程由编码输入和解码输出两个环节组成,采用的神经网络时Encoder-Decoder(编码器-解码器)框架。

Encoder的作用是将输入编码映射到语义空间中,得到一个固定维数的向量,这个向量表示输入的语义;

Decoder的作用是将语义向量解码,获得所需要的输出信息。

Transformer

Transformer是第一个使用自注意力机制、彻底摆脱RNN和CNN以来的网络模型,也是基于Encoder-Decoder框架实现的。Transformer模型的编码器部分主要包括输入、输出、编码器层三个主要的组成部分。

输入层包括原文本嵌入层以及位置编码器;输出层包括线性层和softmax层;

编码器层由两个子层连接结构组成,第一个子层连接包括一个多头自注意力子层和一个残差结构,第二个子层连接包括一个前馈全连接子层和规范化层以及一个残差结构。

解码器的结构与编码器类似,唯一的不同在解码器层部分是由三个子层连接结构组成,第一个子层连接包括一个多头自注意力子层和规范化层以及一个残差连接,第二个子层连接结构包括一个多头注意力子层和规范化层以及一个残差连接,第三个子层连接结构包括一个前馈全连接子层和规范化层以及一个残差连接。

BERT模型

        BERT模型是2018年10月由google AI研究院提出的一种预训练模型,完全是在Transformer模型基础上构建而成的,但只应用了Transformer模型中的编码器部分内容,完全舍弃掉了解码器部分,BERT模型中包含了两层Transformer模型,是一个典型的双向编码模型,仍然用多头注意力层作为其核心处理层。不同规模的BERT模型包含的多头注意力机制的层数不同,并且每个多头注意力层中包含的注意力头数也各不相同。BERT采用了双向上下文的信息共同来预测单词。

        BERT模型在训练过程中采用了降噪自编码(Denosing AutoEncoder, DAE)方式。BERT模型只是一个预训练阶段的模型,并不能够端到端的解决问题。在解决具体的任务时,还需要再BERT模型后添加其他的处理模型。

BERT模型的架构可分为三个模块:

1)Embedding模块:由三种Embedding共同组成。Token Embeddings是词嵌入张量,可用于之后的分类任务;Segment Embeddings是句子分段嵌入张量,是为了服务后续的两个句子为输入的预训练任务;Position Embeddings是位置编码张量,是通过学习得到的。整个Embedding模块的输出张量就是这三个张量的直接加权结果。

2)Transformer 模块舍弃了Transformer中的Decoder部分,只是用了Encoder部分的内容

3)预微调模块是经过了Transformer层的处理以后,可根据任务的不同需求进行不同的调整。

BERT模型包含两个预训练任务:

1)MLM(Masked Language Model,遮蔽语言模型):采用降噪自编码的方式来训练语言模型,先把待预测的子词抠掉,再根据上下文中的其他非屏蔽子词来预测被屏蔽子词的原始值。

从原始训练文本中,随机抽取15%的token作为参与MASK任务的对象;从这15%的数据抽,抽取80%的词使用[MASK]标记替换该token,10%的词用一个随机单词替换token,10%保持原token不变。

2)NSP(Next Sentence Prediction,下一句话预测任务):与传统RNN模型预测的作用差不多,让模型预测其下一句话的内容。BERT在进行训练时,50%的下一句话进行随机替换,50%的话是原始文本中真实跟随在原语句后的话。

你可能感兴趣的:(自然语言处理,自然语言处理,笔记,人工智能)