Научная статья на тему 'ПРОГРАММНАЯ РЕАЛИЗАЦИЯ АЛГОРИТМА ОБУЧЕНИЯ НЕЙРОННОЙ СЕТИ'

ПРОГРАММНАЯ РЕАЛИЗАЦИЯ АЛГОРИТМА ОБУЧЕНИЯ НЕЙРОННОЙ СЕТИ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
203
24
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ИСКУССТВЕННАЯ НЕЙРОННАЯ СЕТЬ / ОБУЧЕНИЕ / АЛГОРИТМ / ЯЗЫК ПРОГРАММИРОВАНИЯ / СМЕЩЕНИЕ НЕЙРОНА / СУММАТОР / ВХОДНЫЕ СИГНАЛЫ / ВЫХОДНЫЕ СИГНАЛЫ / СИНАПТИЧЕСКИЕ СВЯЗИ / НЕЙРОН

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Кабышев О.А., Маслаков М.П., Кабышев А.М.

В статье рассматриваются вопросы, связанные с проектированием устройств управления технологическим оборудованием на основе искусственных нейронных сетей. Разработан алгоритм процесса обучения нейронных сетей, основанный на методе Уидроу-Хоффа, предназначенный для автоматизированного проектирования искусственных нейронных сетей, функционирующих в среде микропроцессорной системы или персонального компьютера. Выполнена программная реализация алгоритма обучения трехслойной нейронной сети с использованием языка программирования С# на платформе Microsoft.NET. В программе используется алгоритм обучения нейронной сети с «учителем». В статье показан интерфейс взаимодействия разработанной программы с «учителем» (проектировщиком нейронных сетей). Приведен пример разработки искусственной нейронной сети, выполняющей функцию сумматора двоичных чисел. Полученные в статье результаты могут быть в дальнейшем использованы при разработке компьютерной системы автоматизированного проектирования искусственных нейронных сетей, а также могут найти применение при разработке программного обеспечения для микропроцессорных систем управления технологическим оборудованием.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Кабышев О.А., Маслаков М.П., Кабышев А.М.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

SOFTWARE IMPLEMENTATION OF THE NEURAL NETWORK TRAINING ALGORITHM

The article deals with the issues related to the design of control devices for technological equipment based on artificial neural networks. The algorithm of the neural network training process based on the Widrow-Hoff method is developed, designed for computer-aided design of artificial neural networks operating in the environment of a microprocessor system or a personal computer. The authors perform a software implementation of the algorithm for training a three-layer neural network using the C# programming language on the platform Microsoft.NET. The program uses a neural network training algorithm with a "teacher". The article shows the interface of interaction of the developed program with the "teacher" (designer of neural networks). An example is given of the development of an artificial neural network that performs the function of a binary number adder. The results of the research can be further used in the development of a computer-aided design system for artificial neural networks, and can also be used in the development of software for microprocessor control systems for technological equipment.

Текст научной работы на тему «ПРОГРАММНАЯ РЕАЛИЗАЦИЯ АЛГОРИТМА ОБУЧЕНИЯ НЕЙРОННОЙ СЕТИ»

Программная реализация алгоритма обучения нейронной сети

О.А. Кабышев, М.П. Маслаков, А.М. Кабышев

Северо-Кавказский горно-металлургический институт (государственный

технологический университет)

Аннотация: В статье рассматриваются вопросы, связанные с проектированием устройств управления технологическим оборудованием на основе искусственных нейронных сетей. Разработан алгоритм процесса обучения нейронных сетей, основанный на методе Уидроу-Хоффа, предназначенный для автоматизированного проектирования искусственных нейронных сетей, функционирующих в среде микропроцессорной системы или персонального компьютера. Выполнена программная реализация алгоритма обучения трехслойной нейронной сети с использованием языка программирования С# на платформе Microsoft.NET. В программе используется алгоритм обучения нейронной сети с «учителем». В статье показан интерфейс взаимодействия разработанной программы с «учителем» (проектировщиком нейронных сетей). Приведен пример разработки искусственной нейронной сети, выполняющей функцию сумматора двоичных чисел. Полученные в статье результаты могут быть в дальнейшем использованы при разработке компьютерной системы автоматизированного проектирования искусственных нейронных сетей, а также могут найти применение при разработке программного обеспечения для микропроцессорных систем управления технологическим оборудованием. Ключевые слова: Иискусственная нейронная сеть, обучение, алгоритм, язык программирования, смещение нейрона, сумматор, входные сигналы, выходные сигналы, синаптические связи, нейрон.

