Обучение нейронных сетей

 
Вопрос к всезнающему ALL.

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

Скорость обучения сетки зависит от нескольких вещей

1. конфигурация сети (количество весов)
2. разделимость данных
3. тонкости алгоритма обучения

уточните вопрос :)

 
Скорость обучения сетки зависит от нескольких вещей 1. конфигурация сети (количество весов) 4 слоя по 50 нейронов, на выходе один нейрон. 2. разделимость данных ответа нет, не пытался и не пробовал. 3. тонкости алгоритма обучения Изменения на нейроне следующего слоя принимаются за ошибку, и на основании этого производится корректировка весов. Возможен вопрос должен был звучать по другому, так как я добивался довольно хорошей точности ответов. на 2020 прогнозируемых барах ответ отрицательным был только в 47 случаях, но точность расчетов была +-10%, что составляет диапазон примерно в 30 пунктов. Решил увеличить точность, начал менять алгоритм обучения. К тем результатм не могу вернуться.
 
4 слоя по 50 нейронов, на выходе один нейрон.

Можешь смело уменьшать слои. Один скрытый слой один выходной. При использовании нелинейной функции активации этого достаточно (нужно только подобрать количество нейронов в скрытом слое) Если же функция активации линейная или ступенька не поможет и 50 слоев :)

разделимость данных ответа нет, не пытался и не пробовал.

Пример 
{x1,x2}  вход {y} выход  Все в промежутке {0:1}
Разбиваем y на два(например) промежутка y>0.5 и y<0.5
Для каждого набора считаем среднее x1 и x2 и максимальное отклонение x1 от среднего x1 и для x2 соответственно
Получаем 4(6 если отклонение считать отдельно в разные стороны) числа для набора y<0.5 и столько же для набора y>0.5
И смотрим на них :)


И немного по алгоритму
1. Как можно точнее реализовать именно обратное распространение ошибки с производными и прочими плясками
2. Использовать плавающий коэффициент скорости обучения (hint метод имитации отжига вроде)
3. Изменения весов не сразу применять Накапливать изменения в отдельной базе Применять один раз за эпоху



 
Пока слои уменьшать не хочу, так на вход подает 50 нормированных значений. Хотя может лучше их нормализовать. Не знаю. Обучение проводится на каждой итерации (Есть смысл делать изменения весов раз в эпоху, согласен). Для контроля обучения использую изменение суммы весовых коэффициентов, и в зависимости от скорости изменения меняю ручками скорость обучения.
 

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

 
Vinin:

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


1 это много

0.2 - 0.02
 
Еще можно привязать ее к средней ошибке по предыдущей эпохе или к дельте ошибки по последним двум эпохам
Причина обращения: