Читать книгу Нейросетевое программирование. Инструментарий нейрокомпьютинга - Александр Кириченко - Страница 6
Инструментарий нейрокомпьютинга
Управление проведением нейросетевых исследований с помощью «Зажигания нейронов»
ОглавлениеMemBrain разрешает использовать нейроны для управления выполнением различных действий с нейросетями и различными конструкциями компьютера.
Любой нейрон нейросети может быть объявлен «Управляющим». Управляющий нейрон может быт «зажжён» (Fire). Смысл термина «огонь» (Fire) заключается в том, что выход нейрона (его активация) принимает значение <> 0.
Запуск нейрона разрешается следующими параметрами, которые являются свойствами (Properties) каждого нейрона:
• Нижний порог огня (Threshold)
• Верхний порог огня (Upper Threshold)
• Выбор уровня выходного сигнала («1» или «Активация»)
• Время восстановления выхода (The Output Recovery Time)
Если активация нейрона меньше или равна нижнему порогу огня, то нейрон не будет срабатывать в любом случае.
Решение о том, зажигается ли нейрон (выход <> 0) или нет (выход = 0), принимается на основе вероятности запуска, которая возрастает от 0 до 1 с активацией в диапазоне от нижнего порога огня к верхнему порогу огня.
Когда нейрон срабатывает, он может дополнительно запустить исполняемый или пакетный файл. Чтобы быть более точным, файл может быть указан Windows для открытия независимо от его типа. Это также может быть документ, который связан с определенным приложением в Windows.
Чтобы указать файл, который должен открываться при зажигании нейрона, выберите один или несколько нейронов, а затем выберите «Дополнительно»> «Исполняемый файл при запуске…» (<Extras> <Executable When Firing…>) в главном меню или в контекстном меню, которое появляется при щелчке правой кнопкой мыши на одном из выбранных нейронов.
Появится следующий диалог:
Рис.25 Настройка зажигаемого файла
Обратите внимание на флажок с именем <Открыть файл при стрельбе> (Open File when Firing). Если этот флажок установлен, информация ниже актуальна.
Помните, что нужно установить display neuron fire indicators (индикаторы огня нейрона) для того, чтобы визуализировать момент зажигания нейрона.
Путь и имя файла, который должен быть открыт, а также аргумент командной строки хранятся с каждым нейроном отдельно. Таким образом, вы можете указать разные файлы, которые будут открыты для каждого нейрона. Обратите внимание, что вы можете отображать на экране индикаторы огня нейронов, чтобы визуализировать их работу.
Если активированы настройки дисплея <Вид> <Показать индикаторы огня> (<View> <Show Links>), то нейроны показывают желтую точку на своем выходном разъеме каждый раз, когда они запускаются (выдают сигнал <> 0). На следующем рисунке показан нейрон, который в данный момент работает. На первом рисунке опция <Вид> <Показать ссылки> деактивирована, поэтому входной разъем не отображается. Второе изображение – это результат отображения, если опция активирована.
Рис.26 Индикация зажигаемого нейрона
Пример: Нейросетевой преобразователь последовательного кода в параллельный
В книге «Конструирование искусственных нейронных ансамблей (ИНА).pdf» [38] был представлен преобразователь последовательного кода в параллельный, состоявший из трёх групп нейронов: входных, выходных и нейронов задержки. В состав преобразователя был включён нейрон In1, который практически не использовался. Назначение и принцип действия этиго нейрона было обещано рассмотреть при описании скриптов пакета MemBrain.
Основное назначение этого нейрона (In1): управление работой нейроконструкции.
Для демонстрации управляющих функций нейрона восстанавливаем в основном окне MemBrain преобразователь последовательного кода в параллельный с помощью программы «СдРег. mbn» [10]:
Рис.27 Схема преобразователя последовательного кода в параллельный
Анализ созданной нейросети показывает:
Рис.28 Характеристики нейросети
всего нейронов – 15. Из них: 2 входных, 7 выходных, 6 скрытых нейронов (1 DLY 2 – 1 DLY 7) в 6 скрытых слоях (H1 – H6).
Для демонстрации работы преобразователя кодов было предусмотрено два файла.
В первом файле (SdvReg0.csv) нейрон In1 всегда равен 0. По In2 поступают последовательные сигналы, накапливающиеся в параллельные группы по 7 сигналов.
Рис.29 Основной файл для проверки преобразователя кодов
Используем этот файл для обучения:
Рис.30 Ход обучения преобразователя кодов
Ошибка обучения имеет достаточно малую величину и показывает, что нейросеть постепенно приблизилась к правильному результату (это видно по голубой линии. на Pattern Error Viewer):
Рис.31 Процесс обучения нейросети
После 6 точки голубая линия совпадает с Target. По клавише Export Graph выводится исполненный пример после обучения:
Рис.32 Максимальное количество колонок
Здесь содержится предупреждение о структуре выводимой информации.
Содержимое файла «SdvReg00.csv», полученного по клавише Export Graph:
Рис.33 Правильный результат после обучения.
Файл SdvReg2.csv имеет другое строение:
Нейрон In1 может исполнять разные функции: он может сигнализировать момент окончания превращения последовательного кода в параллельный и включать перепись сформированного параллельного кода с выходных нейронов в ячейку памяти для накопления. Если In1 отмечает момент, когда закончено формирование одной строки параллельного кода, то по сигналу In1=1 полученный код нужно считать с выходных нейронов нейросети. При исполнении такого действия нужно будет сформировать и вывести только одно число 1111000 (см. рисунок 34).
Но может быть In1=1 и сигналом, запускающим сохранение в памяти в виде csv-кода исполняемого (текущего) фрагмента обучающей выборки MemBrain. Тогда выводиться должно будет не одно число, а ряд чисел, составляющих текущую обучающую последовательность. Разница – в программах, которые будут работать по зажиганию нейрона In1.
In2 фиксирует символы поступающего последовательного кода.
Для демонстрации процесса зажигания управляющего нейрона подготовлен новый файл: 090720.csv:
Рис.34 Файл, вызывающий зажигание нейрона In1
После загрузки этого файла выведем на экран одновременно часть нейросети с нейроном In1 и часть редактора уроков Lesson Editor, содержащую нейрон In1. До тех пор, пока In1 = 0, нейрон не зажигается (это видно по выходному порту этого нейрона. Одновременно в редакторе уроков видно, что нейрон In1=0):
Рис.35 Нейрон In1 не зажжён
Как только In1 стал 1, нейрон зажёгся и начал работать…
Рис.36 Нейрон In1 зажёгся
В нашем случае по команде из программы «230620.as» выводится весь последний пример, а не одна строка. Нейрон In1 = 1 будем использовать как команду считать в csv-файл содержимое выполненного примера. Считывание это должно производиться по команде ExportLessonRaw раздела LessonEditor, которая записана в скрипте «230620.as».
Программа «230620.as» :
void main ()
{
SelectLesson (3);
ExportLessonRaw(C:\ProgramData\MemBrain\”230620-3.as»);
}
Последовательность запуска управляющего нейрона:
– Включить View -> «Show Fire Indicator».
– Средствами Windows записать в ячейку «SdvReg_111.csv» ноль.
Активизировать запуск программы при появлении огня (Fire):
– Пометить нейрон In1 на графической схеме нейросети свойством (Properties) «Executable When Firing» или: через Extras -> Executable when Firing.
– Заполнить диалог:
Рис.38 Выполняемая программа при зажигании нейрона
– Нажать «Think on Lesson» на Lesson Editor.
Lesson Editor настроен на запись по скриптовой команде из файла ”230620-3.as” в 3 урок:
Рис.39 Вывод результата из 3 урока
Выводим из 3 урока информацию в файл SdvReg_111.csv.
На экране появляется:
Рис.40 Выводимая информация
В результате срабатывания управляющего нейрона In1, в файл SdvReg_111.csv выведена информация из 3 урока.
Таким образом:
В демонстрационной папке этого примера должно содержаться:
Рис.41 Содержимое папки, необходимое для зажигания нейрона