Искусственные нейронные сети находят применение для обработки сигналов в системах управления и диагностики режимов работы технологического оборудования [1]. Применение в системах управления комбинационных логических автоматов, выполненных на основе искусственных нейронных сетей, позволяет разрабатывать технологическое оборудование, адаптирующееся к конкретным условиям технологического процесса.

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

которые отсутствовали в обучающей выборке. При этом достаточно трудоемким процессом, требующим большого объема вычислений, является поиск величин весовых коэффициентов синаптических связей и смещений нейронов сети [2, 3]. Поэтому при разработке и реализации нейронных сетей целесообразно использовать возможности современных средств микропроцессорной и вычислительной техники с соответствующим программным обеспечением, реализующим определенный алгоритм обучения. Алгоритмам обучения нейронных сетей посвящено большое количество разработок и публикаций [4-6].

На рис.1 показана схема процесса обучения нейронной сети, в которой использован алгоритм обратного распространения ошибки на основе метода Уидроу-Хоффа [3-5]. Программная реализация этой схемы в вычислительной среде микропроцессорной системы или персонального компьютера позволяет автоматизировать процесс разработки искусственных нейронных сетей.

В процессе обучения, согласно алгоритму, на вход нейронной сети подаются сигналы из массива обучающих выборок "х'\ а также сети

предоставляется информация, в виде массива эталонных значений "у0п, о

том, как необходимо реагировать на каждую обучающую выборку. Эта информация задается разработчиком нейронной сети в блоке №1 алгоритма. В блоке №2 формируются начальные значения весов синаптических связей "м" и смешений (порогов)11Ь11 нейронов сети. В блоке №3 разработчик задает

скорость обучения "а" (выбирается число в диапазоне: 0<и <1) и количество

итераций "п", эти величины влияют на качество обучения [7]. Вычисление

текущих состояний "б" и выходных сигналов "у" нейронов, входящих в

состав сети, осуществляется в блоке №4. Текущее состояние каждого нейрона сети вычисляется по формуле: 5=27=1 ** * гДе: Х1 ~ входной I-

й сигнал; w¿ - вес синаптической связи по которой передается г-й сигнал; Ь-смещение нейрона; ш - количество входных сигналов. Величины сигналов

II П •_» II II

у на выходах нейронов зависят от величин текущего состояния s и от

того, какая функция активации применяется в нейронах [2, 4]. Вычисление ошибок и корректировка весовых коэффициентов выполняется в блоке №5.

Рис. 1. Алгоритм обучения искусственной нейронной сети

М Инженерный вестник Дона, №3 (2021) ivdon.ru/ru/magazine/arcliive/n3y2021/6850

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

реальным значением "у", рассчитывается по формулам:

- = О - ) ■.'. ; 1 - !- для нейронов выходного слоя,

- для остальных слоев,

где: <5,- ошибка нейрона с номером /; у у выход нейрона с номером ;; ¿-

номер слоя, который посылает ошибку по сети в обратном направлении (с выхода сети на вход).

Рассчитываются величины, на которые надо изменить весовые коэффициенты: Ди7г;=а* <5, * хи где: ск - скорость обучения; х{ - сигнал,

поступающий от нейрона с номером г; ошибка нейрона].

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

коэффициентов. Для корректировки смещений (порогов) нейрона с номером ] используется формула: Ь;= Ъ ; -На* .

В блоке №6 контролируется количество выполненных итераций обучения.

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

Программная реализация рассмотренного алгоритма выполнена на языке программирования С# (платформа Microsoft.NET) [8, 9, 10].

