我正在尝试构建一个包含卷积和LSTM(使用Torch库)的神经网络,通过Q学习或优势学习进行训练,这两者都需要在更新状态T的权重之前通过网络传播状态T + 1.
必须进行额外的传播会降低性能并且这很糟糕,但也不会太糟糕; 然而,问题是在这种情况下存在各种各样的状态.首先,反向传播的Torch实现具有一些效率快捷方式,这些快捷方式依赖于在前向传播之后立即发生的反向传播,这会导致额外的传播混乱.我可以通过让二级克隆网络共享权重值来解决这个问题,但我们遇到了第二个问题.
涉及LSTM的每个前向传播都是有状态的.当传播网络(T + 1)可能改变了LSTM的内容时,如何在T + 1更新权重?我试着看看在TD-Gammon中对TD重量更新的讨论,但它对我来说是迟钝的,无论如何都是前馈,而不是经常性的.
如何更新网络的权重,而不必将网络推进到T + 1,或者如何将网络推进到T + 1然后返回并调整权重,就好像它仍然是T?
reinforcement-learning neural-network temporal-difference torch lstm
如果TensorFlow涉及对同一计算(子)图的多次调用,它是否可以自动缓存计算?
例如,我有一个矩阵F,其中每个条目代表基于可训练变量的计算W.我的目标函数用不同的向量将这个矩阵乘以几次(每次都用不变的W).
例如,TensorFlow会F[1,2]在我访问它时重新计算,还是会缓存该值?
理论上,人们可以预先计算F给定固定的矩阵W,这样每个条目F都是a tf.constant.但这会妨碍正确计算梯度W.