时间序列
时间序列可以是一维,二维,三维甚至更高维度的数据,在深度学习的世界中常见的是三维时间序列,这三个维度分别是(batch_size,time_step,input_dimensions)。
其中time_step是时间步,它是时间序列中的序列长度(seqence_length)。
时间序列是一种序列数据。序列数据是样本与样本之间有着特定的逻辑联系的数据,序列数据通常按照样本与样本之间的逻辑顺序排列,且这种顺序不能被轻易修改和打乱的数据。在序列数据上,我们不仅要学习特征与标签之间的关联,还要学习样本与样本之间的关联,因为序列数据中的样本会根据排序顺序影响彼此,并最终影响到标签的输出和算法的结果。
对于时间序列数据而言,样本与样本之间的关系就是上一个时间点与下一个时间点之间的关系,因此循环神经网络家族采取的手段是——依次处理时间点,并将上一个时间点的信息传递融入下一个时间点的信息的运算过程,使得下一个时间点能够获得上一个时间点传来的信息,从而在两个时间点中建立联系。
LSTM基本架构与原理
LSTM算法的结构本身十分繁复,无论是从网络架构还是数学原理角度出发,我们都很难使用简单的语言将LSTM完整呈现。
设计LSTM的诉求:
创造一个全新的架构,一套全新的数据流,为循环神经网络赋予选择性记忆和选择性传递信息的能力。选择性包含多层含义。
1.循环网络必须自行选择吸纳多少新信息,只留重点,拒绝照单全收
2.循环网络必须自行选择遗忘多少历史信息,主动遗忘无效内容,保留有效内容
3.循环网络必须自行判断,对当前时间步的预测来说最重要的信息是哪些,并将该信息输出给当前时间步,这样既可以保证当前时间步上的预测是最高效的,也不会影响向下一个时间步传递的信息。
LSTM基本结构
记忆细胞
首先,**LSTM依然是一个循环神经网络,因此LSTM的网络架构与RNN高度相似,同时LSTM也是需要遍历所有时间步,不断完成循环和嵌套的。**但不同的是,RNN由输入层(输入Xt),隐藏层和输出层(输出Yt)构成,而LSTM由输入层(输入Xt),记忆细胞(Memory Cell)和输出层(Yt)构成,其中输入,输出层与RNN的输入,输出层完全一致,而记忆细胞是LSTM独有的结构。
**记忆细胞是LSTM的基本计算单元,在记忆细胞中,我们分割长期信息与短期信息,同时赋予循环网络对信息做选择的能力。**循环网络必须自行决定哪些长期信息会被传递下去,哪些短期信息对当前的预测最为有效,因此在记忆细胞当中,LSTM设置了两个关键变量:
1.主要负责记忆短期信息,尤其是当前时间步信息的隐藏状态h
2.主要负责长期记忆的细胞状态C
横向上分割为C传递和h传递两条路径;纵向上分为三个不同路径:
1.帮助循环网络选择吸纳多少新信息的输入门
2.帮助循环网络选择遗忘多少历史信息的遗忘门
3.帮助循环网络选择出对当前时间步的预测来说最重要的信息,并将该信息输出给当前时间步的输出门
遗忘门
**遗忘门是决定要留下多少长期信息C的关键计算单元,其数学本质是令上一个时间步传入的Ct-1乘以[0,1]之间的比例,以此筛选掉部分旧信息。**在这个计算过程中,假设遗忘门令Ct-1乘以0.7,那就是说遗忘门决定了要保留70%的历史信息,遗忘30%历史信息,这30%的信息空间就可以留给全新的信息来使用。
更新细胞状态
当遗忘门决定了哪些信息要被遗忘,输入门决定了哪些信息要被加入到长期记忆后,就可以更新用于控制长期记忆的细胞状态了。
输出门
输出门是从全新的长期信息Ct中筛选出最适合当前时间步的短期信息ht的计算单元,其数字本质是令已经计算好的长期信息Ct乘以[0,1]之间的比例,以此筛选出对当前时间步最有效的信息用于当前时间步的预测。
RNN梯度消失和梯度爆炸
梯度消失和梯度爆炸是RNN在反向传播过程中常见的问题,RNN的反向传播是通过时间的反向传播,其运行流程与一般的反向传播大有不同。