在 RNN 中学习初始状态
机器算法验证
lstm
循环神经网络
2022-03-12 22:10:18
2个回答
我假设您了解如何学习 RNN 中的所有其他权重。
所有状态都需要计算,即我们必须获取一些输入并将它们与一些权重矩阵相乘,然后将结果乘积通过一些激活函数,最终获得一个状态。
初始状态很奇怪,因为我们不是通过获取一些初始输入和权重矩阵的乘积来计算它们并使用激活函数——我们可以简单地“给”它们一些随机值。它们本质上是权重。
与其“手动”为它们分配一些值,不如像学习其他权重一样学习它们?这意味着我们必须对这些初始权重进行梯度,并像其他权重一样更新它们。
考虑它的另一种方法是考虑以下场景:让我们使用初始输入。我们可以将初始输入固定为并学习一个初始权重矩阵。初始输入的乘积 () 并且初始权重矩阵将为您提供初始状态。在测试时,我们将继续使用初始输入并将其与将产生初始状态的初始权重矩阵相乘。权重不会改变,所以初始状态也不会改变,而不是总是相乘使用初始权重矩阵,您可以只保存初始状态。现在你基本上已经学会了一个初始状态!
其中一种方法在这里: http ://r2rt.com/non-zero-initial-states-for-recurrent-neural-networks.html
也许你可以创建两个 RNN(我从未尝试过,它只是在我脑海中浮现):第一个 RNN 将查看系列并学习状态。然后你可以将状态复制到下一个 rnn,它会尝试做你需要的东西。您可以端到端地学习它们。
其它你可能感兴趣的问题