注意:本文引用自专业人工智能社区Venus AI
更多AI知识请参考原站 ([www.aideeplearning.cn])
引言
在之前的博文中,我们探讨了全连接神经网络(FCNN)和卷积神经网络(CNN)的结构,以及它们的训练方法和使用场景。值得注意的是,这两种网络结构都是处理独立的输入数据,即它们无法记忆或理解输入数据之间的序列关系——每个输入都被视为与其他输入无关的独立单元。但是,某些任务需要能够更好的处理序列的信息,即前面的输入和后面的输入是有关系的。比如,当我们在理解一句话意思时,孤立的理解这句话的每个词是不够的,而是需要处理这些词连接起来的整个序列;在处理视频的时候,也不能只单独的去分析每一帧,而要分析这些帧连接起来的整个序列。像文本、语言、视频这种信息被称为序列数据,解决序列数据相关的问题,就需要用到深度学习领域中另一类非常重要神经网络:循环神经网络(Recurrent Neural Network,RNN)。
序列数据
序列数据是由一系列有序的元素组成,这些元素按照一定的顺序排列。序列数据的顺序通常包含重要的信息。在深度学习和自然语言处理中,常见的序列数据包括时间序列数据、文本数据、音频数据和视频数据等。
时间序列数据:按照时间顺序记录的数据,例如股票价格、气象数据等。
文本数据:由一系列字符、单词或句子组成,例如新闻文章、书籍等。
音频数据:由一系列音频信号样本组成的数据,例如语音、音乐等。
视频数据:由一系列图像帧组成的数据,例如电影、动画等。
上述的四种序列数据其实存在一个共性,即都存在时间概念。时间序列数据本身就有时间信息,文本数据和音频数据的产生也有时间顺序,视频数据的播放也存在时间概念。所以可以对序列数据某时刻的信息用以下数学公式进行定义:
如果在时间 下观察到数据
, 那么预测
时刻某数据出现的概率应该与
时刻和之前时刻出现的所有信息有关, 即
。我们希望能够对
进行建模,这样就可以根据现有的数据, 来预测未来的数据。我们可以使用条件概率对其进行展开, 即:
从上述公式中, 我们可以发现一个明显的问题, 就是 t 是动态的, 且当 t 变的很大时, 的计算将变的非常复杂。有两个方案可以解决这个问题, 一个是基于马尔可夫假设, 另一个是基于设计潜变量的思想。
马尔可夫假设是一个关于序列数据概率建模的假设, 其基本思想是: 当前状态仅依赖于有限个前驱状态, 而与更早的状态无关。在许多实际应用中, 基于马尔可夫假设的模型能够在计算复杂性和建模精度之间找到一个平衡。以一阶马尔可夫链为例, 其假设当前状态仅依赖于它的前一个状态, 数学表达如下:
其中, xt 表示序列中的第 t 个状态。推广下去, n 阶马尔可夫链的表示如下: