NLP相关题解
1、请你说说RNN的原理
RNN是一类以序列数据为输入,在序列的演进方向进行递归,且所有节点单元按照链式连接的递归神经网络。RNN对具有序列特性的数据非常有效,能够挖掘数据中的时序信息以及语义信息。(RNN是什么)图1 RNN节点单元示意图
2、请你说说CNN,RNN,LSTM,Transformer之间的优缺点
CNN概念:传统意义上的多层神经网络是只有输入层、隐藏层、输出层,其中隐藏层的层数按需决定。而卷积神经网络CNN,在传统的多层神经网络基础上,全连接层前面加入了部分连接的卷积层、激活层和池化层操作,使得实际应用场景中能够构建更加深层、功能更强大的网络。
CNN优点:
CNN主要用于识别位移、缩放及其它扭曲不变性的二维图形。由于CNN的特征检测层通过训练数据进行学习,所以能够避免显示的特征抽取,隐式地从训练数据中进行学习。另外,CNN局部权重共享的结构可以使得网络并行学习,较好的处理高维数据,更接近于实际的生物神经网络,
CNN缺点:
(1)当网络层数太深时,采用反向传播调整内部参数会使得接近于输入层的变化较慢;(2)采用梯度下降进行迭代时很容易使得训练结果收敛于局部最优而非全局最优;
(3)池化层会丢失一定的有价值信息,忽略了局部与整体之间的关联性;
(4)特征提取的物理含义不是十分明确,导致可解释性一般。
RNN优点:
传统网络无法结合上下文去训练模型,导致对于序列特性数据场景的处理效果不佳,而RNN结构决定了其具有了短期记忆性,每一时刻隐藏层信息不仅由该时刻的输入层决定,还可以由上一时刻的隐藏层决定,做到挖掘数据张红的时序信息以及语义信息。
RNN缺点:
随着网络层数增加,RNN在长序列场景处理时会出现梯度消失或梯度爆炸的弊端(反向传播算法局限性导致)。
LSTM优点:
LSTM通过引入包含了遗忘门、输入门、输出门的cell状态的结构改善了RNN中存在的长期依赖问题,并且其表现通常比时间递归神经网络和隐马尔科夫模型更好,而LSTM本身也可以作为复杂的非线性单元构造更大型深度网络。
LSTM缺点:
梯度问题在LSTM中得到了一定程度的优化解决,但是并没有彻底搞定,在处理N量级的序列有一定效果,但是处理10N或者更长的序列依然会暴露,另外,每一个LSTM的单元节点都意味着有4个全连接层,如果时间序列跨度较大,并且网络较深,会出现计算量大和耗时偏多的问题。
Transformer优点:
(1)突破了RNN模型不能并行计算的限制;
(2)相比CNN,计算两个位置之间的关联所需要的操作次数不会随着距离的增长而增加;
(3)attention机制可以产生更具可解释性的模型,可以从模型中检查attention分布,各个attention head可以学会执行不同的任务。
Transformer缺点:
(1)局部信息的获取不如RNN和CNN强;
(2)位置信息编码存在问题,因为位置编码在语义空间中并不具备词向量的可线性变换,只是相当于人为设计的一种索引,所以并不能很好表征位置信息;
3、LSTM解决了RNN的什么问题,如何解决
4、讲一下Transformer?以及它比RNN优势在哪里?
由6层组成,每一层包含两个子层,第一层是多头自注意层(multi-head self-attention),第二层是一个简单的全连接前馈网络。在每个子层后,都接了一个残差归一化层(LN)。为了方便残差链接,模型中的所有子层,包括嵌入层,输出向量维度均为512.。
(4)输出
解码器的输出被输入到一个线性层中,转化为一个超长向量,再输入到softmax层中转化为改了,最后运用如贪婪搜索等策略选择输出的词语。
(5)优势
5、LSTM的概念,LSTM有哪些变种以及BPTT(基于时间的反向传播)
LSTM是在标准RNN基础上做了改进,解决RNN训练过程中的梯度消失问题,结构上主要是增加了控制门单元:遗忘门、输入门、输出门,而门控单元组合来的cell状态,类似于信息传送带,可以保证LSTM在长序列场景下的信息保持。(1)MOGRIFIER LSTM (ICLR 2020)
通过新增的门机制与LSTM的相融合,是的当前输入跟隐藏状态得到充分的交互,经过这个过程得到新的输入和新的隐藏状态,然后再输入到LSTM,每一轮的输入都是通过上一轮的输入跟上一轮的隐藏状态计算得到,每一轮的隐藏状态都是通过上一轮的隐藏状态跟上一轮的输入计算得到,所以LSTM的最终轮得到的输入和隐藏状态二者不会相互独立,获得更好的上下文相关表达。
(2)GRU
① BPTT(基于时间的反向传播)
循环神经网络中的反向传播技术称为BPTT,和时间序列密切相关,其推导过程如下:
接下来通过总误差来计算U, V, W这些参数的梯度,然后用随机梯度下降法更新参数(以E3为例)。
该部分计算仅依赖当前时刻的隐藏层状态和当前时刻的输出。
6、说说LSTM中的各个门
LSTM指的是长短期记忆神经网络,主要常见于深度学习领域中时间序列数据的处理和预测当中,应用领域包括语音识别、机器翻译等等。
传统的同类型工具rnn在长序列场景处理时会出现梯度消失或梯度爆炸的弊端,而LSTM通过包含遗忘门、输入门、输出门的cell状态解决了这个问题。
(1)遗忘门:
LSTM的结构是具有重复模块的链式状态,而每一个重复模块都包含多个神经网络层处理,使得时序场景中的长期信息得到最好的保持。
遗忘门是一个sigmoid层,决定了上一时刻的单元状态有多少保留到当前时刻
,计算公式:
更新状态
(3)输出门:
输出值取决于当前状态,输出门有sigmoid和tanh两层处理,sigmoid层用来确定状态的哪部分需要输出,这部分和通过tanh层处理后的状态相乘得到最后想要输出的信息。
7、什么是wide&deep
概念:对于一个深度学习模型来说,拟合能力和泛化能力是评价其性能的基本要素,对应到个性化推荐领域中,可以理解为记忆性和泛化性,也就是既能学习到特征与目标之间的直接相关性,又能够学习到训练样本中没有出现的特征组合。例如,模型可以通过训练数据知道用户喜欢看“泰坦尼克号”和“罗马假日”,同时基于泛化性可以推理出用户喜欢爱情片。Wide&deep模型的提出正是基于这一思想,通过巧妙地将广义线性模型和深度模型进行强强联合,平衡了记忆性和泛化性。
Wide模型部分进行一维或二维这些低阶特征交互,deep模型部分将自动学习高维交互特征,该基础模型是将两个部分的模型同时训练,并将其结果的加权求和,进而得到最终的预测结果:
$$
其中δ表示sigmoid函数,a_(lf)表示神经网络最后一层激活值。该预测结果为0,表示用户点击;结果为1,表示未点击。
Deep模型:
Deep模型是一个前馈神经网络,此处模型自动生成隐性特征向量,无需人工合成。由于深度神经网络模型的输入是连续、密集的特征,因此对于在线学习平台等稀缺的高维分类单元,首先需要将其转化为低维稠密向量,也就是embedding,为了实现这种端到端的训练,首先随机初始化embedding向量,假设嵌入层的输出为:a_0=[e_1, e_2, … , e_m]
其中,|H|为隐藏层的层数。
Wide模型:
Wide使用逻辑回归的方法,预测学习者的特征与推荐是否关联,并能很好的学习稀疏特征。通过wide模型中的交叉特征转换,达到记忆特征的目的:y=w_(T)x+b。
其中y表示预测值,即内容被推荐给用户的概率。X=[x_1, x_2, … , x_d]表示一个d维的特征向量,w=[w_1, w_2, … , w_d]为模型的参数,即各种内容特征对内容能否推荐出去的影响权重,b表示偏置。目标函数为:y=sigmoid(y_wide)。
该目标函数用来预测用户点击内容的最终输出,当用户点击时,输出为0,当用户没有点击时,输出为1,特征集包括原始输入特征以及交叉特征。
基于wide&deep模型的推荐系统,是联合训练wide和deep两个模型,将两个模型的优点进行整合。首先,该模型不再进行预训练;其次,不仅可以进行低阶与高阶的特征交互,更重要的是可以自动进行特征交叉。最后,特征嵌入的 引入避免了特征工程的一些麻烦。该模型在与单个模型进行试验比较,性能提升很多。
缺点:
(1)自动交叉特征表现在特征与特征之间的亲密联系,但是用户与内容之间的特征交互表现不明显;
8、请你说说SeqToSeq
Seq2Seq提出于2014年,该技术主要为了解决传统的固定大小输入问题。最早由两篇文章独立地阐述了该主要思想,分别是Google Brain团队的《Sequence to Sequence Learning with Neural Networks》和Yoshua Bengio团队的《Learning Phrase Representation using RNN Encoder-Decoder for Statistical Machine Translation》
图中每一个box代表了一个RNN单元,通常是LSTM或者GRU。
Encoder是一个RNN,它会遍历输入的每一个Token(词),每个时刻的输入是上一个时刻的隐状态和输入,然后会有一个输出和新的隐状态。这个新的隐状态会作为下一个时刻的输入隐状态。每个时刻都有一个输出,对于seq2seq模型来说,我们通常只保留最后一个时刻的隐状态,认为它编码了整个句子的语义。Encoder处理结束后会把最后一个时刻的隐状态作为Decoder的初始隐状态。
Decoder也是一个RNN,它每个时刻输出一个词。每个时刻的输入是上一个时刻的隐状态和上一个时刻的输出。一开始的隐状态是Encoder最后时刻的隐状态,输入是特殊的。然后使用RNN计算新的隐状态和输出第一个词,接着用新的隐状态和第一个词计算第二个词,...,直到遇到,结束输出。
但需要注意的是,早期的 seq2seq 有本质的问题,即RNN本身对于长距离的依赖关系有一定的捕捉能力,但由于序列模型是通过门控单元使得信息保持流动,并且选择性地传递信息。但这种方式在文本长度越来越长的条件下,捕捉依赖关系的能力越来越低,因为每一次递归都伴随着信息的损耗,所以有了Attention机制来增强对我们所关注的那部分依赖关系的捕捉。
延伸考点
早期的 seq2seq 有什么问题?
- 提示:长距离依赖关系的捕获存在缺陷。
- 改进:attention(参见上文)
9、请你说说对NLP的了解
NLP(Natural Language Processing,自然语言处理)。自然语言处理,就是让计算机理解自然语言。自然语言处理的研究分支包括很多很多,下面简单介绍几个重要分支:机器翻译(Machine Translation)
机器翻译(MT)将文本从一种语言转换翻译为另一种语言。自动问答/对话(Question Answering/ Dialogue)
也可以成为对话机器人。系统将用户意图 (user intent) 作为输入,与知识库交互,并预测系统的下一个动作 (action)。值得一提的是,“图灵测试”指的就是该任务:人与黑箱对话,来回x 个回合,如果人分不清对面是人还是机器,那么就说明通过了图灵测试。
文本分类(Text Classification)
文本分类问题将句子或者文档分配到特定的类别,通常我们将文本划分到特定的主题类别。AG’s news 是比较常用的文本分类数据集,要求根据新闻标题和简介判断新闻的类别。这跟图片分类的区别就是输入不是图片,而是文本信息。