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

Posted

技术标签:

【中文标题】为啥我们应该使用 RNN 而不是马尔可夫模型?【英文标题】:Why should we use RNNs instead of Markov models?为什么我们应该使用 RNN 而不是马尔可夫模型? 【发布时间】:2018-01-02 15:37:10 【问题描述】:

最近我偶然发现了this article,我想知道从递归神经网络(如上文所述)和简单的马尔可夫链中得到的结果有什么区别。

我不太了解 RNN 引擎盖下发生的线性代数,但您似乎基本上只是在设计一种超级复杂的方法,为下一个字母将基于以前的字母,在马尔可夫链中非常简单地完成的事情。

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

【问题讨论】:

【参考方案1】:

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

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

Karpathy 的博客文章逐个字符地列出了由 RNN 生成的 C 源代码。该模型令人印象深刻地捕捉了诸如左括号和右括号之类的依赖关系。

【讨论】:

以上是关于为啥我们应该使用 RNN 而不是马尔可夫模型?的主要内容,如果未能解决你的问题,请参考以下文章

隐马尔可夫模型——马尔可夫模型(转载)

隐马尔可夫模型——隐马尔可夫模型的构成(转载)

Python实现HMM(隐马尔可夫模型)

用隐马尔可夫模型做基因预测

隐马尔可夫模型

HMM(隐马尔可夫模型)