Современное общество вводит практику по применению нейронных сетей, где возникает необходимость в определении наиболее эффективного метода обучения искусственного интеллекта (ИИ).
В данной работе рассматриваются два наиболее популярных метода: NEAT и Q-learning. В ходе знакомства с основными принципами и особенностями работы каждой из представленных методик, они сравниваются между собой по ряду признаков и определяется более совершенный и универсальный метод обучения ИИ.
Признанный наиболее эффективным метод прошёл тестирование в условиях, приближенных к реальным, посредством написания и тестирования реальной нейронной сети.
Основной вопрос-тезис работы: Какое направление развития нейронных сетей является наиболее перспективным?
Дополнительные задачи:
Объем работы:
Использовано источников: 5
Количество страниц: 18
Количество иллюстраций: 15
Приложения: диск с программой и тестовыми изображениями
| Вложение | Размер |
|---|---|
| 356.87 КБ |
Оглавление
Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Глава 1: Q-learning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Глава 2: NEAT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Глава 3: Сравнение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Глава 4: Практика . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Заключение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Использованная литература . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Введение
Мы живём в век автоматизации и компьютеризации, и очевидно, что будущее за искусственным интеллектом. В развитие нейронных сетей сейчас вкладываются самые крупные компании, а сами ИИ стали нормой в повседневной жизни.
Однако недостаточно только создать ИИ. Сама по себе нейронная сеть не знает ничего, для эффективного функционирования её необходимо обучать.
Методов обучения сети много, но какой из них самый лучший для большинства случаев? Разобраться с этим необходимо как минимум потому, что в скором времени ИИ будут использоваться повсеместно, а значит, людям нужно знать хотя бы основы работы нейронных сетей, иначе могут возникнуть проблемы.
Основной целью данной работы является описание и сравнение двух самых популярных методов обучение нейронной сети: Q-learning и NEAT, а также определение фаворита среди них. Затем, на основе признанного лучшим алгоритма, создать и обучить ИИ, проведя в процессе ряд экспериментов.
Значимость работы обусловлена высокими темпами развития робототехники и нейронных сетей в нашей жизни, но, к сожалению, крайне низким уровнем знаний об ИИ среднестатистического пользователя, что совершенно недопустимо в век информационных технологий. Более глубокого понимания данной темы позволяет добиться, в том числе, описание процесса создания и обучения сети на реальном примере.
Очередной задачей моей работы является поиск ответа на вопрос: “Какой алгоритм обучения ИИ является наиболее эффективным на данный момент?” Ответ на него позволит создавать более совершенные модели и углублять познания в области машинного обучения в нужном направлении.
Практическая важность работы, помимо прочего, обусловлена ещё и тем, что в русскоязычном сегменте сети интернет практически полностью отсутствует информация, позволяющая новичкам-программистам начать свой путь в области машинного обучения ИИ. На англоязычных ресурсах также крайне мало информации, дающей возможность успешно начать разрабатывать собственные нейронные сети. Таким образом, представленный мной проект может служить кратким экскурсом в мир машинного обучения, помогающий начинающим разработчикам понять принципы построения и обучения искусственного интеллекта на реальных примерах.
Работа, в первую очередь, ориентирована на людей, интересующихся робототехникой и нейронными сетями, людей, только ступающих на этот сложный путь. Более того, этот доклад будет полезен абсолютно любому человеку, поскольку сферы применения ИИ безграничны, а сталкиваясь с нейронной сетью, будет весьма полезно представлять, как она работает. Опытным разработчикам в этой сфере данная работа поможет освежить и привести в порядок свои знания, а также сориентироваться в дальнейшем изучении глубокого обучения и нейронных сетей.
Глава 1: Q-learning
Начнём с определения. Q-learning — метод обучения, который применяется в искусственном интеллекте при агентном подходе. Данный метод можно классифицировать как “обучение с подкреплением”. На основе получаемого от среды вознаграждения агент формирует функцию полезности Q, что впоследствии дает ему возможность уже не случайно выбирать стратегию поведения, а учитывать опыт предыдущего взаимодействия со средой. То есть, исполнитель учится успешнее справляться с задачей, подобно человеку. Пожалуй, одно из основных преимуществ Q-обучения заключается в способности сравнивать ожидаемую полезность доступных действий, не формируя модели окружающей среды.
Математически основную концепцию Q-learning`а можно записать в виде уравнения Беллмана. Вот оно:
Q(s, a) = r + γ * maxa` * Q(s`, a`)
Согласно уравнению, значение переменной Q для определенной пары состояние-действие должно быть наградой, полученной при переходе в новое состояние путём выполнения этого действия, добавленной к значению наилучшего действия в следующем состоянии. Однако, логично предположить, что награда, которую мы можем получить в настоящий момент времени, ценнее, чем та награда, которую алгоритм может получить в будущем. Это необходимо для того, чтобы ИИ не стал намеренно усложнять выполнение задачи с целью увеличения количества действий, за которые он может получить награду. По этой причине существует переменная γ. Значением этой переменной является число от 0 до 1. Следует отметить, что чаще всего используются значения от 0,9 до 0,99. Данный показатель умножается на награду в будущем, обесценивая возможную выгоду в будущем, и исключая возможность алгоритма действовать не рационально для нас.
У описываемого способа обучения есть и свои проблемы. Дело в том, что найдя решение задачи, алгоритм всегда будет стремиться именно к нему. Но что если решение не одно? В таком случае есть вероятность, что мы упускаем более выгодный для нас способ. Однако есть способ это исправить. Необходимо убедиться, что исполнитель изучил все возможные состояния и точно не пропустил иных решений. Вот где вступает в игру ε. ε в нашем случае означает, что мы должны действовать жадно, то есть стремиться к наибольшей выгоде здесь и сейчас. Тем не менее, ИИ должен делать случайные действия в процентном соотношении ε по времени, таким образом, при бесконечном количестве попыток мы должны исследовать все состояния.
Вернемся к математике. У нас есть длинное уравнение:
Если мы примем α = 1, то:
Полученный результат совпадает с уравнением Беллмана, которое мы видели ранее. Можно сделать вывод, что это переменная, ответственная за распространение информации о значениях состояний.
По-другому α можно назвать скоростью обучения. Как правило, она намного меньше 1. Основная цель этой переменной — избежать больших изменений в одном обновлении. Мы не даём нейронной сети чрезмерно быстро двигаться к цели, а лишь медленно приближаться к ней. В некоторых ситуациях установка α = 1 не вызовет проблем, однако зачастую при работе с нейронными сетями на скорости обучения равной 1 все может легко выйти из-под контроля.
Глава 2: NEAT
Совершенно иной способ – развитие нейронных сетей с помощью дополнения топологий или же сокращённо – NEAT. Этот метод описывает алгоритмические концепции самообучения ИИ, базирующиеся на эволюционных идеях Чарльза Дарвина. Согласно его теории, некоторые виды эволюционируют, приспосабливаясь к окружающей среде, а другие – не способные к саморазвитию – вымирают. NEAT использует эту концепцию для имитации естественного процесса эволюции. В этих целях система создаёт множество различных “видов” первого поколения, позволяя эволюционировать лучшим из них. Получая раз за разом всё более совершенные “виды”, среда продолжает процесс “эволюции” до тех пор, пока не будет достигнут необходимый результат.
NEAT работает с концепцией под названием «Fitness Score». Фитнес-оценка - это математическая функция, которая вознаграждает за успех. Может одновременно существовать множество различных переменных, включенных в функцию «Оценка состояния здоровья».
Во время работы с NEAT необходимо определить, каким путём будет протекать эволюция. Данный метод допускает мутацию узлов, новое соединение между узлами и наследование наиболее приспособленных нейронных сетей в новых потомках. Кроме того, NEAT позволяет различным видам сосуществовать до тех пор, пока им не будет позволено конкурировать в борьбе за выживание с целью производства более совершенных потомков. Для наиболее успешного развития, проверенные ранее модели не повторяются в будущем, а существующие сети модифицируют себя. Для этого NEAT прикрепляет некоторые инновации к каждому гену, который играет роль исторического маркера.
Как же происходит эволюция? Машина использует двоичную логику, чтобы включить узел, соединение одного из родителей или избавиться от него. Основной механизм принятия решений основан на истине, где только истина даёт истину, а в остальных случаях система получает ложное значение. Таким образом, потомки гарантируют, что унаследованная информация будет эффективной в отношении оценки пригодности, в то время как новые эволюционные узлы или соединения рассматриваются в потомстве, а отключенные родительские узлы остаются отключенными.
«Соответствующие гены наследуются случайным образом, тогда как непересекающиеся гены, то есть те, которые не совпадают в середине, и избыточные гены, то есть те, которые не совпадают в конце, наследуются от более подходящего родителя. В этом случае предполагается равное соответствие, поэтому непересекающиеся и избыточные гены также наследуются случайным образом. Отключенные гены могут снова стать включенными в будущих поколениях: есть заранее установленный шанс, что унаследованный ген будет отключен, если он отключен у любого из родителей ». [Stanley, Miikkulainen, Page 109, NEAT]
Глава 3: Сравнение
Так что же из этого лучше? На мой взгляд, более качественным методом обучения является Q-learning. Причины этого весьма просты:
Глава 4: Практика
***************************************************

