为什么RNN / LSTM网络的权重会随时间共享?


20

我最近对LSTM产生了兴趣,当得知权重在时间上共享时,我感到很惊讶。

  • 我知道,如果您跨时间共享权重,那么您的输入时间序列可以是可变长度。

  • 使用共享权重,您需要训练的参数要少得多。

根据我的理解,之所以转向LSTM而不是其他学习方法,是因为您认为想要学习的数据中存在某种时间/顺序结构/依赖性。如果您牺牲了可变长度的“奢侈”,并接受了较长的计算时间,那么没有共享权重的RNN / LSTM会不会表现得更好(或者在每个时间步中您都有不同的权重),或者我缺少什么?

Answers:


17

可接受的答案集中在问题的实际方面:如果不共享参数,则将需要大量资源。但是,当出现任何严重的计算问题时(根据Wiki的 1980年代),就已经做出了在RNN中共享参数的决定,因此我认为这不是主要的论据(尽管仍然有效)。

参数共享有纯理论上的原因:

  • 它有助于将模型应用于不同长度的示例。在读取序列时,如果RNN模型在训练期间的每个步骤使用不同的参数,则不会将其推广到看不见的不同长度的序列。

  • 通常,序列会根据整个序列的相同规则进行操作。例如,在NLP中:

                                                     “星期一下雪了”

                                                     “星期一在下雪”

...虽然细节在序列的不同部分中,但这两个句子的含义相同。参数共享反映了我们在每一步都执行相同任务的事实,因此,我们不必在句子的每一点都重新学习规则。

LSTM在这个意义上没有什么不同,因此它也使用共享参数。


4
到目前为止,这是比公认的答案更重要的原因!
jlh

我相信我的答案在这里被误解了。我确实说过,如果没有权重分配,将需要更多的计算资源,但这并不是要点。特别是,我还写道,没有权重的模型将更加灵活,因此更容易过度拟合。逐步分配权重是克服这一问题的一种方法。正如此处正确指出的那样,此策略对应于在每个时间步骤都应用相同规则的“先决条件”。因此,这两个答案并非不一致。
user20160

12

“权重共享”的观点来自对RNN的思考,因为RNN随着时间的流逝而展开。如果权重在每个时刻都不相同,那么这将只是一个前馈网络。但是,我想可以用另一种方式来考虑它,即RNN的权重是随时间变化的函数(这可以让您保持处理可变长度序列的能力)。

如果这样做,参数的数量将随时间步长线性增长。对于任意长度的序列,这将是参数的爆炸式增长。如果您有大量的计算资源来运行它并且有大量的数据来约束它,那的确会使网络变得更强大。对于较长的序列,这可能在计算上是不可行的,并且会变得过拟合。实际上,人们通常通过在时间上进行截断的反向传播来朝相反的方向前进,这只会在短时间内(而不是在整个序列中)展开网络。这样做是出于计算可行性。有趣的是,RNN仍然可以学习超出截断长度的时间结构,因为循环单元可以存储以前的内存。


如果您不共享权重,那么您仍将具有在整个时间范围内持续存在的单元状态。具有唯一时间权重的展开的LSTM看起来像前馈网,其中每个“层”都代表一个时间片,但是每个“层”都具有进入的小区状态信息。它类似于前馈,但是增加了单元状态。
beeCwright

0

我认为,由于具有隐藏到隐藏的递归(和分时的权重)的RNN等效于通用图灵机,因此让它们在不同的时间步长具有不同的权重并不能使它们更强大。


您能否详细说明“强大”的含义?对Turing Machines的引用表明您所想到的可能与统计中的含义完全不同。
ub

RNN用于处理数据序列。它们最常见的类型之一将一个序列作为输入,并产生另一个序列作为输出(例如语言翻译系统)。我说一个RNN模型族M1比另一个RNN模型族M2更强大,如果有问题(例如将一组输入序列映射到一组输出序列),那么M1中有一些模型m1可以解决此问题但是M2中没有模型可以解决该问题。
侯赛因
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.