https://qudata.com/ml/ru/NN_RNN_Torch.html - довольно сносное описание.
Объясню "на пальцах":
а) на вход нейросети подаются N блоков (фиксированной длинны), к примеру для N ботов это будут координаты x,y поэтому у нас будет вектор [N , 2]
б) у нас есть некое внутреннее состояние нейросети (почти всегда инициализируется нолями) которое задается всегда определенным образом перед каждым запуском. Это массив длинной K (например 10).
в) сеть состоит из двух частей - рекуррентная (перебирает по очереди вход) и финальная часть, которая на основе внутреннего состояния дает окончательный вывод (прогноз, результат).
Теперь чуть подробнее. Рекуррентная часть это простая нейросеть любой конфигурации, которая на вход принимает массив "внутреннее состояние нейросети" и одну из N строк входного массива (в твоем случае "внутреннее состояние нейросети" + 2 числа). Обрабатывает это и на выходе получается новый массив "внутреннее состояние нейросети". Т.е. (как пример) на входе 12 чисел, на выходе 10 чисел.
После обработки всех N строк входного массива в дело вступает финальная часть нейросети. Она может быть тоже любой конфигурации (структуры). На вход принимает "внутреннее состояние нейросети" (например 10 чисел), на выходе какой-то уже конечный результат (к примеру "угол" и "скорость").
Евгений Лернер, Поэтому широко используется..... в очень узких кругах. Специально сползал в гугл трендс - градиентный спуск в разы популярнее ГА.
Что касается самого ГА: он (видимо) незаменим, когда оптимизируемая функция у нас черный ящик, т.е. мы не можем найти производные, градиенты и т.п. А в реальности функции еще не имеют монотонности, непрерывности и прочих важных вещей для быстрой оптимизации. В этих случаях генетический алгоритм это, видимо, лучший выбор.
Нейросети мы можем проектировать сами, закладывая структуру, которую [относительно] легко оптимизировать.
Дядя Богдан, это загрузка и инициализация (случайными числами?). Случайные числа будут только если не получится загрузить (а у тебя ведь получается?). И где тут изменение весов? (Даже если убрать загрузку, то у тебя получатся случайные блуждания, а это очееееень медленно.)
Может реально нужно тебе прочитать про алгоритм обратного распространения ошибки, про Генетический алгоритм, Симуляцию отжига и другие алгоритмы нахождения минимума функции?
Вопрос требует больше конкретики. Сейчас не совсем понятно в чем проблема - кто мешает использовать базу данных для хранения ID? Или совсем отказываемся от серверов? Тогда локальное хранение любым образом сгенерированного ID или ID получаем через хэширование e-mail+пароль и тогда можно не хранить его на диске.
все приложения проксифицированы? Конечно же, далеко не все.
попробуйте следующий тест: сделайте два приложения (пусть ftp клиент с хорошими логами), одну прогу проксируйте, вторую нет. Поочередно (1-2 и 2-1) запускайте соединение с внешними серверами и смотрите ip адреса.
Написание собственных библиотек слишком затратно по времени (слишком!), особенно когда есть хорошие бесплатные альтернативы. К сожалению я по неопытности тоже написал свой велосипедик (реализацию обучения деревья решений).
Объясню "на пальцах":
а) на вход нейросети подаются N блоков (фиксированной длинны), к примеру для N ботов это будут координаты x,y поэтому у нас будет вектор [N , 2]
б) у нас есть некое внутреннее состояние нейросети (почти всегда инициализируется нолями) которое задается всегда определенным образом перед каждым запуском. Это массив длинной K (например 10).
в) сеть состоит из двух частей - рекуррентная (перебирает по очереди вход) и финальная часть, которая на основе внутреннего состояния дает окончательный вывод (прогноз, результат).
Теперь чуть подробнее. Рекуррентная часть это простая нейросеть любой конфигурации, которая на вход принимает массив "внутреннее состояние нейросети" и одну из N строк входного массива (в твоем случае "внутреннее состояние нейросети" + 2 числа). Обрабатывает это и на выходе получается новый массив "внутреннее состояние нейросети". Т.е. (как пример) на входе 12 чисел, на выходе 10 чисел.
После обработки всех N строк входного массива в дело вступает финальная часть нейросети. Она может быть тоже любой конфигурации (структуры). На вход принимает "внутреннее состояние нейросети" (например 10 чисел), на выходе какой-то уже конечный результат (к примеру "угол" и "скорость").
Надеюсь понятно изложил.