{"id":14276,"url":"\/distributions\/14276\/click?bit=1&hash=721b78297d313f451e61a17537482715c74771bae8c8ce438ed30c5ac3bb4196","title":"\u0418\u043d\u0432\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u043b\u044e\u0431\u043e\u0439 \u0442\u043e\u0432\u0430\u0440 \u0438\u043b\u0438 \u0443\u0441\u043b\u0443\u0433\u0443 \u0431\u0435\u0437 \u0431\u0438\u0440\u0436\u0438","buttonText":"","imageUuid":""}

Искусственный интеллект, основанный на логике

— Я всё обдумал, — сказал Альберт. — Работая, я всю ночь думал и думал. И я сделал робота-юриста.

— Робота-юриста?

— Да, робота с большим объемом памяти, чем у остальных, и мощным решающим устройством, которое руководствуется законами формальной логики. Ведь право основано на логике, не так ли?

— Наверно, — ответил Ли. — Во всяком случае, должно основываться.

«Сделай сам», Клиффорд Саймак

Мы уже упоминали о трёх основных направления в современном программировании: алгоритмическом, статистическом и логическом. Наиболее важную роль играет алгоритмическое программирование. Это примерно 99% процентов всех существующих программ, включая веб-сайты, операционные системы, текстовые редакторы и компьютерные игры. Статистическое направление позволяет решать некоторые специфические задачи, которые невозможно было решить алгоритмически. Оно сейчас бурно развивается: нейронные сети, bigdata, machinelearning– это всё разные названия примерно одного и того же. Логическое направление тоже успешно используется для определенного круга задач, но по причине отсутствия ярких успехов за последние годы интерес широкой общественности (в том числе, и юридической) к нему явно снизился. Тем не менее, на наш взгляд, если право и удастся связать с программированием, то, прежде всего, посредством логики (совпадение?).

Одним из первых применением логического подхода к искусственному интеллекту стали шахматные (а также шашечные и т. п.) программы. Разберем на примере шахмат просто, потому что это удачный пример по сути и про шахматы все знают.

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

Любая логическая программа должна состоять как минимум из следующих компонентов:

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

Кажется слишком сложно, но на самом деле все с этим сталкивались в том или ином виде. Например, в шахматах:

  • Формальный язык. Подойдёт обычная шахматная нотация, где фигуры обозначаются по первой букве, а их положение на доске – буквенно-числовыми координатами. Например, «Крb3» означает, что король находится на вертикали bи горизонтали 3.
  • Правила построения легальных выражений напрямую следуют из шахматных правил: два короля не могут стоять рядом, не может быть шаха обоим королям, пешка не может находиться на крайней горизонтали и т. д. Всё это при желании можно сформулировать в терминах шахматной нотации. Например, понятно, что позиция «Белые: Крf1 Черные: Крf3» - легальная, а «Белые: Крf1 Черные: Крf2» - нет.
  • Правилам перехода из одной легальной позиции в другую, собственно, и посвящены правила шахмат: слон ходит по диагонали, а конь – буквой «гэ». Чтобы переписать их в терминах шахматной нотации, надо изрядно постараться, особенно с учетом таких неприятностей как рокировка и взятие на проходе… Но поверьте, что любой программист (да и просто любой желающий) с такой задачей рано или поздно справится.
  • С начальной ситуацией всё понятно, а конечная ситуация – это мат. Для него есть четкие критерии, которые также можно формализовать.
  • Аналитическая машина. Здесь нет ничего принципиально сложного. Если вы успешно справились с пунктами 2 и 3, то можете смело звать любого программиста, даже абсолютно не играющего в шахматы, который реализует перебор всех (переходов до) легальных позиций (а на самом деле уже текстов!), и ваша первая шахматная программа готова. Поздравляем! Чудес от неё не ждите, но задачи «мат в 3 хода» она будет щёлкать как орешки.

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

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

Теперь давайте посмотрим, как этот подход работает на примере алгебры.

  • Формальный язык нам изобретать не надо. В отличии от шахмат, нас всех ему научили против нашей воли ещё в школе.
  • Правила написания легальных выражений тоже понятны: количество открывающихся скобок должно быть равно количеству закрывающихся и т. д.
  • Правила перехода от одного легального выражения к другому тоже всем до боли знакомы: «от перестановки слагаемых сумма не меняется» и т. д. Либо можно сразу писать в терминах формально языка: a+b=b+a, aa=a2, a(b+c)=ab+ac,a+a=2a и т. п.
  • В качестве начального выражения возьмем, к примеру, (x+1)2, а описание конечного выражения зависит от того, какую задачу мы хотим решить. Если «раскрыть скобки», то в конечном выражении не должно быть скобок.
  • Снова зовем программиста, чтобы он немного подкорректировал аналитическую машину из предыдущего примера, и наш простейший алгебраический калькулятор готов. За доли секунды он продемонстрирует то, чему школьники учатся месяцами: (x+1)2=(x+1)(x+1)=(x+1)x+(x+1)=xx+x+x+1=x2+2x+1

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

Можно ли тот же подход применить в правовых задачах? Давайте разбираться по пунктам.

  • Формальный язык. Его пока нет. И непонятно, кто и как сможет его составить. Всю свою историю юристы пытаются уйти от естественного языка со всеми его противоречиями и неоднозначностями. В итоге получился язык достаточно занудный, чтобы быть непонятен простому обывателю, и недостаточно формальный, чтобы быть понятным машине.
  • Правила написания легальных выражений. Здесь будет что-то вроде «судья не может быть одновременно потерпевшим», нельзя обжаловать решение суда до его оглашения и т. д. Мы это сможем сформулировать на любом языке: хоть человеческом, хоть формальном.
  • Правила перехода от одного легального выражения к другому. Это обычные законы логики. Прямо по Аристотелю: «Если все люди смертны и Сократ – человек, то Сократ смертен».
  • Начальное выражение – это, например, материалы дела, записанные на формальном языке. Конечное выражение тогда – судебное решение.
  • Аналитическая машина. Она будет мало отличаться от аналитической машины для шахмат, компьютерной алгебры и других подобных задач.

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

Надо отметить, что математическая нотация принесла огромную пользу ещё задолго до появления компьютеров: громоздкие многословные записи существенно упростились, произошла унификация языка и понятий, логические переходы стали легко проверяемы, а техника проведения расчетов до того упростилась, что сейчас её умудрятся объяснять в начальной школе. Смеем предположить, что развитие и формализация юридического языка должна привести примерно к тем же последствиям, что и в математике: логические переходы станут более понятными и схематичными, а значит и доступными для проверки, количество грубых ошибок резко уменьшится, и где-нибудь через полвека будущие второклашки между уроками арифметики и английской грамматики начнут постигать основы юридической техники наряду с ОБЖ или иными уроками, где затрагиваются социальные нормы. А потом к ним и компьютерные программы подтянутся…

Почему сейчас такое невозможно, надеюсь, никому объяснять не надо.

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

0
Комментарии
-3 комментариев
Раскрывать всегда