Читать книгу Конструирование искусственных нейронных ансамблей (ИНА) - Александр Кириченко - Страница 3
Нейропакеты и нейроконструкторы
ОглавлениеПри изучении нейросетевых технологий используются различные программные инструменты. Обычно такими инструментами являются нейропакеты, реже – нейроконструкторы.
Чем нейроконструктор отличается от нейропакета? Они очень похожи. Просто они предназначены для решения разных задач. Нейропакет предназначен для создания нейросети требуемого типа, загрузки в эту нейросеть исходных данных (обучающей, контролирующей и экзаменационной выборок), обучения нейросети, и промышленного решения задач на обученной нейросети.
Нейроконструктор кроме перечисленных задач в отличие от нейропакета предназначен ещё и для создания, исследования, моделирования различных нейросетей – от элементарных до необыкновенно сложных, в пределе – до создания и моделирования различных нейрокомпьютеров. Нейроконструктор является инструментом нейросетевого программирования.
Программный комплекс MemBrain удачно сочетает в себе свойства как нейропакета, так и нейроконструктора. Этот программный комплекс разработан Thomas Jetter в виде свободнораспространяемого (freeware) и размещён по адресу http://www.membrain-nn.de/.
Описание программного комплекса, как нейропакета приведено в монографии [Универсальный нейропакет] и охватывает различные стороны процесса создания нейросетевой модели, например, определяет 5 функциональных узлов для создания нейросети требуемого типа, загрузки в эту нейросеть исходных данных, обучения нейросети, и промышленного решения задач на обученной нейросети:
1. Нейроны и действия с ними (Neurons in MemBrain):
– Группировка нейронов, их выравнивание (Aligning Neurons),
– Экстренный выбор нейронов (Neuron Extra Selection),
– Быстрая Активация (Quick Activation),
– Автоматическое присваивание имён нейронам (Neuron Auto Naming))
– Основные виды нейронов:
– перемещаемые нейроны (Moving Neurons)
– нейроны задержки (Adding Delay Neurons),
– дифференциальные нейроны (Add Differential Neuron),
– интегрирующие нейроны (Adding Integrator Neurons),
– нейроны контекста
– функции активации нейронов (Activation Functions)
– логистический закон (LOGISTIC)
– линейный закон (IDENTICAL)
– линейный в интервале от 0 до 1 (IDENTICAL 0 TO 1)
– гипертангенс (TAN HYP)
– бинарный, или единичная функция Хэвисайда (BINARY)
– минимальное Евклидово расстояние (MINIMUM EUCLIDEAN DISTANCE)
2. Соединение нейронов в нейросети (Полная связь, Случайная связь, связь «один к одному» (1:1), связь слоёв нейросети на основе Матрицы).
3. Моделирование связей и особенности их эксплуатации.
В MemBrain cвязи между нейронами выполняются с помощью ссылок. Ссылки имеют два основных свойства, которые определяют их функциональность (вес и логическую длину).
Вес ссылки определяет, какая величина сигнала передается на вход целевого (target) нейрона. Для этого сигнал умножается на вес ссылки. Это значение появится на входе целевого нейрона на другом конце связи. Вес ссылки не ограничен определенным диапазоном и может быть даже отрицательным.
Логическая длина характеризует продолжительность прохождения ссылки по каналу (от одного нейрона к другому). Ссылки визуализируются в MemBrain с помощью «пиков или шипов активации» (Activation Spikes), которые появляются во время каждого «шага моделирования» (<Think Step>) на схеме нейросети при активированной опции <Вид> <Показать пики активации в ссылках>.
Логическая длина ссылки определяет, сколько шагов вычисления (Think Steps) требуется, чтобы распространить сигнал от входного конца ссылки к ее выходному концу (т.е. между двумя соседними нейронами). Логическую длину (Length) можно определить в диалоге «Select net characteristics to be exported» из основного меню пакета Neural Networks -> Net Analysis -> Exporting a Net.
Для примера: канал с (логической) длиной 1 (минимально допустимое значение) распространяет сигналы так, что задержка не возникает.
4. Основные характеристики нейронов – диапазоны активаций нейронов, которые обычно имеют величину, отличную от -1 до 1 или от 0 до 1, обычно устанавливаются при настройке функций активации нейронов. При нормализации нейронов они могут быть изменены (MemBrain_Help. pdf -> Normalize I/O Data).
5. Управление данными в MemBrain (Managing I/O Data)
Для управления данными в MemBrain служит Редактор уроков или разделов (The Lesson Editor).
С Редактором Разделов можно выполнить следующие функции:
– Добавить-Удалить раздел;
– Выбрать активный раздел/образец;
– Редактировать имя раздела/образца;
– Добавить комментарий;
– Отредактировать данные;
– Синхронизировать раздел с сетью;
– Исполнить текущий/следующий входной образец или весь раздел;
– Сохранить раздел в виде CSV файла;
– Загрузить раздел из CSV файла;
– Разделить текущий раздел;
– И др.
В отличие от нейропакетов, нейроконструкторы могут содержать дополнительные разделы.
В MemBrain имеются такие разделы, которые могут рассматриваться как дополнительные:
1. Работа с нейронными сетями (Neural Networks):
2. Экспорт нейросети (Exporting a Net)
3. Объединение обученных нейросетей в единую конструкцию
4. Выбор наилучшей нейросети
5. Автоматизация управления программным пакетом
6. Генерация C-кода текущей нейронной сети
7. Организация динамической библиотеки
8. Соединение различных нейросетей с использованием TCP
9. Управление произвольно большим количеством нейронных сетей
В нейроконструкторе NeuroPro в отличие от MemBrain добавлены такие разделы, как упрощение нейронной сети и вербализация нейронной сети, с помощью которых удаётся преобразовать полученные при обучении нейронной сети знания в правила продукции.
Работа с нейронными сетями (Neural Networks) предусматривает выполнение таких операций:
– Провести «Анализ сети» (Net Analysis)
– Проверить Архитектурную целостность (Architectural Integrity)
– Провести послойный Анализ (Layer Analysis)
– Отобразить информацию о слоях (Displaying Layer Information)
– Вычислить активацию и выходные сигналы нейронной сети (Calculating the Output)
– Обновить нейросеть (Resetting the Net)
– Экспортировать нейросеть (Exporting a Net)
– Провести анализ структуры экспортируемого CSV файла (Net CSV File)
– Отторгнуть обученную нейросеть от нейропакета
– Объединить обученные нейросети (Merging Nets)
Экспорт нейросети (Exporting a Net) может быть выполнен по-разному. В MemBrain есть возможность экспортировать сетевой список характеристик текущей нейронной сети через файл csv (содержащий значения, разделенные запятыми). Этот файл можно использовать для импорта нейронной сети, созданной и, возможно, обученной с помощью MemBrain, в другое прикладное программное обеспечение. При этом можно выбрать уровень детализации, который вы хотите включить в файл экспорта.
Чтобы экспортировать сеть, выберите <File> <Export …>. Появится следующий диалог.
Выбор экспортируемых характеристик
Этот диалог позволяет выбрать свойства нейронов и ссылок, которые вы хотите экспортировать в файл. Когда вы сделали свой выбор, нажмите ОК – будет предложено выбрать местоположение и имя файла для сохранения экспортированного файла.
Нейроконструкторы предусматривают выполнение весьма специфических операций. Поэтому в нейропакетах приходится производить установку настроек пакета (Getting Started ›› Short Beginner’s Tutorial ››), позволящую:
– Настроить экран
– Разрешить:
– Использование сетки при работе с графическими объектами
– Выбор объектов
– Удаление объектов
– Копировать / Вставить Активации
– Симуляция запуска / остановки (Auto Think)
Некоторые нейроконструкторы имеют оперативную память нейросетей «Neural Net Stock», которая во время работы позволяет управлять произвольно большим количеством нейронных сетей. Отредактированная нейронная сеть может быть отправлена в хранилище (Stock) или извлечена из него в любой момент во время работы.
Наиболее мощной функцией «Neural Net Stock» (системы управления произвольно большим количеством нейронных сетей) является возможность автоматически использовать наиболее эффективную нейронную сеть из запаса нейронных сетей MemBrain: всякий раз, когда учитель обнаруживает новый минимум сетевой ошибки, он обновляет копию нейронной сети в хранилище, представляя её как более эффективную. Такая функция Neural Net Stok называется акцией и производится под воздействием диспетчера акций (Neural Net Stok Manager). Список сетей в диспетчере всегда представлен в хронологическом порядке, т.е. новая сеть всегда находится в верхней части списка. Neural Net Stok Manager позволяет выполнить следующие функции:
– Добавить текущую сеть
– Заменить текущую сеть (загрузка нетто)
– Очистить контент (запас нейросетей)
– Загрузить контент или его часть из файла
– Сохранить контент в файл.
При объединении обученных нейросетей (Merging Nets, создание единой нейросети) можно объединить различные обученные подсети в одну большую сеть, например в следующем порядке:
a. Открывается первая сеть в MemBrain
b. Добавляется вторая сеть к первой, используя команду меню <Файл> <Добавить сеть в текущую сеть …>
c. Переназначаются уже обученные выходные ссылки входных нейронов нижней сети на выходные нейроны верхней сети (Extra Selection (Выберите) выходные нейроны верхней сети. Выберите входные нейроны нижней сети. Затем выберите <Extras> <Re-назначить выходные ссылки из Selection To Extra Selection>.
d. Удаляются старые входные нейроны нижней сети (которые больше не связаны) и изменяется тип старых выходных нейронов верхней сети на <HIDDEN> – произошло объединение двух сетей в одну единую сеть.
Для автоматизации управления нейроконструктором в MemBrain используется язык сценариев (Scripting).
Для ознакомления с возможностями по управлению пакетом с помощью сценариев, в описании пакета MemBrain предусматриваются следующее файлы сценариев:
– Папка «Simple’: ScriptExample.as
– Папка «NetEditor»: Использование NetEditorExample.as
– Папка «TrainValidate»: TrainValidate.as
– Папка «Дополнительно»: MackeyGlass.as
– Папка «SecondsTimer’: UsingSecondsTimerExample.as
– Папка «VoiceRecognition»: VoiceRecognition.as
Кроме того, в описании пакета подробно освещаются следующие вопросы:
– Выполнение сценариев вручную (Executing Scripts Manually)
– Прерывание или приостановка выполнения скрипта (Aborting or Suspending Script Execution)
– Обработка нейронных сетей в скриптах (Handling Neural Nets)
– Компиляция и выполнение сценария командной строки (Command Line Script Execution)
– Синтаксис скрипта (Script Syntax)
– Справочник по командам (Command Reference)
Каждая обученная сеть может быть отторгнута от родительской нейросети процедурой генерации C-кода сформированной нейронной сети.
Чтобы сгенерировать исходный код C из текущей загруженной сети, нужно выполнить команду <Code-Generation> <C-Code> <Generate Code>.
Пакетом будет доложено об успешной генерации кода. Сгенерированный код состоит из следующих двух файлов.
NeuralNetDef. h
NeuralNetDef. c
которые генерируются в каталоге, настроенном как часть конфигурации сгенерированного C-кода (C-Code Generation Configuration).
Эти два файла вместе с библиотекой генерации C-кода MemBrain образуют код, который должен быть включен в ваш собственный процесс сборки программного обеспечения.
Библиотека генерации C-кода (MemBrain C-Code Generation Library), состоит из следующих файлов, которые находятся в подкаталоге C_CODE установочного каталога MemBrain:
NN_Types. h
NeuralNet. c
NeuralNet. h
Neuron. c
Neuron. h
NeuralLink. c
NeuralLink. h
Random. c
Random. h
Отечественный нейроконструктор «NeuroPro» умеет строить многослойные нейронные сети с сигмоидной функцией активации. В отличие от многих других нейропрограмм, NeuroPro умеет показывать структуру используемой нейросети в текстовом виде. Это набор формул, последовательно описывающих все преобразования, происходящие с данными, поступающими на вход сети до самого выхода из сети. Формулы включают в себя каждый слой, каждый нейрон, каждую связь, с уже подставленными (обученными) значениями весов каждой связи. По сути, набор этих формул можно рассматривать как исходный код программы на некоем абстрактном языке программирования. Такое описание позволяет: