serge_gorshkov


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

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


Previous Entry Share Next Entry
Логика, искусственный интеллект и договороспособность умных людей
serge_gorshkov

  • Можно ли создать искусственный интеллект на основе логических вычислений?

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

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

  • Не является ли это аргументом против логического моделирования как такового?

  • Если все же логическое моделирование осмысленно, то каким должен быть его инструментарий?

  • Стоит ли вообще отвечать на все эти вопросы, или лучше выучить BPMN и получать хорошую зарплату? :)

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


Сова, заяц ПЦ и все-все-все

Начну с рассказа о том, как эти вопросы внезапно для меня актуализировались. Несколько последних лет я занимался моделированием для решения конкретных задач в логической парадигме, не задаваясь вопросом об альтернативах, и достигал вполне конкретных результатов. Я никогда не считал вопрос о пригодности логики для создания интеллектуальных решений заслуживающим внимания – для меня всегда было очевидно, что проблемы с ее применением состоят не в логике как таковой. Дело в особенностях мышления конкретных людей, их неспособности отделить свои галлюцинации по поводу «реального мира» от чужих, понять способ мышления другого человека, огромном количестве предрассудков на тему моделирования, дурацкой технологической моде, инертности и низменных бизнес-интересах вендоров и заказчиков. Все это приводит к тому, что самые бестолковые и бессмысленные инструменты моделирования популярны, хорошо продаются и защищаются множеством «авторитетов», а попытки сделать что-нибудь поумнее чаще всего наталкиваются на стену из стеклянных глаз «аналитиков», остракизм «трушных» ИТшников и неприкрытый страх бизнес-заказчиков. Вся эта публика безнадежно труслива и сверкает всеми оттенками перевернутой мотивации.



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

Благодаря Станиславу Кралину мне попалась статья Джона Совы (John Sowa), одного из виднейших авторитетов в области формализации знаний, называющаяся ««Пунктики» и заблуждения по поводу логики». Благодаря этой статье, обсуждению со Станиславом моего предыдущего поста, а также баталиям по поводу конкретных вопросов моделирования с Максимом Мирошниченко, я сформулировал несколько полезных мыслей, которые позволяют ответить на поставленные выше вопросы и забыть о них.

Джон наш Сова во вступлении к своей статье отлично вскрывает первую проблему:
«На протяжении всей истории развития искусственного интеллекта почитатели логики ее превозносили, хулители на нее клеветали, и все подряд – обсуждали в сбивающих с толку терминах. Среди пионеров искусственного интеллекта, Джон МакКарти (John McCarthy) всегда был сторонником логики, а Марвин Минский (Marvin Minsky) – скептиком, экспериментировавшим с широким диапазоном альтернатив. Роджер Шанк (Roger Schank) без всяких сомнений разоблачал логику при каждом удобном случае. Он описал различия между «аккуратистами» (neat), которые постоянно используют логику в процессе мышления, и «неряхами» (scruffies), такими как он сам, создающими нотации (способы моделирования) на ходу для каждой новой задачи».

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

Одна из них заключается в противоречии между логикой и естественным языком, хорошо описанным тем же Совой. «Имеются два противоположных заблуждения относительно языка и логики: одно из них считает логику неестественной и нерелевантной окружающему миру, другое признает естественный язык неисправимо расплывчатым и предлагает заменить его логикой», - пишет он. Разумеется, срединный путь состоит в сочетании преимуществ обоих способов выражения знаний, а не в отрицании любого из них. Логика основана на языке и не может существовать без него, а язык без логики не имеет механизмов верификации и не позволяет передавать релевантные знания от одного субъекта другому.

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

Как прекратить заниматься ерундой и начать жить

Итак, юный аналитик со взором горящим, ныне прими от меня N заветов:

1. Не считай себя д’Артаньяном, а остальных – недоумками! Это крайне распространенный среди аналитиков грех, который умножает на ноль любые их достижения. Прими факт, что мысли другого человека не менее важны, чем твои. Ты можешь с ними не соглашаться, но всегда имей в виду, что в чем-то другой человек может оказаться прав. А правоту можно определить только по тому, решена ли практическая задача.

1.1.Не превращай свои достижения в религию. Немало известных мне умных людей, достигших определенных успехов в моделировании, настолько проникались верой в свою нев… необыкновенность, что начинали называть свои методики своим именем, искать апостолов, анафемствовать в адрес "конкурентов" и т.д. Вера не требует доказательств, но это вряд ли то, к чему стоит стремиться. К тому же, желающих записаться в апостолы и прихожане будет немного. Все, что может из этого получиться – небольшая секта.

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

1.3. Научись слушать других, а не только проповедовать свою веру. Будь благоразумен в троллинге собеседников.

1.png


