Categories: Разработка

dss-architecture/

Предлагаю вашему вниманию гостевой пост, любезно предоставленный Романом Душкиным . Изначально этот пост был опубликован на ХабраХабре, но тамошние модераторы сочли его наглой рекламой кампании на BoomStarter, несмотря на то, что в посте не было ни слова о деньгах или необходимости поддерживать кампанию. В результате автор был забанен , а пост удален. Вот так просто, без суда и следствия.

Лично я считаю это просто верхом наглости со стороны модераторов Хабра. Дескать, пишите нам уникальные качественные статьи и ни смейте даже думать о том, чтобы получить хоть что-то взамен, даже если это просто одна внешняя ссылка. Так или иначе, у меня здесь, конечно, не Хабр, но аудитория не такая уж и маленькая, в связи с чем Роман предложил опубликовать статью в этом блоге, а я не особо возражал. Надеюсь, вы найдете этот пост интересным. Также я уверен, что Роман с радостью ответит на возникшие у вас вопросы в комментариях.

Сегодня я хотел бы рассказать немного о так называемых системах поддержки принятия решений (СППР), поскольку тема эта становится очень востребованной, а специалистов в этой области наши институты и университеты не готовят. Так что приходится нашим людям уже после студенческой скамьи наполнять себя знаниями, черпая их из разнообразных и порой разрозненных и противоречащих друг другу источников. Ну и я тоже включусь в процесс создания таких источников, поскольку мне точно есть, что сказать на эту тему — в течение своей рабочей деятельности я успел поучаствовать в развёртывании нескольких СППР (в частности, если кто пропустил, может ознакомиться с краткой заметкой относительно одной из них здесь ).

Так что если кто интересуется темой и хотел бы ознакомиться с моими мыслями относительно общей архитектуры и принципов построения СППР, то добро пожаловать под кат.

Немного определений

Прежде чем перейти к рассмотрению основной темы, предлагаю закрепить пару понятий. Что такое СППР? СППР — это информационно-аналитическая система , решающая задачи по информационному и интеллектуальному обеспечению лица, принимающего решения (ЛПР). Сегодня СППР используют всю мощь информационно-коммуникационных технологий для того, чтобы обработать огромные массивы информации и дать ЛПР самую выжимку из того, что ему пришлось бы «перелопатить» самостоятельно. Более того, СППР в обязательном порядке имеет функцию по объяснению того, как были получены предлагаемые ею результаты.

В отдельные десятилетия прошлого века на пике популярности в области искусственного интеллекта находились так называемые экспертные системы (ЭС). Так вот надо чётко понимать, что сегодня СППР — это уже далеко не ЭС в том понимании, которое было раньше. СППР может включать в себя как полноценные ЭС, так и их элементы. Однако сама по себе СППР — это система несколько иного класса и уровня. Можно отметить, что СППР неотделима от ЛПР, а потому результаты её работы (рекомендации) всегда валидируются и используются человеком (в конце цепочки передачи информации).

Я не зря в определении выделил слово «система». В подобных определениях всегда надо помнить, что система — это не только программное обеспечение. В состав СППР в обязательном порядке входит информационное обеспечение, то есть вся та база знаний, на основании информации из которой СППР формирует свои рекомендации для ЛПР. Кроме того, без методического и организационного видов обеспечения СППР тоже будет куцей, поскольку персонал, работающий в рамках этой системы, должен быть обучен именно новым задачам, которые позволяют решать информационные технологии. Ведь давно известно, что автоматизация должна проводиться в условиях, когда автоматизируются не устоявшиеся (закостеневшие) процессы, а именно должен осуществляться реинжиниринг процессов с учётом того, что они теперь будут исполняться в автоматизированном режиме. Ну и про другие виды обеспечения нельзя забывать.

Ну и чтобы дополнительно понять сущность СППР, надо отметить тот простой факт, что, к примеру, у врачей давно есть свои собственные СППР — это банальные книжные шкафы со справочниками и авторитетными источниками. Только всю рутинную работу по поиску информации, сопоставлению фактов и хранению в памяти многочисленных сведений выполняет сам врач.

Функциональность СППР и общая архитектура

Основная функциональность СППР следует из её определения. Главной функцией является вывод рекомендаций на основании изучения исторического и текущего состояния объекта исследования и сравнения их с информацией, хранящейся в базе знаний системы. Однако это ещё не всё.

Необходимо всегда помнить, что знания в какой-либо проблемной области всегда являются динамичными. Что-то устаревает, какие-то гипотезы опровергаются, подтверждаются новые теории, исследователи находят новые закономерности и факты. Всё это должно постепенно вноситься в базу знаний СППР, чтобы она была актуальной. Без этого система закостенеет и перестанет отвечать вызовам изменяющейся среды. Ну как это обычно бывает. Другими словами, система должна предоставлять функцию по актуализации знаний.

