Вопрос о Сложенном Билстме (Многослойном билстме)

#neural-network #nlp #lstm #bilstm

Вопрос:

Я заметил, что однослойный LSTM состоит из двух независимых (однонаправленных) слоев LSTM, один для прямого направления, а другой для обратного. Затем выходные данные двух слоев LSTM будут объединены вместе вместе с hidden dim (всегда dim = -1 ), чтобы сформировать выходные данные этого слоя LSTM.

А для многослойной модели каждый внутренний слой принимает выходные данные предыдущего слоя, а затем выводит результаты расчета на следующий слой.

До сих пор нет никакой двусмысленности.

Но для многослойного BiLSTM я обнаружил некоторую двусмысленность. Поскольку каждый слой BiLSTM имеет два независимых LSTM, я не знаю, какой правильный ввод принимает внутренний слой.

Объединенный вывод с предыдущего слоя? (Если это верно, это означает input_size , что внутренний слой LSTM, независимо от того, слева направо или справа налево, является 2 * (hidden_size of the previous layer) ) (см. Эту реализацию) (и см. Эту картинку: Иллюстрирующую использование двух LSTM для семантической маркировки ролей. Источник: Он и др. 2017, рис. 1.)

Или рассматривайте многослойный LSTM как два однонаправленных многослойных LSTM (один для left_to_right, а другой для right_to_left), каждый однонаправленный LSTM принимает только выходные данные из предыдущих слоев. Затем, после завершения двух многослойных однонаправленных вычислений LSTM, мы объединим выходные данные слева направо и справа налево каждого слоя, чтобы сформировать выходные данные каждого слоя BiLSTM? (см. Это изображение из: Классификация аритмий в многоканальных ЭКГ-сигналах с использованием глубоких нейронных сетей: Ким.2018, рис. 3.2))

Комментарии:

1. В чем именно тогда заключается вопрос? Очевидно, что есть несколько способов сделать это, и они приведут к разным результатам. Как вы сами написали, PyTorch следует одной реализации, но это не значит, что вы также можете использовать другую (см. Второй пункт).

2. @dennlinger Мне просто интересно, какой способ реализации stacked BiLSTM правильный.

3. Опять же, я не думаю, что обязательно существует «правильный» или «неправильный» способ. Существуют случаи любого из этих вариантов; во всяком случае, я бы подумал, что большинство людей (личное мнение!), Вероятно, думают о первом способе, когда вы объединяете выходные данные каждого слоя и объединяете их в следующий.