Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

Обычно вы извлекаете функции из данных и отправляете их в сеть. Не рекомендуется брать только некоторые данные и подавать их в сеть. На практике предварительная обработка и выбор правильных функций будут определять ваш успех и производительность нейронной сети. К сожалению, ИМХО требует опыта, чтобы развить смысл для этого, и ему никто не может научиться из книги.

Подведение итогов: "Мусор, мусор"

Ответ 2

Я был там, и я столкнулся с этой проблемой. ANN был составлен для фиксированной длины вектора признаков, а также многие другие классификаторы, такие как KNN, SVM, Bayesian и т.д.  то есть входной уровень должен быть четко определен и не изменяться, это проблема проектирования. Тем не менее, некоторые исследователи предпочитают добавлять нули, чтобы заполнить недостающий пробел, я лично считаю, что это не очень хорошее решение, потому что эти нули (нереальные значения) будут влиять на веса, с которыми сеть будет сходиться. кроме того, может существовать реальный сигнал, заканчивающийся нулями.

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

Другим решением является использование DTW динамического изменения времени или даже лучше использовать HMM Hidden Markov.

Другим решением является интерполяция, интерполяция (компенсация отсутствующих значений вдоль малого сигнала), при этом все маленькие сигналы имеют тот же размер, что и максимальный сигнал, методы интерполяции включают и не ограничиваются усреднением, B-сплайн, кубический.....

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

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

что на данный момент, если бы не те, кто работал на вас, свяжитесь со мной.

Ответ 3

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

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

Обычная двухуровневая нейронная сеть с прямой подачей потребует 2 ** скрытых блока sequence_length для представления четности. Это ограничение сохраняется для любой архитектуры с двумя уровнями (например, SVM).

Ответ 4

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

Ответ 5

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

Ответ 6

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

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