?

Log in

No account? Create an account

serge_gorshkov


Сергей Горшков - о бизнесе в сфере ИТ

о семантической интеграции, программировании, управлении...


Previous Entry Share Next Entry
Palantir "открывает Америку"
serge_gorshkov
Система Palantir, за развитием и PR'ом которой я с завистью слежу, продолжает сенсационные откровения. С завистью - потому, что уж очень похожие вещи мы с ними делаем, но у них денег на несколько порядков больше :)
На этот раз очередной спикер от Palantir рассказывает о "динамической онтологии" - о чудо, это онтология, которая может изменяться по ходу использования системы! Надо же, а мы все думали, что онтология раз и навсегда жестко программируется... (я шучу, если что).
Перевод презентации здесь: https://habrahabr.ru/company/edison/blog/281118/
Презентация в целом пригодна как очень простое введение в онтологии для тех, кто о них никогда не слышал.

  • 1
Там нет никаких откровений - это все давно известно, а ну что касается Ваших чувств по "сабжу" - я их полностью разделяю.

  1. Ошибочно называть онтологиями любые фантазии на темы средств и способов моделирования. Или даже не фантазии, а вполне каноничные построения, но из другого, как иногда говорят, пространства моделирования.
    Я бы навскидку предложил такие критерии «онтологичности»:
    1. Должен быть хороший провенанс :). Например, основанность на серьезных логических формализмах (из уважения к попыткам гг. логиков внести вклад в традиционную онтологическую проблематику).
      У OWL это есть, OWL-онтологии — теории в дескрипционной логике: примерно в том же смысле, в котором говорят о теориях в FOL-ЛППП.
    2. Свойства тоже являются «сущностями первого класса»: именно сами свойства, а не их значения.
  2. «Dynamic» тоже слишком амбициозная характеристика, когда есть всего-навсего «schemaless». В «онтологиях» «dynamic» — это про различных, извините меня, пердюрантов. Причем желательно, чтобы ими были и достаточно высокоуровневые сущности. Еще бы про SQL сказали, что это «dynamic», раз в нем есть insert, update и alter.
  3. Не думаю, что нужно объяснять (американским) военным, что такое онтологии, они их и ввели в промышленный обиход или во всяком случае были ранними пользователями. Больше похоже на продажу по сценарию «Вы знаете, у нас тут тоже онтологии, но не совсем. — Ну тогда дайте две».
  4. Онтология в традиционном философском смысле — это вовсе не таксономия всего сущего. Более-менее корректное представление об истории вопроса из наших общих гуру есть вроде бы у Sowa.

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

А на техническом уровне - это описание сущего при помощи классов, связей, атрибутов и индивидуальных объектов, не отягощенное никаким другим формализмом.

Про "динамичность" да, их маркетологи там совсем зарвались.

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

[Краткая история онтологии]
Однажды в ООО «Европа» учредили отдел философии. Учредил его некто Аристотель. До того философы ютились по другим отделам, оргструктура была далека от совершенства. Основным бизнес-процессом, поддерживаемым этим отделом, была «дедукция категорий». Регламент процесса описал сам Аристотель в документе, который так и назывался — «Категории».

Со временем процесс был в значительной степени автоматизирован. Пионером автоматизации был Раймунд Луллий, по совместительству первый европейский романист. А ко времени Гегеля была создана супер-ERP-система, претендовавшая стать обязательной и для других отделов. Имелось даже две редакции этой ERP-системы: «большая» и «малая».

Однако другие отделы сочли её очень неудобной. Тогда Гуссерль разрешил им заниматься автоматизацией — лоскутной и наколенной — самостоятельно (объявив, что бывают онтологии «формальные» и «региональные»). Те сразу же наняли студентов.

Хайдеггеру, бывшему ученику Гуссерля, а теперь его начальнику, все это не понравилось. Он уволил Гуссерля, а дедукцию категорий объявил не процессом, но проектом: уникальным, неавтоматизируемым и близким к провалу. Впрочем, тут в правильности своего понимания не уверен. Как раз в понимании текущих задач и способов работы не сошлись, когда работал в том отделе на испытательном сроке :).


[Место в ней онтологического моделирования]
Ну так вот, с точки зрения традиционного философского понимания онтологии «онтологическое моделирование» звучит уж больно демиургически. Кстати, забавно перевелось на современный греческий название известной книжки про Semantic Web: http://ai-group.ds.unipi.gr/working-ontologist/.

