Нейросетевой ввод/вывод

Может ли кто-нибудь объяснить мне, как делать более сложные наборы данных, такие как статистика команды, погода, кости, сложные типы чисел?

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

если бы кто-то мог привести примеры на питоне, это было бы большой помощью


person ATMA    schedule 30.07.2009    source источник
comment
какие инструменты или библиотеки вы используете?   -  person dalloliogm    schedule 30.07.2009
comment
иметь примеры на python бессмысленно, то, как вы представляете свой набор входных данных, не зависит от вашего языка программирования ... это зависит от того, какую информацию вам нужна нейронная сеть для изучения. Может быть, вы сможете найти несколько хороших примеров в каком-нибудь университетском учебнике по NN (например, епископ nn для распознавания образов?).   -  person mic.sca    schedule 31.07.2009


Ответы (4)


Вы должны кодировать свой ввод и вывод во что-то, что может быть представлено единицами нейронной сети. (например, 1 для «x имеет определенное свойство p» -1 для «x не имеет свойства p», если диапазон ваших единиц находится в [-1, 1])

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

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

person mic.sca    schedule 30.07.2009

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


Входные данные

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

  • Погода: [температура сегодня, влажность сегодня, температура вчера, влажность вчера...] связь между сегодняшней температурой и сегодняшней влажностью устанавливается внутри
  • Статистика команды: [средний рост, средний вес, максимальный рост, лучший результат,...]
  • Дайс: не уверен, что понял это, вы имеете в виду, как кодировать дискретные значения?*
  • Комплексное число: [a,ai,b,bi,...]

* Дискретные функции сложны, но все же могут быть закодированы как (0.0,1.0). Проблема в том, что они не обеспечивают градиент для изучения порога.


Результаты

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

  • Погода: [завтра вероятность дождя, завтрашняя температура,...] **
  • Статистика команды: [шанс на победу, шанс на победу более чем в 20 раз,...]
  • Комплексное число: [x,xi,...]

** Здесь ваши векторы обучения будут такими: 1,0, если на следующий день шел дождь, 0,0, если дождя не было.


Конечно, можно ли на самом деле смоделировать проблему с помощью нейронной сети — это другой вопрос.

person pufferfish    schedule 30.07.2009
comment
С булевыми функциями нет проблем с градиентом. Обратное распространение никогда не вычисляет градиент с точки зрения входных данных (поскольку оно не изменяет входные данные). - person Fred Foo; 19.12.2013

Более сложные данные обычно означают добавление большего количества нейронов во входной и выходной слои.

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

person fortran    schedule 30.07.2009

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

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

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

person Francisco Yepes Barrera    schedule 19.12.2013