Выполнил: Салахутдинов Магомед

Руководитель: Дидуева Р.М.

Моделирование нейронных сетей подсистема визуализации и отчетов.

Аннотация

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

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

Цель работы: разработать модели нейронов (рецепторный, формальный, градуальный) и нейронной сети (сети Хопфилда), отладить их. Разработать и реализовать в программном коде, алгоритм осуществляющий расчет структуры построенной пользователем сети на разработанных элементах. В процессе разработки поставленные цели были достигнуты. Разработанные модели и программная реализация алгоритма расчета структуры состоящей из разработанных элементов были интегрированы в подсистему визуализации.

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

Введение

Объектом выполненных исследований в рамках данной работы является общая методика разработки САПР-приложений для создания схем определенного типа. Поэтому целью данной работы является изучение методов и средств построения САПР-программ, и как следствие, разработка САПР-подобного приложения для создания схем нейропроцессорных сетей и моделирования их работы. Такая программная модель должна обладать основными функциями САПР-программ, такими как расположение элементов на рабочем поле, соединение элементов, перерисовка элементов и рабочего поля, автоматизация отдельных процедур и др.

Данная тематика представляет интерес, поскольку сегодня компьютерное моделирование, в частности автоматизированное построение схем различного типа, охватывает все больше сфер деятельности человека. На данный момент создано довольно большое количество САПР-программ, таких как P-CAD (приложение для проектирования электронных устройств), Specctra (приложение для трассировки печатных плат), ArchiCAD (приложение для проектирования архитектурных сооружений) и др. Разработка САПР-приложения именно для проектирования нейропроцессорных систем достаточно актуальна, поскольку таких систем существует очень мало, и некоторые из них либо не представляют возможностей для графического отображения (NeurOS, BrainMaker Pro), либо для работы требуют достаточной квалификации пользователя (MathLab, NeuroSolutions). Исходя из этого, ставилась цель не только создать программную модель такого типа, но и сделать ее максимально простой для пользователя, но и максимально графически информативной.

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

В итоге была получена САПР-подобная система, оснащенная простым и удобным интерфейсом, понятным обычному пользователю, позволяющая строить и графически отображать нейронные сети, моделировать их работу, графически отображать результаты работы, генерировать отчеты о результатах моделирования.

Глава 1. Проведение сравнительного анализа с аналогичными программными моделями.

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

Построение нейронных сетей можно осуществлять при помощи пакета прикладных программ Neural Network Toolbox в довольно мощной САПР, ориентированной на математическое моделирование – в системе MathLab. Здесь архитектура нейронной сети представлена ее S-моделью, которая воспроизводится с помощью встроенной системы Simulink. Главным недостатком этого пакета является сложность создания и настройки нейросетей, что требует от пользователя иметь достаточную квалификацию программиста. В данной же работе построение и настройка сетей сделаны максимально простыми и понятными для обыкновенного пользователя.

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

Есть также приложение BrainMaker Pro фирмы California Scientific Software, являющееся простым нейропакетом для моделирования многослойных нейронных сетей, обучаемых с помощью алгоритма обратного распространения ошибки. Основным его достоинством является большое число параметров настройки алгоритма обучения. Однако данный продукт обладает и рядом недостатков. В основном сложности использования BrainMакег Pro связаны с неудобством интерфейса, который является псевдографическим, а также с наличием большого количества модулей, не интегрированных в единую оболочку. В рамках данной же работы создан наглядный графический интерфейс, позволяющий пользователю самому располагать и соединять элементы на рабочем поле, тем самым давая возможность строить структуры любой сложности.

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

Глава 2. Построение диаграммы классов.

Перед тем, как приступить к реализации приложения необходимо продумать его будущую структуру. Так как программа должна быть построена на принципе объектно-ориентированного программирования, то нужно построить диаграмму классов, на основе которых будет построено приложение.

Пусть базовым классом будет TElement, который является обощающей структурой для всех элементов, расположенных на рабочем поле. От этого класса наследуются следующие классы: TNeuron – общий родительский класс для всех типов нейронов, TNeuronNet – общий родительский класс для всех типов нейронных сетей, TOscilloscope – класс модели осциллографа. В свою очередь нейрон может быть нескольких типов (в данном случае рецепторный, формальный, градуальный). Исходя из этого, следует создать отдельный класс для каждого типа нейронов, который будет дочерним для базового класса TNeuron. Аналогично нейронам, нейронные сети также могут быть нескольких типов (в данной версии приложения будут поддерживаться только нейронные сети Хопфилда), соответственно для каждого типа нейронной сети необходим свой класс, являющийся дочерним по отношению к базовому классу всех нейросетей TNeuronNet.1

 