Заключение
В ходе анализа методов Q и NEAT обучения нейронной сети было выявлено, что на сегодняшний день Q-learning является наиболее совершенным и предпочтительным подходом к решению данной задачи. Методика обучения с подкреплением имеет ряд неоспоримых преимуществ относительно псевдо-эволюции, эмитируемой средствами NEAT. В частности, агент, обученный при помощи методов Q-learning, стремится к наилучшему из возможных результатов, оставляя простор для вариативности поведения, в то время как модели NEAT эволюции останавливают свой прогресс при первом же удачном запуске.
Была создана демонстративная свёрточная нейронная сеть. Процесс создания, описанный максимально простым языком, призван облегчить читателям усвоение материала, а также показать на реальном примере устройство ИИ изнутри.
Проведённые над обученной моделью эксперименты помогают разобраться в логике работы искусственного интеллекта, что, несомненно, должно оказать положительное влияние на понимании основных механизмов работы нейронных сетей читателем.
Практическая важность работы, помимо прочего, обусловлена ещё и тем, что в русскоязычном сегменте сети интернет практически полностью отсутствует информация, позволяющая новичкам-программистам начать свой путь в области машинного обучения ИИ. На англоязычных ресурсах также крайне мало информации, дающей возможность успешно начать разрабатывать собственные нейронные сети. Таким образом, представленный мной проект может служить кратким экскурсом в мир машинного обучения, помогающий начинающим разработчикам понять принципы построения и обучения искусственного интеллекта на реальных примерах.
Использованная литература
1). https://www.machinelearningmastery.ru/how-do-we-teach-a-machine-to-program-itself-neat-learning-bb40c53a8aa6/
2). https://habr.com/ru/post/443240/
3). https://towardsdatascience.com/deploying-an-image-classifier-using-javascript-84da1480b3a4
4). https://www.tensorflow.org/js/guide/
5). https://developer.mozilla.org/ru/docs/Web/HTML/CORS_enabled_image

Как я избавился от обидчивости

Весёлая кукушка

Горка

10 осенних мастер-классов для детей

Рисуем гуашью: "Кружка горячего какао у зимнего окна"