检查DNC的体系结构确实显示出与LSTM的许多相似之处。考虑您链接到的DeepMind文章中的图:
将此与LSTM架构进行比较(在SlideShare上的ananth贷记):
这里有一些相似的例子:
- 就像LSTM一样,DNC将执行从输入到固定大小状态向量(LSTM中的h和c)的某种转换。
- 同样,DNC将执行从这些固定大小的状态向量到潜在任意长度输出的某种转换(在LSTM中,我们反复从模型中采样直到满意为止/模型表明已完成)。
- LSTM的“ 忘记”和“ 输入”门代表DNC中的写操作(“忘记”本质上只是将存储器归零或部分归零)
- LSTM 的输出门代表DNC中的读取操作
但是,DNC绝对不只是LSTM。最明显的是,它利用了一个更大的状态,该状态被离散化(可寻址)成块。这使它可以使LSTM的忘记门更加二进制。我的意思是,状态不一定在每个时间步都被侵蚀掉,而在LSTM(具有S型激活函数)中,状态一定会被侵蚀。这可以减少您提到的灾难性忘记的问题,从而更好地扩展规模。
DNC在内存之间使用的链接中也很新颖。但是,与我们用每个门的完整神经网络而不是仅一个具有激活功能的单层神经网络(称为超级LSTM)重新构想LSTM相比,这可能比LSTM更具微不足道的改进。在这种情况下,我们实际上可以通过功能强大的网络来学习内存中两个插槽之间的任何关系。虽然我不知道DeepMind所建议的链接的具体细节,但他们在文章中暗示他们只是通过像常规神经网络一样反向传播梯度来学习所有内容。因此,从理论上讲,它们在链接中编码的任何关系都可以被神经网络学习,因此足够强大的“ super-LSTM”应该能够捕获它。
综上所述,在深度学习中通常会出现两个具有相同理论表达能力的模型在实践中表现出极大的差异。例如,考虑到循环网络可以表示为庞大的前馈网络,如果我们将其展开。同样,卷积网络也不比普通神经网络好,因为它具有一定的表达能力。实际上,对其重量施加的约束使其更有效。因此,比较两个模型的表现力并不一定是它们在实践中的性能的公平比较,也不一定是它们可扩展性的准确预测。
我对DNC的一个疑问是当内存不足时会发生什么。当经典计算机的内存不足并请求另一个内存块时,程序开始崩溃(最好)。我很想知道DeepMind计划如何解决这个问题。我认为这将依赖于当前正在使用的内存的某些智能替代。从某种意义上说,当内存压力达到一定阈值时,当操作系统要求应用程序释放非关键内存时,计算机当前会执行此操作。