ОБУЧЕНИЕ НЕЙРОННОЙ СЕТИ ПРИ ПОМОЩИ ГЕНЕТИЧЕСКОГО АЛГОРИТМА ДЛЯ ЛОГИЧЕСКИХ ОПЕРАТОРОВ OR, AND И XOR
Национальный исследовательский Томский политехнический университет
Аннотация
В данной статье разработана программа на языке C#, реализующая многослойную нейронную сеть с двумя скрытыми слоями. Для обучения нейронной сети логических операторов XOR, OR и AND использован генетический алгоритм. Проведены эксперименты обучения созданной нейронной сети с разными параметрами генетического алгоритма и проведена оценка полученных результатов.
Ключевые слова: генетический алгоритм, нейронная сеть
THE TRAINING OF NETWORK VIA THE GENETIC ALGORITHM FOR OR, AND AND XOR OPERATORS
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.
Библиографическая ссылка на статью:
Щукова К.Б. Обучение нейронной сети при помощи генетического алгоритма для логических операторов OR, AND и XOR // Современная техника и технологии. 2015. № 11 [Электронный ресурс]. URL: https://technology.snauka.ru/2015/11/8179 (дата обращения: 08.07.2026).
Общая идея обучения нейронной сети (НС) при помощи генетического алгоритма (ГА) включает следующие шаги:
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 |
Из таблиц видно, что результаты нейронной сети, обученной при помощи генетического алгоритма, зависят от выбранных параметров. Чем больше поколений, и чем меньше вероятность мутации, тем точнее результаты, то есть ближе к идеальным значениям. Соответственно, ошибка вычислений меньше. Процент скрещиваемых особей популяции также влияет на результаты. Чем он больше, тем выше точность. Однако, в некоторых случаях необязательно задавать большую длительность эволюции для получения наиболее точных результатов. Как показали эксперименты, увеличив процент скрещивания и вероятность мутации, можно получить близкие к идеальным результатам.
Благодаря вещественному кодированию упростился процесс кодирования, так не нужно было реализовывать операции кодирования/декодирования, используемые в целочисленном кодировании, а также увеличилась точность найденного решения, что видно из проведенных экспериментов. На точность также повлиял выбор типа функции активации. Благодаря сигмоиду были усилены слабые сигналы и ослаблены сильные сигналы.
Библиографический список
- Хайкин С. Нейронные сети. М.: Издательский дом "Вильямс", 2006.
- Бодянский Е.В. Искусственные нейронные сети: архитектура, обучение и применение. Харьков: Телтех, 2004.
Все статьи автора «Щукова Кристина Борисовна»
© Если вы обнаружили нарушение авторских или смежных прав, пожалуйста, незамедлительно сообщите нам об этом по электронной почте.





