Язык разметки искусственных нейронных сетей (далее ИНС) ИНСМЛ был разработан доцентом Финансового университета Абашиным В.Г., основные теоретические понятия, основания для разработки ИНСМЛ, а также основные теги были приведены в монографии, которая была опубликована в 2016 г. и носит название «Язык разметки искусственных нейронных сетей INSML 0.3», позднее язык был доработан до версии INSML 0.4.
INSML – это язык искусственной разметки искусственных нейронных сетей, в основе которого лежит расширяемый язык разметки XML, включает в себя сущности и их свойства, которые получены минимизацией основных понятий из теории ИНС. Все теги написаны на русском языке. Основная цель, которая поставлена автором в процессе разработки языка – возможность обмена моделями нейронных сетей между разработчиками и разработчиками и потребителями.
Проект включает также:
INSBD – база данных, в которых будут хранится модели ИНС, которые описаны на языке INSML.
XMLINS – программное обеспечение, позволяющее автоматизировать этапы построения и обработки нейронных сетей на исследуемом языке. [1]
В настоящий момент существует 4 разработанные версии языка. На первом этапе разработки языка INSM были выделены базовые сущности в теории ИНС.
ИНС, описанная с помощью данного языка, состоит из 2-х файлов. Первый с расширением .insml, в котором описывается архитектура сети, значения синапсов, используемая математическая модель. Формат файла .insmldump не определен конкретно и является уникальным и особенным для каждой конкретной реализации программ, которые обрабатывают ИНС. Он содержит данные требующие записи в процессе обучения или вычисления нейронной сетью. [1]
Чтобы упростить процесс построения ИНС были введены правила приоритетов повторяющихся тегов: наиболее приоритетными были признаны теги описывающие синапсы и нейроны, а наименьшим теги ИНС.
Ниже приведен простой пример описания ИНС с помощью языка ИНСМЛ.
<сеть ид=0 описание="Логическое И для диапазона [0;1]">
<нейрон ид=12 константа=2 координаты=100;10;0/>
<нейрон ид=11 активация="1/(1+pow(e,-1*accum));0,5"
координаты=100;100;0/>
<синапс ид=21 вес=1 приемник=11 передатчик=12/>
<синапс ид=22 вес=-1,5 приемник=11 передатчик=""/>
<синапс ид=23 вес=-1,5 приемник=11 передатчик=""/>
<синапс ид=24 вес=1 приемник="" передатчик=11/>
</сеть>
Теперь попробуем разобраться с той задачей, которую мы поставили перед собой: написать программу поиска ошибок в файле ИНС на языке ИНСМЛ. Что будет представлять собой указанная программа и зачем стоит заниматься ее разработкой.
При разработке и поддержке ИНС, ошибки в исходном коде и конфигурационных файлах ИНСМЛ могут стать серьезной проблемой, влияющей на работу нейронной сети и результаты ее функционирования. Поэтому целесообразно создать программу, способную обнаруживать ошибки и предупреждать разработчиков о них.
Неверное написание синтаксиса ИНСМЛ или неправильное использование элементов могут привести к ошибкам, способным отрицательно сказаться на работе ИНС. Поэтому создание программы, способной автоматически обнаруживать такие ошибки, является неотъемлемой частью разработки нейронной сети.
Одним из ключевых аспектов программы поиска ошибок файла ИНС на языке ИНСМЛ является анализ структуры и синтаксиса ИНСМЛ-файла. Эта программа будет обрабатывать файлы, осуществлять проверку синтаксической правильности, а также проводить семантический анализ структуры ИНСМЛ-документа. Она будет проверять наличие всех обязательных элементов и атрибутов, а также правильность их соединения.
Кроме того, программа также будет выполнять проверку семантической правильности значений элементов и атрибутов, а также их соответствия требованиям нейронной сети. Она будет анализировать значения атрибутов, такие как размерность, веса, активационные функции и другие параметры, и проводить проверку на совместимость с требованиями нейронной сети.
Другим важным аспектом программы поиска ошибок будет проверка наличия и правильности указания всех вспомогательных файлов, необходимых для работы нейронной сети. Это могут быть файлы с обучающими данными, весами, записями дополнительных функций и другими. Программа будет проверять наличие и целостность этих файлов, а также их соответствие структуре и требованиям нейронной сети.
Таким образом, создание программы поиска ошибок файла искусственной нейронной сети на языке ИНСМЛ имеет важное значение для обеспечения правильной работы ИНС и предотвращения возможных проблем, связанных с некорректными данными.
Создание программы поиска ошибок в описании искусственной нейронной сети на языке INSML имеет, с моей точки зрения, следующие причины и обоснования:
- Синтаксическая проверка: Язык INSML имеет определенную, ранее рассмотренную структуру и синтаксические требования. Программа поиска ошибок может проверять, соответствует ли файл описания INSML заданному синтаксису, что может способствовать выявлению таких проблем как отсутствие открывающих и закрывающих тегов, некорректное написание атрибутов или нарушение иерархии элементов.
- Поиск логических ошибок: кроме синтаксических ошибок, программа может также проверять наличие логических ошибок в описании искусственной нейронной сети. К примеру, можно проверить, чтобы все необходимые элементы были указаны и заданы соответствующим образом, идентифицировать неправильные или некорректно заданные параметры нейронной сети.
- Увеличение производительности: Ошибка в описании искусственной нейронной сети может привести к неправильному функционированию и падению производительности. Создание программы поиска ошибок позволяет выявить и исправить потенциальные проблемы заранее, что помогает сэкономить время и ресурсы в процессе разработки и тестирования.
- Улучшение качества: Программа поиска ошибок в описании искусственной нейронной сети на языке INSML позволяет улучшить общее качество системы. Она может помочь выявить и исправить ошибки, связанные с некорректными параметрами или неправильными связями между элементами.
Поскольку язык ИНСМЛ является XML-подобным попробуем разобраться в основных понятиях и особенностях данного языка, а также рассмотрим какие программы поиска ошибок в файлах XML существуют в настоящее время.
XML (Extensible Markup Language) – расширяемый язык разметки, который был разработан в конце 90-х годов для обмена информацией между программами, а также для создания других языков разметки (к примеру, MathML – языка предназначенного для кодировки математических уравнений).
Рассмотрим структуру документа XML: первая строка служит прологом (является необязательной) и содержит номер версии XML а также информацию о кодировке и инструкции по обработке.
<?xml version="1.0" encoding="utf-8"?> [2]
Основное содержание отражено в обязательной части, называемой «Документ», который отражает логическую структуру информации, содержащейся в нем. [3] В написанном мной коде XML (см рис. 1) содержатся сведения о сотрудниках организации: ФИО, возраст, должность, номер телефона.
Рис. 1. Структура документа XML
Теперь попробуем рассмотреть и проанализировать существующие инструменты для анализа кода на языке XML:
- XML Validator представляет собой инструмент, способный проверять XML-файлы на соответствие правилам и синтаксису данного языка, используется для обнаружения ошибок в коде, его валидации перед дальнейшим использованием (при помощи XSD-схем: валидатор сравнивает файл документа с определенной схемой и информирует о возможных ошибках). [8] XML Validator хорошо работает в Windows, MAC, Linux, Chrome, Firefox, Edge и Safari. Этот инструмент помогает разработчикам и пользователям, работающим с XML-данными, тестировать и верифицировать их. [4] Пример кода программы XML Validator на языке Java (библиотека javax.xml.validation) приведен ниже:
В приведенном примере программа создает экземпляр XSD-схемы и валидатор XML на основе этой схемы, затем идет проверка файла data.xml на соответствие созданной схеме. Результат работы программы сообщение о невалидности или успешной валидации.
Теперь коротко расскажем о других существующих в настоящее время инструментах анализа XML-кода:
- XML Lint является инструментом командной строки в Linux, также проверяющий файлы на синтаксические ошибки и валидацию. Способен выводить сообщения об ошибках и предупреждениях, связанных с XML-кодом;
- Oxygen XML Editor – инструмент, созданный для разработки и анализа кода XML, обладает способностью проверять синтаксис, форматировать, искать и заменять текст и т.д.; [6]
- XMLStarlet представляет собой инструмент командной строки с помощью которого возможно извлекать данные, изменять, преобразовывать файлы между различными форматами. [7]
Теперь, на основании изученных существующих инструментов и программ поиска ошибок в файлах XML можно предположить, какие распространенные ошибки могут возникнуть при описании нейронной сети в INSML файле, и поиском каких именно ошибок будет заниматься разрабатываемая программа:
- Неправильное использование тегов: некорректное размещение или использование открывающих и закрывающих тегов может привести к синтаксическим ошибкам. Для корректного описания программа должна обязательно проверять наличие открывающего и закрывающего тега для каждой сущности.
- Проверка на отсутствие обязательных тегов: Если обязательный тег не указан или пропущен, это может вызвать ошибку в программе, которая использует INSML файл.
- Поиск ошибки в значении атрибута: Неправильное значение атрибута или отсутствие обязательных атрибутов. Например, неверно указано значение для атрибута "тип" или отсутствует атрибут "вес" для соответствующего элемента.
- Проверка отсутствующих идентификаторов нейронов и синапсов.
Список литературы
- Абашин, В.Г. Язык разметки искусственных нейронных сетей INSML 0.3: монография/ В.Г. Абашин. – Орел: ФГБОУ ВО «ПГУ», 2015. – 166 с.
- С.В. Одиночкина. Основы технологий XML - СПб: НИУ ИТМО, 2013 – 56 с
- Токмаков Геннадий Петрович. Основы XML-технологий: учебное пособие/ Г.П. Токмаков. – Ульяновск: УлГТУ, 2017. – 229 с.
- Краткое руководство по XML. URL: https://xml.readthedocs.io/index.html
- Нейронные сети в MatLab. URL: https://digiratory.ru/508
- oXygen XML Editor. обзор программы. URL: http://www.newart.ru/htm/myzavr/mz70.php
- Руководство пользователя XML Toolkit для командной строки XmlStarlet. URL: https://xmlstar.sourceforge.net/doc/UG/xmlstarlet-ug.html
- XML-валидатор для W3C Schema, DTD, Schematron и RelaxNG. URL: https://www.xml-buddy.com/xml-validator.htm