🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 简单循环神经网络 这是一个带循环的简单神经网络: ![](https://img.kancloud.cn/6c/cd/6ccdfdf3d073036df12a431546313814_280x146.png)RNN Network 在该图中,神经网络`N`接受输入`x[t]`以产生输出`y[t]`。由于循环,在下一步`t+1`,输入`y[t]`和输入`x[t+1]`产生输出`y[t+1]`。在数学上,我们将其表示为以下等式: ![](https://img.kancloud.cn/02/13/0213a112b9db125c789b6de48176f976_2620x250.png) 当我们展开循环时,RNN 架构在时间步`t1`看起来如下: ![](https://img.kancloud.cn/81/d5/81d5ac11c8bc4b4bde6d467c71a04c4a_246x149.png) 随着时间步长的发展,这个循环在时间步骤 5 展开如下: ![](https://img.kancloud.cn/57/67/57678316931ad2b0ce2f8c54d3cef8df_830x136.png) 在每个时间步骤,使用相同的学习函数`φ(·)`和相同的参数,`w`和`b`。 输出`y`并不总是在每个时间步产生。相反,在每个时间步产生输出`h`,并且对该输出`h`应用另一个激活函数以产生输出`y`。 RNN 的等式现在看起来像这样: ![](https://img.kancloud.cn/68/c9/68c96ded17fab656e505dc7bf0972912_3010x250.png) ![](https://img.kancloud.cn/13/b4/13b4e64c26ade55217d23ab964bb2220_1870x250.png) 其中, * `w(hx)`是连接到隐藏层的`x`输入的权重向量 * `w(hh)`是来自前一时间步的`h`的值的权重向量 * `w(yh)`是连接隐藏层和输出层的层的权重向量 * 用于`h[t]`的函数通常是非线性函数,例如 tanh 或 ReLU 在 RNN 中,在每个时间步使用相同的参数`w(hx), w(hh), w(yh), b(h), b(y)`。这一事实大大减少了我们需要学习的基于序列模型的参数数量。 由此, RNN 在时间步`t5`如下展开,假设输出`y`仅在时间步`t5`产生: ![](https://img.kancloud.cn/08/5a/085a42ea3df1f086d525f43e7078db5f_835x289.png) 简单的 RNN 由 Elman 在 1990 年引入,因此它也被称为 Elman 网络。然而,简单的 RNN 无法满足我们今天的处理需求,因此我们将在下一节中了解 RNN 的变体。 阅读 Elman 的原始研究论文,了解 RNN 架构的起源: ``` J. L. Elman, Finding Structure in Time, Cogn. Sci., vol. 14, no. 2, pp. 179–211, 1990. ```