
Полная версия:
Александр Александров Линия передачи
- + Увеличить шрифт
- - Уменьшить шрифт
За ужином Катя поела сначала стоя. Он отодвинул стул ногой. Она села, поджав под себя одну ногу, и посмотрела на часы над дверью.
— Если я сейчас начну ещё и переживать, что поздно пришла, то совсем озверею.
— Не начинай.
— Спасибо за разрешение.
Марк повертел вилку.
— Я не в этом смысле.
— Знаю.
Она протянула руку и взяла с его тарелки кусочек огурца.
— Совещание закончилось в шесть. Потом у женщины из области запись потеряли. Она приехала первой электричкой и просидела в коридоре с четырёх утра. Мне сказали, она не возмущалась. Как будто это всё объясняет.
— Посмотрела?
— Конечно. Она с утра ничего не ела, я ей свой йогурт отдала.
— Ты обедала?
Катя показала вилкой на тарелку.
Он поднялся и достал из холодильника кастрюлю.
В отделении она хотя бы знала, когда у неё заканчивается смена. С тех пор как перешла в научные сотрудники, время стало расползаться. Данные, заседания, чужие правки, свои правки, пациенты, которых она обещала не бросать после перехода. Новые пациенты, которым её посоветовали старые. Марк однажды заглянул в её расписание: в начале октября свободное окно оставалось в декабре. Он сперва испытал гордость, затем раздражение, а потом постарался больше туда не заглядывать.
— Таблицу сейчас посмотрим? — спросил он.
— Если ты ещё можешь.
Они пересели к её ноутбуку. Таблица уползала на следующую страницу из-за нескольких невидимых настроек. Марк исправил их, и текст послушно собрался.
Катя выдохнула.
— Ненавижу.
— Ты ей ничего плохого не сделала. Она не со зла.
— Это у вас профессиональная солидарность?
Он пролистал страницу.
— Здесь у тебя красное.
— Видела.
— «Выявлены значимые различия». В таблице их нет?
— Нет. Поэтому и красное.
Катя придвинула ноутбук к себе.
— Абзац переписал помощник, тот, что встроен в редактор. Я дала ему результаты и попросила убрать повторы. Он убрал повторы и добавил открытие.
— А если попросить не добавлять?
— Попросить можно. Проверять всё равно придётся построчно: он не помечает, где присочинил. А подпись внизу моя, и отвечать за каждое слово мне.
Она выделила предложение и удалила его.
Марк смотрел на освободившееся место. Из готового гладкого абзаца торчал теперь неровный край, зато слова снова означали то, что стояло в таблице.
— Денис сегодня сказал, что им нужен человек проверять за такими помощниками, — произнёс он.
— Тебе это не нравится?
— Мне не нравится, что для этого я, оказывается, недостаточно современный.
Катя закрыла ноутбук.
— Они отказали?
— Нет. До пятницы.
— Тогда дождёмся пятницы.
— Я знаю, как это звучит.
— Что?
— До пятницы. Вроде хорошо. Ещё поговорим. Я в этих словах уже слышу отказ — осталось узнать, в какой день.
Она посмотрела на него внимательнее. За стеной кто-то несколько раз уронил что-то тяжёлое и круглое. Марк давно представлял соседа в виде человека, который каждый вечер пытается поставить гирю на мяч.
— Я не собираюсь разбирать с тобой собеседование, если ты не хочешь, — сказала Катя. — Мне бы просто понимать, как ты.
— Нормально.
Она чуть откинулась на спинку стула.
Он потёр лицо ладонями.
— Невесело, Кать. Если честно, совсем невесело.
Это оказалось труднее, чем он ожидал. Слово вышло голое: без причины, без виноватых, без срока, за который всё пройдёт.
Катя сидела молча.
— Я ему рассказал, как переделать полсистемы, — продолжил Марк. — Он записывал. А потом мы обсуждали, как он будет объяснять моё резюме людям, которые не знают, что у них вообще есть эта система.
— Может, и объяснит.
— Может.
Он услышал собственное «может» со стороны и понял, сколько в нём сомнения. Катя старалась его обнадёжить, а он отмахнулся. За это и стало стыдно.
— Дома ты сегодня всё успел, — сказала Катя.
Он отвёл глаза.
— Я сейчас не утешаю. Мне кажется, ты иногда это вообще не считаешь.
— Считаю.
— Нет. Ты думаешь, день прошёл зря, если не получил работу и не закончил программу. А всё остальное будто само случилось.
Марк хотел возразить, но за стеной опять упала гиря. На этот раз он засмеялся.
— Там, по-моему, человек третий год пытается сделать то же самое.
Катя прислушалась и тоже улыбнулась, хотя не вполне поняла, что он имеет в виду.
Они убрали со стола. Она вымыла две тарелки, он вытер. Закончив, Катя не ушла — прислонилась бедром к столешнице.
— Ты утром какой-то испуганный был.
— Сон.
— Плохой?
Он подумал.
— Нет. В том-то и дело.
Рассказать про мастерскую оказалось трудно. На месте воспоминания лежало несколько предметов, и между собой они не сходились, будто каждый попал туда из своего, отдельного сна. Зелёный коврик. Лампа. Человек у двери. Собирая их в рассказ, Марк чувствовал, что подменяет пережитое связной историей.
— Я там давно жил, — сказал он.
— Во сне?
— Да. Только я этого не выяснял. Знал и всё. Как сейчас знаю, где ложки лежат.
Катя посмотрела на открытый ящик. Марк сам удивился примеру.
— А когда проснулся, не сразу… — Он остановился. — Не сразу понял, почему именно здесь.
— Меня узнал?
— Почти сразу.
Она перестала улыбаться.
— Давно так?
— Иногда. Несколько недель.
— Ты бы сказал.
— Вот говорю.
— И лёг бы сегодня пораньше.
— Да.
Катя коснулась его плеча и провела ладонью до локтя. Он накрыл её пальцы своими.
— Я сейчас дочитаю две страницы, — сказала она. — Потом ложусь.
На столе возле ноутбука лежала целая пачка распечаток. Марк посмотрел на неё.
— Две страницы, — повторила Катя. — Не начинай.
* * *В половине одиннадцатого он сел проверить дневной прогон.
Дверь лоджии была открыта. Сервер шуршал ровно, без своего тяжёлого баса. За стеклом несколько окон соседнего дома горели синим. На подоконнике сушился Алисин бумажный дождь; одна полоса отклеилась и свернулась кольцом.
Марк открыл результат.
Выигрыш сохранился.
Он не улыбнулся. Увеличил учтённые расходы, добавил задержку, сделал условия хуже тех, на которые рассчитывал. Линия опустилась, местами почти легла на ноль, затем медленно пошла вверх.
Раньше на этом месте он начинал считать деньги. Сегодня первым делом открыл код чтения данных.
Ошибку надо было найти прежде, чем он в этот результат поверит. Поверив, искать перестанешь.
Он проверил порядок событий. Потом временные отметки. Потом тот участок, который уже проверял днём. Ничего не нашёл.
Это ещё ничего не значило. Он так и записал на свободном месте в тетради: «это ещё ничего не значит». И тут же на себя рассердился — тетрадь была рабочая, для чисел и настроек, а эта строчка была уговором с самим собой.
В соседней комнате Катя перевернула страницу.
Марк посмотрел на время. Если перейти к свежему потоку, проверить удастся хотя бы главное: программа не сможет подсматривать туда, чего он сам ещё не получил. Для этого не требовалось покупать или продавать. Только слушать.
Он открыл подключение к круглосуточной площадке. Оставил торговые команды отключёнными. Включил запись.
Слева возникали прогнозы, справа — события, с которыми они потом сравнивались. Событие всегда приходило позже прогноза, и между ними оставался небольшой промежуток времени. Иногда он был так короток, что Марк не успевал его заметить; иногда тянулся дольше.
Несколько прогнозов подряд не сбылись.
Марк почувствовал почти облегчение. Вот. На незнакомых данных всё и заканчивается.
Затем программа начала угадывать.
За отдельными совпадениями следили бы дети. Он смотрел на общую ошибку, на то, как она меняется по мере поступления данных. Прошла минута. Другая. Он поправил окно, чтобы видеть и неудачи, и совпадения. Проверил, что журнал действительно сохраняет прогноз раньше результата.
Сохранял.
Из спальни донёсся кашель. Марк машинально поднялся, налил воды и отнёс Кате. Она сидела на кровати в очках, придерживая пальцем страницу.
— Спасибо.
Он поставил стакан и задержался в дверях.
— Кать.
Она посмотрела на него поверх очков.
Он уже знал, что сейчас скажет. «Кажется, получилось». Потом придётся объяснять, насколько получилось, что именно, сколько ещё нужно времени. Она обрадуется, даже если постарается этого не показать. Он увидит, как она устала радоваться заранее.
— Я ещё немного посижу.
Катя сняла очки.
— Сколько?
— Полчаса.
— Правда полчаса?
— Поставлю будильник.
Она кивнула и потянулась к лампе.
Вернувшись, Марк поставил на телефоне таймер. На экране компьютера прибывали строки.
Он вдруг вспомнил руки из сна.
До этого ему казалось, что в мастерской он видел всё обычным образом, из самого себя, только этого себя звали как-то иначе. Теперь обнаружилось другое: он помнил мокрую ручку зонта у себя в ладони — её холод, воду, стекавшую по ней. Воспоминание было подробное и было своё. А принадлежать оно могло только тому, кто стоял у двери.
Он попытался восстановить последовательность. Может быть, сначала вошёл, затем сел за верстак. Может быть, сон перескочил, как это бывает, а утром он решил, что присутствовал в обоих местах одновременно.
Он закрыл глаза.
На миг вернулась мастерская — одно ожидание, без стен и без запаха масла. По обе стороны прилавка ждали, когда другой начнёт говорить.
Марк открыл глаза.
Программа продолжала работать.
Он взял тетрадь и на чистой странице записал: «У двери тоже я».
Некоторое время смотрел на строчку, затем дописал: «Сон. Понедельник, 6 октября».
Вместе с датой запись стала безобиднее. Он положил ручку поперёк страницы.
Слева возникло новое предсказание. Правая колонка на мгновение задержалась.
Марк смотрел в этот узкий пустой промежуток. Он слишком хорошо знал, как устроил его сам: получение, запись, ожидание следующего сообщения. Здесь нечему было удивляться. И всё же впервые за пять лет ему пришло в голову, что он совсем не представляет, чего ждёт.
Правая колонка заполнилась.
Числа совпали.
Глава 2. Пять букв
Открытие случилось не там, где он его ждал.
Ещё за полтора года до увольнения, осенью две тысячи двадцать первого, между двумя проектами, которые оба развалились, не успев толком начаться, у Марка появилось свободное время, и он потратил его на задачу, не имевшую отношения ни к биржам, ни к предсказанию людей. Только к тексту как таковому.
Идея была простой до неприличия: взять большой корпус русскоязычных текстов и посчитать, как часто встречаются подряд идущие цепочки букв заданной длины.
Корпус он собрал без разбора — сотни тысяч книг, форумных тредов, инструкций к бытовой технике, судебных решений. Языку было всё равно, откуда он пришёл.
Как программист, Марк не называл то, чем пользовался, «окошком». Правильное слово было — оконная функция: скользящее окно заданной ширины, которое двигалось по тексту поступательно, символ за символом, а не скачками. На каждом шаге оно захватывало ровно одну новую букву впереди и отпускало одну позади. Такие последовательные срезы текста в математике называются N-граммами.
Ширина окна — это N. Пять букв — N=5. Семь — N=7. Всё просто, пока не начинаешь считать, что происходит с памятью.
При N=5 корпус в сотни тысяч книг умещался в два гигабайта. Марк прогнал через алгоритм весь массив за одну ночь на домашнем компьютере.
При N=7 шестьдесят четыре гигабайта заканчивались за считаные минуты, и процесс падал с ошибкой нехватки памяти.
Разница была не в объёме входных данных — корпус оставался тем же. Разница была в том, сколько разных пятибуквенных и семибуквенных цепочек в нём реально встречалось.
Теоретически, если считать по алфавиту из тридцати с небольшим букв, число возможных пятибуквенных комбинаций — величина восьмизначная. Семибуквенных — одиннадцатизначная.
Марк ожидал, что реальный текст будет использовать ничтожную долю этого пространства. Это было очевидно любому, кто хоть немного знаком с лингвистикой. Но то, что он увидел, было не просто «ничтожной долей». Он увидел нечто более странное.
При N=5 почти каждая встретившаяся цепочка встречалась ещё раз. И ещё. Редкие, разовые, случайные комбинации — те, что в статистике называют неустойчивыми, — были исчезающе редки.
При N=7 всё переворачивалось. Огромная часть цепочек, которые вообще появлялись в тексте, появлялись ровно один раз, и никогда больше. Каждая такая цепочка требовала отдельной ячейки памяти, а их были миллионы. Отсюда и рост в тридцать с лишним раз.
Марк сформулировал это для себя одной строкой, которую потом всю жизнь вспоминал как момент, когда что-то щёлкнуло: до шести букв в языке нет неустойчивых N-грамм.
Это звучало почти как физический закон. Как будто у языка была своя константа, свой порог, ниже которого хаос попросту не пробивался.
Он понимал: с точки зрения чистой теории это не должно было так работать. После любой буквы теоретически может идти любая другая: гласная, согласная, мягкий знак, пробел. Комбинаторика не запрещает ничего.
Но язык — не комбинаторика. В нём есть согласование и управление. Прилагательное в родительном падеже тянет за собой существительное в том же падеже, и после «-ого» остаётся короткий список возможных окончаний: «большого дома», «нового снега». Глагол выбирает себе предлог: «зависит» требует «от», «стремится» — «к», «нуждается» — «в». А предлог, в свою очередь, диктует падеж тому, что пойдёт следом: после «без» будет родительный, после «к» — дательный. Выбирает всё это не пишущий: грамматика сузила поле задолго до того, как рука потянулась печатать следующее слово.
Добавь сюда границу слова — пробел или знак препинания, который обязан появиться через определённое, ограниченное число букв, потому что слова в русском языке не бывают бесконечными. Добавь благозвучие — то, что три согласных подряд неудобно произносить, и язык веками отбраковывал такие сочетания, оставляя после себя мостики из гласных и сонорных там, где стыкуются морфемы.
Каждое из этих ограничений по отдельности казалось мелочью. Вместе они схлопывали теоретически необозримое пространство комбинаций в узкий, плотно утоптанный коридор, и язык раз за разом воспроизводил один и тот же набор цепочек, пока не натыкался на стык двух разных по смыслу слов, где предсказать соседство было почти невозможно. Там и начиналась неустойчивость.
Марк не был лингвистом и не претендовал на то, чтобы объяснить механизм до конца. Но у него была цифра, и цифра не врала.
Он полез читать, что известно о статистике языка, и наткнулся на работы по предсказательной обработке в мозге — на то, что мозг, судя по всему, букв по одной не читает вовсе: он постоянно строит прогноз следующего фрагмента и лишь сверяет его с тем, что приходит на самом деле. Чем более предсказуема цепочка, тем меньше усилий тратится на её распознавание.
Это укладывалось одно в другое слишком аккуратно, чтобы быть совпадением. Мозг экономит, потому что мир, по крайней мере языковой, устроен так, что экономить есть на чём. Никто этого не проектировал. Все ограничения, о которых Марк только что подумал, от окончаний до границ слов и произносимости, снова и снова гарантируют один и тот же исход.
Он посидел с этой мыслью дольше, чем рассчитывал.
Публиковать было некуда. Точнее, было куда, но без научной степени, без аффилиации с институтом, без фамилии в правильном списке соавторов такую находку либо не заметят, либо, если заметят, перепишут своими словами через полгода и подадут как собственную. Он видел, как это происходит с чужими идеями, и не питал иллюзий насчёт своей.
Он сохранил графики, сохранил код, сохранил вывод в текстовый файл с датой в названии, и отложил.
Но мысль осталась. И спустя два года, когда работы уже не было и он разбирал на цепочки закономерностей собственную жизнь, эта мысль вернулась к нему в другом виде.
Ведь если у языка есть свой узкий коридор, по которому он движется, не пользуясь и малой долей теоретически возможного, — то почему у дня, у обычного человеческого дня, коридор должен быть шире?
Проснулся. Позавтракал. Транспорт. Работа. Обратно. Магазин. Сон.
Теоретически вариантов бесконечно много. На практике усталость требует определённой последовательности действий, расписание требует другой, привычка — третьей, и все три тянут в одну сторону чаще, чем в разные.
Жизнь, как и язык, не перебирала теоретически возможное пространство. Она двигалась по узкому, плотно утоптанному коридору, и не от бедности выбора: он всякий раз оказывался обусловлен тем, что случилось буквой, днём, шагом раньше.
Глава 3. Шеннон, пятьдесят первый
Но это было потом. А тогда, осенью две тысячи двадцать первого, держать открытие в себе оказалось труднее, чем он рассчитывал.
Через месяц Марк написал Ларисе Гольцевой — они учились на одном потоке, только она после четвёртого курса ушла в компьютерную лингвистику, защитилась и с тех пор работала в лаборатории, занимавшейся, как она сама это называла, «тем, как машины делают вид, что понимают текст». Виделись они последний раз лет восемь назад, на чьей-то свадьбе.
Она ответила через день и предложила встретиться в столовой при её институте — сорок минут между парой и совещанием, больше выкроить не могла.
Марк принёс две папки. В первой лежало то, что он собирался показать. Во второй — то, что показывать не собирался, и он до последнего не мог себе объяснить, зачем вообще тащил её с собой через полгорода. Готовился он неделю и выстроил разговор так, чтобы главное прозвучало ближе к концу, — но не выдержал и выложил первую папку на второй минуте.
Лариса слушала, помешивая чай, и, когда он дошёл до пяти букв и двух гигабайтов, впервые перевела взгляд с него на распечатки.
— Так, — сказала она. — Прежде чем ты продолжишь. Ты знаешь, кто такой Марков?
— Андрей Андреевич, — сказал Марк. — Цепи Маркова. Я на них ссылался.
— Марк, Марков, — сказала Лариса. — Две буквы разницы.
— Мне это ещё на первом курсе объяснили.
— Плохо объяснили. Слушай дальше. В тысяча девятьсот тринадцатом году он взял двадцать тысяч букв «Евгения Онегина» и вручную, карандашом, посчитал, как в них чередуются гласные и согласные. Именно затем, зачем и ты: показать, что следующий символ зависит от предыдущего. Без компьютера. Двадцать тысяч букв.
Марк молчал.
— А в пятьдесят первом, — продолжала она, — Шеннон посадил людей угадывать следующую букву в английском тексте. Просто угадывать, по одной. И по тому, с какой попытки они угадывали, вычислил энтропию языка. Получилось примерно один бит на символ. При том, что алфавит теоретически даёт около пяти.
— То есть впятеро меньше, — сказал Марк.
— Примерно. Это называется избыточность языка, и это первый курс. Твоя доля процента от теоретического числа комбинаций — то же самое, только с другой стороны и на своём железе. — Она отпила чай. — Ты не открыл. Ты переоткрыл. На домашнем компьютере, с нуля, в одиночку — это делает тебе честь как инженеру, но статьи из этого не выйдет.
Марк почувствовал, как то, что он носил в себе месяц, проседает внутрь, оставляя после себя странно ровное, почти спокойное место.
— Подожди, — сказал он. — Посмотри не на саму долю. Посмотри, как она меняется.
Он перевернул лист.
— Избыточность — свойство языка, а не моё. Она константа, её Шеннон и померил, тут спорить не с чем. Я мерил другое: какая доля цепочек встречается ровно один раз и как эта доля ведёт себя, когда растёт окно. Вот она расти обязана — чем длиннее цепочка, тем больше одноразовых. И расти плавно: гладкая кривая, она в любом учебнике нарисована. У меня она не гладкая. До пяти символов включительно одноразовых практически нет: всё, что появилось, появляется потом снова. На шести начинается. На семи обвал: больше половины цепочек одноразовые, память кончается. Это не склон. Это ступенька.
Лариса поставила чашку и придвинула распечатку к себе. Минуты полторы читала молча.
— Корпус какой? — спросила она другим голосом.
— Около двухсот тысяч книг.
— Первое, что тебе скажет любой рецензент: это артефакт объёма. Чем длиннее цепочка, тем больше их теоретически возможно, и любой конечный корпус рано или поздно перестаёт их покрывать. Ступенька — это место, где у тебя кончились данные. К свойствам языка она отношения не имеет.
— Я думал об этом, — сказал Марк. — Я гонял на десяти процентах корпуса, на четверти, на половине. Если бы дело было в объёме, ступенька ездила бы. Она почти не ездит. Сдвигается на доли, а не на символы.
Лариса посмотрела на него.
— Вот с этого и надо было начинать, — сказала она. — С «я, кажется, вижу переход, который не объясняется размером выборки». «Я открыл закон языка» я слышу три раза в год от людей с YouTube. Про переход — не слышала ни разу.
— Значит, это может быть новым?
— Это может быть новым. Может быть и ошибкой в коде, которую ты не видишь, потому что смотришь на него четыре месяца подряд. Может быть известным результатом, опубликованным в девяносто восьмом году в журнале, который никто не читает. — Она пожала плечами. — Так это и работает. Никто не знает заранее.
Она сказала, что готова посмотреть код и прогнать на своих данных, если он пришлёт.
А потом добавила то, ради чего, как Марк понял много позже, стоило приезжать.
— Только запомни одну вещь. Ты сейчас опишешь измерение. Измерение — вот это, — она постучала пальцем по распечатке. — Корпус, метод, ступенька, проверка на подвыборках. Это можно защищать. Но я по глазам вижу, что у тебя дальше. У тебя дальше идёт: «а раз так устроен язык, значит, так же устроено и всё остальное».
Марк не стал делать вид, что это не так.
— В ту секунду, когда ты допишешь эту фразу, — сказала Лариса, — ни один рецензент дальше первой страницы не пойдёт. И, скорее всего, будет прав: из того, что у языка есть грамматика, твоя жизнь никак не выводится. Это красивая мысль, она даже может оказаться верной, но она не следует из твоих цифр. Она просто лежит рядом.
Марк не стал спорить. Он был с ней согласен — относительно той папки, которую достал.
— А если я всё-таки прав?
— Тогда ты всё равно не сможешь это доказать, — сказала она без тени сочувствия. — И ещё одно, если уж совсем начистоту. Текст порождает мозг, которому всё равно, что ты про него посчитал. Он не читает твой прогноз. Не всякая система такая. Есть системы, которые твой прогноз читают, — и ведут себя иначе потому, что его прочли. С ними твоя ступенька будет работать до того дня, пока о ней знаешь только ты.
Марк тогда это запомнил, но не понял. По-настоящему понял через пять лет, ночью, глядя на вертикальные прямые на графиках.
* * *На вопрос, который мучил его всю дорогу сюда, она ответила в самом конце, уже поглядывая на часы.
— Опубликовать без степени и без места работы можно, — сказала она. — Препринт выложить никто не запретит. Прочитают три человека. Чтобы прочитали триста, нужен соавтор с именем и институт в шапке.
— А ты?
— А я буду вторым автором, и то в лучшем случае, — сказала Лариса без обиды, как говорят о погоде. — Первым будет мой заведующий, который твоего кода в глаза не видел. Так здесь устроено. Я не говорю, что это правильно. Я говорю, что это так.
Она допила чай и встала.
— Присылай код. Честно посмотрю.
Марк прислал в тот же вечер. Лариса ответила через три недели, коротко и по делу: ошибок не нашла, ступеньку на своих данных воспроизвела, порог оказался на том же месте. Написала, что поговорила о нём с заведующим и что «сейчас не самый подходящий момент», зато весной, возможно, будет подходящий.
Весной началось то, после чего препринт по статистике языка перестал быть чьей бы то ни было заботой — ни института, ни заведующего, ни самой Ларисы. Подходящий момент так и не наступил.
Марк не обиделся ни на неё, ни на весну. Он вышел из той столовой с ощущением, которого сам не ожидал: ему стало легче. До разговора он носил в себе нечто огромное и бесформенное, что нельзя было ни проверить, ни отдать. После разговора у него осталась ступенька, маленькая, конкретная, воспроизводимая на чужих данных, — и отдельно от неё, честно отделённая, красивая мысль про то, что жизнь устроена так же.
С того дня он держал в голове две отдельные полки. На одной лежало то, что можно показать и о чём можно спорить. На другой — то, что проверяешь один, без свидетелей, пока не перестанешь находить у себя ошибки. Вторую полку он никому не показывал ещё пять лет.
Глава 4. Островки
Вторую папку он не достал.
Причина была не в недоверии к Ларисе и не в обиде за Шеннона. Причина была в том, что содержимое второй папки Марк к тому дню проверял четыре месяца и всё ещё не считал проверку законченной.