У меня возникли проблемы с пониманием функционирования слоя Dense, обрабатывающего текстовые последовательности. Давайте представим этот простой случай: у меня есть два предложения, и я присваиваю целые слова:
Sentence 1 I like cheese
Sentence 2 I like milk
Sentence to sequence
Seq1 [1, 2, 3]
Seq2 [1, 2, 4]
Затем мы берем входные данные (целочисленные последовательности) и добавляем их в слой Embedding (случайные числа в 2 измерениях):
Embedding matrix
Term Index Vector
I 1 [0.2 0.6]
like 2 [0.7 0.1]
cheese 3 [0.4 0.5]
milk 4 [0.1 0.9]
Следующим шагом является выравнивание последовательностей с вложениями, чтобы сделать их 1D:
Sequence to Embedding
Seq1 [[0.2 0.6] [0.7 0.1] [0.4 0.5]]
Seq2 [[0.2 0.6] [0.7 0.1] [0.1 0.9]]
Flatten to 1D for Dense layer
Seq1 [0.2 0.6 0.7 0.1 0.4 0.5]
Seq2 [0.2 0.6 0.7 0.1 0.1 0.9]
Теперь мы можем использовать эти массивы в качестве входных данных для слоя Dense, что-то вроде этого:
Плотный слой из 3 единиц с входной длиной последовательности. Точечный продукт входной последовательности с матрицей весов плотного слоя.
Плотный слой
Dense layer
Seq1 X1 X2 X3 X4 X5 X6 · WH = ZH …
0.2 0.6 0.7 0.1 0.4 0.5 · W1,1 W1,2 W1,3 +
W2,1 W2,2 W2,3
W3,1 W3,2 W3,3 BH
W4,1 W4,2 W4,3
W5,1 W5,2 W5,3
W6,1 W6,2 W6,3
Seq2 X1 X2 X3 X4 X5 X6 · WH = ZH …
0.2 0.6 0.7 0.1 0.1 0.9 · W1,1 W1,2 W1,3 +
W2,1 W2,2 W2,3
W3,1 W3,2 W3,3 BH
W4,1 W4,2 W4,3
W5,1 W5,2 W5,3
W6,1 W6,2 W6,3
Проблема здесь в том, что каждая особенность соответствует одной части последовательности, X5 и X6 принадлежат вектору последнего слова. Как правило, при вводе Bag of Words каждый X присваивается слову , и если слово присутствует, оно получает вес (например, после TF-IDF). Также с числовыми данными Xi представляет особенность (цена, температура, ВВП ...), и это всегда так. Здесь , однако, X не присваивается слову и зависит от порядка . Посмотрите X5 и X6, как они меняются, потому что слова разные.
Веса в матрице весов плотного слоя назначаются элементу (Xi) , а затем они оптимизируются.
Мой вопрос:
Как это работает, если порядок слов постоянно меняется, а Xi относится к разным словам?
Я понимаю, что LSTM и другие рекуррентные сети могут обрабатывать динамическое упорядочение, но Мне показалось, что плотные слои не могут работать с последовательным текстом и что ввод должен быть зафиксирован с помощью One Hot vector или TF-IDF для пример. Тем не менее, я видел примеры моделей с предложениями для целочисленных, встраиваемых, плоских и плотных архитектур слоев, плюс я попробовал себя, и я вижу, что это работает ... Я был бы очень признателен за некоторые объяснения или исправления в моем потоке мышления. Спасибо!