Ниже приведена основная часть кода разработанной программы:

//задание типа переменных и начальных значений весов

double w11=0, w21=0, w12=0, w22=0,

w13=0, w23=0, b1=0, b2=0, b3=0, a, s1, s2,

s3, error3, error2, error1, y1, y2;

int n; // число итераций

// интерфейс ввода обучающей выборки

"xl"

double[] x1 = new double[4] {

double.Parse(textBox11.Text),

double.Parse(textBox12.Text),

double.Parse(textBox14.Text),

double.Parse(textBox13.Text)};

// интерфейс ввода обучающей выборки

"x2"

double[] x2 = new double[4] {

double.Parse(textBox18.Text),

double.Parse(textBox17.Text),

double.Parse(textBox16.Text),

double.Parse(textBox15.Text)};

// интерфейс ввода эталонных значений

выхода сети

double[] y0 = new double[4] {

double.Parse(textBox22.Text),

double.Parse(textBox21.Text),

double.Parse(textBox20.Text),

double.Parse(textBox19.Text)};

double[] y = new double[4]; // массив

выходных значений сети

// процедура функции вычисления

for (int j = 1; j <= n; j++)

{for (int k = 1; k <= 4; k++)

{// вычисление текущих состояний "s" и

выходных значений "y" нейронов

s1 = (w11 * x1[k]) + (w21 * x2[k]) + b1;

у1=1/(1+МаШ.Ехр(-Б1));

62 = ^12 * х1[к]) + ^22 * х2[к]) + Ь2; у2 = 1 / (1 + МаШ.Ехр(-Б2));

63 = (w13 * у1) + (w23 * у2) + Ь3; у[к] = 1 / (1 + МаШ.Ехр(-Бз));

// вычисление ошибок еггогЭ = (у0[к] - у[к]) * (1 - у[к]) * у[к]; еггог1 = у1 * (1 - у1) * (еггогЭ * w13); еггог2 = у2 * (1 - у2) * (еггогЭ * w23); // корректировка весов и смещений w11 += а * еггог1 * х1[к]; w12 += а * еггог1 * х2[к]; w21 += а * еггог2 * х1[к]; w22 += а * еггог2 * х2[к]; w13 += а * еггогЭ * у1; w23 += а * еггогЭ * у2; Ь1 += а * еггог1; Ь2 += а * еггог2; ЬЭ += а * еггогЭ;}} //вывод результатов обучения сети 1ех1Бох1.Тех1 = w11.ToStгing(м0.00м 1ех1Бох2.Тех1 = w21.ToStгing(м0.00м textБox3.Text = Ь1.^й^("0.00"); textБox6.Text = w12.ToStгing("0.00" textБox5.Text = w22.ToString("0.00" textБox4.Text = Ь2.ToStгing("0.00"); textBox9.Text = w13.ToStгing("0.00" textБox8.Text = w23.ToStгing("0.00" textБox7.Text = Ь3.ToStгing("0.00"); textБox26.Text = у[0].^№^("0.00"); textБox25.Text = y[1].ToStгing("0.00"); textBox24.Text = y[2].ToStгing("0.00"); textБox23.Text = y[з].ToStгing("0.00");

Программа адаптирована для обучения нейронной сети, показанной на рис.2. Сеть состоит из трех нейронов, входные сигналы "х1, х2" образуют первый слой сети, нейроны 1 и 2 входят в состав второго (промежуточного) слоя, нейрон с номером 3 находится в выходном слое, сигнал на его выходе характеризует реакцию сети на входные сигналы. В состав нейронов входят преобразователи, устанавливающие логистическую зависимость выходных сигналов нейронов "у1, у2, у" от их текущих состояний "б" [2].

и

Рис. 2. Структурная схема нейронной сети

