RNN 简介

1. 简介

RNN, Recurrent Neural Network, 循环神经网络.
与普通前馈网络最大的区别是, 网络节点在t时刻的输出不仅依赖于t时刻的输入, 还依赖前一时刻的输出与状态. 即
h t , c t = f ( h t − 1 , c t − 1 , x t ) h_t,c_t=f(h_{t-1},c_{t-1},x_t) ht,ct=f(ht1,ct1,xt)
h h h 为cell 输出, c c c 为cell 状态.


图 RNN 示意

2. time_step

因为t, t-1 这个时序关系, 它要求训练数据也是有时序的, 时序的长度为 time_step . 把 RNN 中输入与输出的超参数列举见下:

  • input_time_step
    输入数据的序列长度.
    如拿最近3个时刻的样本与去预测, 序列长度就是3.
  • input_size
    输入特征的维度.
  • X
    所以网络的输入就是(batch_size,time_step,input_size)
    具体见参考[3].
  • output_time_step
    时序关系传递到 rnn 网络的输出, 也就有了output_time_step.
    如拿当前若干个时刻与去预测未来2个时刻的输出, 这个序列长度就是2.
  • output_size
    输出的维度, 回归问题就是1.

3. 应用举例

3.1 sin x 时序预测

预测 sin ⁡ ( x ) \sin (x) sin(x) 序列, 设 input_time_step =3, output_time_step=1, 就是拿最近3个时刻的输入去预测下个时刻的输出.
此问题中 input_size 与 output_size 都是1.

训练集就是 X= ( x 1 , x 2 , x 3 ) (x_1,x_2,x_3) (x1,x2,x3), 输出label = x 4 x_4 x4.
Q:如何得到训练集呢?
拿产生好的 sin (x) 序列, 比如 1000 个点, 用滑动窗口, 不断地得到 X 与 lable.

3.2 股票最高价预测

仍旧以 input_time_step =3, output_time_step=1 举例.
用当前三天的股价情况去预测下一天的最高价.
用到的特征会多一点, 如 开盘价, 收盘价, 成交量, 换手率 等. 这样的话 input_size=4.

3.3 翻译问题

4. tensorflow 处理input与output

可以参见[1].

参考

  1. paper, 2014,Recurrent Neural Network Regularization
  2. LSTM 简介
  3. MNIST, handwritten LSTM 实操

你可能感兴趣的:(RNN 简介)