1

Я пытаюсь обучить ANN (я использую эту библиотеку: http://leenissen.dk/fann/), и результаты несколько озадачивают - в основном, если я запускаю обученную сеть с теми же данными, которые используются для обучения, результат не соответствует указанному в наборе обучения , но некоторое случайное число.Ответы нейронной сети гарантированы на данные обучения?

Например, первая запись в обучающем файле что-то вроде

88.757004 88.757004 104.487999 138.156006 100.556000 86.309998 86.788002 
1 

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

Max epochs 500000. Desired error: 0.0010000000. 
Epochs   1. Current error: 0.0686412785. Bit fail 24. 
Epochs   842. Current error: 0.0008697828. Bit fail 0. 
my test result -4052122560819626000.000000 

, а затем на еще одну попытку:

Max epochs 500000. Desired error: 0.0010000000. 
Epochs   1. Current error: 0.0610717005. Bit fail 24. 
Epochs   472. Current error: 0.0009952184. Bit fail 0. 
my test result -0.001642 

Я понимаю, что размер установочного набора может быть неадекватным (у меня есть только около 100 пар ввода/вывода до сих пор), но не должно, по крайней мере, данные обучения запускают правильное выходное значение? Тот же самый код работает отлично для «Getting Started» функции XOR, описанной на сайте Фэнн (я уже использовал мой предел 1 ссылка)

+0

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

+0

. Как определяется сеть? Сколько слоев, нейронов на слой и соединений? Какую функцию активации вы используете? – rodrigoap

+0

Я пробовал разные макеты - например. 4 слоя, 8 входных сигналов, 1 выход, 2 слоя из 10 нейронов между ними или 3 слоя 8 входных сигналов, 1 выход, 20 в середине. Я не уверен в подключении и активации - поскольку я только в начале своего пути и использую настройки по умолчанию в библиотеке. – 7macaw

ответ

3

Короткий ответ: Нет

Longer ответ (но, возможно, не так правильно):

1-й: тренировочный пробег только перемещает веса нейронов в положение, в котором они влияют на результат, как и в testdata. После нескольких или нескольких итераций выход должен быть близок к ожидаемому результату. Iff сеть neurol соответствует задаче, которая приводит меня к

2nd: Не каждая сеть нейронов работает для каждой проблемы. Для одного нейрона довольно легко придумать простую функцию, которая не может быть аппроксимирована одним нейроном. Хотя это не так просто видеть, тот же предел применяется для каждой нейронной сети. В таких случаях ваши результаты, скорее всего, будут выглядеть как случайные числа. Редактировать после комментария: во многих случаях это можно устранить, добавив нейроны в сеть.

3rd: на самом деле первая точка - это сила нейронной сети, потому что она позволяет сети отлично справляться с выбросами.

4-я: Я обвиняю 3 за то, что у меня отсутствует понимание музыки. Это просто не подходит моему мозгу ;-)

+0

Спасибо! Теперь у меня есть хоть какое-то направление. – 7macaw

+0

RE Ваш второй пункт: зависит от того, как вы определяете «приблизительный». Если вы меняете количество внутренних нейронов, вы можете приблизить функции лучше (например, добавлять термины для приближения серии Тейлора). –

2

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

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

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