УДК 004.41

ОБУЧЕНИЕ НЕЙРОННОЙ СЕТИ ПРИ ПОМОЩИ ГЕНЕТИЧЕСКОГО АЛГОРИТМА ДЛЯ ЛОГИЧЕСКИХ ОПЕРАТОРОВ OR, AND И XOR

Щукова Кристина Борисовна
Национальный исследовательский Томский политехнический университет

Аннотация
В данной статье разработана программа на языке C#, реализующая многослойную нейронную сеть с двумя скрытыми слоями. Для обучения нейронной сети логических операторов XOR, OR и AND использован генетический алгоритм. Проведены эксперименты обучения созданной нейронной сети с разными параметрами генетического алгоритма и проведена оценка полученных результатов.

Ключевые слова: генетический алгоритм, нейронная сеть


THE TRAINING OF NETWORK VIA THE GENETIC ALGORITHM FOR OR, AND AND XOR OPERATORS

Shchukova Kristina Borisovna
National Research Tomsk Polytechnic University

Abstract
The article describes the program developed on the C# in that the multi-layered network with the two hidden layers has been implemented. In order to train the network for XOR, AND and OR operators, the genetic algorithm was applied. The experiments of network tranining via the genetic algorithm with different values have been carried out, and the results obtainded have been estimated.

Keywords: AND, C#, OR, XOR


Библиографическая ссылка на статью:
Щукова К.Б. Обучение нейронной сети при помощи генетического алгоритма для логических операторов OR, AND и XOR // Современная техника и технологии. 2015. № 11 [Электронный ресурс]. URL: http://technology.snauka.ru/2015/11/8179 (дата обращения: 27.05.2017).

Общая идея обучения нейронной сети (НС) при помощи генетического алгоритма (ГА) включает следующие шаги:

1. Формирование начальной популяции.

2. Обучение.

3. Оценка популяции.

4. Ранжировка.

5. Селекция.

6. Скрещивание.

7. Мутация [1].

Информация о нейронной сети кодируется в геном для ГА. В начале алгоритма число популяции генерируется случайно. Необходимо нейронную сеть преобразовать в соответствие с информацией о геноме. Далее необходимо оценить результаты после обучения НС. Далее выполняются стандартные шаги ГА: оценка популяции, селекция, скрещивание, мутация. Главная проблема при комбинировании НС и ГА заключается в преобразовании или кодировании НС в геномы для ГА [2].

Для решения поставленной задачи рассмотрим структуру НС для логических операций OR, XOR и AND. Сеть является многослойной прямого распространения. На вход поступает два нейрона (1 и 0), есть два скрытых слоя и один выходной результат (1 или 0). На рисунке 1 приведена структура многослойной сети для интерпретации решаемой задачи.

Рисунок 1. Структура многослойной сети

Таким образом, НС имеет два входных нейрона, два скрытых слоя и один выходной нейрон.

Для генетического алгоритма было выбрано вещественное кодирование, так как это позволяет избавиться от операций кодирования/декодирования, используемых в целочисленном кодировании, а также увеличить точность найденного решения. В качестве метода скрещивания – двухточечный кроссинговер. В качестве функции активации выбрана сигмоидальная функция. Метод селекции – селекция с усечением.

На 2 рисунке предоставлена разработанная диаграмма классов, описывающая нейронную сеть.

Рисунок 2. Диаграмма классов нейронной сети

Описания назначения классов представлены в таблице 1.

Таблица 1. Назначение разработанных классов

Название класса

Назначение

ActivationFunction

Класс реализует общий вид функции активации.

ActivationSigmoid

Класс реализует сигмоид, заданный формулой:

  

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

Chromosome

Класс реализует хромосому и ее параметры.  Каждая хромосома имеет набор генов, значение целевой функции, число генов, метод скрещивания (двухточечный кроссинговер).

ErrorCalculation

Вычисляется ошибка полученного значения выходного нейрона для того, чтобы определить насколько полученное значение отличается от эталонного или идеального значения. Для этого вычисляется среднеквадратичная ошибка. Каждый элемент обучаемого множества сравнивается с эталоном.  Ошибка вычисляется по формуле:

 

FeedforwardLayer

Описывает каждый слой нейронной сети. Содержит свойства, определяющие входной слой, скрытые слои и выходной слой. Также содержит метод ComputeOutput для расчета выходного нейрона. Выходное значение рассчитывается по формуле:

 

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

FeedforwardNetwork

Описывает нейронную сеть, состоящую из нескольких слоев, описанных в классе FeedforwardLayer.

GeneticAlgorithm

Реализует все этапы генетического алгоритма: селекция, скрещивание, мутация, оценивание.

MateWorker

Реализует сам процесс скрещивания особей для создания нового поколения (двухточечный кроссинговер).

Matrix

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

MatrixCODEC

Реализует матрицу кодирования и декодирования. Матрица CODEC может кодировать и декодировать матрицу в/из массива типа doubles. Матрица кодирования и декодирования нужна, когда нейронная сеть должна быть  преобразована в массив типа doubles для использования генетического алгоритма.

