为什么我们应该使用 RNN 而不是马尔可夫模型?

Why should we use RNNs instead of Markov models?

最近我偶然发现了 this article,我想知道从循环神经网络(如上文所述)和简单的马尔可夫链中获得的结果有何不同。

我不太了解 RNN 中发生的线性代数,但看起来您基本上只是在设计一种超级复杂的方法来为下一个字母将基于的内容制作统计模型在前面的字母中,在马尔可夫链中非常简单地完成了一些事情。

为什么 RNN 很有趣?仅仅是因为它们是一个更通用的解决方案,还是我遗漏了什么?

马尔可夫链假定马尔可夫属性,它是"memoryless"。下一个符号的概率是根据前面的 k 个符号计算的。在实践中,k 被限制为较低的值(比如 3-5),因为转移矩阵呈指数增长。因此,隐马尔可夫模型生成的句子非常不一致。

另一方面,RNN(例如具有 LSTM 单元)不受马尔可夫 属性 的约束。它们丰富的内部状态使它们能够跟踪远距离的依赖关系。

Karpathy 的博客 post 逐字符列出了由 RNN 生成的 C 源代码。该模型令人印象深刻地捕获了左括号和右括号等事物的依赖关系。