С точки зрения более современного философского понимания онтологии «онтологическое моделирование» — вовсе оксюморон. Нынче самый аз — онтико-онтологическое различие, различие между сущим и бытием. Об этом можно почитать первую главу «Бытия и времени» Хайдеггера. Моделирование же — это как раз про сущее, причём заранее расчисленное и представленное, с наброшенной сеткой инструментария и т д. Тут можно почитать «Время картины мира» того же Хайдеггера.

Ожидаемо остаётся возможность разместить онтологическое моделирование где-то в традиции «формальных онтологий». По-русски описание этой традиции есть в книге В. Л. Васюкова «Формальная онтология». Но эта традиция неподготовленной аудитории вряд ли известна…


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

Что касается технических средства, то можно не согласиться, что указывемый вами инструментарий является онтологически нейтральным и онтологически не нагруженным; что этот инструментарий всего лишь «всего лишь».

[И еще немного глубокой философии]
Однако лично мне этот инструментарий, наоборот, кажется бедным, и вот почему. Являющиеся предметом традиционной онтологии категории — это ведь не универсалии и не некие наивысшие роды сущего, у них другой механизм денотации. Я бы сказал, что категории синкатегорематичны. Пожалуй, к ним даже применимо многое из того, что говорит Делёз о «концепте» в «Что такое философия». Ну и вот, шаблоны ISO 15926 чем-то мне их напоминают. Чистый же RDF в сравнении с ISO 15926 — как демокритовские «атомы и пустота» в сравнении с «Категориями» Аристотеля :). Кстати, где-то даже встречал выражение «RDF-молекула».

Ещё раз подчеркну, симпатизирую ISO 15926 исключительно из-за полученного когда-то образования… Вон, в сборнике четвёртой конференции FOIS некто Barry Smith и вовсе отказывал ISO 15826 в праве называться онтологией. Там же и критерии какие-то приведены.


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

Первое и самое главное: мы моделируем ни в коем случае не сущее, а лишь наши представления о нем. Если я где-то недостаточно это акцентировал, мне надо исправиться. "Моделирование сущего" для меня как раз и есть оксюморон.

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

Теперь про критерии.
Говоря о рациональности, я специально подчеркнул "моделирование абстрактного мышления человека". У нас в голове есть некие правила, которые мы применяем в тех случаях, когда нужно добиться того, чтобы разные люди приходили к одним и тем же выводам из одинаковых исходных посылок. Это и есть абстрактное мышление, и безотносительно этой функции оно нам не слишком нужно (нашим поведением обычно управляют совсем другие механизмы). Откуда взяты эти правила, из логики, математики, теории множеств или категорий - второй вопрос. Поэтому не имеет никакого смысла кого-то убеждать в том, что свойства - сущности первого порядка. В зависимости от задачи, которую решает модель, они могут быть ими или не быть. Слава богу, OWL позволяет смоделировать оба варианта. Можно вообще обойтись без единого свойства, построить модель на одних классах ("голодный волк" - это пересечение классов "голодный" и "волк", а не свойство "голодный=true" у объекта класса "волк").
Эта мысль трудно дается, но OWL не навязывает нам вообще никакого формализма, как бы не хотелось поверить в обратное. Он дает очень высокую степень свободы. От этой свободы у человека начинает кружиться голова, и ему хочется зацепиться за что-нибудь привычное: какую-то конкретную интерпретацию классов, свойств и т.д. В результате человек начинает работать уже на с OWL, а с формализмом, который он сам себе придумал на его основе. Только начали ломать стены в голове - тут же построили новые. Бороться с этим нужно длительной медитацией.

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

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

Сергей, спасибо большое за похвалу, стараюсь равняться на ваш стиль и слог!

Вот в чем, видимо, я не совсем вас понял.

Слава богу, OWL позволяет смоделировать оба варианта.


Predicate в RDF— это ведь всегда RDF URI, он не может быть литералом.

Можно вообще обойтись без единого свойства, построить модель на одних классах ‹…›

Ну вообще-то свойство «rdfs:Class» у вас будет. Да и по выразительной и дедуктивной силе получится что-то типа силлогистики.

Но ничего, моделируем, OWL все стерпит.</blockquote>

Раз уж зашла речь о химии, то вот :):
http://ontolog.cim3.net/forum/ontolog-forum/2014-07/msg00038.html#nid08