В процессе актуализации знаний участвуют два человека с ролями «Эксперт» и «Инженер по знаниям» (когнитолог). Первый предоставляет знания зачастую в неструктурированном виде, а второй переносит их в базу знаний СППР в формализованном и полностью структурированном виде и в формате, который используется в самой системе. После этого эксперт верифицирует знания уже в базе знаний, тем самым своим авторитетом подтверждает то, что система может использоваться для поддержки принятия решений, и выдаваемые ею рекомендации основаны на правильных методах вывода и корректных знаниях.

Наконец, поскольку системой будут пользоваться специалисты разных уровней мастерства, то сама система должна иметь механизм объяснения тех рекомендаций, которые она выдаёт. Это очень важная функция в том числе и для процесса верификации знаний.

Таким образом, перечень основных функций СППР выглядит следующим образом:

  1. Извлечение знаний;
  2. Верификация знаний;
  3. Вывод рекомендаций;
  4. Объяснение рекомендаций.

Всё это позволяет нарисовать самую обобщённую функциональную архитектуру СППР в следующем виде:

Принципы и методы построения

Таким образом, СППР представляет собой систему, при построении которой задействованы специалисты разных направлений деятельности. Кроме традиционных разработчиков, системных архитекторов, аналитиков, тестировщиков и прочая, в этом деле требуются две новые роли: когнитолог и экперт. Сам по себе эксперт ничего сделать не сможет, поскольку зачастую, обладая серьёзными познаниями в рамках проблемной области, такие люди плохо понимают суть информационно-коммуникационных технологий. Поэтому между экспертом и системой обычно (в подавляющем большинстве случаев) стоит инженер по знаниям.

Когнитолог — это примерно то же самое, что и системный аналитик, однако он больше заточен на работу со знаниями, обладает полным пониманием того, как знания извлекать, представлять, преобразовывать друг в друга, использовать в процессе вывода. Именно когнитолог строит нормированную базу знаний, в которой знания обладают минимальным набором так называемых НЕ-факторов . Когнитолог в дальнейшем следит и за тем, чтобы знания в базе знаний системы были верифицированы и актуальны.

В целом есть два метода построения СППР (как раньше было и с ЭС). Во-первых, можно взять и с нуля построить систему, жёстко закодировав в ней все извлечённые на этапе анализа знания. Умудрённый опытом специалист тут же воскликнет, что ригидность такой системы зашкалит, и её сложно будет поддерживать с точки зрения актуализации знаний. Тогда на сцену выходит другой способ — создание фреймворка, в рамках которого строится система и наполняется знаниями. Это примерно так же, как и подход MVC в разработке программного обеспечения. Прямые и обеспечивающие функции системы отдельно, знания и данные для манипуляции отдельно, ну и методы представления и визуализации информации для пользователя отдельно.

Теперь немного о тех методах, которые обычно используются в системах класса СППР. Вот неполный список наиболее важных методов и технологий:

  1. Прямой и обратный индуктивный и дедуктивный вывод;
  2. Вывод по аналогии (абдуктивный вывод);
  3. Нечёткий вывод, работа с неопределёнными и интервальными значениями;
  4. Машинное обучение;
  5. Поиск закономерностей в больших массивах данных;
  6. Обработка естественного языка.

Заключение

Как обычно, с удовольствием отвечу на возникающие у вас вопросы. Пишите их в комментариях к этой статье (если они общего плана), либо личным сообщением.

Если вам интересна эта тема, то отметьтесь в комментариях, чтобы я знал и продолжил написание статей по СППР. Потому как даже если у многих интерес имеется, но они молчат и не высказывают его, я начинаю считать, что тема интересна только мне и перестаю тратить на её развитие время. Так что если интересно — пишите вопросы и комментарии.

Ну и, наконец, при пущей заинтересованности рекомендую обратить внимание на мой новый проект Разработка СППР по диагностике и лечению судорожного синдрома .

Дополнение: СППР ДЛСС — постановка, предназначение, задачи и методы (гостевой пост Романа Душкина)

admin

Share
Published by
admin

Recent Posts

vim-commands/

Самое главное — побороть боязнь белого листа. Я всегда говорю это себе, когда нужно начать…

1 месяц ago

firefox-thunderbird-en-ru-dict/

По не вполне ясным причинам, Firefox умеет проверять орфографию либо только в русских, либо только…

1 месяц ago

perl-hacks/

Около месяца собирал разные «хаки» на языке программирования Perl. Эта подборка наглядно демонстрирует, как в…

1 месяц ago

perl-cy-check/

C недавних пор я стал увлекаться SEO. Порой передо мной встает задача быстро проверить индекс…

1 месяц ago

which-cms-perl/

Недавно написал несколько скриптов, позволяющих автоматически определять, какая CMS (Content Management System, система управления контентом)…

1 месяц ago

smtp-descr/

Я так подозреваю, что среди вас найдется те, кто скажет, что этот пост боян и…

1 месяц ago