Существует множество способов развития нейронных сетей.Вы можете развивать топологии, веса или и то, и другое (это делается, особенно в областях обучения подкреплению, см. EANT или NEAT ).
Вы сказали, что должны развивать весаваша сеть.Как правило, вы можете применить любой алгоритм оптимизации для этого.Но есть разные категории задач и алгоритмы оптимизации.В контролируемом обучении обычно имеет смысл вычислять ошибку на вашем тренировочном наборе и градиент функции ошибки по отношению к весам.Алгоритмы оптимизации, которые используют информацию о градиенте, обычно быстрее, чем генетические алгоритмы (например, Backprop, Quickprop, RProp, Conjugate Gradient, Levenberg-Marquardt ...).
Как вы сказали, у вас нет обучающего набора итаким образом, у вас нет функции ошибки, поэтому вы не можете рассчитать градиент.Что ж, вам нужно развить вес ваших нейронных сетей, это какая-то фитнес-функция.Если у вас нет никаких функций фитнеса, вы не сможете ничего улучшить, отрегулировав свой вес.Итак, в основном у вас есть функция F (w), где w - ваш непрерывный весовой вектор, который вы должны оптимизировать относительно F. Ваш алгоритм должен сделать что-то вроде этого:
- инициализировать нейронную сеть
- генерирует N весовых векторов
- вычисляет значения пригодности весовых векторов
- повтор 2.-4.пока не будет удовлетворен какой-либо критерий остановки
Из вашего описания я предполагаю, что вам, вероятно, придется решить какую-то проблему обучения с подкреплением.В этом случае вы можете, например, принять накопленное вознаграждение за эпизод в качестве значения пригодности.Если вам интересна эта тема: недавно было проведено исследование о применении генетических алгоритмов в нейронных сетях для решения задач обучения с подкреплением (это называется нейроэволюцией).Обычно люди используют генетические алгоритмы, такие как CMA-ES ( CMA-NeuroES ) или CoSyNE .
Я надеюсь, что смогу помочь.