Реферат
ПЕРЕЧЕНЬ СОКРАЩЕНИЙ И ОБОЗНАЧЕНИЙ 5
ВВЕДЕНИЕ 6
1 Анализ предметной области 8
1.1 Г енетические алгоритмы 8
1.2 Описание методов селекции в генетических алгоритмах 10
1.4.1 Метод рулетки 10
1.4.2 Метод стохастической универсальной выборки 12
1.4.3 Ранговый отбор 13
1.4.4 Турнирный отбор 14
1.4.5 Отбор устойчивого состояния 16
1.3 Описание методов скрещивания в генетическом алгоритме 17
1.5.1 Одноточечное скрещивание 17
1.5.2 Двухточечное скрещивание 18
1.5.3 Равномерное скрещивание 18
1.4 Описание методов мутации в генетическом алгоритме 19
1.6.1 Мутация инверсией 19
1.6.2 Мутация обменом 20
1.5 Градиентный спуск 20
1.6 Преимущества генетического алгоритма перед градиентным спуском 22
1.7 Выводы 24
2 Реализация генетических алгоритмов 25
2.1 Используемый язык программирования 25
2.1.1 Возможности реализации генетических алгоритмов на языке
программирования C++ 25
2.1.2 Возможности реализации генетических алгоритмов на языке
программирования Python 26
2.1.3 Сравнительный анализ языков программирования 27
2.2 Используемые библиотеки 29
2.3 Используемая среда разработки 30
2.4 Описание обучающей выборки 31
2.5 Описание структуры нейронной сети 33
2.6 Описание программы генетического алгоритма 36
2.7 Описание программы градиентного спуска 41
2.8 Выводы 44
3 Анализ результатов 45
3.1 Результаты обучения нейронной сети с помощью генетических
алгоритмов 45
3.2 Результаты обучения нейронной сети с помощью градиентного
спуска 57
3.3 Выводы 59
ЗАКЛЮЧЕНИЕ 60
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 61
ПРИЛОЖЕНИЕ А Листинг программы 64
Приложение А.1 Файл Genetic_algorithm.py 65
Приложении А.2 Файл Gradient_Descent.py 70
ПРИЛОЖЕНИЕ Б Презентация 76
Машинное обучение глубоко укоренилось в различных сферах жизни в последние годы. Развитие и распространение данный инструмент получил в ряде отдельных задач, не требующих абсолютной точности и имеющих низкую стоимость ошибки. Например, такие задачи как прогнозирование, классификация и консультация по каким-либо вопросам. В данном случае результат прогнозирования и консультирования можно расценивать как дополнительную рекомендацию в решении какого-либо вопроса, а не абсолютно верный ответ.
С ростом популярности машинного обучения остро встаёт вопрос оптимизации этого процесса, с целью получить большую эффективность за меньшее время обучения. Большое внимание в данном вопросе имеет метод оптимизации функции потерь. Наряду с градиентного спуском, стохастическим градиентным спуском, адаптивного момента, имитацией отжига, одним из таких методов является генетический алгоритм.
Выбор метода оптимизации функции потерь является очень важным этапом машинного обучения. Каждый метод имеет свои преимущества и недостатки из-за чего нет единого решения и в каждой отдельной задаче тот или иной метод проявляет себя по-разному. В том случае, если специалист решил воспользоваться генетическими алгоритмами в данном вопросе, тогда требуется настроить все параметры генетического алгоритма. Благодаря широкому набору параметров и различных методов генетические алгоритмы позволяют решать более широкий круг задач, чем аналогичные методы оптимизации функции.
В данной работе генетические алгоритмы будут применены в задаче обучения искусственной нейронной сети в качестве метода оптимизации функции потерь. Также будет выполнено сравнение эффективности обучения нейронной сети при использовании различных методов отбора, скрещивания и мутации генетического алгоритма. Выполнив обучение нейронной сети, будет составлена сводная таблица по результатам, позволяющая оценить значение и влияние на результат каждого метода. Затем будет выполнено обучение идентичной нейронной сети с помощью градиентного спуска для сравнения результатов обучения нейронной сети с помощью генетического алгоритма с градиентным спуском в данной задаче.
В рамках данной выпускной квалификационной работы были проведены исследования генетических алгоритмов и способов управления генетическими операциями. Исследование проводилось на примере реализации генетических алгоритмов в качестве метода оптимизации функции потерь в процессе обучения искусственной нейронной сети. Было выполнено 30 тестовых запусков, и каждому тесту соответствовала собственная комбинация методов отбора, скрещивания и мутации. Собрав информацию о различных генетических операциях, можно сделать выводы о скорости и эффективности того или иного метода. Для более объективного анализа результатов, полученных в ходе тестирования генетических алгоритмов, был выполнен запуск программы обучения с использованием аналогичного метода - градиентного спуска. В результате выполненной работы было доказано, что генетические алгоритмы - это конкурентноспособный инструмент для оптимизации функции потерь, по эффективности обучения искусственной нейронной сети не уступающий градиентному спуску, но проигрывающий в плане скорости обучения.
Применение генетического алгоритма в обучении нейронных сетей обосновывается его преимуществами по сравнению с другими оптимизационными методами:
• обширная область поиска,
• устойчивость к локальным оптимумам,
• имеется возможность распараллелить процесс,
• область применения шире, чем у аналогичных методов.
Полученные результаты обладают научной ценностью. Ценность заключается в перспективе дальнейших исследований в области генетических алгоритмов. Поставленные в работе научные и практические задачи выполнены полностью.