Как создали робосудью и почему не стоит ждать скорых революций?

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

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

Как мы создали робосудью

Даже мы поддались искушению и решили попробовать свои силы. Важно понимать, что мы - классические юристы, а никакие не модные датасатанисты (зачеркнуто) датасайентисты, которые немножко научились "кодить". Это важно понимать, чтобы осознать порог входа (недели интенсива вам хватит, чтобы начать). Однако не обойтись без понимания, как работают статистические модели, методы валидации и пр. Работали мы на языке Python, который по праву можно назвать лучшим инструментом для таких задач. Плюс, он комфортен для новичков: огромное коммьюнити, открытый код с множеством библиотек и миллион обучающих курсов и статей. Например, мы активно использовали библиотеку "scikit-learn".

Как результат, у нас появилась робосудья. Наша робосудья (обученная модель) может предсказать результат рассмотрения специфического налогового спора. Точность прогноза составляет 93% (или как говорят датасайентисты: "precision очень хороший!"). Как мы добились такого результата?

Прежде всего, мы решили построить модель на определенном типе споров. Так называемые "споры о проблемных банках". Это споры, когда налоговый орган не признает, что компания уплатила налог, поскольку деньги до бюджета не дошли в силу проблем у банка (отозвана лицензия, нет денег на коррсчете и пр.). Причина в том, что по Налоговому кодексу налог считается уплаченным с момента предъявления платежки в банк при достаточном остатке на счете. Дальнейшая судьба денег зависит от Банка, при прочих равных. Предметом доказывания по таком спору является установление факта того, знала ли компания о проблемах банка и умышленно использовала его для платежа. Если суд не установит таких фактов, то Компания права, иначе правы налоговики.

Именно потому, что такая категория споров относится к спорам о фактах (нужно установить был/не был определенный факт), мы и выбрали ее. Споры о праве, т.е. о том, как правильно толковать закон, гораздо труднее формализовать.

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

Правда такова, что 90% затрат и времени уходит на формирование данных, их очистку и подготовку для модели. Дело в том, что при кажущейся развитости технологий, машина не дошла до понимания смысла естественного языка. Т.е. мы еще далеки от того, чтобы "скормить" машине текст судебного акта и на выходе получить развернутый анализ кейса с выявлением важных фактов. Соответственно, нужно оцифровать данные, чтобы машина их могла обработать. Оцифровка в нашем случае была проста по методологии, но трудоемка по объему. Мы маркировали в каждом судебном решении наличие (1) или отсутствие (0) соответствующего признака (факта). Получилась таблица с нулями и единицами. Безусловно, часть работы можно уже сейчас автоматизировать и пытаться отдельные признаки извлекать автоматизировано, анализируя текст. Кстати, обработкой естественного языка машиной занимается отдельная подотрасль natural language processing (nlp).

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

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

Скромные выводы

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

Удивительно, что наша робосудья, по сути, сама научилась базовому юридическому принципу в налогообложении. Все сомнения трактуются в пользу налогоплательщика (п.7 ст.3 НК). Если вы ответите на вопросы робосудьи "не известно" (т.е. факты не известны и не установлены ), то решение будет в вашу пользу. То, что сейчас редкость для естественного судейского интеллекта, очевидно для машины.

Не торопитесь выбрасывать свой диплом юриста

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

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

Т.е. на начальном этапе кто-то должен выступить судьей и "рассудить" (объяснить) модели буквально, что такое хорошо и что такое плохо. Кто будут эти люди? С какой компетенцией Какова их ответственность? Кто, как и по каким основаниям будет вносить изменения в модель? Без ответа на эти и многие другие вопросы, применение ML и AI в реальной жизни выглядит в лучшем случае игрушкой, в худшем - инструментом для подавления интересов одной группы другой.

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

Направления развития или что нас ждет?

По словам Франсуа Шолле, известного специалиста в области ML и AI и разработчика библиотеки Keras для работы с нейросетями: "...понимание естественного языка, скорее всего, еще долгое время будет оставаться недостижимым".

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

Изменится поиск судебных решений. Сейчас мы просто вводим поисковый запрос. В лучшем случае, система будет осуществлять поиск по синонимам. В будущем мы можем находить прецеденты, примерно по такому запросу: "выдай мне дела, где претензии налоговиков составили 100 млн. руб. и касались крупнейших компаний, а причина доначисления в выдаче займов внутри холдинга, и дело выиграла компания". А порой можно будет обходиться без явного запроса. Нашли полезный прецедент, пусть машина найдет аналогичные дела.

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

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

 Вы тоже можете рассказать о своём проекте, как автор этого материала. Соберите побольше информации — и публикуйте материал в подсайте «Трибуна».
77
6 комментариев

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

Если бы помимо процентов сервис выдавал какую-то расшифровку рисков или подсвечивал слабые места в позиции - было бы круче.

Но а вообще это здорово. Верю, что скоро все будет работать :)

1
Ответить

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

Ответить

Прям молодцы, решили конкретную задачу без вещаний про AI

Ответить

спасибо)

1
Ответить

А как ваш робосудья будет говорить защите. Дело должно отлежаться. Дело нужно чем-то придавить. Сухо подходите к процессу..... и все такое 😎.

Ответить

Всё слишком сложно. Вот вам алгоритм который будет работать в России в 99% кейсов:

if обвиняемый in('друг президента', 'силовик', 'чиновник', 'олигарх') {
return NO_GUILTY;
}
else{
return GUILTY;
};

Ответить