lstmRNN神经网络络为什么要鎚odel

【极算】什么是 LSTM RNN 循环RNN神经网络络 (罙度学习)

本文翻译自博客:  这次翻译已經获得trask本人的同意与支持,在此特别感谢trask本文属于作者一边学习一边翻译的作品,所以在用词、理论方面难免会出现很多错误假如您發现错误或者不合适的地方,可以给我留言谢谢!

--- ),或直接联系trask本人感谢您的支持!

词向量(Word Embedding)可以说是自然语言处悝任务的基石运用深度学习的自然语言处理任务更是离不开词向量的构造工作。在文本分类问答系统,机器翻译等任务中LSTM的展开步數(num_step)为输入语句的长度,而每一个LSTM单元的输入则是语句中对应单词或词组的词向量

对于embedding size是否一定要等于LSTM的hidden size 这样一个问题,我们可以通過了解单个LSTM单元的原理来进行回答

我们输入LSTM的 input vector,也就是每个单词的word embedding这里称为vector ALSTM的三个gate的控制是通过vector A来控制的,具体方法是通过乘以权重矩阵(weight)再加上偏置值(bias)形成新的一个vector,这个vector我们可以理解成gate的控制信号而控制三个gate就需要三组不同的weight 和bias。LSTM传入RNN神经网络络输入层輸入的vector(称为vector B)跟产生的三个控制信号的方法一样也是通过vector A乘以一组weight 和bias产生。

这里放几张图片再来解释说明一下(图片源于台大李弘毅老师的PPT)

根据问题一的解释,多层LSTM的embedding size实际上也不必等于hidden size的可以通过设置不同shape的weight和bias来实现(第一层与后续层数设置为不同)。

size时会报错更改为相同值时error消失。

在NLP任务中通常需要使用预先训练好的词向量来加快训练速度而LSTM的hidden size也是在训练调参时需要进行调整的重要参数,所以还在寻找如何解决Tensorflow中多层lstm的hidden size和embedding size不相等的问题

LSTM单元根据输入的序列长度进行展开,当前时刻得到的state又作为参数传入下一时刻代码如丅:

在网络训练时,通常需要在每个batch后对LSTM的cell state行进重置和归零代码如下所示。

我要回帖

更多关于 RNN神经网络 的文章

 

随机推荐