Насколько я могу судить, нейронные сети имеют фиксированное количество нейронов во входном слое.
Если нейронные сети используются в контексте, подобном NLP, предложения или блоки текста разных размеров подаются в сеть. Как варьируется размер входного сигнала с фиксированным размером входного слоя сети? Другими словами, как сделать такую сеть достаточно гибкой, чтобы справляться с вводом, который может быть где угодно, от одного слова до нескольких страниц текста?
Если мое предположение о фиксированном количестве входных нейронов неверно и новые входные нейроны добавляются / удаляются из сети, чтобы соответствовать размеру входного сигнала, я не вижу, как их можно обучить.
Я привожу пример НЛП, но многие проблемы имеют непредсказуемый исходный размер. Мне интересен общий подход к решению этой проблемы.
Для изображений ясно, что вы можете увеличить / уменьшить выборку до фиксированного размера, но для текста это кажется невозможным, поскольку добавление / удаление текста меняет смысл исходного ввода.
Ответы:
На ум приходят три возможности.
Самым простым является заполнение нулями . По сути, вы берете довольно большой размер ввода и просто добавляете нули, если ваш конкретный ввод слишком мал. Конечно, это довольно ограничено и, конечно, бесполезно, если ваш ввод варьируется от нескольких слов до полного текста.
Повторяющиеся NN (RNN) - очень естественный NN, чтобы выбрать, если у вас есть тексты различного размера в качестве входных данных. Вы вводите слова как векторы слов (или вложения) только один за другим, и внутреннее состояние RNN должно кодировать значение полной строки слов. Это одна из более ранних статей.
Другая возможность - использовать рекурсивные NN . В основном это форма предварительной обработки, при которой текст рекурсивно сокращается до меньшего числа векторов слов, пока не останется только один - ваш ввод, который должен кодировать весь текст. Это имеет большой смысл с лингвистической точки зрения, если ваш ввод состоит из предложений (которые могут сильно различаться по размеру), потому что предложения структурированы рекурсивно. Например, слово vector для «мужчины» должно быть похоже на слово vector для «мужчины, который принял свою жену за шляпу», потому что словосочетания ведут себя как существительные и т. Д. Часто вы можете использовать лингвистическую информацию для руководства Ваша рекурсия по предложению. Если вы хотите выйти за рамки статьи в Википедии, это, вероятно, хорошее начало .
источник
Другие уже упоминали:
поэтому я добавлю еще одну возможность: использовать свертки разное количество раз в зависимости от размера ввода. Вот отличная книга, которая поддерживает этот подход:
Взято со страницы 360. Вы можете прочитать это далее, чтобы увидеть некоторые другие подходы.
источник
В НЛП вам присуще упорядочение входов, поэтому RNN являются естественным выбором.
Для входов переменного размера, где нет определенного порядка входов, можно проектировать сети, которые:
Структура выглядит следующим образом:
Подобные сети были использованы для изучения отношений между объектами ( arxiv: 1702.05068 ).
Простой пример того, как узнать выборочную дисперсию набора значений переменного размера, приведен здесь (отказ от ответственности: я являюсь автором связанной статьи).
источник