en ru

Open Semantic Technology for Intelligent Systems (OSTIS)

Это открытый проект, направленный на создание массовой семантической технологии компонентного проектирования интеллектуальных систем различного назначения.

ostis.net

Цели проекта OSTIS

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

Особенности проекта OSTIS

  • Является открытым комплексным проектом, состоит из большого числа частных проектов и предоставляет полный пакет документации по всем компонентам предлагаемой технологии (включая исходные тексты соответствующих программных средств)
  • Ориентирован на широкий контенгент разработчиков прикладных интеллектуальных систем (на массовое распространение предлагаемой технологии)
  • Ориентирован на существенное сокращение сроков проектирования интеллектуальных систем

Модель интеллектуального решателя задач

В предлагаемом подходе к преодолению приведенных проблем решатель задач рассматривается в неклассическом варианте. В данном случае решатель задач представляет собой графодинамическую sc-машину (память в качестве модели представления знаний использует семантическую сеть), состоящую из двух частей:

  • графодинамической sc-памяти;
  • систему sc-операций.

Система операций является агентно- ориентированной и представляет собой набор sc-операций, условием инициирования которых является появление в памяти системы некоторой определенной конструкции. При этом операции взаимодействуют между собой через память системы посредством генерации конструкций, являющихся условиями инициирования для другой операции. При таком подходе становится возможным обеспечить гибкость и расширяемость решателя путем добавления или удаления из его состава некоторого набора операций. Более подробно процесс проектирования операций и предъявляемые к ним требования рассмотрены в соответствующем разделе.

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

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

Описанная модель взаимодействия агентов в общей памяти позволяет обеспечить максимальную расширяемость системы агентов и предельно упростить процесс добавления новых агентов в уже имеющийся коллектив.

Файлы

kbe-0.2.0-src.7z

Ссылки

Основной сайт проекта: ostis.net

Подробное описание + видео

Интересные материалы конференции OSTIS-2012:
Разработка экспертных систем в среде Multi Studio
Онтологическая парадигма программирования
Языки и технологии программирования, ориентированные на обработку семантически сетей
Гранулярные, нечеткие и лингвистические онтологии для обеспечения взаимопонимания между когнитивными агентами
Семантическая технология компонентного проектирования интеллектуальных решателей задач
Использование онтологий при построении систем распознавания образов

Заметки

По ходу дела буду записывать заметки, чтобы самому не забыть и с другими поделиться. И так, описание монографии:

1. В монографии говорится о системе из БЗ и интерпретаторов (движков логического вывода).

2. Знания могут быть представлены в разных видах: формальные, семиотические, графодинамические.
Если по русски, то или последовательные (строки) или в виде графов (онтология на сколько я понимаю).

3. Сущности (знаки, денотаты) могут быть представлены в виде фреймов.
Цитата: Очевидно, что сетевые модели представления знаний, в которых знания представляются в виде семантических сетей, устроенных тем или иным способом, имеют к графодинамическим моделям переработки знаний самое непосредственное отношение, ибо семантическая сеть есть частный вид графовой конструкции.

4. Говорится о графах, семантических сетях, сетях "знаков" и пр. Кроме этого, говорится что сети - это частный случай фреймого вида. Т.к. сеть можно записать в виде фреймов.
Я предпочитаю называть все эти варианты сетей одним словом (понятием) - "онтология". То есть, по сути, знания они и есть знания (онтология). В каком бы виде из не записал - все равно суть остается. В общем-то об этом так или иначе в монографии говорится. Например на стр.43-44.

5. Говорится об одновременно переработке общих знаний. Я так понимаю обрабатывают знания агенты. Получается модель с "микроагентами", когда обработка онтологии происходит одновременно несколькими подпроцессами параллельно.
Как это реализовывается на практике - не понятно, но приводятся математические выкладки с множествами и пр, которые я не понимаю.

6. Базовая семантическая информационная конструкция - это базовая онтология. В ней записаны некоторые общие сущности (знаки) на основе которых создаются другие онтологии (знания).
Есть несколько универсальных базовых онтологий. Самая известная и простая, на сколько мне известно, это SUMO.

