Модифицированный контроллер управления обучением нейронной сети с генетическим алгоритмом
MODIFIED CONTROLLER FOR CONTROL OF TRAINING NEURAL NETWORK WITH GENETIC ALGORITHM

Изобретение относится к интеллектуальным контроллерам, использующим генетический алгоритм для поиска структуры нейронной сети и весовых коэффициентов ее синоптических связей.
Известен патент США: US 6553357 В2 «Устройство для улучшения архитектуры нейронной сети с помощью эволюционного алгоритма» (МПК G06N 3/08, G06N 3/04). Данное устройство состоит из входящего процессора (Input processor), блока нейронной сети, блока эволюционного алгоритма и выходящего процессора. На входящий процессор поступает сигнал, который включает или новые данные или оценку вычислений или обучающую выборку. От входящего процессора идет сигнал на блок нейронной сети, нейронная сеть связана выходным сигналом с выходящим процессором и блоком эволюционного алгоритма, от блока эволюционного алгоритма идет три сигнала на блок нейронной сети (параметры обучения нейронной сети, архитектура нейронной сети, параметры инициализации нейронной сети).
Недостатками данного устройства являются: алгоритм работы слабо детализирован и допускает различные варианты исполнения, а также большое количество вычислений.
Наиболее близким техническим решением является патент РФ МПК G06F 15/18 №2602973 «Контроллер управления обучением нейронной сети с генетическим алгоритмом». Данное устройство состоит из следующих структурных компонент: объекта управления, блока обучения нейронной сети, блока оценки производительности нейронной сети, блока данных, блока нейронной сети, блока управления, блока генетического алгоритма, блока истории хромосом и блока оценки хромосом. Принцип работы устройства по патенту РФ МПК G06F 15/18 №2602973 - на устройство поступают данные о задаче, которую необходимо решить с помощью нейронной сети, блок управления инициализирует работу блока генетического алгоритма, который в свою очередь начинает формирование популяции хромосом (нейронных сетей), которые последовательно поступают в блок нейронной сети и обучаются с помощью блока обучения нейронной сети, обученная нейронная сеть оценивается с помощью блока оценки производительности нейронной сети, а также блока оценки хромосом и записывается в блок истории хромосом. После того, как все нейронные сети обучены и оценена их производительность, происходит оценка соответствия лучшей нейронной сети поставленной задаче, если лучшая нейронная сеть не соответствует поставленным критериям, то блок управления начинает формирование новой популяции.
Недостатком данного устройства является сложность реализации, частичное дублирование функционала блоками управления и генетического алгоритма, а также блока оценки производительности нейронной сети и блока оценки хромосом.
Задача - усовершенствование контроллера управления обучением нейронной сети с генетическим алгоритмом и расширение функциональных возможностей.
Техническим результатом предлагаемого устройства является повышение скорости нахождения субоптимальной нейронной сети, удовлетворяющей заданным показателям качества работы.
Технический результат достигается тем, что в модифицированный контроллер управления обучением нейронной сети с генетическим алгоритмом содержащий объект управления, блок данных, блок обучения нейронной сети, блок оценки производительности нейронной сети, блок нейронной сети, блок управления, блок истории хромосом, первый выход объекта управления связан с первым входом блока данных, первый выход блока обучения нейронной сети связан с третьим входом блока данных, второй выход блока обучения нейронной сети связан со вторым входом блока нейронной сети, первый выход блока оценки производительности нейронной сети связан со вторым входом блока данных, второй выход блока оценки производительности нейронной сети связан с третьим входом блока нейронной сети, первый выход блока данных связан с первым входом блока оценки производительности нейронной сети, второй выход блока данных связан с первым входом блока обучения нейронной сети, третий выход блока данных связан с первым входом блока нейронной сети, четвертый выход блока данных связан с первым входом блока управления, первый выход блока нейронной сети связан со вторым входом блока обучения нейронной сети, второй выход блока нейронной сети связан со вторым входом блока оценки производительности нейронной сети, третий выход блока нейронной сети связан с первым входом объекта управления, четвертый выход блока нейронной сети связан со вторым входом блока управления, первый выход блока управления связан с четвертым входом блока данных, введены блок генератора случайных чисел, блок скрещивания, блок мутации, блок отбора хромосом, при этом четвертый выход блока нейронной сети также связан со вторым входом блока истории хромосом, второй выход блока управления связан с пятым входом блока нейронной сети, третий выход блока управления связан с первым выходом блока истории хромосом, четвертый выход блока управления связан с первым входом блока отбора хромосом, пятый выход блока управления связан со вторым входом блока мутации, шестой выход блока управления связан со вторым входом блока скрещивания, седьмой выход блока управления связан с первым входом блока генератора случайных чисел, первый выход блока генератора случайных чисел связан с первым входом блока скрещивания, второй выход блока генератора случайных чисел связан с первым входом блока мутации, третий выход генератора случайных чисел связан с четвертым входом блока управления, первый выход блока скрещивания связан с третьим входом блока генератора случайных чисел, второй выход блока скрещивания связан с четвертым входом блока истории хромосом, первый выход блока мутации связан со вторым входом блока генератора случайных чисел, второй выход блока мутации связан с пятым входом блока истории хромосом, первый выход блока истории хромосом связан с третьим входом блока управления, второй выход блока истории хромосом связан с четвертым входом блока нейронной сети, третий выход блока истории хромосом связан со вторым входом блока отбора хромосом, первый выход блока отбора хромосом связан с третьим входом блока истории хромосом.
Повышение скорости нахождения субоптимальной нейронной сети достигается за счет того, что в контроллер введены блок генератора случайных чисел, блок мутации, блок скрещивания, блок отбора хромосом. Выделение блока генератора случайных чисел в отдельный блок упрощает реализацию контроллера для разработчика. Совмещение функционала блока управления и блока генетического алгоритма в блоке управления позволяет сократить временные затраты на формирование хромосом и работу устройства в целом. Выделение операций генетического алгоритма - скрещивание и мутации в отдельные блоки увеличивает скорость работы устройства и упрощает реализацию. Добавление блока отбора хромосом позволяет упростить переход к следующему поколению за счет выделения данного процесса в отдельной компоненте.
Таким образом, совокупность существенных признаков, изложенных в формуле изобретения, позволяет достигнуть желаемый результат.
На фиг. 1 изображена схема модифицированного контроллера управления обучением нейронной сети с генетическим алгоритмом.
Система состоит из нескольких структурных компонент - объекта управления 1, блока обучения нейронной сети 2, блока оценки производительности нейронной сети 3, блока данных 4, блока нейронной сети 5, блока генератора случайных чисел 6, блока управления 7, блока скрещивания 8, блока мутации 9, блока истории хромосом 10, блока отбора хромосом 11.
Также в системе присутствуют следующие связи - от блока нейронной сети 5 идет связь 12 на объект управления 1, от объекта управления идет связь 13 на блок данных, от блока данных 4 идет связь 14 на блок оценки производительности нейронной сети 3, от блока оценки производительности нейронной сети 3 идет связь 15 на блок данных 4, от блока данных 4 идет связь 16 на блок обучения нейронной сети 2, от блока обучения нейронной сети 2 идет связь 17 на блок данных 4, от блока нейронной сети 5 идет связь 18 на блок обучения нейронной сети 2, от блока обучения нейронной сети 2 идет связь 19 на блок нейронной сети 5, от блока нейронной сети 5 идет связь 20 на блок оценки производительности нейронной сети 3, от блока оценки производительности нейронной сети 3 идет связь 21 на блок нейронной сети 5, от блока данных 4 идет связь 22 на блок нейронной сети 5, от блока данных 4 идет связь 23 на блок управления 7, от блока управления 7 идет связь 24 на блок данных 4, от блока управления 7 идет связь 25 на блок нейронной сети 5, от блока истории хромосом 10 идет связь 26 на блок нейронной сети 5, от блока нейронной сети 5 идет связь 27.1 на блок управления 7, от блока нейронной сети 5 идет связь 27.2 на блок истории хромосом 10, от блока управления 7 идет связь 28 на блок генератора случайных чисел 6, от блока генератора случайных чисел 6 идет связь 29 на блок управления 7, от блока скрещивания 8 идет связь 30 на блок генератора случайных чисел 6, от блока генератора случайных чисел 6 идет связь 31 на блок скрещивания 8, от блока мутации 9 идет связь 32 на блок генератора случайных чисел 6, от блока генератора случайных чисел 6 идет связь 33 на блок мутации 9, от блока управления 7 идет связь 34 на блок скрещивания 8, от блока управления 7 идет связь 35 на блок мутации 9, от блока управления 7 идет связь 36 на блока отбора хромосом 11, от блока истории хромосом 10 идет связь 37 на блок управления 7, от блока управления 7 идет связь 38 на блок истории хромосом 10, от блока мутации 9 идет связь 39 на блок истории хромосом 10, от блока скрещивания 8 идет связь 40 на блок истории хромосом 10, от блока истории хромосом 10 идет связь 41 на блок отбора хромосом 11, блока отбора хромосом 11 идет связь 42 на блок истории хромосом 10.
Блок обучения нейронной сети 2 предназначен для обучения нейронной сети с помощью алгоритма обратного распространения ошибки (см. Rumelhart, D.E., Hinton G.E., Williams R.J., "Learning internal representations by error propagation,", in D.E. Rumelhart and J.L. McClelland, eds. Parallel Data Processing, vol. 1, Cambridge, MA: The M.I.T. Press, pp. 318-362, 1986.) созданной блоком генетического алгоритма 7 нейронной сети.
Блок оценки производительности нейронной сети 3 служит для оценки обучения нейронной сети блоком обучения нейронной сети 2.
Блок данных 4 получает и сохраняет параметры объекта управления 1.
Блок нейронной сети 5 реализует нейронную сеть типа многослойный пресептрон прямого распространения сигнала (см. Хайкин С.Нейронные сети: полный курс, 2-е изд.: пер. с англ. М.: Издательский дом «Вильямс». 2006. 1104 с.).
Блок генератора случайных чисел 6 предназначен для получения случайного числа (блок генератора случайных чисел может быть выполнен, например, по патенту МПК G06F 7/58 RU 74498 U1).
Блок управления 7 предназначен для управления процессом работы генетического алгоритма.
Блок скрещивания 8 предназначен для выполнения операции скрещивания генетического алгоритма.
Блок мутации 9 предназначен для выполнения операции мутации генетического алгоритма (операции мутация и скрещивание см. в Рутковская Д., Пилиньский М., Рутковский Л. Нейронные сети, генетические алгоритмы и нечеткие системы: Пер. с польск. М.: Горячая линия - Телеком. 2006. 452 с.).
Блок истории хромосом 10 предназначен для хранения хромосом, сгенерированных при работе устройства.
Блок отбора хромосом 11 реализует метод «рулетка» по отбору хромосом из текущего поколения в следующее (метод «рулетка» см. Рутковская Д., Пилиньский М., Рутковский Л. Нейронные сети, генетические алгоритмы и нечеткие системы: Пер. с польск. М.: Горячая линия - Телеком. 2006. 452 с.).
Заявленное устройство работает следующим образом. Выделим два режима работы устройства:
А. «Исследовательский режим». В данном режиме контроллер производит поиск структуры и параметров нейронной сети для поставленной задачи.
Б. Работа в режиме «реального времени», когда нейронная сеть уже обучена задаче, отрабатывает ее, но поступающие новые данные могут заново запустить «исследовательский режим», если увеличивается ошибка работы нейронной сети.
Рассмотрим алгоритм работы устройства в этих режимах.
Режим «А». В данном режиме устройство производит поиск оптимальной структуры нейронной сети и обучает ее на существующих данных. Алгоритм работы режима следующий:
1. На объект управления 1 поступают новые данные о задаче (временные ряды, возможные входы и выходы, допустимая ошибка при решении задачи), которые по связи 13 поступают в блок данных 4.
2. Блок данных 4 при поступлении информации от объекта управления 1 сохраняет их и инициализирует работу блока управления 7 по сигналу 23. Параллельно, если устройство работало в режиме «Б», посылается сигнал по связи 22 на блок нейронных сетей 5 о приостановке выдачи сигналов управления на объект управления 1 по связи 12.
3. Блок управления 7 начинает формирование заданного количества хромосом (нейронных сетей), записывая их в блок истории хромосом 10 по сигналу 38. Возможные параметры нейронных сетей (возможные входы, выходы, виды функций активации нейронов, предельное количество скрытых слоев и нейронов в них) задаются разработчиком.
4. Блок истории хромосом 10, получая новую хромосому, сохраняет ее и отправляет ее параметры в блок нейронной сети 5 по сигналу 26.
5. Блок нейронной сети 5, получив по сигналу 26 от блока истории хромосом 10 хромосому нейронной сети, подает сигнал 18 на блок обучения нейронной сети 2, который начинает обучение нейронной сети. При этом блок обучения нейронной сети 2 по сигналу 17 запрашивает у блока данных 4 выборку для обучения и получает ее по сигналу 16. Текущие входы нейронной сети от блока обучения нейронной сети 2 передаются на блок нейронной сети 5 по сигналу 19, рассчитанные выходы нейронной сети от блока нейронной сети 5 по сигналу 18 передается в блок обучения нейронной сети 2. Корректировка весов синоптических связей нейронной сети в блоке нейронной сети 5 производится блоком обучения нейронной сети 2 после расчета текущей ошибки работы нейронной сети, по связи 18. После того, как нейронная сеть обучилась, подается сигнал 19 от блока обучения нейронной сети 2 на блок нейронной сети 5.
6. Блок нейронной сети 5, получая сигнал 19 о том, что текущая нейронная сеть обучена по связи 20 посылает сигнал на блок оценки производительности нейронной сети 3.
7. Блок оценки производительности нейронной сети 3, получив сигнал по связи 20, начинает проверку работы текущей нейронной сети, запрашивая при этом валидационную выборку у блока данных 4 по связи 15 и получая валидационную выборку по связи 14 (валидационная выборка - см. Шумков Е.А. Система поддержки принятия решений предприятия на основе нейросетевых технологий. Дисс.канд. техн. наук. Краснодар: КубГТУ. 2004. 158 с.). Далее данные по связи 21 передаются на входы нейронной сети, находящейся в блоке нейронной сети 5, данные с выходов нейронной сети для оценки передаются с блока нейронной сети 5 по связи 20 в блок оценки производительности нейронной сети 3.
8. Оценив обученную нейронную сеть, блок оценки производительности нейронной сети 3 по сигналу 21 выдает результат на блок нейронной сети 5. Блок нейронной сети 5, получив сигнал от блока оценки производительности нейронной сети 3, передает по связи 27.2 в блок истории хромосом 10 обученную нейронную сеть и оценку ее производительности, также синхронно блок нейронной сети 5 передает сигнал 27.1 на блок управления 7 о готовности принять новую хромосому нейронной сети.
9. После того, как сформирована первоначальная популяция хромосом и все нейронные сети обучены, блок управления 7 начинает генерировать заданное количество новых хромосом с использованием блока мутации 9 и блока скрещивания 8. При этом:
10.1. Дважды запрашивая у блока генератора случайных чисел 6 по сигналу 28 случайное число и получая его по сигналу 29, блок управления 7 запрашивает по связи 38 по полученным случайным числам две хромосомы из блока истории хромосом 10 и получает их по связи 37 (при этом, если блок генератора случайных чисел 6 выдал два одинаковых числа, то блок управления 7 запрашивает по связи 28 новое число, до тех пор, пока числа не перестанут совпадать).
10.2. Выбранные хромосомы из блока управления 7 по связи 34 передаются в блок скрещивания 8.
10.3. Блок скрещивания 8, запрашивая случайное число по связи 30 у блока генератора случайных чисел 6 в пределах [0; Размер_хромосомы] и получая случайное число по связи 31, производит операцию скрещивания по разрезам соответствующим полученным случайным числам, при этом получаются две новых хромосомы, которые передаются в блок истории хромосом 10 по связи 40.
10.4. Блок истории хромосом 10, получая новые хромосомы от блока скрещивания 8 по связи 40, последовательно отправляет их в блок нейронных сетей 5 по связи 26.
10.5. Блок нейронной сети 5, получая новую хромосому от блока истории хромосом 10, выполняет шаги 6-8.
11. После того, как отработано заданное количество операций скрещивания, блок управления 7 инициализирует получение новых хромосом с использованием блока мутаций 9. При этом отрабатывает цикл (количество итераций задается разработчиком):
11.1. Запрашивая у блока генератора случайных чисел 6 по сигналу 28 случайное число и получая его по сигналу 29, блок управления 7 выбирает хромосому с указанным номером из блока истории хромосом 10, запрашивая ее по связи 38 и получая по связи 37.
11.2. Получая хромосому от блока истории хромосом 10, блок управления 7 отправляет хромосому в блок мутаций 9 по связи 35.
11.3. Блок мутаций 9, получая хромосому от блока управления 7, запрашивает по связи 32 у блока генератора случайных чисел 6 случайное число N (в интервале [0: Размер_хромосомы)) и получая случайное число N по связи 33, блок мутаций 9 запрашивает по связи 32 последовательно N раз у блока генератора случайных чисел 6 пары случайных чисел - номер гена M в хромосоме в интервале (0; Размер_хромосомы] и случайные числа  K (0 или 1), получает их по связи 33 и меняет по полученному номеру гена M значение гена на число K. Произведя N замен значений генов, блок мутации 9 возвращает в блок истории хромосом 10 новую хромосому по связи 39.
12. Блок истории хромосом 10, получая по связи 39 от блока мутации 9 новую хромосому, отправляет ее в блок нейронной сети 5 по связи 26.
13. Блок нейронной сети 5, получая по связи 26 новую хромосому инициирует шаги 6-8.
14. После того, как сформировано и оценено заданное количество хромосом с помощью блока скрещивания 8 и блока мутации 9, блок управления 7 по связи 38 запрашивает лучшую хромосому у блока истории хромосом 10 и если оценка ее производительности удовлетворяет поставленным условиям, переводит контроллер в режим работы «Б». Если лучшая хромосома не удовлетворят поставленным условиям, то блок управления 7 по связи 36 посылает сигнал блоку отбора хромосом 11, который в свою очередь с помощью операции «рулетка» начинает отбор лучших хромосом (количество задается разработчиком) для новой популяции, дела запрос на хромосому по связи 42 у блока истории хромосом 10 и отправляя ее обратно в блок истории хромосом 10 по связи 42 с пометкой «проходит» или «не проходит» в следующую популяцию. Если хромосома пришла в блок истории хромосом 10 с пометкой «не проходит», то она удаляется из блока истории хромосом 10 после окончания операции «рулетка».
После того, как найдена хромосома, удовлетворяющая поставленным критериям, устройство переводится в режим работы «Б» (режим работы в реальном времени) следующим образом - блок управления 7 выдает сигнал по связи 25 на блок нейронных сетей 5, который сигнализирует о том, что блок нейронной сети 5 может выдавать сигнал 12 на объект управления 1 и сигнал 24 на блок данных 4, сигнализирующий о том, что блок данных 4 может передавать данные по сигналу 22 для отработки их блоком нейронной сети 5.
Режим работы «Б» (режим работы в реальном времени):
1. На объект управления 1 поступают текущие параметры отслеживаемого процесса (поставленной задачи). Данные записываются в блок данных 4 по связи 13.
2. Блок данных 4 передает поступившие данные на блок нейронной сети 5 по связи 22.
3. Блок нейронной сети 5 рассчитывает для текущих параметров управляющий сигнал и подает его на объект управления 1 по связи 12.
4. Объект управления 1 отрабатывает управляющий сигнал и подает новые параметры отслеживаемого процесса на блок данных 4 по связи 13, который передает их в блок оценки производительности нейронной сети 3 по связи 14 для проверки качества управления.
5. Блок оценки производительности нейронной сети 3 рассчитывает ошибку управления, т.е. разницу между тем, что рассчитывал блок нейронной сети 5 и тем, что получилось после отработки сигнала управления 12. Если ошибка больше заданной, то блок оценки производительности нейронной сети 3 посылает сигнал 15 на блок данных 4 о приостановке подачи данных на блок нейронной сети 5 по связи 22. При получении сигнала 15 о приостановке подачи данных на блок нейронной сети 5, блок данных отправляет сигнал 23 на блок управления 7 о начале поиска новой нейронной сети.
6. Блок управления 7, получив сигнал 23 на поиск новой нейронной сети, переводит устройство в «режим А», выставляя сигнал на блок данных. Далее поступающие новые данные, пока устройство работает в «режиме А», только записываются в блок данных, но не отрабатываются устройством.