RNN基础
http://blog.csdn.net/heyongluoyao8/article/details/48636251
1. RNN定义
- RNN是用来处理序列数据的
- 在传统的神经网络模型中,是从输入层到隐含层再到输出层,层与层之间是全连接的,每层之间的节点是无连接的。
- 例如预测一个句子中的下一个单词是什么
* RNN。即一个序列当前的输出与前面的输出也有关。
- 具体的表现形式为网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。
- 输入单元:$${x0,x_1,...,x_t,x{t+1},...}$$
- 输出单元:$${s0,s_1,...,x_t,x{t+1},...}$$
- 隐藏单元: $${s0,s_1,...,s_t,s{t+1},...}$$
* 解释
例如有5个单词的词语,则会产生5层的神经网络,每层单表一个单词
$$x_t$$表示第t,$$t=1,2,3,...$$步的输入(可以通过word2vec将其提前量化)
2. RNN的作用
* 语言模型与文本生成
- 给你一个单词序列,我们需要根据前面的单词预测每一个单词的可能性。语言模型能够一个语句正确的可能性,这是机器翻译的一部分
- 另一种应用便是使用生成模型预测下一个单词的概率,从而生成新的文本根据输出概率的采样
- 。语言模型中,典型的输入是单词序列中每个单词的词向量(如 One-hot vector),输出时预测的单词序列。当在对网络进行训练时,如果$$O_t=x_t+1$$,那么第t步的输出便是下一步的输入。
* 机器翻译
- 机器翻译是将一种源语言语句变成意思相同的另一种源语言语句
- 与语言模型关键的区别在于,需要将源语言语句序列输入后,才进行输出,即输出第一个单词时,便需要从完整的输入序列中进行获取