А с клиентом — удачи, завидую вам, мереология всегда вкусно!

Насчет "OWL позволяет смоделировать оба варианта" - похоже, это я вас изначально неправильно понял. Что имели в виду под сущностями первого класса? Я, похоже, экстраполировал сюда свое представление о функциях первого класса из программирования, и решил, что речь идет о реификации.

На всякий случай поясню, вдруг еще кто-то это читает: связь может быть ребром графа (URI), а может - самостоятельной сущностью со своими свойствами. Например, если Иванов исполняет должность директора, это можно выразить прямой связью "является директором" между ними, но это будет не информативно, хотя бы потому, что он не вечно ее исполняет. В таких случаях создается класс сущностей "Персона исполняет должность", похожий по смыслу на шаблоны Part 7. В нем есть роли (персона, должность) и дополнительные свойства-литералы, которые описывают, например, интервал времени, в течение которого персона исполняла должность. Затем создается конкретная сущность этого класса, которая связывает Иванова и должность Директор с такого-то по такое-то число.

rdfs:Class - и правда, будет. Хотя если вспомнить чистый RDF, там и классов не было. Узлы и ребра, вот и все. Интерпретируй как хочешь ) Правда, зачем-то там еще придумали списки, причем довольно уродливые, но можно делать вид, что мы о них не знаем.

Дискуссия про химию интересна, но таких множество на просторах интернета. Часто их участники исходят из совершенно разных предпосылок, в результате чего услышать друг друга люди не могут. Недавно на Хабре в одной дискуссии нашелся субъект, утверждающий, что OWL не позволяет хранить знания, потому что знания существуют только в человеческой голове. Что тут сказать? Остается только добавить, что они туда вложены напрямую Богом, поэтому любое познание греховно. Это пример того, как легко любую дискуссию превратить в троллинг и свести к нулю.

У химиков, насколько я понял, проблема в том, что они слишком многого хотят от OWL. Им нужно, чтобы в OWL была готовая конструкция для представления циклов в молекулах, которая бы участвовала в логическом выводе. Я не слишком хорошо знаком с химией и ничего не знаю о результатах их предыдущих попыток формализовать знания о циклах, но могу утверждать следующее:

1. В 99% случаев вопли о том, что "OWL чего-то не позволяет", связаны с недостаточным пониманием технологии, зауженным представлением о ней, желанием _найти_ в ней ограничения (это очень существенно, ведь всяк кулик свое болото хвалит).

[текст не влез, продолжаю в следующем комментарии]

[продолжение предыдущего комментария]

2. Как я уже говорил, чем выше уровень формализма, тем больше ограничений. Да, если ориентироваться именно на reasoning, вполне возможно, что каких-то выводов система не сможет сделать, как ни крути модель. Лично мне попытка создания reasoner'a кажутся героическими по мотивации и титаническими по затраченным усилиям, но не слишком результативными с практической точки зрения. Формализм, на котором можно автоматически получать логические выводы, получился довольно громоздким и страшным, местами - беспомощным, а выводы дает только самые банальные.
Поэтому я никогда не пытался за рамками лабораторных экспериментов использовать на практике функционал логического вывода, который заложен в OWL. Для формализации знаний - да. Для получения выводов - нет. Не проходит ни по функционалу, ни по производительности, ни по юзабилити. Поэтому мы и пилим свой движок получения выводов, который от формализма OWL использует хорошо если 10%, зато самых "низкоуровневых", основных. Это дает одновременно и свободу моделирования, и потенциально безграничную функциональность. Может, во что-нибудь упремся, но пока не вижу серьезных проблем.

3. Еще один важный момент в дискуссии про химию - когда там Sowa кидает предъяву г-ну Horrock'у (с которым я даже имел честь однажды лично общаться, хе-хе), что тот считает себя вправе учить других тому, как моделировать. Это одна из проблем, которые меня сейчас крайне волнуют. Бог с ними, с формализмами - люди о более абстрактных и базовых вещах не могут договориться. Потому что нам крайне сложно отрефлексировать собственный процесс познания и отделить полезные галлюцинации от вредных. Как только очередной умный человек пытается этим заняться, он создает собственный метод моделирования, который приобретает статус религии, потому что рационально его доказать невозможно, а можно только задавить авторитетом (именно в этом Horrock'а и обвинили). Разумеется, желающих прогибаться под чужой авторитет немного, поэтому образуется куча мелких сект (вспомним опять про 15926), в которых кипит насыщенная внутренняя жизнь, но которые решительно ничего не способны дать окружающему миру, и не имеют шанса кого-либо убедить в своей правоте.
Для меня очевидно, что ни одна методика моделирования не может быть доминирующей или общепринятой. Поэтому я и стараюсь не слишком удаляться от простейших, базовых модельных конструкций, создавая высокоуровневые конструкции для каждой новой практической задачи заново. Это экономит кучу времени, которые я бы тратил на участие в холиварах и проповедях, и позволяет не цепляться за старые костыли, а искать действительно лучшее решение для каждой задачи.

