Answers:
可接受的答案集中在问题的实际方面:如果不共享参数,则将需要大量资源。但是,当出现任何严重的计算问题时(根据Wiki的 1980年代),就已经做出了在RNN中共享参数的决定,因此我认为这不是主要的论据(尽管仍然有效)。
参数共享有纯理论上的原因:
它有助于将模型应用于不同长度的示例。在读取序列时,如果RNN模型在训练期间的每个步骤使用不同的参数,则不会将其推广到看不见的不同长度的序列。
通常,序列会根据整个序列的相同规则进行操作。例如,在NLP中:
“星期一下雪了”
“星期一在下雪”
...虽然细节在序列的不同部分中,但这两个句子的含义相同。参数共享反映了我们在每一步都执行相同任务的事实,因此,我们不必在句子的每一点都重新学习规则。
LSTM在这个意义上没有什么不同,因此它也使用共享参数。
“权重共享”的观点来自对RNN的思考,因为RNN随着时间的流逝而展开。如果权重在每个时刻都不相同,那么这将只是一个前馈网络。但是,我想可以用另一种方式来考虑它,即RNN的权重是随时间变化的函数(这可以让您保持处理可变长度序列的能力)。
如果这样做,参数的数量将随时间步长线性增长。对于任意长度的序列,这将是参数的爆炸式增长。如果您有大量的计算资源来运行它并且有大量的数据来约束它,那的确会使网络变得更强大。对于较长的序列,这可能在计算上是不可行的,并且会变得过拟合。实际上,人们通常通过在时间上进行截断的反向传播来朝相反的方向前进,这只会在短时间内(而不是在整个序列中)展开网络。这样做是出于计算可行性。有趣的是,RNN仍然可以学习超出截断长度的时间结构,因为循环单元可以存储以前的内存。