在 RNN 序列到序列模型中,编码输入隐藏状态和输出隐藏状态需要在训练之前进行初始化。
我们应该用什么值来初始化它们?我们应该如何初始化它们?
在PyTorch 教程中,它只是将零初始化为隐藏状态。
初始化零是在 RNN seq2seq 网络中初始化隐藏状态的常用方法吗?
glorot初始化怎么样?
对于单层 vanilla RNN,扇入和扇出不等于这给出了一个方差和高斯分布给我们一个均匀的分布s。
for-each input-hidden weight
variance = 2.0 / (fan-in +fan-out)
stddev = sqrt(variance)
weight = gaussian(mean=0.0, stddev)
end-for
对于带有注意力的单层编码器-解码器架构,如果我们使用 glorot,我们将在初始化解码器隐藏状态时得到非常小的方差,因为扇入将包括映射到编码器输出的所有可能词汇表的注意力. 所以我们也得到了 ~= 0 的高斯平均值,因为 stdev 真的很小。
还有哪些其他初始化方法,尤其是。用于 RNN seq2seq 模型?