自然语言处理面试问题个人总结

1 列出几种文本特征提取算法

答:文档频率、信息增益、互信息、X^2统计、TF-IDF

(引用自:https://www.cnblogs.com/jiashun/p/CrossEntropyLoss.html)

信息:

自然语言处理面试问题个人总结

由于概率I 是一个)0至1的值,所以当事件发生的概率越大时,信息量越小。

相对熵

相对熵又称KL散度(Kullback-Leibler (KL) divergence),用于衡量对于同一个随机变量x的两个单独的概率分布P(x)和Q(x)之间的差异。

KL散度的值越小表示两个分布越接近.

在一定程度上面,相对熵可以度量两个随机分布的距离。也常常用相对熵来度量两个随机分布的距离。当两个随机分布相同的时候,他们的相对熵为0,当两个随机分布的差别增大的时候,他们之间的相对熵也会增大。 

熵:

是表示随机变量不确定的度量,是对所有可能发生的事件产生的信息量的期望。

自然语言处理面试问题个人总结

信息增益:

分类前的信息熵减去分类后的信息熵

交叉熵:

我们将KL散度公式进行变形得到:

自然语言处理面试问题个人总结

 

 

 这里前半部分是事件P自己的信息熵, 后面那部分可以作为事件P和事件q的信息熵(交叉)

交叉熵广泛用于逻辑回归的Sigmoid和Softmax函数中作为损失函数使用。

 

二分类交叉熵误差:

模型最后需要预测的结果只有两种情况,对于每个类别我们的预测得到的概率为 自然语言处理面试问题个人总结 和 自然语言处理面试问题个人总结 。此时表达式为:

自然语言处理面试问题个人总结

意思就是每个类别都做一个信息熵的计算,然后加起来,(目的最小)

自然语言处理面试问题个人总结

同样,预测输出越接近真实样本标签 0,损失函数 L 越小;预测函数越接近 1,L 越大。函数的变化趋势也完全符合实际需要的情况

 

多分类交叉熵误差:

自然语言处理面试问题个人总结

M表示标签的种类数

交叉熵误差函数和softmax(神经网络用到的输出函数)和sigmoid函数(logistic回归用到的函数)的复合函数是凸函数,即存在全局最优解

 

2 RNN基本原理

(引用自:https://zhuanlan.zhihu.com/p/32755043

自然语言处理面试问题个人总结

 

 

RNN循环神经元的计算过程:

  1. 将输入时间步提供给网络,也就是提供给网络自然语言处理面试问题个人总结
  2. 接下来利用输入和前一时刻的状态计算当前状态,也就是自然语言处理面试问题个人总结
  3. 当前状态变成下一步的前一状态自然语言处理面试问题个人总结
  4. 我们可以执行上面的步骤任意多次(主要取决于任务需要),然后组合从前面所有步骤中得到的信息。
  5. 一旦所有时间步都完成了,最后的状态用来计算输出自然语言处理面试问题个人总结
  6. 输出与真实标签进行比较并得到误差。
  7. 误差通过后向传播(后面将介绍如何后向传播)对权重进行升级,进而网络训练完成。

反向传播:

  1. 首先使用预测输出和实际输出计算交叉熵误差
  2. 网络按照时间步完全展开
  3. 对于展开的网络,对于每一个实践步计算权重的梯度
  4. 因为对于所有时间步来说,权重都一样,所以对于所有的时间步,可以一起得到梯度(而不是像神经网络一样对不同的隐藏层得到不同的梯度)
  5. 随后对循环神经元的权重进行升级

交叉熵误差:

自然语言处理面试问题个人总结

自然语言处理面试问题个人总结

 

梯度爆炸问题和消失问题:

RNN基于这样的机制,信息的结果依赖于前面的状态或前N个时间步。普通的RNN可能在学习长距离依赖性方面存在困难。例如,如果我们有这样一句话,“The man who ate my pizza has purple hair”。在这种情况下,purple hair描述的是The man,而不是pizza。所以这是一个长距离的依赖关系

如果我们在这种情况下后向传播,我们就需要应用链式法则。在三个时间步后对第一个求梯度的公式如下:

∂E/∂W = ∂E/∂y3* ∂y3/∂h3* ∂h3/∂y2 *∂y2/∂h1 .. 这就是一个长距离的依赖关系.

在这里,我们应用了链式规则,如果任何一个梯度接近0,所有的梯度都会成指数倍的迅速变成零。这样将不再有助于网络学习任何东西。这就是所谓的消失梯度问题。

同理:

梯度爆炸就是由于单个或多个梯度值变得非常高,梯度变得非常大。

 

3 RNN常见的几种设计模式

为了来处理消失梯度问题。人们提出了LSTM结构(长短期记忆网络)和GRU(门控性单位)可以用来处理消失的梯度问题。

 LSTM也有这样的链式结构,但重复模块有不同的结构。不是有一个单一的神经网络层,而是有四个,他们之间以一种非常特殊的方式进行交互。

自然语言处理面试问题个人总结

 

上一篇:深度学习笔记07-RNN介绍


下一篇:循环神经网络(RNN)