【问题标题】:Simple RNN example showing numerics显示数字的简单 RNN 示例
【发布时间】:2018-04-26 18:49:11
【问题描述】:

我正在尝试理解 RNN,我想找到一个简单的示例,它实际上显示了一个热向量和数值运算。最好是概念性的,因为实际代码可能会使它更加混乱。我在谷歌上搜索的大多数示例只是显示带有循环的框,并且很难理解到底发生了什么。在它们确实显示向量的极少数情况下,仍然很难看到它们是如何获取值的。

例如我不知道这张图片中的值来自哪里https://i1.wp.com/karpathy.github.io/assets/rnn/charseq.jpeg

如果该示例可以集成 LSTM 和其他流行的扩展,那也很酷。

【问题讨论】:

    标签: machine-learning deep-learning lstm rnn


    【解决方案1】:

    在简单的 RNN 案例中,网络接受输入序列 x 并生成输出序列 y,而隐藏序列 h 存储网络的动态状态,使得在时间步 i: x(i) ∊ ℝM, h(i) ∊ ℝN, y(i) ∊ ℝP 分别对应输入、隐藏和输出值的 M/N/P 维的实值向量。 RNN 根据状态方程改变其状态并省略输出:

    1. h(t) = tanh(Wxh ∗ [x(t); h(t-1)]),其中 Wxh 是一个线性映射:ℝ M+N ↦ ℝN, * 矩阵乘法和 ;串联操作。具体来说,要获得 h(t),您将 x(t) 与 h(t-1) 连接,您在 Wxh (形状为 (M+N, N))和连接的向量(形状为 M+N),并且您对结果向量(形状为 N)的每个元素使用 tanh 非线性。
    2. y(t) = sigmoid(Why * h(t)),其中 Why 是一个线性映射:ℝN ↦ ℝP。具体来说,您在 Why (形状为 (N, P))和 h(t) (形状为 N)之间应用矩阵乘法以获得 P 维输出向量,其上的 sigmoid 函数为已应用。

    换句话说,要获得时间 t 的输出,需要在 i=0,1,...,t 的情况下迭代上述方程。因此,隐藏状态充当系统的有限内存,允许依赖于上下文的计算(即 h(t) 完全取决于计算历史和当前输入,y(t) 也是如此)。

    在门控 RNN(GRU 或 LSTM)的情况下,由于门控机制本质上允许在输入和内存之间进行选择,状态方程变得有些难以遵循,但核心概念保持不变。


    数值示例

    让我们以你为榜样;我们有 M = 4,N = 3,P = 4,所以 Wxh 的形状为 (7, 3),Why 的形状为 (3, 4)。我们当然不知道任何一个 W 矩阵的值,因此我们无法重现相同的结果;不过,我们仍然可以遵循这个过程。

    • 在时间步 t
    • 在时间步 t=0,我们收到输入 x(0) = [1, 0, 0, 0]。将 x(0) 与 h(0-) 连接起来,我们得到 [x(t); h(t-1)] = [1, 0, 0 ..., 0] (我们称这个向量 u 以简化符号)。我们应用 u * Wxh (即将一个 7 维向量与一个 7 x 3 矩阵相乘)并得到一个向量 v = [v1, v2 , v3],其中 vi = Σj uj Wji = u1 W1i + u2 W2i + ... + u7 W7i。最后,我们对 v 应用 tanh,得到 h(0) = [tanh(v1), tanh(v2), tanh(v3子>)] = [0.3, -0.1, 0.9]。从 h(0) 我们也可以通过相同的过程得到 y(0);将 h(0) 与 Why 相乘(即具有 3 x 4 矩阵的 3 维向量),得到向量 s = [s1, s2, s3, s4],对 s 应用 sigmoid 得到 σ(s) = y(0)。
    • 在时间步 t=1,我们收到输入 x(1) = [0, 1, 0, 0]。我们将 x(1) 与 h(0) 连接起来,得到一个新的 u = [0, 1, 0, 0, 0.3, -0.1, 0.9]。 u 再次与 Wxh 相乘,并且 tanh 再次应用于结果,得到 h(1) = [1, 0.3, 1]。类似地,h(1) 乘以 Why,得到一个新的 s 向量,我们在其上应用 sigmoid 得到 σ(s) = y(1)。
    • 这个过程一直持续到输入序列完成,结束计算。

    注意:我忽略了上述方程中的偏差项,因为它们不影响核心概念,并且它们使符号无法遵循

    【讨论】:

    • 谢谢,你能把这个或给我看一个尽可能简单的网络的视觉形式的例子吗?你能告诉我他们是如何在我发布的链接中获得这些数字的吗?
    • 我不能确切地告诉你他们是如何得到这些特定数字的,因为我不知道权重 W 并且解决方案不是唯一的,但我可以组成类似的东西。明天早上我会做的第一件事。
    • 添加了您上传的示例的粗略概述。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-11
    • 2018-12-28
    • 2016-01-28
    • 2014-04-03
    • 1970-01-01
    • 1970-01-01
    • 2012-04-23
    相关资源
    最近更新 更多