Как нейронные сети могут работать с различными размерами входных данных?


43

Насколько я могу судить, нейронные сети имеют фиксированное количество нейронов во входном слое.

Если нейронные сети используются в контексте, подобном NLP, предложения или блоки текста разных размеров подаются в сеть. Как варьируется размер входного сигнала с фиксированным размером входного слоя сети? Другими словами, как сделать такую ​​сеть достаточно гибкой, чтобы справляться с вводом, который может быть где угодно, от одного слова до нескольких страниц текста?

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

Я привожу пример НЛП, но многие проблемы имеют непредсказуемый исходный размер. Мне интересен общий подход к решению этой проблемы.

Для изображений ясно, что вы можете увеличить / уменьшить выборку до фиксированного размера, но для текста это кажется невозможным, поскольку добавление / удаление текста меняет смысл исходного ввода.


Можете ли вы уточнить, что вы имеете в виду, уменьшая выборку до фиксированного размера? Как осуществляется даунсамплинг?
Чарли Паркер

Ответы:


37

На ум приходят три возможности.

Самым простым является заполнение нулями . По сути, вы берете довольно большой размер ввода и просто добавляете нули, если ваш конкретный ввод слишком мал. Конечно, это довольно ограничено и, конечно, бесполезно, если ваш ввод варьируется от нескольких слов до полного текста.

Повторяющиеся NN (RNN) - очень естественный NN, чтобы выбрать, если у вас есть тексты различного размера в качестве входных данных. Вы вводите слова как векторы слов (или вложения) только один за другим, и внутреннее состояние RNN должно кодировать значение полной строки слов. Это одна из более ранних статей.

Другая возможность - использовать рекурсивные NN . В основном это форма предварительной обработки, при которой текст рекурсивно сокращается до меньшего числа векторов слов, пока не останется только один - ваш ввод, который должен кодировать весь текст. Это имеет большой смысл с лингвистической точки зрения, если ваш ввод состоит из предложений (которые могут сильно различаться по размеру), потому что предложения структурированы рекурсивно. Например, слово vector для «мужчины» должно быть похоже на слово vector для «мужчины, который принял свою жену за шляпу», потому что словосочетания ведут себя как существительные и т. Д. Часто вы можете использовать лингвистическую информацию для руководства Ваша рекурсия по предложению. Если вы хотите выйти за рамки статьи в Википедии, это, вероятно, хорошее начало .


1
В чем разница между тем, что вы назвали "рекурсивными NN", и RNN? R для рекурсивного ... Также, несколько цитат и указателей были бы полезны.
Эрик Платон

3
R для повторения. Рекуррентный означает линейное добавление ввода к одному и тому же NN снова и снова Рекурсивный означает ввод данных по древовидной структуре.
BlindKungFuMaster

@BlindKungFuMaster 0 Заполнение маской для MLP - это хорошо и плохо влияет на точность?
Дина Таклит

12

Другие уже упоминали:

  • заполнение нулями
  • РНН
  • рекурсивный NN

поэтому я добавлю еще одну возможность: использовать свертки разное количество раз в зависимости от размера ввода. Вот отличная книга, которая поддерживает этот подход:

Рассмотрим коллекцию изображений, где каждое изображение имеет разную ширину и высоту. Неясно, как моделировать такие входные данные с помощью весовой матрицы фиксированного размера. Свертка проста в применении; Ядро просто применяется разное количество раз в зависимости от размера ввода, и вывод операции свертки соответственно масштабируется.

Взято со страницы 360. Вы можете прочитать это далее, чтобы увидеть некоторые другие подходы.


1
Мне приходит в голову, что этот подход будет работать только в том случае, если 1) соотношение сторон (AR) всех входных изображений одинаковое, 2) вы масштабируете все изображения до заданного AR, или 3) вы получаете изображения с нулевой площадкой, чтобы заставить данный AR.
Мэтт Уэнам

@Salvador Dali Может ли заполнение "0" маской быть хорошим решением для MLP?
ДИНА ТАКЛИТ

Я не могу найти текст, который вы цитируете в своем ответе в книге. Может быть, он присутствовал изначально и был удален позже? Страница 354 в настоящее время имеет абзац, который начинается аналогично, но никогда не использует переменное количество слоев (но вместо этого переменный размер вывода).
Йохен

7

В НЛП вам присуще упорядочение входов, поэтому RNN являются естественным выбором.

Для входов переменного размера, где нет определенного порядка входов, можно проектировать сети, которые:

  1. используйте повторение одной и той же подсети для каждой из групп входов (то есть с общими весами). Эта повторяющаяся подсеть изучает представление (групп) входов.
  2. используйте операцию для представления входов, которая имеет ту же симметрию, что и входы. Для данных, инвариантных к порядку, усреднение представлений из входных сетей является возможным выбором.
  3. используйте выходную сеть, чтобы минимизировать функцию потерь на выходе на основе комбинации представлений ввода.

Структура выглядит следующим образом:

структура сети

Подобные сети были использованы для изучения отношений между объектами ( arxiv: 1702.05068 ).

Простой пример того, как узнать выборочную дисперсию набора значений переменного размера, приведен здесь (отказ от ответственности: я являюсь автором связанной статьи).

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.