Почему партия не может иметь последовательности / записи данных переменной длины (например, предложения)? - PullRequest
0 голосов
/ 26 августа 2018

Ограничение, упомянутое в вопросе, имело место в контексте Keras.

Я читал многочисленные посты относительно как иметь последовательности переменной длины в пакетах (и я понимаю ответы на нихсообщений), однако единственный пост, который я нашел относительно , почему здесь здесь, на Data Science , с ответом "В пределах одного пакета, вы должны иметь такое же количество шагов сэто должен быть тензор (это, как правило, там, где вы видите 0-отступ). "

Однако это кажется ненужным ограничением (я не очень знаком с Keras / TensorFlow, поэтому мой вопрос с точки зренияне относится к какому-либо API).

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

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

1) ДанныеЗаписи, независимо от размера пакета, в который они входят, имеют градиенты параметров RNN, связанных с записями.Размер пакета только влияет на фактическое изменение параметров сети на основе указанных вычисленных градиентов (среднее значение берется, а затем применяется на основе других гиперпараметров).Последовательности с переменной длиной будут иметь переменное количество временных шагов, однако градиент, связанный с каждой записью, уже усредняет влияние параметра сети на каждый временной шаг (и среднее возможно при любом количестве временных шагов)следовательно, независимо от количества временных шагов, градиент может быть успешно рассчитан для каждой записи и, следовательно, для всей партии (с использованием среднего градиента для всех записей).

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

1 Ответ

0 голосов
/ 07 сентября 2018

В этом посте рассказывается о реализации RNN. Это определенно тот случай, когда у нас есть только одна партия, мы можем взять последовательность максимальной длины и дополнить оставшуюся часть последовательности. И вы можете иметь размеры пакетов переменной длины, имея размер пакета 1 :). Но если вы хотите использовать пакеты и использовать тот факт, что операции с матрицами не намного медленнее, чем выполнение одного обучающего примера за раз, тогда вам нужны матрицы. не рваные тензоры (это может быть потому, что именно этого ожидает большинство матричных библиотек). Таким образом, если вы хотите, чтобы последовательности переменной длины в пакете вам нужно было дополнить более короткие последовательности и обрезать более крупные последовательности. Делая это динамически для каждой партии, кажется, что это просто скрыло бы больше деталей и затруднило бы понимание любых проблем обучения без какой-либо выгоды.

Вопрос в том, какую выгоду вы ожидаете получить от последовательностей динамической длины? Кажется неоправданным ожидать повышения эффективности от этого, так как я уверен, что они бы реализовали его таким образом, если бы это было так. Это облегчает использование библиотеки таким образом? Тогда, возможно, ответ заключается в том, что отступы - это опасная деталь, скрываемая от пользователя, или недостаточно пользователей запросили ее. Вы ожидаете, что это будет лучше тренироваться? Для меня это правдоподобно, но prob не дает достаточной выгоды, чтобы оправдать сложность реализации. Возможно, вам придется предварительно обработать ваши данные, чтобы решить, как обрабатывать очень длинные последовательности.

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

...