Что я должен делать, когда в модели seq2seq имеется несколько входов?

#python #nlp #seq2seq

#python #nlp #seq2seq

Вопрос:

У меня есть три входных текстовых последовательности, которые вместе генерируют целевую последовательность. Я хочу закодировать три входа независимо. Каков правильный способ сделать это? Работает ли следующий способ? Каждый входной сигнал переходит на уровень ввода, уровень встраивания и уровень LSTM, затем объедините их вместе, снова используя bi-LSTM в качестве кодировщика.

Ответ №1:

Это зависит от того, как выглядят ваши данные. Если ваш ввод представляет собой просто текст, вероятно, неплохо объединить все входные данные в виде строк и разделить входные данные специальным маркером (способ, которым БЕРТ использует [SEP] токен для разделения двух входных предложений). Несмотря на то, что BERT является Transformer, нет причин, по которым это не должно работать с LSTMs.

Если вы не используете attention, вы можете использовать несколько кодеров и объединить (и, возможно, спроецировать) выходные состояния для инициализации декодера, как вы предлагаете в вопросе.

Если вы хотите использовать attention, это становится немного сложнее, но есть способы, как использовать attention для нескольких входных данных. Иерархическое внимание обычно является хорошим выбором.