我注意到单层 BiLSTM 由两个独立的(单向)LSTM 层组成,一个用于正向,另一个用于反向。然后两个 LSTM 层的输出将与hidden
dim (always dim = -1
) 连接在一起,形成这个 BiLSTM 层的输出。
而对于多层模型,每个内层都接受上一层的输出,然后将计算结果输出到下一层。
到目前为止,没有任何歧义。
但是对于多层 BiLSTM,我发现了一些歧义。由于每个 BiLSTM 层都有两个独立的 LSTM,我不知道内层接受的正确输入。
上一层的连接输出?(如果这是真的,这意味着input_size
内部 LSTM 层的,无论是从左到右还是从右到左,都是2 * (hidden_size of the previous layer)
)(参见这个实现)(参见这张图片来自:Illustrating the use of two BiLSTMs for Semantic角色标签。来源:He et al. 2017,图 1。)
或者将多层 BiLSTM 视为两个单向多层 LSTM(一个用于 left_to_right,另一个用于 right_to_left),每个单向 LSTM 只接受前一层的输出。那么,在两次多层单向LSTM计算完成后,我们将每一层的从左到右和从右到左的输出连接起来,形成每个BiLSTM层的输出?(见这张图片来自:使用深度神经网络的多通道心电图信号中的心律失常分类:Kim. 2018,图 3.2))