0 序言

RNN是一类用于处理序列数据的神经网络。时间序列数据是指在不听时间点上手机到的数据,这类数据反映了某一事物、现象等随时间的变化。序列数据有一个特点:后面的数据跟前面的数据有关系。

一、模型基本结构

RNN循环神经网络模型1-基本结构

其中:

1)Xt代表序列t时刻训练样本的输入;

2) ht代表序列t时刻模型的隐藏状态;

3) ot代表序列t时刻模型的输出;

4) Lt代表序列t时刻模型的损失函数,模型整体的损失函数是所有Lt相加所得;

5)yt代表序列t时刻模型的真实输出;

6)U,W,V是模型的参数,它在整个RNN网络中是共享的,也正是因为它们共享,这体现了RNN模型的“循环反馈”思想。

二、前向传播

RNN循环神经网络模型1-基本结构

三、反向更新算法(back propagation through time)

RNN循环神经网络模型1-基本结构

四、**函数

RNN中的**函数一般有sigmoid、tanh、Relu函数

RNN循环神经网络模型1-基本结构

五、梯度消失问题

    我们可以从中观察到,sigmoid 函数的导数范围是(0, 0.25], tanh 函数的导数范围是 (0, 1] ,他们的导数最大都不大于 1。因此在上面求梯度的乘积中,随着时间序列的不断深入,小数的累乘就会导致梯度越来越小直到接近于 0,这就会引起梯度消失现象。梯度消失就意味着那一层的参数再也不更新了,则模型的训练毫无意义。Relu 函数一定程度上可以解决梯度消失的问题,但是容易引起梯度爆炸的问题。此外 tanh 函数的收敛速度要快于 sigmoid 函数,而且梯度消失的速度要慢于 sigmoid 函数。

  利用BPTT算法训练网络时容易出现梯度消失的问题,当序列很长的时候问题尤其严重,因此上面的RNN模型一般不能直接应用。而较为广泛使用的是RNN的一个特例LSTM。

 

Q:当句子的长度不一致的时候,如何确定T?T是固定大小的吗?

RNN循环神经网络模型1-基本结构

1[batch_size, time_step, embedding]RNN输入的维度信息

2RNN的神经元个数和序列长度没有关系,RNN中的神经元对应embedding的大小,即输入层神经元(LSTM/RNN unit中神经元数)的个数等于词向量的size,跟sequence(序列)无关

3RNN模型是对第一个同一个模型反复的训练for in sequence,整个RNN模型结构跟序列长度没有任何关系,序列长度处理就像一个for循环,是凌驾于RNN模型结构之外的。

对于不同长度的句子,embeding padding every sentence to fixed length,例如

sentence1: 1 34 21 98 10 23 9 23 0 0 0 0 0
sentence2: 17 12 21 12 8 10 13 79 31 44 9 23 0

step5, mapping token to an embeddings:[M,N]

每一列代表一个词向量,M代表输入维度,N代表sequence长度(time_step)