Савелий Батурин поделился прогнозами о будущем искусственного интеллекта
Руководитель ML отдела Postgres Professional Савелий Батурин рассказал о будущем ИИ

Эксперт в области ИИ и машинного обучения. Магистр прикладной математики. Преподаватель в МФТИ и Летней школе НГУ по направлению «ИИ в СУБД»
Человеческий язык — это механизм, который ограничивает бесконечную вариабельность возможных звуков и их последовательностей в строгую систему коммуникации.
- Фонемы ограничивают сочетания звуков. В русском языке, например, их всего 42.
- Слова ограничивают сочетания фонем и переводят наш мир в дискретное множество понятий — так рождается семантика.
- Предложения, в свою очередь, ограничивают сочетания слов, создавая структуры для описания явлений воспринимаемого нами мира.
Все эти ограничения составляют суть языка, его синтаксис и семантику.
Однако наш язык все еще остается излишне свободным и эту свободу большие языковые модель с легкостью перенимают. LLM демонстрируют впечатляющую гибкость в генерации текста, но их фундаментальная слабость — неконтролируемая вариативность. Теоретически, пространство возможных генераций модели растет экспоненциально: если длина генерации — M, а словарь содержит N токенов, то число вариантов равно N в степени М. На практике распределение вероятностей и методы вроде top-p/top-k sampling отсекают маловероятные варианты, но даже после этого LLM остаются подвержены хаотичным отклонениям — галлюцинациям, противоречиям и нестабильности форматов.
Один из способов обуздать эту вариативность — внедрение формальных грамматик, задающих жесткие правила генерации. Грамматика резко сужает пространство возможных токенов, но взамен дает предсказуемость и структурированность. Это не просто ограничение, а переход от хаотичной генерации к управляемому синтезу, где модель действует в рамках строгих синтаксических правил. Таким образом, больше внимания уделяется семантике, так необходимой для решения прикладных задач.
Формальные грамматики
Формальная грамматика — это система правил, определяющая, какие последовательности символов принадлежат языку, а какие нет. Она задается в терминах:
- Терминалов (элементарные символы, из которых строятся строки языка)
- Пример терминалов в грамматике арифметических выражений: «0», «1», «2», «3», «4», «5», «6», «7», «8», «9», «+», «-», «=», «*», «(», «)», «/», ...
- Пример терминалов в грамматике ДНК: «ATG», «TTT», «TAA» и другие триплеты нуклеотидов (всего их 64).
- Нетерминалов (вспомогательные сущности, обозначающие синтаксические категории)
- Пример нетерминалов в грамматике арифметических выражений: Expression, Number — абстрактные сущности, составляющие арифметические выражения.
- Пример нетерминалов в грамматике ДНК: Gene, Codon, Codons, Promoter, START, STOP — абстрактные сущности, составляющие ДНК.
- Правил вывода (описывают, как нетерминалы раскрываются в комбинации терминалов и других нетерминалов).
Способ описания правил, который здесь показан, используется для ограничения генерации LLM и называется GBNF — расширение EBNF с регулярными выражениями, который в свою очередь расширяет BNF (Backus–Naur form). В этом зоопарке нотаций можно запутаться, но в целом все это сводится к простому описанию правил подстановок вида A → B. Кстати говоря, в данном случае правила весьма простые и их все можно свернуть в одно при помощи тех же подстановок.
Это, конечно, сильно сложнее прочитать, но зато легко виден практический смысл нетерминалов при задании грамматик.
В целом грамматики бывают принципиально разные. Некоторые задаются обычным регулярным выражением, например, множество возможных email-адресов. Некоторые требуют использование стека и рекурсивной обработки, например, для проверки правильных скобочных комбинаций. Есть грамматики, в которых правила вывода зависят от контекста и в разных контекстах применяются различные правила. Более того, в некоторых случаях правила вывода могут практически не иметь ограничений. Все описанные случаи фундаментально отличаются и выделяются в отдельные классы грамматик, которые в 1956 году были предложены Ноамом Хомским в рамках разработанной иерархии. Каждая из них отличается реализацией через конкретный автомат, позволяет задавать правила определенного вида, а также обладает собственной сложностью распознавания языка.
Динамические грамматики
Идея динамических грамматик проста до нельзя, но в то же время очень эффективна. Допустим, правильность написанного кода зависит от среды, в котором он исполняется, например, тот же SQL в одной БД будет корректен, а в другой — нет. Теперь вместо того, чтобы использовать одну и ту же грамматику на все случаи жизни, создадим шаблон, в котором будем доопределять нетерминалы, необходимые для корректного исполнения кода. Получается некоторое введение контекстной зависимости при помощи тех же самых контекстно-независимых грамматик. Таким образом, LLM при генерации не сможет обратиться к несуществующим столбцам или несуществующим таблицам, потому что у нее просто не будет возможности использовать соответствующие токены в процессе генерации из-за заданных нами динамических ограничений языка.
Рубрики
Интересное:
Новости отрасли:
Все новости:
Публикация компании
Достижения
Контакты
Социальные сети
Рубрики