111

 

 

 

 

 

 

Рис. 2.1 – Диаграмма классов Рис. 2.2 – Диаграмма классов раб. поля

Также следует отметить наличие класса TSynapse, который является описанием синаптических входов каждого нейрона, и класса TSynapseList, который является списком синаптических входов для каждого конкретного нейрона, созданного на рабочем поле или входящего в состав нейронной сети, и включает в себя экземпляры класса TSynaspe. У формальных и градуальных нейронов, а также у нейронных сетей имеются экземпляры данных классов. Это можно увидеть на рисунке 2.3, приведенном ниже:

3

 

Рисунок 2.3 – Классы синапсов нейрона

 

 

 

 

Глава 3 Разработка подсистемы визуализации

Подсистема визуализации включает в себя следующие аспекты: пользовательский интерфейс, условно-графические обозначение (УГО) каждого элемента для наглядного отображения, возможность добавления и удаления элементов, организацию соединений элементов, выделение активного элемента, выделение входов/выходов при соединении элементов, обновление и перерисовку изображения, диалоговые окна для передачи параметров, заданных пользователем, в математические модели элементов.

4

 

 

 

 

 

 

 

 

Рисунок 3.1 – Интерфейс готовой программы

3.1. Графические модели элементов.

Разработка графических моделей элементов включает создание своего УГО для каждого типа элементов, обработку событий при воздействии на элемент пользователем (перемещение, вызов окна свойств, соединение) с точки зрения графики.

Конструктор создает экземпляр объекта, задает его начальные координаты, создает экземпляр изображения для элемента и устанавливает его размеры и параметры отображения, а также инициализирует другие поля объекта TElement.

3.2. Графическая модель нейрона.

В данной версии приложения реализованы математические модели трех видов нейронов – рецепторного, формального и градуального. Рецепторный нейрон имеет только один выход и не имеет входов; формальный и градуальный нейроны имеют несколько входов и один выход. С точки зрения графики – это три разных элемента со своим уникальным УГО и полями, но с частично общей логикой.

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

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

3.3. Графическая модель нейронной сети.

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

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

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

3.4. Графическая модель осцилографа.

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

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

Обработчики событий выполняют функции, аналогичные функциям обработчиков событий классов TNeuron и TNeuronNet. Методы ЗаписатьЗначениеВМассив и СчитатьЗначениеИзМассива позволяют соответственно записать в массив и считать значения из массива хранимых значений для отображения на экране осциллографа.

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

Глава 4 Разработка и реализация алгоритма вывода сигнала на осциллограф

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

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

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

4.1. Разработка и реализация алгоритма соединения элементов.

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

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

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

4.2. Разработка и реализация алгоритма размещения элементов на рабочем столе.

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

Заключение

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

Разработанная система является САПР-подобной, так как позволяет строить структуры с заданными характеристиками и моделировать их работу. Ее также можно применить в рамках вышеназванного учебного курса «Системы искусственного интеллекта и нейрокомпьютеры» при выполнении цикла лабораторных работ.

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

Список использованной литературы.

1. Алексеев А.В., Круг П.Г., Петров О.М. Нейросетевые и нейрокомпьютерные технологии: Методические указания к проведению лабораторных работ по курсу «Информационные технологии». М.: МГАПИ, 1999 г.

2. Галушкин А.И. Некоторые исторические аспекты развития элементной базы вычислительных систем с массовым параллелизмом (80- и 90- годы) // Нейрокомпьютер. № 1. 2000. С. 68-82.

3. Горбань А., Россиев Д. Нейронные сети на персональном компьютере. Новосибирск: Наука, 1996. 276 с.

4. Кирсанов Э.Ю. Цифровые нейрокомпьютеры: Архитектура и схемотехника / Под ред. А.И.Галушкина. Казань: Казанский Госуниверситет, 1995. 131 с.

5. Круг П.Г., Филатенков Ю.В., Шилин А.В. Оптимизация структуры нейронной сети, применяемой для автоматизированной классификации результатов моделирования. IV Всероссийская научн.-техн. конф.

6. «Новые информационные технологии». М.: МГАПИ, 2001. С. 114-118.

7. Круг П.Г. «Нейронные сети и нейрокомпьютеры»,Москва 2002г., издательство МЭИ

1) http://www.terminal-fx.com

2) http://delphiworld.narod.ru

3) http://www.interface.ru

4) www.galamkotis.ru/index38.htm

 

