Пензенский государственный университет
Методы самоадаптации программных систем, основанные на машинном обучении и интеллектуальном анализе данных
А.С. Бождай,
Ю.И. Евсеева,
А.А. Гудков
Пенза, Россия
Аннотация
Актуальность и цели. Цель исследования - изучение вопросов по созданию универсальной технологии самостоятельной адаптации программных систем, математического аппарата, на котором основана данная технология.
Материалы и методы. Чтобы создать универсальную технологию самостоятельной адаптации, используются методы интеллектуального анализа данных и машинного обучения.
Результаты. Методы, которые предлагается применять для самоадаптации программных систем, позволяют выявить те знания про предметную область программы, о которых ничего не было известно, когда она только разрабатывалась.
Выводы. Использование предложенных методов открывает возможности для создания программного обеспечения, которое имеет расширенный жизненный цикл, более высокие показатели надежности и производительности. Затраты ресурсов на его разработку и сопровождение будут ниже.
Ключевые слова: самоадаптивное программное обеспечение, интеллектуальный анализ данных, машинное обучение
Abstract
Methods of self-adaptation of software systems based on machine learning and intellectual data analysis
A.S. Bozday, Yu.I. Evseeva, A.A. Gudkov, Penza State University, Penza, Russia
Background. The issues of creating a universal technology for self-adaptation of applied software systems, as well as the mathematical apparatus underlying such a technology, are being studied.
Materials and methods. Methods of data mining and machine learning are considered as methods for creating a universal technology of self-adaptation.
Results and conclusions. Methods of self-adaptation of software systems are proposed, a distinctive feature of which is the identification of this knowledge about the subject area of the program that was unknown at the development stage. The proposed methods will make it possible to create software with an extended life cycle, which is distinguished by greater reliability and performance, as well as lower resource cost for development and maintenance.
Keywords: self-adaptive software, data mining, machine learning
Введение
Создание методов, которые обеспечат эффективную самоадаптацию программного обеспечения, - актуальная проблема, что обусловлено высокой сложностью существующих сегодня программных систем, большими затратами на их разработку и сопровождение. Если система будет способна самостоятельно адаптироваться, появится возможность для выявления скрытых знаний и факторов об ее предметной области, которые могут не знать даже эксперты, когда проектируется приложение. В будущем данные знания и факторы можно использовать, чтобы создавать новые модели алгоритмов, определять самостоятельно ситуации, где требуется увеличение/снижение количества ресурсов, необходимых, чтобы оптимизировать производительность.
Чтобы выявлять скрытые знания про предметную область, необходимо применять технологию, которая предполагает интеллектуальный анализ данных. В ходе анализа данных, которые показывают, как работала программа ранее в течение определенного промежутка времени, можно увидеть, какие зависимости и закономерности существуют. На основании полученных результатов в программе формируются новые поведенческие обратные связи.
Самоадаптивное программное обеспечение с применением интеллектуального анализа информации
Авторы статьи в работе [1] предлагают для самоадаптации метод, в основе которого лежит интеллектуальный анализ информации. Метод базируется на концепции рефлексивной самоадаптации, предложенной авторами в работе [2]. Данная концепция характеризуется наличием базовых принципов, при ее внедрении в сфере программной инженерии должны соблюдаться определенные требования:
1. Механизм самостоятельной адаптации должен быть неизменчивым в отношении предметной области, типа и назначения программной системы.
2. Должна быть возможность выдерживать рабочую нагрузку, когда ресурсы увеличиваются (масштабируемость). Когда анализируются способности программной системы, важно знать, что ее уровень может быть разным. Это и самая простая утилита, и огромный программный комплекс, объединяющий в себе две системы и больше. Нужно также сделать акцент на том, что адаптироваться может вся система в целом, а также компоненты, которые входят в ее состав. Для этого применяются одни методы.
3. Информация, накопленная в информационных массивах минимум за два года, подвергается интеллектуальному анализу. Для возможности формирования новых обратных связей сначала нужно понять, какие между данными закономерности, как они зависят друг от друга, чтобы сделать вывод о том, как за определенный период данная программная система функционировала ранее.
Когда применяется принцип масштабируемости, архитектурная организация программной системы должна отвечать ряду определенных требований. Прежде всего, это возможность создавать модульные архитектуры, которые могут адаптироваться. Другими словами, должна быть возможность не только внесения изменений в программу по результатам, которые удалось получить при проведении рефлексивного анализа, но и внешней модификации программного обеспечения. Также нужно вести учет изменений системы уже при использовании программы. Когда выполняется подключение нового модуля, одновременно нужно включить общую рефлексию. Это позволит выявлять его связь с другими модулями, определять, как они воздействуют друг на друга. Также требуется выявление закономерностей во время его работы.
Обобщив имеющийся опыт в разработке программного обеспечения, которое имеет архитектуру модульного типа, авторы определили, что нужно обязательно учитывать, чтобы создавать программное обеспечение, которое сможет самостоятельно приспосабливаться:
1. Блоки изменчивости. Данные компоненты программной среды, которые подвержены адаптации, должны быть обязательно. Для каждого блока характерны свои функции, чтобы реализовать класс, функцию, модель объекта, предметную область и др.
2. Логически связанные между собой блоки изменчивости в совокупности из одной предметной области используются, чтобы решать одну задачу, - рефлексивный компонент.
3. В составе программного обеспечения рефлексивного типа может быть не только один, но и несколько рефлексивных элементов. Сколько именно будет таких элементов, определяет сложность программы и задачи адаптации.
4. Чтобы создать систему таких компонентов, используется общий интерфейс. В начале формирования у компонентов может не быть информации друг о друге. Но, когда начинается рефлексивный анализ, выявляются степень и характер влияния между составляющими систему элементами. Чтобы обмен информацией был качественным, требуется создание каналов.
Главная роль при построении данного метода отводится блоку изменчивости. Имеется в виду возможность исполнения функции, класса, модели, объекта предметной области и других атомарных элементов программы. Что касается рефлексивного компонента, то под ним подразумеваются все блоки изменчивости, между которыми существует логическая связь. Они должны относиться к одной предметной области, обеспечивать решение одной задачи.
Рассматриваемый блок может задавать разные стратегии адаптивного поведения отдельного компонента сервиса, в целом всего сервиса, в целом всей системы. Следовательно, нельзя назвать атомарным компонентом блок изменчивости, потому что его структура имеет иерархию, в состав могут входить другие блоки.
Блок изменчивости можно определить так:
VB = (SubF, BlockParams, BlockStates, Rule),
где SubF - модель поведения блока изменчивости как ориентированный гиперграф;
BlockParams = {BlockParam1, BlockParam2, BlockParamk} - параметры, определяющие состояние блока изменчивости;
BlockStates = {BlockState1, BlockState2, BlockStatez} - состояния, в которых пребывает блок, при этом BlockStatet с SubF У i = 1,..., z ;
Rule : BlockParams - BlockStates - функция, ставящая в соответствие каждому элементу
BlockParams определенный компонент из BlockStates. Под совокупностью элементов BlockParams следует понимать подмножества из BlockParams.
Возможно также представить все элементы в BlockParams в следующем виде:
BlockParams = ExtPamms^fnnerPamms^jTargetPamms,
где ExtParams = {ExtParam1, ExtParam2,ExtParamkl} - все параметры, которые в отношении анализируемого блока будут внешними;
InnerParams = [InnerParamx, InnerParam2, InnerParamk2} - внутренние параметры блока,которые могут варьироваться;
TargetParams = [TargetParaml, TargetParam2, TargetParamk3}- целевые параметры
Элементы TargetParams и некоторые целевые функции связаны между собой. Чтобы их определить, применяется экспертный метод.
Основные этапы метода самоадаптации:
1. Разработчик (эксперт) вручную определяет множества ExtParams, InnerParams и TargetParams.
2. Вручную задаются условия для TargetParams.
3. Вручную определяется количество (в процентном выражении) значений, которые будут оставлены на пятой стадии.
4. Автоматически системой осуществляется сбор информации про свои функции за конкретный период. Из входных данных этапа создается таблица, где первые столбцы - это ExtParams, остальные - InnerParams и TargetParams.
5. Выполняется обработка значений таблицы: остаются строки, где значения TargetParams удовлетворяют функции, которые должны выполняться (целевые). Для данного этапа возможно применение кластеризации. Выходные данные - таблица записей (столбцы с TargetParams не учитываются).
6. Определяются зависимости ExtParams и InnerParams, для чего проводится алгоритм интеллектуального анализа информации.
7. Результаты анализа позволяют сформулировать функцию Rule: BlockParams = BlockStates. Это будет функция-обертка над функцией, которую возвращает алгоритм Data Mining. Rule обеспечивает формирование подграфа из множества BlockStates элементов в составе ExtParams.
Чтобы понять суть данного метода и особенностей его применения, возьмем мобильное приложение, которое обладает функцией полноценной автономной работы (нет необходимости в подключении к интернету). Это приложение позволяет выполнить тестирование, как пользователь может мыслить пространственно. Для достижения данной цели используются определенные алгоритмы, которые создают картинки. В их числе следующие: на основе глубоких нейросетей, генетический, случайный перебор картинок и комбинация их фрагментов. Чтобы сделать правильный выбор, важен такой критерий, как аппаратная конфигурация используемого устройства. При этом считается, что основной код программного обеспечения не содержит данных про конкретные конфигурации мобильных устройств, также не устанавливаются условные операторы выбора. Приложение само должно установить зависимости и выбрать требуемый вид алгоритма сразу же, когда будет завершена инсталляция и выполнен запуск приложения.
Внешние параметры приложения (ExtParams) - это основные характеристики мобильного девайса. Важно знать, что производительность устройства, когда выбирается определенный алгоритм, зависит не от всех характеристик, которые были перечислены. К задачам рефлексии также относится следующая: выявить конкретные характеристики, от которых зависит производительность. Внутренние варьируемые параметры (InnerParams) - это непосредственно сам алгоритм, который может быть простым, генетическим, нейросетевым. Также к ним относятся такие параметры алгоритма, как картинки, количество клеток или фрагментов, а также сложность. В число целевых параметров (TargetParams) входит период времени, в течение которого визуализируется картинка, важно, чтобы данный период был максимально коротким, насколько это возможно.
Метод, позволяющий программному обеспечению самостоятельно адаптироваться, характеризуется универсальностью и масштабируемостью, дает возможность увидеть, как взаимодействуют разные системы, а также, какие зависимости существуют в пределах одной системы. Таким образом, улучшение будет происходить в течение всей жизни программной системы. Чтобы решить данную задачу, не нужна помощь профессиональных специалистов по программированию.
математический самостоятельный адаптация программный система
Самоадаптивное программное обеспечение через машинное обучение
Авторы работы [3] предлагают метод, в основе которого машинное обучение с подкреплением, чтобы программная система имела возможность эффективно регулировать потребляемые ресурсы. Суть данного метода в том, что в процессе взаимодействия со средой система (агент) обучается. В большинстве случаев данное взаимодействие происходит в течение определенного времени (временные шаги) [4]. Когда агент совершает шаг, ведется наблюдение за состоянием программной среды. По полученным результатам осуществляется выбор действий. Когда агентом выполнено действие, начисляется определенное числовое значение как вознаграждение. После этого происходит изменение его состояния. У нас агент - это программа, которая обладает способностью самостоятельно приспосабливаться, она, используя свои датчики, ведет наблюдение за тем, как меняется среда. Чтобы рассчитать вознаграждение, измеряются разные факторы, которые имеют значение для работы системы, формируются функции полезности [5].
Но ситуация, описанная в работе [6], которая является одной из центральных концепций в самоадаптивном программном обеспечении, в классическом варианте обучения с подкреплением не учитывается. Состояние агента может быть неизменным, но в разных ситуациях его действия должны быть разными. В зависимости от ситуации выбор разных вариантов действий может быть ограничен. Например, суперкомпьютером может осуществляться управление процессом, в ходе которого распределяются собственные ресурсы. Когда рабочая нагрузка растет, чтобы повысить производительность, требуется увеличение количества ресурсов. Если же нужно снижение потребления энергии, когда снижается рабочая нагрузка, требуется уменьшить ресурсы, которые потребляются.