53

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

ответ

27

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

Подводя итог: «Мусор, мусор из»

+22

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

+0

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

0

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

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

18

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

У recurrent neural network for calculating parity будет только одна функция ввода. Биты могут быть загружены в нее со временем. Его выход также возвращается обратно к скрытому слою. Это позволяет узнать паритет только с двумя скрытыми единицами.

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

+1

Это похоже на скрытую марковскую модель только с использованием нейронных сетей? –

+2

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

2

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

25

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

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

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

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

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

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

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

1

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

 Смежные вопросы

  • Нет связанных вопросов^_^