Генетический алгоритм. Урок 13. Улучшение обучения нейросети методом ГА |
![]() |
![]() |
Автор megabax | ||||||||||||||||||||||||||||||||||||||||
15.03.2025 г. | ||||||||||||||||||||||||||||||||||||||||
Генетический алгоритм. Урок 13. Улучшение обучения нейросети методом ГА Что бы смотреть урок полностью, подпишитесь на платный раздел. В платном разделе статья находиться здесь. На прошлом уроке мы с вами внесли изменения в генетический алгоритм из урока Практика нейронных сетей. Урок 22. Лабораторная работа №2 по персептронам и провели эксперимент по сравнению градиентного обучения нейросети с генетическим алгоритмом. Сравнение оказалось в пользу генетического алгоритма. А теперь мы еще улучшим его. Для начала при мутации сделаем изменения на основе генератора случайных числе с нормальным распределением (это когда распределние имеет вид функции Гаусса, такая "горка" как бы). Итак создаем функцию SampleGaussian:... ... ... Это изменения для первого эксперимента. Ниже будет приведена таблица сравнений для обоих экспериментов. А сейчас изменения для второго эксперимента. Это будет замена передаточной функции в ходе мутации. Для начала в класс GeneticAlgorithm добавим поле allow_change_trans_function, чтобы можно было включать и отключать режим мутации замены передаточной функции:
В класс GANeuralNet добавим поля для ссылки на объект генетического алгоритма, вероятность мутации замены передаточной функции и вероятность мутации параметра передаточной функции:
и изменим его конструктор, сделаем его параметрическим:
... .... .... Для остальных передаточных функций посмотрите в исходниках. Теперь проведем эксперимент и сведем его результаты в таблицу:
Непонятно почему, но обучаемость с заменой передаточной функции оказалась хуже, хотя, по сути дела, мы дали нейросети большую свободу дейсвтий. Для того, чтобы понять, почему мы получились столь странный результат, необходимо првоести небольшой исследование процесса обучения, но этим мы займемся на следуем уроке. |
« След. | Пред. » |
---|