CSC321 神经网络语言模型 RNN-LSTM

主要两个方面

  1. Probabilistic modeling

    概率建模,神经网络模型尝试去预测一个概率分布

  2. Cross-entropy作为误差函数使得我们可以对于观测到的数据

    给予较高的概率值

    同时可以解决saturation的问题

  3. 前面提到的线性隐层的降维作用(减少训练参数)

?
?

这是一个最初版的神经网络语言模型

?
?

  1. 选取什么要的loss function,为什么用cross-entropy,为什么不用squared loss呢?

首先
可以看到 cross-entropy更能从数值上体现0.01,0.0001两个预测的真实差别

另外一点是saturation

考虑sigmoid的激活单元输出y

考虑Cost和z之间的对应关系

?
?

由于cross-entropy的话
是convex的
所以没有局部的最优解只有全局最优解,因此更容易optimize

?
?

  1. 线性隐层单元

    等价于embedding矩阵的lookup, R是embedding矩阵或者叫做lookup table

    那么如何起到了降维效果,怎样降低了训练的参数?

    ?
    ?

    embedding降维

  2. 当前神经网络语言模型的局限

    这个语言模型其实就是和word2vec的skip-gram model所对应的 continuous bag of words model(cbow)

    Word2vec是从一个词预测周围的词
    这个是从周围的词预测中心词
    ,语言模型特定是从前几个词预测当前词

    这意外着我们只能使用类似NGRAM,遵循markov assumption 而不能利用前几个词之外的更多信息

    ?
    ?

    但是有时候长距离的语境也是有意义的比如

    ?
    ?

  3. RNN模型

    RNN模型可以解决上述问题,可以学习到长距离的依赖关系

    ?
    ?

    这是一个简单的RNN例子,将输入加和。

  4. RNN的训练

    这和之前的普通神经网络训练的backprop算法是一样的
    也是 backprop只是这里有两个新的问题

  • Weight constraints
    权重限制
  • Exploding and vanishing gradients
    梯度的爆炸和消失

?
?

5.1 关于权重的限制

也就是说随着时间所有的单元的输出weight限制为相同的

一个hidden 到hidden的weight的例子

?
?

具体一个rnnlm实现的例子
参考http://www.cnblogs.com/rocketfan/p/4953290.html
关于rnnlm的图和介绍。

?
?

5.2 关于梯度的爆炸和消失

?
?

真正的问题不是backprop而是长距离的依赖非常复杂,梯度的爆炸和消失易于在backprop过程中传递叠加出现。

大于1的梯度不断传递
带来梯度爆炸,小于1的梯度不断传递带来梯度消失。

?
?

解决rnn的梯度爆炸和消失的方案:

  1. LSTM
  2. 将输入或者输出序列逆序,这样网络可以先看到近距离的依赖,然后再尝试学习困难的远距离的
  3. 梯度截断

Rnnlm,fater-rnnlm采用的第三种方法,强制截断梯度避免梯度爆炸

?
?

  1. LSTM

LSTM通过将单一的单元替换成复杂一些的记忆单元来解决这个问题

?
?

tensorflow关于LSTM的例子

https://github.com/jikexueyuanwiki/tensorflow-zh/blob/master/SOURCE/tutorials/recurrent/index.md

http://colah.github.io/posts/2015-08-Understanding-LSTMs/

这里提到当距离较短时,rnn可以学习到历史的信息,但是当距离较长的情况下rnn是无能为力的。

短距离的例子,预测sky

长距离的例子,预测French

?
?

下面这个图非常清楚
普通的rnn,对应值做一个简单的非线性单元比如sigmoid,tanh

struct?SigmoidActivation?: public IActivation {

void?Forward(Real* hidden, int size)?{

for (int i = 0; i < size; i++) {

hidden[i] = exp(hidden[i]) / (1 + exp(hidden[i]));

}

}

?
?

来自 <http://www.cnblogs.com/rocketfan/p/4953290.html>

?
?

?
?

?
?

LSTM将单一的神经网络层变成了4个。

?
?

The LSTM does have the ability to remove or add information to the cell state, carefully regulated by structures called gates.

?
?

来自 <http://colah.github.io/posts/2015-08-Understanding-LSTMs/>

?
?

LSTM可以通过gates的条件来给cell state去掉或者增加信息

?
?

第一步是丢弃信息

forget gate layer

It looks at?ht?1?and?xt, and outputs a number between?0?and?1?for each number in the cell state?Ct?1. A?1?represents "completely keep this" while a?0?represents "completely get rid of this."

?
?

通过结合前一步输出和当前输入,输出一个0-1直接的数值(sigmoid),1表示全部保留,0表示全部丢弃。

举一个例子,比如语言模型,结合当前主题的性别信息来判断当前代词是she,he?

当遇到新的主题我们需要忘记掉之前的主题的性别信息

第二步是确定要保留的信息

对应语言模型的例子,遇到新的主题我们添加当前主题的性别信息

两次变化 sigmoid input layer gate + tanh layer

?
?

第三步:前两步结合到一起,丢弃掉之前的性别信息 + 加入当前的性别信息

?
?

第四步:
最后输出

Finally, we need to decide what we‘re going to output. This output will be based on our cell state, but will be a filtered version. First, we run a sigmoid layer which decides what parts of the cell state we‘re going to output. Then, we put the cell state through?tanh?(to push the values to be between??1?and?1) and multiply it by the output of the sigmoid gate, so that we only output the parts we decided to.

For the language model example, since it just saw a subject, it might want to output information relevant to a verb, in case that‘s what is coming next. For example, it might output whether the subject is singular or plural, so that we know what form a verb should be conjugated into if that‘s what follows next.

?
?

来自 <http://colah.github.io/posts/2015-08-Understanding-LSTMs/>

?
?

?
?

时间: 2024-08-28 09:11:38

CSC321 神经网络语言模型 RNN-LSTM的相关文章

深度学习BP算法的推导(附加RNN,LSTM的推导说明)

注:1)这篇文章主要参考Alex Graves的博士论文<Supervised Sequence Labelling with Recurrent Neural Networks> 详细介绍其关于BP算法的推导过程. 2)论文没有提到过偏差的处理,不过如果能耐心推导出论文给出的公式,那么这将十分简单. 3)由于是结合语音训练的,最后是softmax出来是获得有限结果的概率值,然后做交叉熵作为目标函数,所以可能与其他的网络不一致,但是反馈的推导应该是一样的,除了输出层和最后一个隐层之间的个推导.

CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)

CNN(卷积神经网络).RNN(循环神经网络).DNN(深度神经网络)的内部网络结构有什么区别? DNN以神经网络为载体,重在深度,可以说是一个统称.RNN,回归型网络,用于序列数据,并且有了一定的记忆效应,辅之以lstm.CNN应该侧重空间映射,图像数据尤为贴合此场景. DNN以神经网络为载体,重在深度,可以说是一个统称.RNN,回归型网络,用于序列数据,并且有了一定的记忆效应,辅之以lstm.CNN应该侧重空间映射,图像数据尤为贴合此场景. Stanford University CS231

牛津大学神经网络语言模型 OxLM 安装及使用

预备知识 语言模型 [摘自 维基百科] 统计式的语言模型是借由一个概率分布,而指派概率给字词所组成的字串: 语言模型经常使用在许多自然语言处理方面的应用,如语音识别,机器翻译,词性标注,句法分析和资讯检索.由于字词与句子都是任意组合的长度,因此在训练过的语言模型中会出现未曾出现的字串(资料稀疏的问题),也使得在语料库中估算字串的概率变得很困难,这也是要使用近似的平滑n元语法(N-gram)模型之原因. 在语音辨识和在资料压缩的领域中,这种模式试图捕捉语言的特性,并预测在语音串列中的下一个字. 当

rnn,lstm and JuergenSchmidhuber

JuergenSchmidhuber 是瑞士的一位牛人,主要贡献是rnn, lstm. google的deep mind新作,Human-level control through deep reinforcement learning一文出来,这位大神表达了不满.原因就是文章中提到说他们是第一次实现了rnn的强化学习什么什么的吧.而这位牛人其实早前的工作实现过的.看了一下,觉得这个争论真是google太过于自大了,其实自从看到google的不少文章错误百出,很多地方前后写的不一致,然后今年竟然

TensorFlow(十一):递归神经网络(RNN与LSTM)

RNN RNN(Recurrent Neural Networks,循环神经网络)不仅会学习当前时刻的信息,也会依赖之前的序列信息.由于其特殊的网络模型结构解决了信息保存的问题.所以RNN对处理时间序列和语言文本序列问题有独特的优势.递归神经网络都具有一连串重复神经网络模块的形式.在标准的RNNs中,这种重复模块有一种非常简单的结构. 那么S(t+1) = tanh( U*X(t+1) + W*S(t)).tanh激活函数图像如下: 激活函数tanh把状态S值映射到-1和1之间. RNN通过BP

Tensorflow - Tutorial (7) : 利用 RNN/LSTM 进行手写数字识别

1. 经常使用类 class tf.contrib.rnn.BasicLSTMCell BasicLSTMCell 是最简单的一个LSTM类.没有实现clipping,projection layer.peep-hole等一些LSTM的高级变种,仅作为一个主要的basicline结构存在,假设要使用这些高级变种,需用class tf.contrib.rnn.LSTMCell这个类. 使用方式: lstm = rnn.BasicLSTMCell(lstm_size, forget_bias=1.0

Word Embedding/RNN/LSTM

Word Embedding Word Embedding是一种词的向量表示,比如,对于这样的"A B A C B F G"的一个序列,也许我们最后能得到:A对应的向量为[0.1 0.6 -0.5],B对应的向量为[-0.2 0.9 0.7]. 之所以希望把每个单词变成一个向量,目的还是为了方便计算,比如"求单词A的同义词",就可以通过"求与单词A在cos距离下最相似的向量"来做到. 那么如何进行词嵌入呢?目前主要有三种算法: Embedding

RNN - LSTM - GRU

循环神经网络 (Recurrent Neural Network,RNN) 是一类具有短期记忆能力的神经网络,因而常用于序列建模.本篇先总结 RNN 的基本概念,以及其训练中时常遇到梯度爆炸和梯度消失问题,再引出 RNN 的两个主流变种 -- LSTM 和 GRU. Vanilla RNN Vanilla RNN 的主体结构: 上图中 \(\bf{X, h, y}\) 都是向量,公式如下: \[ % <![CDATA[ \begin{align} \textbf{h}_{t} &= f_{\

循环神经网络(RNN)入门详细介绍

循环神经?络是为更好地处理时序信息而设计的.它引?状态变量来存储过去的信息,并?其与当前的输?共同决定当前的输出.循环神经?络常?于处理序列数据,如?段?字或声?.购物或观影的顺序,甚?是图像中的??或?列像素.因此,循环神经?络有着极为?泛的实际应?,如语?模型.?本分类.机器翻译.语?识别.图像分析.?写识别和推荐系统. 1.引入 对于2句话,都有Taipei这个词,但是一个是目的地,一个是出发地 如果神经网络有记忆力,能够根据上下文对同样的input词汇产生不同的输出,我们就能解决这个问题