MatrixMath

Класс, содержащий методы математических операций. В нем реализованы методы нахождения скалярного произведения матрицы. Скалярное произведение двух матриц необходимо для вычисления выходного нейрона. Используется в классе FeedforwardLayer в методе ComputeOutputs.

NeuralChromosome

Преобразованная хромосома, связанная с НС.

NeuralGeneticAlgorithm

Адаптация генетического алгоритма для нейронной сети.

Train

Класс, описывающий основные этапы обучения. В нем вызывается метод Iteration, которые реализован в классе Genetic Algorithm. То есть обучение ведется при помощи ГА.

TrainingSetNeuralChromosome

Преобразование нейрона в хромосому для использования ГА. Обучение нейронной сети ГА. Содержит метод вычисления значения целевой функции нейрона.

TrainingSetNeuralGeneticAlgorithm

Обучение нейронной сети ГА. Содержит метод вычисления среднеквадратичной ошибки при определение лучше приспособленной особи. В методе реализуется процесс обучение нейронной сети ГА и вызывается метод TrainingSetNeuralChromosome.

Были проведены различные эксперименты для трех логических операторов XOR, AND и OR с различными параметрами генетического алгоритма.

Пример эксперимента для оператора “ИЛИ” приведен на рисунке 3.

Рисунок 3. Пример обучения нейронной сети

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

Для наглядности результаты работы сведены в таблицы 2-4.

Таблица 2. Результаты работы нейронной сети для логического оператора “ИЛИ”

Число поколений

Размер популяции

Вероятность мутации

Процент скрещивания

Значение № 1

(0 or 0 = 0)

Значение № 2

(1 or 0 = 1)

Значение № 3

(0 or 1 = 1)

Значение № 4

(1 or 1 = 1)

Средняя ошибка

1

100

200

0.1

0.1

0.691

0.695

0.7276

0.7527

0.45

2

500

500

0.2

0.3

2.21E-07

1

0.99

1

0.37

3

1500

800

0.4

0.5

1Е-20

1

1

1

5Е-21

4

100000

5000

0.4

0.5

1Е-20

1

1

1

5Е-21

5

500000000

400

0.1

0.25

5.421Е-13

1

1

1

0.048

6

100000000

50000

0.2

0.5

0.000723

0.99

0.99

0.99

0.00036

Таблица 3. Результаты работы нейронной сети для логического оператора “И”

Число поколений

Размер популяции

Вероятность мутации

Процент скрещивания

Значение № 1

(0 or 0 = 0)

Значение № 2

(1 or 0 = 0)

Значение № 3

(0 or 1 = 0)

Значение № 4

(1 or 1 = 1)

Средняя ошибка

1

100

100

0.1

0.25

0.021

0.156

0.1552

0.863

0.23

2

500

300

0.2

0.25

1Е-20

1Е-20

1Е-20

1

0.006

3

2000

900

0.4

0.5

1Е-20

1Е-20

1Е-20

1

0.108

4

5000

2000

0.2

0.5

1Е-20

1Е-20

1Е-20

1

8.66Е-21

5

500000

20000

0.3

0.2

1Е-20

1.45Е-15

1Е-20

1

7.28Е-16

6

90000

2000

0.05

0.35

0.00022

0.00122

0.00021

1

0.00063

Таблица 4. Результаты работы нейронной сети для логического оператора “Исключающее ИЛИ”

Число поколений

Размер популяции

Вероятность мутации

Процент скрещивания

Значение № 1

(0 or 0 = 0)

Значение № 2

(1 or 0 = 1)

Значение № 3

(0 or 1 = 1)

Значение № 4

(1 or 1 = 0)

Средняя ошибка

1

150

100

0.1

0.2

8.66Е-08

0.5

0.5

0.5

0.433

2

500

300

0.3

0.35

1Е-20

1

1

1Е-20

7.07Е-21

3

1200

500

0.009

0.6

1Е-20

1

1

1Е-20

7.07Е-21

4

100000

10000

0.122

0.37

2.677Е-06

0.99

0.99

2.24Е-06

1.748Е-06

5

500000

40000

0.1

0.9

1.746Е-09

0.99

0.99

1.481Е-16

7.1316Е-06

6

48909

400

0.39

0.7

1Е-20

0.99

1

1Е-20

1.53Е-11

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

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


Библиографический список
  1. Хайкин С. Нейронные сети. М.: Издательский дом “Вильямс”, 2006.
  2. Бодянский Е.В. Искусственные нейронные сети: архитектура, обучение и применение. Харьков: Телтех, 2004.


Все статьи автора «Щукова Кристина Борисовна»


© Если вы обнаружили нарушение авторских или смежных прав, пожалуйста, незамедлительно сообщите нам об этом по электронной почте или через форму обратной связи.

Связь с автором (комментарии/рецензии к статье)

Оставить комментарий

Вы должны авторизоваться, чтобы оставить комментарий.

Если Вы еще не зарегистрированы на сайте, то Вам необходимо зарегистрироваться: