循环神经网络

循环神经网络(Recurrent Neural Networks)是一种可以用于预测的神经网络,它可以分析诸如股票价格之类的时序数据,并告诉你何时应该买入/卖出。同时也可以在自动驾驶系统中,预测车辆的行进轨迹,从而避免发生交通事故。与其他许多神经网络不同的是,RNNs对于输入的序列长度没有要求。也就是说,你可以将长短不一的参数序列传入RNNs,比如任意一篇文章,或者任意一段音频的采样。这也是RNNs经常被应用于NLP领域的原因之一。更重要的是,RNNs基于时序数据的预测能力,使得它可以胜任包括自动编曲,文本编写等等创造性工作。

循环神经元

对于大部分的神经网络而言,传播方向基本都是一个方向的,也就是比较常见的前馈网络。而对于RNNs来说,它的传播方向是前后双向的。最简单的例子,就是仅由一个循环神经元(recurrent neuron)接收输入 x ( t ) x_{(t)} x(t),以及这个神经元上一时刻的输出 y ( t − 1 ) y_{(t-1)} y(t1)。如果我们将它在时间上进行延拓,就可以得到下图中展示的效果。
循环神经网络_第1张图片

因此,生成一个由循环神经元组成的层十分简单 —— 只需要让每一个神经元在任一时刻,都接收 x t x_{t} xt的传入以及上一时刻的输出 y ( t − 1 ) y_{(t-1)} y(t1)就可以了。每一个循环神经元都有两组权重,即输入 x ( t ) x_{(t)} x(t)的权重 w x w_x wx以及前一时刻输出 y ( t − 1 ) y_{(t-1)} y(t1)的权重 w y w_y wy。对于单一循环神经元而言,任一时刻的输出 y ( t ) y_{(t)} y(t),可以被表示为:
y ( t ) = ϕ ( x t T ⋅ w x + y ( t − 1 ) T ⋅ w y + b ) y_{(t)}=\phi(x^T_t\cdot w_x+y^T_{(t-1)}\cdot w_y+b) y(t)=ϕ(xtTwx+y(t1)Twy+b)
其中 b b b为偏置项, ϕ \phi ϕ为激活函数。将这样的神经元组成神经网络中的一个层,就可以得到一个循环神经层。即该层上一时刻的输出将会作为下一时刻输入的一部分:
循环神经网络_第2张图片
因此对于整个层的输出可以表示为:​
Y ( t ) = ϕ ( X ( t ) ⋅ W x + Y ( t − 1 ) ⋅ W y + b ) Y_{(t)}=\phi(X_{(t)}\cdot W_x+Y_{(t-1)}\cdot W_y+b) Y(t)=ϕ(X(t)Wx+Y(t1)Wy+b)
化简为:
Y ( t ) = ϕ ( [ X ( t )   Y ( t − 1 ) ] ⋅ W + b )   w i t h   W = [ W x W y ] Y_{(t)}=\phi \left(\left[X_{(t)} \ Y_{(t-1)} \right ] \cdot W + b \right )\ with\ W=\begin{bmatrix} W_{x}\\ W_{y}\end{bmatrix} Y(t)=ϕ([X(t) Y(t1)]W+b) with W=[WxWy]
其中:

  • Y ( t ) Y_{(t)} Y(t)​是一个大小为 m × n n e u r o n s m \times n_{neurons} m×nneurons,包含 t t t时刻所有输出的矩阵。其中 m m m是该层mini-batch中所有实例的个数, n n e u r o n s n_{neurons} nneurons是神经元的个数。
  • X ( t ) X_{(t)} X(t)是一个大小为 m × n i n p u t s m \times n_{inputs} m×ninputs,包含所有实例的输入的矩阵。其中 n i n p u t s n_{inputs} ninputs是输入特征的数量。
  • W x W_x Wx​是一个大小为 n i n p u t s × n n e u r o n s n_{inputs} \times n_{neurons} ninputs×nneurons,包含输入对于当前时刻的连接权重的权重矩阵。
  • W y W_y Wy​是一个大小为 n n e u r o n s × n n e u r o n s n_{neurons} \times n_{neurons} nneurons×nneurons,包含输出对于前一时刻的连接权重的权重矩阵。
  • ​这两个权重矩阵 W x W_x Wx W y W_y Wy经常被拼接成为一个大小为 ( n i n p u t s + n n e u r o n s ) × n n e u r o n s \left ( n_{inputs}+n_{neurons} \right )\times n_{neurons} (ninputs+nneurons)×nneurons的独立的权重矩阵 W W W
  • b b b​是一个大小为 n n e u r o n s n_{neurons} nneurons,包含每个神经元的偏置项的向量。
from tensorflow.keras


你可能感兴趣的:(机器学习,深度学习,循环神经网络,TensorFlow,RNN,人工智能)