7. Говорится о том, что есть несколько вариантов сущностей (знаков): объекты, экземпляры, свойства.
Хотя я считаю, что типов сущностей может быть намного больше. Но не все сущности могут учавствовать в логическом выводе. Хотя, например, такие сущности как изображение или видеозапись может выступать в роли экземпляра (Individual) и учавствовать как единица семантической сети.

8. Далее описываются языки представления онтологий (семантические и не семантические). Рассматриваются разные признаки классификации языков. Есть даже такой признак, как "мощность языка". :)
Но ясно, что рассматривать стоит только универсальные "мощные" языки в которых информация и метаинформация записывается вместе, в едином виде.

9. Предлагаются языки SC (Semantic Code) (раздел 4) и SCL (Semantic Code Logic) (раздел 5).

Семантические сети (онтологии) - это самый молодой и самый перспективный вид представления знаний.

В монографии используются понятия "знак", "фрейм" и пр. На мой взгляд правильнее эти единицы знаний называть "сущность".

23.04.2012

Монография читается очень трудно. Я думаю это из-за того, что терминология которая используется не соответсвует стандартам OWL. Это, скорее всего, связано с тем, что монографти я выпущена в 2001 году, а стандарт OWL выпустился в 2003 году (2003-06-11).

Однако в монографии присутсвуют очень полезные мысли. В частности увязаны между собой различные языки описания знаний. В частности графические, где различные связи обозначаются стрелочками. Очень наглядно и удобно. Такого я еще нигде не встречал.

Но перед прочтением монографии нужно быть уже маленько подготовленным. Я бы рекомендовал сначала почитать стандарт OWL:
shcherbak.net/translations/ru_owl2primer_shcherbak_net.html
А перед этим посмотреть "Концепция семантического Web и интеллектуальные агенты": aikernel.org/ai/books/semantic_web_and_agents.7z

Вот еще ссылка по теме: w3.org/standards/techs/owl

24.04.2012 DenisKoronchik

OSTIS - это технология, а не редактор БЗ + ряд возможностей. KBE - это лишь малая часть всего. Кстати его исходники можно найти по ссылке: github.com/deniskoronchik/kbe . А скачать последние версии под windows по ссылке: sourceforge.net/projects/ostis/files/tools

25.04.2012

Материалов конференции OSTIS, действительно, очень много. Я потратил почти целый день чтобы просто пролистать материалы с конференции OSTIS-2012.
Все описания можно найти и прочитать. Основная проблема - это время. К сожалению времени на прочтение всех интересующих документов нет. Поэтому нужны какие-то краткие обзоры. В принципе документация в виде wiki очень хорошая, довольно краткая но достаточная для начального понимания сути.

Программные реализации:
kbe - Инструментальное средство для редактирования исходных текстов баз знаний
kpm (sc-core и sc-store) - машина обработки знаний
sui - компоненты ядра пользовательских интерфейсов написанные на Qt
suit - Библиотека для разработки пользовательских интерфейсов интеллектуальных систем

25.04.2012 DenisKoronchik

kbe - это, как ранее было подмечено, инструментальное средство для редактирования исходных кодов баз знаний. Если внимательно почитать первую статью в сборнике конференции за 2012 год. То можно уловить, что знания это не только факты, а и агенты, которые эти знания обрабатывают. Поэтому kbe, включает в себя еще и средства разработки агентов (пока к сожалению этот плагин позволяет лишь редактировать их исходные коды с подсветкой синтаксиса и автодополнением). Свежая версия исходников находится по ссылке: github.com/deniskoronchik/kbe. Основным же там конечно является SCg-код - один из возможных способов визуального представления SC-кода (будет интересно, расскажу поподробнее, ибо стандарт по нему мы уже зафиксировали).

kpm - там собрано все что касается обработки знаний. В частности sc-core - это один из возможных способов реализации SC-памяти на современных платформах, он включает в себя и интерпретатор языка SCP (Semantic Code Programming). Этот язык используется для записи агентов. И представляется с помощью SC-кода (знания, которые к слову можно генерировать, анализировать и изменять во время работы системы). sc_store - это некий прототип на котором мы испытывали возможные способы ускорения такой реализации памяти и добились неплохих результатов, к примеру генерировали до 8 млн. узлов в секунду, при возможности масштабирования и дальнейшей параллельной обработки в том числе и на GPU. Эксперименты удались и теперь на основе них мы будем реализовывать замену sc-core. Проект находится по ссылке: github.com/deniskoronchik/sc-machine. А тут пополняемое описание: github.com/deniskoronchik/sc-machine/wiki. Если это будет интересно, могу выслать небольшую презентацию, где описана сама идея с цифрами и описаниями структур данных.

