Знакомство с Нейроконструктором.
Нейроконструктор – это конфигурация для учебы и экспериментов. С его помощью Вы сможете в легкой форме постичь азы работы с нейронными сетями. И это будет не теория, а, можно сказать, лабораторные работы. Навыков программирования не требуется. Нейроконструктор представляет собой расширение конфигурации для платформы 8.3, т.е., при желании, его даже можно встраивать в свою ИБ.
Как работает нейроконструктор.
Нейроконструктор – не самодостаточное приложение, а комплекс программных средств. По большей части - это графический интерфейс пользователя. Для того, чтобы все заработало должен быть установлен ряд программных продуктов. С установкой ПО, необходимого для полноценной работы нейроконструктора, вы можете ознакомиться в специальном видеоуроке (или более свежая версия) на моем канале. Это несложная задача для ИТ-шника или сисадмина. Дополнительное программное обеспечение, которое мы условно будем называть бэкендом, включает интерпретатор языка Питон и его расширение Tensorflow с надстройкой Keras, а также (опционально) компилятор языка Си с поддержкой вычислений при помощи графического процессора nVidia. Отсутствие графического процессора nVidia не критично, т.к. обучение нейронных сетей допустимо с использованием ЦП. При этом значительно упрощается установка, но сильно падает скорость вычислений.
Давайте теперь определимся с устройством Нейроконструктора.
Конфигурация Нейроконструктор включает в себя, в основном, набор справочников и перечислений, соответствующих понятиям Keras, а также программных текстов для преобразования объектов конфигурации Нейроконструктор в объекты Keras и наоборот. Надстройка Keras входит в состав Tensorflow и является высокоуровневой абстракцией для облегчения работы с нейронными сетями.
Схема работы Нейроконструктора показана на рисунке 1. Конфигурация с расширением «Нейроконструктор» (1) формирует код для интерпретатора Питон (2) и запускает его. Программа на Питоне загружает надстройку Keras (3), которая, в свою очередь преобразует объекты Keras в объекты Tensorflow и вызывает последнюю для выполнения расчетов. Tensorflow, при наличии видеокарты nVidia и установленном дополнительном программном обеспечении формирует код на языке Си++ и вызывает компилятор Си++ (4). Нейроконструктор ожидает окончания выполнения программы на Питоне, после чего обрабатывает результаты.
При отсутствии графического процессора пункт 4 исключается.
Рисунок 1. 1) 1С:Предприятие 8.3 с расширением «Нейроконструктор»; 2) Интерпретатор Питон; 3) Tensorflow+Keras; 4) C++ с поддержкой CUDA.
Описание конфигурации
Кратко схему работу в Нейроконструкторе можно описать четырьмя действиями:
- Подготовка данных;
- Создание модели нейронной сети;
- Обучение;
- Проверка работы.
Подготовка данных.
Данные на вход нейронной сети подаются при помощи текстовых или двоичных файлов. Последние хранятся в специальном формате Numpy (числовой Питон) расширения языка Питон и предназначены для работы с массивами. Создавать файлы в формате Numpy, а также производить некоторые операции над ними позволяет обработка «Преобразование данных» в меню «Сервис». Преобразованию текстовых таблиц в формат Numpy служит обработка «Конструктор табличных данных».
Создание модели нейронной сети
Прежде чем начать обучение нейронной сети, необходимо создать её конфигурацию или модель. Модель нейронной сети – это понятие из надстройки Keras. Она содержит параметры слоев нейронной сети и их композицию (связи между собой) и хранится в файлах формата JSON (JavaScript Object Notation), поддержка которого, в том числе, присутствует в 1С:Предприятие. Для создания модели нейронной сети предназначен документ «Компоновка модели». Схема создания модели показана на рисунке 2. Пользователь заполняет табличную часть «Слои» из соответствующего справочника, который заранее подготовлен разработчиком и соответствует номенклатуре слоев Keras. Затем производится композиция слоев и выполняется компоновка, результатом которой является текст в формате JSON, который помещается в справочник «Модели».
Рисунок 2. Схема компоновки модели.
Порядок заполнения документа показан на рисунке 3. Откройте список документов «Компоновка модели» (3.1) и создайте новый документ. Присвойте имя новой модели (3.2). Заполните табличную часть «Слои»: нажмите добавить (3.3) и выберите тип слоя (3.4) из списка справочника «Слои» (3.5). Табличная часть параметров слоя заполняется автоматически в соответствии с выбранным слоем.
Рисунок 3. Компоновка модели - слои
Заполните необходимые параметры (3.6) в соответствии со спецификацией слоя, которую можно посмотреть в форме элемента справочника «Слои» (рис. 4).
Рисунок 4. Справочник "Слои"
По завершении добавления слоев (рис. 5) перейдите на закладку «Композиция» (5.1) и укажите порядок следования слоев. Добавьте строки в табличную часть "Композиция" (5.2) и заполните строки именами слоев(5.3). Нажмите кнопку «Скомпоновать модель» (5.4). Результатом компоновки будет элемент справочника «Модели», содержащий конфигурацию модели. Запишите новый элемент (5.5). В документ автоматически добавятся схема и сводка модели (5.6).
Рисунок 5. Компоновка модели - композиция
Закройте документ «Компоновка модели».
Обучение
Для обучения и тестирования нейронной сети служит документ «Обучение». Схема заполнения документа показана на рисунке 6. В документе указывается модель, для которой производится обучение, а также входные данные и параметры компиляции. Данные, как правило, берутся из вашей базы, но на начальном этапе обучения способ их подготовки не будет описан, т.к. для примеров будут использованы заранее подготовленные наборы данных из Keras. По нажатию кнопки «Обучить» будет вызван интерпретатор Питон, который выполнит обучение сети и вернет результат.
Рисунок 6. Обучение нейронной сети.
Порядок заполнения документа показан на рисунке 7. Откройте список документов «Обучение» (7.1) и создайте новый документ. Выберите модель из списка справочника (7.2). В табличную часть «Образцы» автоматически добавятся слои выбранной модели, на которые подаются входные данные. В табличной части «Цели» добавятся слои, на которые подаются метки классов для обучения (7.3). Далее необходимо указать файлы данных и заполнить параметры предварительного преобразования данных перед подачей на входные и выходные слои нейронной сети. Выберите один из 3 способов загрузки: массивы Numpy, текстовая таблица или обычный текст (7.4). Укажите путь к файлам данных (7.5). Для подготовки данных можно воспользоваться обработкой «Преобразование данных» из меню «Сервис» (7.6). Она позволяет создавать, просматривать и изменять двоичные файлы массивов Numpy (рис. 8). Заполните параметры преобразования входных данных образцов и целей (7.7).
Рисунок 7. Обучение - загрузка данных
Рисунок 8. Обработка "Преобразование данных"
Заполнение параметров показано на рисунке 9. Перейдите на закладку «Параметры» (9.1) и заполните обязательные поля.
- параметры компиляции: Функция потерь, оптимизатор и показатель качества (9.2);
- параметры обучения: Количество эпох, Размер пакета (9.3);
- параметры сохранения и загрузки: Сохранять сеть после обучения (9.4).
Нажмите кнопку "Обучить" для запуска обучения (9.5).
Рисунок 9. Обучение - параметры
По завершении обучения будет открыта закладка «Диаграмма» (рисунок 10) на которой можно посмотреть графики результатов обучения, которые включают потери на этапах обучения, а также заданные в параметрах компиляции показатели качества.
Рисунок 10. Обучение - диаграмма
Если во время обучения произойдет ошибка, то вместо закладки «Диаграмма» будет активирована закладка «Текст программы» (рисунок 11), и показаны сообщения об ошибках (11.1). В таблице действий справа будет выделено ближайшее действие, соответствующее строке с ошибкой (11.2).
Рисунок 11. Обучение - текст программы
Проверка работы
Обученная нейронная сеть сохраняется в специальном формате Hierarchical Data Format (Иерархический формат данных) на диске. После обучения можно проверить сеть на тестовых данных. Скопируйте документ, на котором проводилось обучение, укажите пути к файлам с контрольными данными на закладке "Загрузка данных" (рисунок 7).
Проверка работы обученной сети показана на рисунке 12. Перейдите на закладку «Оценка и прогноз» (12.1). Нажмите кнопку «Оценить» (12.2), чтобы посмотреть потери и показатели качества сети на контрольных данных. Результаты оценки отобразятся в таблице (12.3) и отображают значения потерь и показателей качества на одной эпохе. Чем меньше значение потери, тем лучше прогноз, данный сетью. Чтобы посмотреть, как сеть распознает новые для себя данные, нажмите кнопку «Прогноз» (12.4). В результате для каждого выходного слоя в таблице прогноза можно посмотреть к какому классу сеть отнесла входные данные (12.5).
Рисунок 12. Обучение - оценка и прогноз
Более подробно смотрите на моем канале на ютубе, где я постепенно буду выкладывать уроки по работе в Нейроконструкторе.