Интерфейс обеспечивающий взаимодействие программы с оператором (разработчиком нейронной сети) представлен на рис. 3. Для обучения нейронной сети необходимо ввести обучающую выборку, ожидаемые выходные данные («Эталонный выход») и «нажать» кнопку «Вычислить» (рис.3). Веса синаптических связей нейронов автоматически корректируются и в поле «Выходной сигнал» отобразится полученный результат работы нейронной сети. Изменяя параметры «Скорость обучения» и «Количество итераций», можно корректировать скорость и точность обучения нейронной сети.

Рис.3. Интерфейс программы

и

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

Рис. 4. Схема сумматора

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

Литература

1. Minsky M. L., Papert S. A. Perceptrons. — Cambridge: MIT Press, 1969. 258 ^

2. Хайкин С. Нейронные сети: полный курс, 2-е издание.: Пер. с англ. М.: Издательский дом «Вильямс», 2006. 1104 с.

3. Тархов, Д.А. Нейронные сети. Модели и алгоритмы. Кн.18. Справочное издание. (Серия 'Нейрокомпьютеры и их применение'): - М.:Радиотехника, 2005. 256 с.

4. Круглов В.В., Борисов В.В. Искусственные нейронные сети. Теория и практика. М.: Горячая линия - Телеком, 2002. 382 с.

5. Романов Д.Е. Нейронные сети обратного распространения ошибки // Инженерный вестник Дона, 2009, №3. URL: ivdon.ru/magazine/archive/n3y2009/143/.

6. Лила В.Б. Алгоритм и программная реализация адаптивного метода обучения искусственных нейронных сетей // Инженерный вестник Дона, 2012, №1. URL: ivdon.ru/magazine/archive/n1y2012/626/.

V. Handbook of neural network signal processing/ Edited by Yu Hen Hu, Jenq-Neng Hwang. - Boca Raton; London; New York, Washington D.C.: CRC press, 2001. 384 c.

8. Головко В.А., под ред. проф. Галушкина А.И. Нейронные сети: обучение, организация и применение, ИПРЖР, Москва, 2001. 256 с.

9. Фаронов В. В., Создание приложений с помощью C#: Руководство программиста. М.: Эксмо, 2008. 575 с.

10. Пахомов Б. И. C# для начинающих. СПб.: БХВ-Петербург, 2014. 432 с

References

1. Minsky M. L., Papert S. A. Perceptrons. Cambridge: MIT Press, 1969. 258

p.

2. Khaykin S. Neyronnye seti: polnyy kurs [Neural Networks: a complete course], 2-e izdanie. Per. s angl. M.: Izdatel'skiy dom «Vil'yams», 2006. 1104 p.

3. Tarkhov, D.A. Neyronnye seti. Modeli i algoritmy [Neural networks. Models and algorithms]. Kn.18. Spravochnoe izdanie. (Seriya 'Neyrokomp'yutery i ikh primenenie'): M.: Radiotekhnika, 2005. 256 p.

4. Kruglov V.V., Borisov V.V. Iskusstvennye neyronnye seti. Teoriya i praktika [Artificial neural networks. Theory and practice]. M.: Goryachaya liniya Telekom, 2002. 382 p.

5. Romanov, D.E. Inzhenernyj vestnik Dona, 2009, №3. URL: ivdon.ru/magazine/archive/n3y2009/143/.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

6. Lila V.B. Inzhenernyj vestnik Dona, 2012, №1. URL: ivdon.ru/magazine/archive/n1y2012/626/.

7. Yu Hen Hu, Jenq-Neng Hwang. Boca Raton; London; New York, Washington D.C.: CRC press, 2001. 384 p.

8. Golovko V.A., pod red. prof. Galushkina A.I. Neyronnye seti: obuchenie, organizatsiya i primenenie [Neural networks: Training, organization, and application], IPRZhR, Moscow, 2001. 256 p.

9. Faronov V. V., Sozdanie prilozheniy s pomoshch'yu C#: Rukovodstvo programmista [Creating Applications with C#: A Programmer's Guide]. M.: Eksmo, 2008. 575 p.

10. Pakhomov B. I. C# dlya nachinayushchikh [C# for beginners]. SPb.: BKhV-Peterburg, 2014. 432 p.

i Надоели баннеры? Вы всегда можете отключить рекламу.