Аннотация

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

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

Цель работы: разработать модели нейронов (рецепторный, формальный, градуальный) и нейронной сети (сети Хопфилда), отладить их. Разработать и реализовать в программном коде, алгоритм осуществляющий расчет структуры построенной пользователем сети на разработанных элементах. В процессе разработки поставленные цели были достигнуты. Разработанные модели и программная реализация алгоритма расчета структуры состоящей из разработанных элементов были интегрированы в подсистему визуализации.

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


Введение

Объектом выполненных исследований в рамках данной работы является общая методика разработки САПР-приложений для создания схем определенного типа. Поэтому целью данной работы является изучение методов и средств построения САПР-программ, и как следствие, разработка САПР-подобного приложения для создания схем нейропроцессорных сетей и моделирования их работы. Такая программная модель должна обладать основными функциями САПР-программ, такими как расположение элементов на рабочем поле, соединение элементов, перерисовка элементов и рабочего поля, автоматизация отдельных процедур и др.

Данная тематика представляет интерес, поскольку сегодня компьютерное моделирование, в частности автоматизированное построение схем различного типа, охватывает все больше сфер деятельности человека. На данный момент создано довольно большое количество САПР-программ, таких как P-CAD (приложение для проектирования электронных устройств), Specctra (приложение для трассировки печатных плат), ArchiCAD (приложение для проектирования архитектурных сооружений) и др. Разработка САПР-приложения именно для проектирования нейропроцессорных систем достаточно актуальна, поскольку таких систем существует очень мало, и некоторые из них либо не представляют возможностей для графического отображения (NeurOS, BrainMaker Pro), либо для работы требуют достаточной квалификации пользователя (MathLab, NeuroSolutions). Исходя из этого, ставилась цель не только создать программную модель такого типа, но и сделать ее максимально простой для пользователя, но и максимально графически информативной.

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

В итоге была получена САПР-подобная система, оснащенная простым и удобным интерфейсом, понятным обычному пользователю, позволяющая строить и графически отображать нейронные сети, моделировать их работу, графически отображать результаты работы, генерировать отчеты о результатах моделирования.


Глава 1. Проведение сравнительного анализа с аналогичными программными моделями

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

Построение нейронных сетей можно осуществлять при помощи пакета прикладных программ Neural Network Toolbox в довольно мощной САПР, ориентированной на математическое моделирование – в системе MathLab. Здесь архитектура нейронной сети представлена ее S-моделью, которая воспроизводится с помощью встроенной системы Simulink. Главным недостатком этого пакета является сложность создания и настройки нейросетей, что требует от пользователя иметь достаточную квалификацию программиста. В данной же работе построение и настройка сетей сделаны максимально простыми и понятными для обыкновенного пользователя.

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

Есть также приложение BrainMaker Pro фирмы California Scientific Software, являющееся простым нейропакетом для моделирования многослойных нейронных сетей, обучаемых с помощью алгоритма обратного распространения ошибки. Основным его достоинством является большое число параметров настройки алгоритма обучения. Однако данный продукт обладает и рядом недостатков. В основном сложности использования BrainMакег Pro связаны с неудобством интерфейса, который является псевдографическим, а также с наличием большого количества модулей, не интегрированных в единую оболочку. В рамках данной же работы создан наглядный графический интерфейс, позволяющий пользователю самому располагать и соединять элементы на рабочем поле, тем самым давая возможность строить структуры любой сложности.

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

Глава 2. Построение диаграммы классов

Перед тем, как приступить к реализации приложения необходимо продумать его будущую структуру. Так как программа должна быть построена на принципе объектно-ориентированного программирования, то нужно построить диаграмму классов, на основе которых будет построено приложение.

Пусть базовым классом будет TElement, который является обощающей структурой для всех элементов, расположенных на рабочем поле. От этого класса наследуются следующие классы: TNeuron – общий родительский класс для всех типов нейронов, TNeuronNet – общий родительский класс для всех типов нейронных сетей, TOscilloscope – класс модели осциллографа. В свою очередь нейрон может быть нескольких типов (в данном случае рецепторный, формальный, градуальный). Исходя из этого, следует создать отдельный класс для каждого типа нейронов, который будет дочерним для базового класса TNeuron. Аналогично нейронам, нейронные сети также могут быть нескольких типов (в данной версии приложения будут поддерживаться только нейронные сети Хопфилда), соответственно для каждого типа нейронной сети необходим свой класс, являющийся дочерним по отношению к базовому классу всех нейросетей TNeuronNet.