我在尝试在脑海中构建LSTM的结构时,不理解内核和循环内核的含义。根据这个帖子中的LSTM部分,内核是与输入相乘的四个矩阵,而循环内核是与隐藏状态相乘的四个矩阵,但是,在这个图中这四个矩阵指的是什么呢?
这些是门控吗?
我使用这个应用测试了下面的代码中unit
变量如何影响内核、循环内核和偏置:
model = Sequential()model.add(LSTM(unit = 1, input_shape=(1, look_back)))
当look_back = 1
时,返回的结果是:
当unit = 2
时,返回的结果是:
当unit = 3
时,结果是:
通过测试这些值,我推导出了这些表达式
但我不知道这些内部是如何工作的。<1x(4u)>
或<ux(4u)>
是什么意思?u = units
回答:
内核基本上是LSTM单元处理的权重
units = 神经元,就像经典的多层感知机一样
你的图中没有显示,但输入是一个包含一个或多个值的向量X,每个值被发送到一个具有自己权重w的神经元(我们将通过反向传播来学习这些权重)
这四个矩阵是这些(表示为Wf, Wi, Wc, Wo):
当你增加一个神经元时,你就在增加另外四个权重\内核
所以对于你的输入向量X,你有四个矩阵。因此
1 * 4 * units = kernel
关于recurrent_kernel
,你可以在这里找到答案这里。在Keras中,输入和隐藏状态不是像示例图中那样被连接在一起(W[ht-1, t]),而是分开并使用另外四个称为U的矩阵处理的:
因为你有一个隐藏状态x神经元,权重U(所有四个U)是:
units * (4 * units) = recurrent kernel
ht-1以循环的方式从你所有的神经元中来。就像在多层感知机中一样,每个神经元的输出都进入到所有下一个循环层的神经元中
来源:http://colah.github.io/posts/2015-08-Understanding-LSTMs/