Цепи Маркова — математика, на которой стоят нейросети

Цепи Маркова — математика, на которой стоят все нейросети

В 1913 году русский математик Андрей Марков сидел и считал буквы в «Евгении Онегине». Вручную. На бумажке. Через сто с лишним лет на том же принципе построили ChatGPT.

Вот как так вышло.

Как русский математик разобрал Пушкина на буквы

Маркову нужно было доказать одну штуку — что вероятность появления следующей буквы в тексте зависит от предыдущей. Что буквы идут не случайно, а подчиняются закономерностям.

До Маркова теория вероятностей работала в основном с независимыми событиями. Подбросил монетку — орел или решка, и прошлый бросок на это не влияет. Но Марков считал, что в реальном мире большинство событий — зависимые. Одно вытекает из другого.

И язык — идеальный пример. После буквы «т» гораздо чаще встречается «о» или «е», чем «ъ». После «ш» почти наверняка будет гласная. Это не случайность, это структура языка.

Переходы между буквами
45%30%0,3%35%30%5%40%35%5%тоаъкмфкмж

Марков вручную прошерстил текст и получил конкретные числа. 43% букв оказались гласными, 57% — согласными. После гласной вероятность следующей гласной — около 0,128. После согласной вероятность следующей гласной — около 0,663.

Вот это и есть цепь Маркова. Система, которая предсказывает следующий элемент последовательности на основе текущего. Не на основе всей истории, не на основе смысла — только на основе того, что стоит прямо перед ним. В математике это называется «свойство отсутствия памяти» — система не помнит, как оказалась в текущем состоянии, она просто смотрит, где находится сейчас, и бросает кубик.

Марков работал с буквами. Но та же логика работает и со словами — и вот тут начинается самое интересное.

Через 35 лет Шеннон применил это к словам

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

Возьмем предложение: «Я хочу». Какое слово будет следующим? Если прочитать тысячу русских текстов и посчитать, что люди пишут после «хочу», получится что-то вроде: «спать» — 15%, «есть» — 12%, «сказать» — 8%, «чтобы» — 7%, «кофе» — 5%... Выбираем слово случайно, но с учетом этих вероятностей. Выпало «кофе». Теперь считаем, что обычно идет после «кофе». И так далее, слово за словом.

Шеннон предложил модель n-грамм. Биграмма — предсказываем следующее слово по одному предыдущему. Триграмма — по двум. Чем больше предыдущих слов мы учитываем, тем более связный текст получается.

Он даже описал «ручной алгоритм»: открываешь книгу на случайной странице, находишь нужное слово, записываешь следующее за ним, открываешь другую страницу, ищешь это новое слово, записываешь следующее. Человек становится процессором цепи Маркова.

Знакомо звучит? Это ровно то, что делает подсказка на клавиатуре вашего телефона. Набрали «спасибо» — телефон предлагает «за», «большое», «вам». Потому что после слова «спасибо» эти слова встречаются чаще всего. Цепь Маркова у вас в кармане.

Попробуйте сами — нажмите на кнопку и посмотрите, что получится.

Генератор Маркова
Нажмите кнопку, чтобы сгенерировать текст...

Так при чем тут ChatGPT?

Любая языковая модель — GPT, Claude, Gemini, Llama — делает ровно то же самое, что делал Шеннон с книжкой в руках. Предсказывает следующее слово на основе предыдущих.

Вот буквально. Вы пишете в ChatGPT: «Расскажи мне про». Модель смотрит на эти слова и оценивает вероятность каждого возможного следующего слова. «Историю» — 5%, «погоду» — 2%, «цепи» — 0,3%. Выбирает одно. Добавляет его к последовательности. И снова предсказывает следующее. И так слово за словом, пока не получится целый ответ.

По сути, это цепь Маркова. С одной критической разницей.

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

Но принцип — тот же самый. Предсказываем следующий токен. Снова и снова.

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


И кстати, о Маркове. В 1912 году — за год до анализа Онегина — он сам попросил отлучить его от Русской православной церкви. Это был акт протеста против отлучения Льва Толстого. Марков написал в Синод заявление, где ссылался на свою книгу «Исчисление вероятностей» и критиковал библейские сказания. Синод поручил митрополиту «вразумить» математика, но Марков отказался от встречи, посчитав ее бесполезной. Церковь просьбу удовлетворила, но старалась не афишировать — видимо, не очень приятно, когда от тебя добровольно уходит академик. На карьеру это никак не повлияло — он продолжил работать до самой смерти в 1922 году.

Блог Молянов

Молянов

Verified

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