Сокращение эпох обучения и повышение точности тестирования

Вступление

Искусственные нейронные сети вдохновлены природой нашего мозга. Точно так же генетические алгоритмы вдохновлены природой эволюции. Нейронная эволюция - это подмножество машинного обучения, которое использует эволюционные алгоритмы для генерации параметров искусственной нейронной сети. В этой статье я покажу систематический способ обучения нейронных сетей с помощью энетических нейронных сетей. Эти нейронные сети обладают такими свойствами, как приспособленность, и используют генетический алгоритм для обучения случайно сгенерированных весов. Генетическая оптимизация происходит до обратного распространения ошибки, что дает лучшую отправную точку для любого типа градиентного спуска. Весь код этого проекта можно найти на моем гитхабе.

Последовательные нейронные сети

Эта последовательная нейронная сеть принимает матрицу входных данных, соединенных вне модели с вектором истинных выходных значений. Затем путем итерации по каждому слою матрица преобразуется с помощью весов и функции активации.

Это последовательная нейронная сеть с одной входной матрицей, двумя скрытыми слоями, одним выходным слоем, тремя матрицами весов и одним типом функции активации.

Алгоритмы обучения

Первоначальные прогнозы, скорее всего, будут неточными, поэтому для обучения последовательной нейронной сети, чтобы делать более точные прогнозы, мы рассматриваем ее как составную функцию.

Рассмотрение нейронной сети как составной функции позволяет нам создать функцию потерь с постоянной матрицей входов и вектором истинных выходов (X и y).

Теперь, когда все в терминах функций и есть четкая цель (минимизировать потери), у нас есть задача оптимизации из многомерного исчисления. Частичное дифференцирование по весам функции потерь и использование цепного правила позволит нам вычислить градиент. Затем мы можем сделать шаг в отрицательном направлении в направлении наибольшего увеличения, обновить веса и повторить процесс. Это процесс градиентного спуска. Существуют различные типы (пакетный, стохастический, мини-пакет), которые направлены на решение возникающих проблем, например, нахождения в пределах относительных минимумов.

Однако вычислительные затраты на градиентный спуск могут стать очень дорогими, поскольку модели становятся все более сложными. Генетические нейронные сети обеспечивают альтернативный процесс начального обучения, чтобы дать лучшую отправную точку, позволяя сократить количество эпох во время обратного распространения.

Генетические нейронные сети

В g энетической нейронной сети сеть рассматривается как вычислительный объект с полями и приспособленностью. Эти поля считаются генами, которые необходимо оптимизировать с помощью генетического алгоритма до обратного распространения. Это дает градиентному спуску лучшую начальную позицию и позволяет сократить количество эпох обучения с более высокой точностью тестирования модели. Рассмотрим следующую генетическую нейронную сеть , где веса рассматриваются как поля в вычислительном объекте.

Поля - это гены, относящиеся к каждому экземпляру генетической нейронной сети. Как и последовательную нейронную сеть, ее можно выразить как составную функцию.

Однако, прежде чем использовать исчисление, мы воспользуемся генетическим алгоритмом, чтобы применить эволюционный подход к оптимизации весов.

Генетические алгоритмы

В природе кроссовер хромосом выглядит следующим образом ...

Если упростить абстрактные хромосомы на блоки…

Почти напоминает вам два вектора 3x1, не так ли? Эту же логику использует генетический алгоритм для изменения весовых матриц. Идея состоит в том, чтобы создать начальную популяцию генетических нейронных сетей n, после прямого распространения вычислить оценку пригодности и, наконец, выбрать наиболее подходящих индивидуумов для создания детей. Этот процесс будет повторяться до тех пор, пока не будет найден оптимальный начальный вес для обратного распространения ошибки.

Прикладные генетические нейронные сети

Сначала мы должны установить, что такое генетическая нейронная сеть. Архитектура генетической нейронной сети будет отражать желаемую форму ввода, скрытые слои, узлы и т. Д. Нейронной сети для оптимизации. В этом случае я использую последовательную модель с четырьмя входными узлами, двумя скрытыми слоями и одним выходным слоем (в соответствии с приведенными выше диаграммами), но ее можно распространить на любой тип нейронной сети.

Теперь, когда генетическая нейронная сеть создана, мы можем разработать алгоритм кроссовера. Мы будем использовать одноточечный кроссовер, аналогичный приведенной выше биологической иллюстрации. Каждый столбец матрицы будет иметь равные шансы быть выбранным в качестве точки пересечения для каждого родителя, чтобы объединить свои гены и передать их потомку.

Чтобы гарантировать, что население исследует пространство решений, есть вероятность, что произойдет мутация. Вероятность и мощность мутации в этом случае значительно выше, чем у большинства других генетических алгоритмов, поскольку пространство решений очень велико. Нет особого способа изменить матрицу, в этом случае я произвольно выполняю скалярное умножение матрицы на величину 2–5. Наконец, смоделируйте эволюцию генетических нейронных сетей. Нам нужны данные для обучения наших сетей, поэтому мы воспользуемся хорошо известным набором данных о банкнотах.

Первая модель:

10 поколений генетического алгоритма и 10 эпох для обучения

Вторая модель:

10 эпох для тренировки

Генетическая нейронная сеть показала точность теста 0,95.

Последовательная нейронная сеть показала точность теста 0,57.

Генетическая нейронная сеть повысила точность модели на 0,38 при том же количестве эпох обучения.

Заключение

Целью этой статьи было познакомить с нейронной эволюцией, чтобы помочь в тренировочном процессе. Проект еще предстоит оптимизировать для скорости, скорости мутаций и кроссовера, которые являются собственными исследовательскими проектами.