Advertisement

学习笔记:Deep Learning(四)循环神经网络

阅读量:

循环神经网络RNN(Recurrent Network)

深度学习面临的主要挑战之一在于补充出现的词汇通常更具代表性,并有助于提高分类效果。另一个问题是同一个概念可以用不同的词汇来描述(如'cat'与'kitty'),这些词汇具有一定的模糊意义范围。

监督学习在这种情况下难以实施需要大量标注的数据。然而,在实际应用中带标注的数据通常较为稀缺这促使我们转向非监督学习方法。

深度学习一个重要的理念是:相似的文本往往出现在相似的环境中

根据在线课程,我们从以下几个方面来了解RNN。

No.1 词嵌入模型

我们希望学习如何预测词语的上下文信息,并以'The CAT purrs'与'This kitty hunts mice'为例进行分析。由于这两个短语表达的意义一致(如前所述),使得模型能够对'cat'和'kitty'进行相同的处理(在CNN中提到的共享权重机制)正是基于词嵌入模型的基础原理。

词嵌入 就是将词语转换为低维向量,在语义相近的情况下这些词语对应的向量之间的距离也会较为接近;反之则会相距较远。

词嵌入可以很好的解决稀疏性问题。

一个经典的词嵌入模型是以word2vec为基础开发的,为了便于理解,这里将简要介绍其基本原理和应用方法;具体对算法的分析以及深入学习的内容,请访问博客word2vec算法分析

word2vec1

在图示中,我们旨在将单词 fox 映射到其对应的 fox 嵌入表示,并利用这一嵌入来推断其周围的语义上下文。

在使用Word2Vec模型预测下一个词时,在处理过程中需要考虑大量非目标词(通常占整个词汇表的比例很大)。为了解决这一问题, 可采用Sample Softmax方法, 在训练过程中随机采样这些非目标词汇。这种方法既能提升计算效率又不会造成性能损失。

word2vec2

No.2 t-SNE降维

从词嵌入模型得到的词向量使得相似的词可以聚在一起。如何查看呢?

  • 主要可以通过词向量计算找到近邻词汇;
    • 另一个方法是将多维词向量降为二维空间以直观呈现数据点。

若采用主成分分析(PCA)进行降维操作,则会损失大量数据信息。特别关注语义相关性方面的信息丢失问题,在维持数据点间的局部邻域关系方面则展现了显著优势。

t-SNE 是一种 nonlinear 的无监督降维算法,基于 stochastic neighbor embedding 方法。
其他降维技术包括:
(Principal Component Analysis)、
(Linear Discriminant Analysis)、
(Multidimensional Scaling)、
(Local Contrast Embedding)、
(Isometric Mapping)以及 (Deep Autoencoder)...

一个需要注意的关键点在于,在评估相似程度时,余弦距离在表现上优于L2范数方法。这种优势源于词嵌入向量的维度不受分类任务的影响,而不同词语之间的夹角则决定了它们在分类中的作用。

consine: \frac{V_{cat} * V_{kitty}}{||V_{cat}||*||V_{kittey}||}

L2: ||V_{cat}-V_{kitty}||_2^2

计算余弦距离时,用\frac{V_{cat}}{||V_{cat}||} 归一化效果更好。

No.3 词的类比(word analogies)

通过vector计算进行语义加减、语法加减。

  • semantic analogies
  • syntactic analogies

NO.4 RNN

词嵌入主要关注单个单词的特征提取体系,在面对不同长度的文本序列处理需求时,则必须依赖于RNN结构。

CNN在空间上共享参数,RNN在时间上共享参数

看图:

rnn1

对于每一个时间段而言,在当前时间段内的事件x_i基础上进行预测结果为y_i。其中x_i,y_i,w_i属于同一分类器家族。
假设序列呈现稳定性特征,则对于每一个时间段而言各时间段均可采用同一类型的分类器模型。
既然这是一个序列结构,则需要从前一时间段的状态中提取相关信息。
这种做法可能导致深度神经网络结构的形成,并可能导致数百层甚至上千层的情况出现。

  1. 采用捆绑法(tying)来实现单个模型对过去信息的总结。
  2. 由此形成一个相对简单的重复单元pattern(内部区域)。其中R代表Recurrent Connection层,在模型中与过去的状态相联系;而x则代表输入层。

No.5 BackPropagation Time

在计算神经网络中进行参数更新时,必须涉及对这些参数关于时间的变化率进行反向计算.这些变化率将被作用于相同的参数集合上,并进行一次规模宏大的相互影响更新过程;它们将共享相同的权重值.

BP

若采用SGD方法,则可能导致梯度爆炸( exploding gradient )或导致梯度消失( vanishing gradient )。

SGD适用于无关联的参数的更新。

对此,有两种解决方法:

  1. 一个简单的解决梯度爆炸的方法是使用梯度剪裁(gradient clipping)

在梯度模(|\Delta_{max}|)上升至过高时, 降低学习步长. 具体来说, 当\Delta w < \Delta w \frac{\Delta_{max}}{\max(|\Delta w|, \Delta_{max})}时, 采取此措施

梯度剪裁

相比解决梯度消失问题而言更为困难,在这种情况下模型只能记住最近的历史信息而无法回顾过去的状态

上节我们介绍了RNN的基本组成单位及其工作原理。该模型的核心组件由输入变量x、输出变量y、过去信息past、未来信息future以及权重参数w构成。其中,在中间环节设置了一个典型的神经元节点,在其基础上叠加了线性变换模块以完成信息处理功能。通过将神经元替换为LSTM单元,则能够有效解决梯度消失问题。

rnn2

No.6 LSTM

LSTM简单模型图:

lstm

LSTM重点有三个门:

  • 输入门:神经网络的输入端决定了该神经元是否会将输入信号传递给下一个记忆单元.*
  • 输出门:该神经元的输出端通过一个可学习的权重参数与记忆单元相连,并且只有当激活值大于零时才被访问/读出.*
  • 遗忘门:该神经元通过一个sigmoid函数来决定是否丢弃当前存储的数据,并清空相关单元.*

三个门采用\sigma \in [0.0, 1.0]来设定参数值,在这种情况下:当取值为[...]

进一步说明如下:
每个门都有一个阈值,该阈值由基于前一时刻状态W_{t-1}的一个逻辑回归模型决定。
每个门都共用一套参数。
引入了反曲函数tanh(即双曲正切函数),其作用范围是从-1到+1之间。
这些函数均为连续可导型函数。
它们能够被轻松优化以适应特定需求。

lstm2

关于LSTM,补充更深入的一些知识:

lstm3

No.7 LSTM的正则化

  • L2:works
  • Dropout: input&output works,no connection。

在处理文本序列时预测下一个字母,在t时刻基于RNN模型对所有可能的后续字符进行计算得出多个候选结果,在这些候选结果中采用采样的方式选出一个具有最高概率值的元素并将其加入当前序列末尾随后继续按照这一流程对后续位置进行操作直至完成整个序列的生成。

改进:优化策略:在每一次预测过程中采用多次采样的方法。通过分步处理减少单次错误累积的影响,在每个候选序列中计算其部分字符出现的概率总和,在所有候选序列中选择具有最高概率总和的那个作为基准进行后续预测。

问题:
采用这种方法,假定序列的数目呈几何增长

Beam Search脱颖而出: 在每一次选择阶段,该算法会筛选出最有潜力的若干候选序列,并对多余的分支进行剪裁。

bs

全部评论 (0)

还没有任何评论哟~