Обучение нейронных сетей
Скорость обучения сетки зависит от нескольких вещей
1. конфигурация сети (количество весов)
2. разделимость данных
3. тонкости алгоритма обучения
уточните вопрос :)
Можешь смело уменьшать слои. Один скрытый слой один выходной. При использовании нелинейной функции активации этого достаточно (нужно только подобрать количество нейронов в скрытом слое) Если же функция активации линейная или ступенька не поможет и 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. Изменения весов не сразу применять Накапливать изменения в отдельной базе Применять один раз за эпоху
Столкнулся с другой проблемой. Если скорость обучения 1.0, то
через одну эпоху система формирует практически одно и то же
значение.
В разных случаях по разному. Стремится к нулю или к единице.
Столкнулся с другой проблемой. Если скорость обучения 1.0, то
через одну эпоху система формирует практически одно и то же
значение.
В разных случаях по разному. Стремится к нулю или к единице.
1 это много
0.2 - 0.02
Нужен оптимальный метод обучения неуронной сети?
Слишком долго это дело идет однако.