时间序列问题与自然语言处理的区别
在技术上,经常会把时间序列问题和自然语言处理问题类比,因为两者都是时序数据,所以两类问题的模型经常相互借用。
但两者还是有一定区别的,自然语言本质上还是符号序列,而通常考虑的时间序列问题是数值序列。
RNN 原本是用于时间序列建模,用其函数逼近的功能来仿真一个非线性动态系统,多用于工程控制领域。早期的自然语言处理是不用 RNN 的,而是建立词空间的随机过程模型,如隐马尔科夫模型,认为语句的形成是源于词空间的离散元素之间依概率的游走。
随着神经网络技术的发展,RNN 的训练变得更容易,大家开始考虑用 RNN 来做处理自然语言了。但要把离散的单词序列和动态系统联系起来,就要用到一个假设:语言可以用隐变量(语义)空间的动态系统来描述。表面上是一个个独立的词语拼成的句子,实际上在语义空间是一条连续的路径,这也是 word2vec 学习词表示的核心思想。
到了现在嘛,大家发现 RNN 处理自然语言还是不太给力,原因就是上面的假设有点牵强。Attention 机制的兴起实际上就是为了打破传统 RNN 的严格的时序结构,说到底还是因为自然语言是符号序列,并不具有数值序列中元素与前后邻居之间的连续性。
现在时间序列预测也开始借鉴自然语言处理中的注意力机制来处理非季节性的序列。非季节性数值序列从另一个角度也可以看成是符号序列,把时间分段后每一段抽象成一个元素即可。