suit - прототип ядра пользовательских интерфейсов. Дело в том, что пользовательские интерфейсы мы рассматриваем как интеллектуальную систему, которая просто решают задачу перевода сообщений пользователя в SC-код и обратно из SC-кода на внешний язык понятный пользователю. Он также состоит из базы знаний и машины обработки знаний (агентов). Отличие заключается в том, что его машина обработки знаний кроме агентов работающих только с SC-памятью имеет "эффекторные" и "рецепторные" агенты, которые направлены на вывод и ввод информации. Строится он на основании компонентов.

Видео по установке: andrey.bezrukov.me/?p=311
Видео примеров работы:
youtube.com/watch?v=Ncu-qrA2TEI
youtube.com/watch?v=FnRhOf35FkI
youtube.com/watch?v=8k2-yxmDOB0
youtube.com/watch?v=udQlaeEUJM8
youtube.com/watch?v=Gvs4mCwUPxE
youtube.com/watch?v=qx7khGSJAPA
youtube.com/watch?v=kRCE6_tmdso

suit написан на python + OGRE + OIS + MyGUI

sui - это альтернативный вариант suit, только реализованный на с++ + Qt. Для повышения быстродействия и ухода от прототипа в сторону реального использования.

Какие есть еще проекты (подпроекты)?

sourceforge.net/projects/ostisgeometry
sourceforge.net/projects/ostisgraphstheo
sourceforge.net/projects/ostisbelarus
sourceforge.net/projects/ostisenglishlan
sourceforge.net/projects/ostislogic
sourceforge.net/projects/ostisnumsys
sourceforge.net/projects/ostisphysics
sourceforge.net/projects/ostisrussianlan
sourceforge.net/projects/ostissets

В большинстве из них вы увидите исходники базы знаний представленные с помощью SCn-кода. К примеру: http://ostisgeometry.sourceforge.net/index.php/Геометрия:Конус

Эти знания понимаются машиной. Мы использовали mediawiki как платформу для распределенной и удаленной разработки баз знаний. Далее они погружаются в sc-память средствами транслятора и могут быть использованы к примеру в рамках графического интерфейса построенного с помощью suit, sui и т. д.

Расскажите пожалуйста подробнее про kpm или, лучше, дайте ссылку на описание. Какой алгоритм применяется для машины обработки знаний? (RETE?)

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

Что если какой-то агент будет отвечать не правильно? Реализован ли механизм отслеживания правильных и не правильных ответов? Может быть имеет смысл ввести понятие "кармы" для каждого агента?

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

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

01.08.2012 - Краткий отчет

В последнее время для людей, которые наблюдают за проектом со стороны могло показаться, что в нем ничего не происходит. Это не так. Последние месяцы мы потратили на то чтобы зафиксировать стандарты и правила их описания и последующего изменения. Большое количество работы было проделано над языками текстового представления SC-кода: scs, scn.

Описание стандарта будет выложено в ближайшее время. На основе данного языка были разработаны инструменты, которые позволяют делать интернет ресурсы, которые в основе своей используют scs-тексты как исходные данные для страниц (тексты, которые могут быть обработаны машиной). Данный инструмент визуализирует scs-тексты с помощью SCn-кода, по которым можно осуществлять навигацию.

Подробнее: blog.ostis.net/?p=256

15.11.2012 - Открытые семантические технологии проектирования интеллектуальных систем – OSTIS-2013

21 – 23 февраля 2013 в г. Минск (Республика Беларусь) пройдет III Международная научно-техническая конференция «Открытые семантические технологии проектирования интеллектуальных систем» Open Semantic Technologies for Intelligent Systems OSTIS-2013.

Конференция пройдет в период с 21 по 23 февраля 2013 года в Белорусском государственном университете информатики и радиоэлектроники.

Информационное письмо конференции можно прочитать здесь.

Источник: shcherbak.net/2012/11/otkrytye-semanticheskie-texnologii-proektirovaniya-intellektualnyx-sistem-ostis-2012



© AiKernel 2010-2013
15.04.2012 - 16.01.2013