Пожалуй, на эту тему придется написать отдельный пост. Прочитаю только сперва статью Совы, на которую он там ссылается.

Называя свойства сущностями первого класса, я имел в виду, что они ничем особо не отличаются от других типов сущностей :).
В трипле они обычно в позиции predicate, но могут быть и в subject, и в object. За счет этого возможно, в частности, описанное вами «инстанциирование».
Ну и подавно «свойства» не ограничены контекстом класса.

Ну а описываемые Sowa проблемы — они не из области химии, они из области логики…
Одна из «a lot of» статей гг. Horrock и Motik, по-видимому, вот: https://www.cs.ox.ac.uk/boris.motik/pubs/mmh12dgs-and-lp.pdf

Получается, чтобы эффективно использовать OWL для разных формализмов (методов моделирования), нужно считать слова Class, Type, Property, partOf, sub... просто некими обозначениями, как x, y, z. Но при этом концентрироваться на логических свойствах Inverse, Symmetric, Functional, Transitive, Reflexive и пр. Как-то так.

> Получается, чтобы эффективно использовать OWL для разных формализмов (методов моделирования), нужно считать слова Class, Type, Property, partOf, sub... просто некими обозначениями, как x, y, z

Да!!! Совершенно верно. Самое главное - эти слова не определяют методику моделирования, как может показаться. Ну или точнее - не жестко определяют.

> Но при этом концентрироваться на логических свойствах Inverse, Symmetric, Functional, Transitive, Reflexive и пр.

Эти свойства обеспечивают базовые возможности получения логических выводов, но в чистом виде их недостаточно для того, чтобы от автоматизации вывода получить практическую пользу. Поэтому кроме них нужны произвольно формулируемые правила типа SWRL.
Дальше, правда, все упирается в удобство и гибкость технологии, поэтому мы вместо SWRL создали свой конструктор правил и механизм их выполнения. Есть еще, кстати, правила SPIN, которые поближе к реальности, чем SWRL.




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

Edited at 2016-05-17 09:14 am (UTC)

Почитал внимательно Сову, хочу взять назад хорошие слова про него. Он как-то странно пишет, когда речь заходит о логике или о философии. Словно ему студенты нареферировали авторов, а он обработал лишь литературно. Вот возьмем пресловутые категории Аристотеля. Что они такое?

Если помните, силлогистика рассматривает конструкции вида «Все (или некоторые) S суть (или не суть) P». В «Первой аналитике» Аристотеля, откуда силлогистика пошла, такая конструкция записывается чуть иначе: «P сказывается (или не сказывается) обо всех (или о некоторых) S». Тут же в «Категориях» читаем: «из сказанного ‹…› каждое означает либо… » — и далее список из десяти категорий.

Бинго! Категория — это разновидность «сказывания о», или, если записать в OWL (простите мой манчестерский синтаксис):
Class: Category
    subClassOf: 
        subPropertyOf value subClassOf
Другой вопрос, почему в «Категориях», в отличие от «Первой аналитики», Аристотель решил, как мы сказали бы сейчас, ваять онтологию, а не пилить движок вывода…

Сказанное, конечно, сильная модернизация, но имеет больше отношения к категориям у Аристотеля, чем некие коатомы в верхней полурешетке с owl:Thing, о которых толкует Сова.

P.S. А вот ещё одна талантливая модернизация: http://bookre.org/reader?file=1094466&pg=47 :-).

Re: Сам себе отвечу

Бедный Аристотель, ему и так за пару тысячелетий досталось от интерпретаторов... ) Чего только его именем не обосновывали.

Если честно, Станислав, я тут и половины не понял, потому и не ответил на предыдущее сообщение. Но я рад, потому что общаться с людьми, которые знают в какой-то области больше меня - само по себе удовольствие ))

  • 1