深度学习丨时间序列模型

序列问题在机器学习和统计建模中指的是那些需要考虑数据元素之间顺序或时间依赖关系的问题。这些问题通常涉及到一连串的输入或者输出,这些输入或输出之间的关联不是独立的,而是具有某种前后关联性、时序特征或结构化特性。

例如:

  • 序列预测问题:给定一个时间序列数据(如股票价格、气温变化等),目标是基于过去的数据点预测未来的数据点。

  • 序列标注问题(也称为序列标记):在自然语言处理(NLP)中,这是一个常见的任务类型,比如词性标注(POS tagging)、命名实体识别(NER)或情感分析,其中每个单词或字符都会被分配一个标签,且标签间的分配依赖于上下文序列信息。

  • 隐马尔可夫模型(HMM)中的最优状态序列问题:给定一系列观察值和一个HMM模型,找到最可能产生这些观察值的状态序列。

  • 语音识别:将连续的音频信号转换为对应的文本序列,其中每个音素或词的识别都依赖于前面已识别的部分。

  • DNA序列分析:在生物信息学中,分析DNA或蛋白质序列,寻找特定的模式或功能区域,这里的序列元素是核苷酸或氨基酸,并且它们的性质往往与位置相关联。

总的来说,序列问题的关键特征在于它要求模型能够理解并利用数据内部的时间结构或顺序关系来做出决策或进行预测。

RNN

循环神经网络(RNN)是一种特殊的神经网络结构,它专为处理序列数据而设计。在传统的前馈神经网络(Feedforward Neural Networks)中,信息仅从输入层经过隐藏层流向输出层,而在RNN中,引入了循环机制,使得当前时刻的隐藏层状态不仅取决于当前时刻的输入,还依赖于上一时刻或之前所有时刻隐藏层的状态。这就意味着RNN具有记忆功能,能够捕捉到数据中的时间依赖性或者顺序特征。

形式上,RNN的一个单元可以表示为: 其中h_t是是在时间步t的隐藏层状态,X_t是时间步t的输入,o_t为时间步t的输出,v、c为权重矩阵。

RNN模型图

由于其递归特性,RNN在很多领域有广泛应用,尤其是在自然语言处理(NLP)任务中,如文本分类、情感分析、机器翻译和语音识别等;此外,在时间序列预测、视频动作识别和音乐生成等领域也有出色表现。

更复杂的RNN变体包括长短期记忆网络(LSTM)和门控循环单元(GRU),它们通过引入额外的“门”机制来改进基础RNN,以更好地解决长期依赖问题,即随着序列长度增加,较远过去的信息不容易被有效捕获的问题。

GRU

使用RNN时,矩阵连续乘积可能导致梯度消失或梯度爆炸的问题。解决这类问题最早的方法是LSTM,而门控循环单元GRU是LSTM的简化变体,因此先介绍GRU。

门控循环单元与普通的循环神经网络之间的关键区别在于: 前者支持隐状态的门控。 这意味着模型有专门的机制来确定应该何时更新隐状态, 以及应该何时重置隐状态。

GRU模型图

重置门和更新门

GRU使用了重置门更新门

  • 重置门:控制“可能还想记住”的过去状态的数量,有助于捕获序列中的短期依赖关系。

  • 更新门:控制新状态中有多少个是旧状态的副本,有助于捕获序列中的长期依赖关系。

两个门的输入是由当前时间步的输入和前一时间步的隐状态给出,输出是由使用sigmoid激活函数的两个全连接层给出。数学表达如下: 其中R为重置门,Z为更新门,X为输入,H为隐状态,W为权重参数,b为偏置参数。sigmoid函数将输入值转换到(0,1)区间。

隐状态

在RNN中,我们使用H来表示隐状态,而在GRU中,我们又引入候选隐状态,为做区分,我们将H所表示的称为常规隐状态。

候选隐状态是一个基于部分重置的历史信息和当前输入计算出的新状态。数学表示为: 其中⊙为Hadamard积(按元素乘积)运算符。使用重置门R来控制以往状态的影响,当R接近1时,便退化成普通的RNN。

有了候选隐状态后,我们结合更新门确定新的隐状态: 容易看出,当更新门Z接近1时,模型倾向于保留旧状态;相反,当Z接近0时, 新的隐状态就会接近候选隐状态。

LSTM

长短期记忆网络LSTM虽然出现得比GRU早得多,却比GRU更加复杂。

LSTM模型图

LSTM使用了输入门、忘记门、输出门三个门: 并引入了候选记忆元 候选记忆元的计算与上面描述的三个门的计算类似, 但是使用tanh函数作为激活函数。

我们用C来表示记忆元,输入门I控制采用多少来自候选记忆元的新数据,遗忘门F控制保留多少过去记忆元的内容: 如果遗忘门始终为1且输入门始终为0, 则过去的记忆元将随时间被保存并传递到当前时间步。 引入这种设计是为了缓解梯度消失问题, 并更好地捕获序列中的长距离依赖关系。

最后,我们使用记忆元结合输出门得到隐状态: 只要输出门接近1,我们就能够有效地将所有记忆信息传递给预测部分, 而对于输出门接近0,我们只保留记忆元内的所有信息,而不需要更新隐状态。

LSTM能够在处理时间序列任务时有效地捕获并保持长期依赖关系,从而在语音识别、机器翻译、文本生成等诸多领域取得了显著效果。