用于处理序列的两种基本的深度学习算法分别是循环神经网络和一维卷积神经网络。
循环神经网络,遍历所有序列元素,并保存一个状态,其中包含与已查看内容相关的信息。实际上,RNN是一类具有内部环恶神经网络。在处理两个不同的独立序列(比如两条不同的评论)之间,RNN的状态会被重置,因此仍可以将一个序列看作单个数据点,即网络的单个输入。真正改变的是,数据点不再是单个步骤中进行处理,相反,网络内部会对所有序列元素进行遍历。
一个简单的RNN传递过程:输入是一个张量序列,编码成(timesteps, input_features)。它对时间步(timesteps)进行遍历,在每个时间步,它考虑t时刻的当前状态和t时刻的输入(形状为input_features),对二者进行计算得到t时刻的输出。然后将下一个时间步的状态设置为上一个时间步的输出。对于第一个时间步,上一个时间步的输出没有定义,所以它没有当前状态,需要初始化为全零向量。
图1 一个简单的RNN结构
增强版的RNN——长短时记忆网络(LSTM):增加了一种携带信息跨越多个时间步的方法。假设有一条传送带,其运行方向平行于你所处理