1.4. Слушая других, следи за руками собеседника. Если потерять бдительность, то, как поется в песне, «Tricksters, magicians will show you all that's real». В смысле, слушать других очень полезно, а вот выводы из сказанного лучше делать самому.

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

3. Осторожно относись к результатам рефлексии. В конце концов, даже солипсизм – логически непротиворечивая концепция, которую невозможно опровергнуть. У нас нет и не может быть никакого критерия, позволяющего установить «правильность» того или иного способа мышления и моделирования. Но есть методы, которые позволяют или не позволяют решать задачи. Солипсист не будет успешен в социальной жизни, но у него и задачи другие – их он решает успешно.

3.1. Если ты вдруг решил, что тот или иной аспект «реальности» надо моделировать именно так, и никак иначе – остановись и подумай. Где-то ты накосячил.

3.2. Не отрицай существования любых сущностей. Это синдром Зайца ПЦ. Для тех, кто не знаком с творчеством Линор Горалик – показываю, как это бывает:

2.png

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

4. Не переопределяй базовые термины. Многие и без того половины слов не понимают. Если начать вкладывать свой смысл в простейшие слова вроде «субъект», «быть частью» и др. – ты станешь популярной персоной в том, что останется от твоей секты, но вне ее никто тебя не поймет и денег не заплатит.

Как поссорились Иван Иванович с Иваном Никифоровичем
«Славная темпоральная логика у Ивана Ивановича! отличнейшая! А какие экстенты! Фу ты, пропасть, какие экстенты!» - Н.В. Гоголь

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

В любезно подсказанной мне Станиславом Кралиным одной дискуссии в одном форуме г-н Сова, OWL-скептик, предъявил претензию г-ну Хорроксу (Horrocks), известному OWL-оптимисту, упрекнув его в высокомерии и навязывании отраслевым экспертам чуждых им способов моделирования. Я, даром что OWL-оптимист, в этом пункте с Совой полностью согласен. Инструменты инструментами, а голову терять не надо.

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

An Owl came to me, old and wise…

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

Я утверждаю, что существует зависимость между мощностью инструмента и широтой случаев, в которых его можно применить. Мы привыкли подразумевать под «мощностью» более развитый, более высокоуровневый формализм, и в этом определении скрывается огромная ложь. Да – чем более развит формализм, тем эффективнее он может решить конкретную задачу. Но тем уже спектр задач, которые он может решить.

3.png

И еще один график:

4.png

Разумеется, эти графики носят исключительно качественный и интуитивный характер, никаких численных метрик тут не бывает.

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

Красную линию можно представить как любой более мощный формализм, основанный на OWL или не основанный. Пусть даже это будет наш любимый ISO 15926, или любой другой формализм, придуманный известными мне аналитиками. У каждого из них есть своя «фишка», которая дает выигрыш в эффективности решения конкретных задач. И эта же фишка сужает спектр их применения.

А с зеленой линией я бы отождествил RDF. В нем ведь нет ни классов, ни свойств – только вершины и ребра графа! Полная свобода интерпретации, позволяющая представить модели, построенные по крайне широкому кругу методик, но в то же время – есть неплохая программная поддержка. И сдается мне, что если «взять интеграл» по функциям, которыми эти кривые построены, то площадь под кривой RDF окажется наибольшей… То есть мера его полезности максимальна. Повторю – это не количественная оценка, а исключительно качественная и интуитивная.

Ну и какие же выводы, спросит читатель, продравшийся сквозь весь этот текст? А вот какие.

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

  2. Споры о преимуществах тех или иных методов и технологий можно вести только относительно конкретных задач. Абстрактные вопросы типа «что лучше, OWL или UML?», «Парадигма Петрова или платформа Иванова» – не имеют ни малейшего смысла, и обсуждающие такие вопросы зря тратят свое и чужое время.

  3. Читайте книги, больше бывайте на воздухе и общайтесь с людьми :) Жизнь - это не только умствования.

Еще раз благодарю Максима Мирошниченко и Станислава Кралина за интереснейшее общение и обширный материал для этой статьи.

  • 1
Не понял две вещи:

(1) какое отношение ваш текст и вообще формальные модели чего-то (предметной области или некой системы) имеют к искусственному интеллекту?

(2) и почему вообще возник разговор про логику? Это было бы понятно, если бы вы привели два альтернативных варианта моделирования: логический и нелогический; но все обсуждение свелось к утверждению, что логических инструментов (именно логических) может быть много (OWL, UML и пр.) как много и вариантов их использования. А где альтернатива? С чем вы боролись? Кому возражали? Тем, кто предлагает моделировать с помощью духового оркестра или хочет пригласить художника, чтобы тот написал предприятие маслом?

1) Считается (например, тем же Дж. Совой), что логические вычисления есть один из путей создания искусственного интеллекта. В общем-то, системы поддержки принятия решений и продукты типа IBM Watson вполне можно отнести к ИИ.
Хотя и здесь играет злую шутку терминология. Одна крайность - утверждать, что ИИ может быть построен только на воспроизведении биологии нервных узлов, т.е. нейросетях. Другая - говорить, что никакого ИИ вообще быть не может (недавно встречалась такая точка зрения на Хабре), потому что интеллект есть только у человека.
Для меня это вопросы терминологии, неопределенности самого термина ИИ.

2) Я борюсь исключительно с пустой тратой времени, которая возникает из-за бесплодных споров о достоинствах тех или иных методов моделирования. Существует огромное количество вариантов методик логического моделирования. Естественно, каждый хвалит ту, что больше по душе. Самый простой пример - вопрос о реификации, т.е. представлении каждой связи двух объектов модели в виде отдельной сущности с собственной классификацией и набором свойств, а не просто ребра графа. Это частный вопрос моделирования, но есть много желающих доказывать необходимость применения реификации во всех случаях, независимо от задачи.

Я утверждаю, что а) одну и ту же задачу можно решить несколькими методиками, б) нет абсолютного критерия того, какая из методик более "правильна". Так что аналитикам надо не сражаться друг с другом, а решать практические задачи при помощи подходящих в каждом конкретном случае инструментов.

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


О, чатайте про то, как логические стандарты все наконец объединить - http://www.omg.org/spec/DOL/1.0/Beta1/index.htm

Сергей блеск :) - сейчас утро и нет времени на пространные комментарии, подробнее выступлю потом.

Сергей, под логической парадигмой вы понимаете явное применение математической логики в моделях? Или же любой формализм, внутри себя логически обоснованный, но на базе которого строятся строгие информационные модели (пусть даже онтологические) без явного указания множеств, кванторов и пр.? Ведь тот же самый RDF является просто labeled graph, без математической строгости. Или, например, столь любимый мной Gellish является просто Excel-таблицей, в которой лежит словарная онтология без логических обоснований. Если не ставить задачи вывода новых знаний и автоматического обеспечения непротиворечивости фактов, то логический подход вообще-то и не нужен для моделирования. Достаточно просто словарных описаний в графовом виде (property graph). Решение практических задач будет заключаться только в обходе графа построенной модели, с возможной логической интерпретацией за пределами самой модели. Как я понял, в 11-й части ISO 15926 так и поступили для упрощённого применения стандарта на предприятиях.

Edited at 2016-05-17 07:16 pm (UTC)

Игорь, спасибо за вопрос. Стал думать, откуда у меня в голове взялся термин "Логическая парадигма моделирования", и понял - от Максима Мирошниченко :)
Еще один повод посетовать на нечеткость языка и разночтения в понимании одних и тех же слов.

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

Про словарные описания - согласен, но меня в последнее время интересует именно автоматическое получение логических выводов.


>> В общем, если заказчик говорит, что видит зеленых человечков – они должны быть отражены в модели. Потому что или заказчик чего-то от них хочет, или они от него – иначе бы он их не видел.

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

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

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

Сову проэкзаменовать бы пора… Но что такое tree model property он знает.

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

Вы, Сергей, принимаете сторону Совы в споре с теми двумя парнями, но я надеюсь также, что вы и по первому вопросу с ним согласны. Что нельзя выразить в чистом OWL, что такое циклоалкан (хотя другими средствами, и даже из этого же стека, можно). А это тоже «логика».

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

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

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

У каждого своя религия

Я верую в то, что то, что мы моделируем, мы должны иметь возможность "пощупать". Это значит, что колесницу с Ильей мы "видим", пусть и в воображении. Это значит, что юрлицо мы должны "видеть". Если я спрошу, как оно выглядит, автор должен очень подробно и точно мне его описать. То же касается термина "любовь". Я должен точно знать, что имеет ввиду автор, когда произносит это слово, то есть, я хочу знать, что он "видит". Именно это и будет "любовь". Если автор не может сказать, что он видит, то он использует слова, но не понимает их смысла.

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


Edited at 2016-05-19 06:16 pm (UTC)

Я вижу две основных проблемы:

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


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

Согласен с обоими пунктами, но со вторым - особенно! Всегда проявляется максимализм: создали какую-то технологию, и одни начинают кричать, что с ее помощью можно решить все, а другие - что ничего. Синтез искать мало кому интересно. Наоборот, каждую технологию стремятся как можно четче отстроить от остальных.

Забавно смешение интеллекта, мышления, рассудка, разума.
Формально-логическая машина возможна, но применять слово "семантика" здесь ошибка. Семантика - это дело разума, а не рассудка.

  • 1
?

Log in

No account? Create an account