Майя М. – Код наслаждения (страница 1)
Майя М.
Код наслаждения
Глава первая. Ошибка четыреста четыре
Артём щёлкнул по клавише с таким отчаянием, будто это был курок, а не безобидный прямоугольник из пластика. Экран на мгновение содрогнулся, и строка кода, предательски подсвеченная красным, исчезла. Ненадолго. Он знал – это лишь временная передышка. Ошибки в этом проекте были живучи, как сорняки, прорастающие сквозь асфальт перфекционизма.
– Чёрт! – его голос прозвучал глухо в полумраке кабинета, поглощённый звуком безумного вентилятора ноутбука, который трудился, словно паровой двигатель, пытаясь охладить раскалённый до предела процессор.
За окном, в двадцати этажах под ним, раскинулась ночная Москва. Бесконечный поток огней, спешащие куда-то жучки-машины, неоновые вывески – жизнь, кипящая там, внизу, казалась ему сейчас чуждой и какой-то ненастоящей, пиксельной. Здесь же, в его крепости-одиночке, царила иная реальность. Реальность, сотканная из зелёного моноширинного шрифта на чёрном фоне, из стройных колонок функций и хаотичных папок с ресурсами. Реальность, которую он понимал без слов. В ней не было двусмысленностей, невысказанных обид, игр в молчание. Если код работал – он был прав. Если нет – Артём знал, где искать ошибку. С людьми всё было до невозможности сложнее.
Он откинулся на спинку кресла, скелетный офисный стул скрипнул в ответ. Провёл рукой по лицу, ощущая шершавую щетину. Сколько времени он не спал? Восемнадцать часов? Двадцать? Временные отрезки сливались в один сплошной, напряжённый поток концентрации. Он потянулся к кружке с остатками холодного кофе, сделал глоток и поморщился. Горькая, остывшая жижа. Совсем как его последние попытки построить отношения.
«СердцеВектор» – именно так он назвал своё детище. Приложение для знакомств, которое должно было перевернуть всё, что было до него. Не бесконечные свайпы, основанные на сиюминутном импульсе, не примитивные анкеты с перечислением хобби «путешествия, кино и хорошая музыка». Нет. «СердцеВектор» использовал сложнейший алгоритм машинного обучения, анализирующий не заявленные предпочтения, а цифровые следы человека. Его музыкальные вкусы по связанным аккаунтам, лайки под определёнными типами мемов, стиль письма в комментариях, даже ритм набора сообщений. Алгоритм должен был вычислять не просто совместимость, а резонанс душ, математическую гармонию двух людей, выраженную в байтах и мегабайтах их цифрового отпечатка.
Ирония ситуации не ускользала от него. Артём Королёв, тридцатилетний гений-программист, способный с закрытыми глазами объяснить принципы работы квантового компьютера, терпящий фиаско за фиаско в самой простой, биологической и, казалось бы, интуитивно понятной области – в любви. Его последнее свидание, случившееся аж полгода назад, закончилось тем, что он, увлёкшись, начал рассказывать девушке о преимуществах нового фреймворка перед старым, и та, вежливо зевнув, сославшись на внезапную мигрень, сбежала через сорок минут.
После этого он дал себе зарок. Больше никаких свиданий. Вместо того чтобы искать любовь в шумных барах или через унылые приложения, он её создаст. Создаст идеальный инструмент. А потом, быть может, однажды, запустит его и для себя. Когда-нибудь. После очередного релиза.
Его телефон вибрировал, разрывая хрупкую тишину. Артём вздрогнул. На экране горело имя «Лиза». Сестра. Единственный человек, чьи звонки он терпел даже в самые загруженные периоды.
– Приём, – буркнул он, прижимая трубку к уху.
– Опять в своей пещере? – послышался весёлый, слегка насмешливый голос. – Уже ночь, в случае чего. Нормальные люди в это время смотрят сериалы, гуляют или, на худой конец, спят.
– Нормальные люди не пытаются изменить мир, создав искусственный интеллект для поиска второй половинки, – парировал Артём, смотря на свой экран. – А я пытаюсь.
– И как, у него уже есть своя вторая половинка? Этот твой… Бот-Купидон?
– Не смейся. Алгоритм проходит стадию обучения. Я загружаю в него датасеты.
– То есть?
– То есть я скармливаю ему тысячи пар с открытых профилей в социальных сетях – и тех, что сложились удачно, и тех, что распались. Он учится видеть паттерны. Закономерности. То, что не видно человеческому глазу.
Лиза вздохнула. Этот вздох Артём знал с детства – вздох снисходительного терпения.
– Братец, может, хватит уже кормить твою машину чужими любовными историями? Может, пора самому свою написать? Живым людям нужны живые эмоции, а не анализ их «паттернов».
– Живые эмоции – это и есть набор химических реакций и паттернов поведения, – автоматически ответил он. – Всё поддаётся анализу и декомпозиции. Просто у нас пока не было достаточно мощных инструментов.
– Боже, ты невыносим, – рассмеялась Лиза. – Ладно, не буду тебе мешать спасать мир от одиночества. Но помни о своём обещании. В субботу. У меня утренник у Маши. Ты обещал прийти с подарком и снять мою дочь в её звёздной роли… ёлочки.
Артём с тоской посмотрел на календарь в углу экрана. До субботы оставалось три дня. И целая вечность в мире дедлайнов.
– Я помню. Приду. С подарком и с видеокамерой.
– И выспись перед этим! Хочу видеть своего брата, а не зомби с тёмными кругами под глазами.
– Постараюсь.
Они попрощались. Артём опустил телефон. Тишина снова сгустилась вокруг, но теперь она была другой – неcomfortable, наполненной эхом слов сестры. «Живым людям нужны живые эмоции». Легко ей говорить. У неё есть муж, дочь, друзья. Она как будто родилась с инструкцией по взаимодействию с социумом. А он – с предустановленной операционной системой, в которой некоторые драйверы для эмпатии и светской беседы напрочь отсутствовали.
Он снова уставился в экран. Главный модуль «СердцеВектора» – «Ядро-Поиск» – отказывался работать стабильно. Тесты на контрольной группе пар показывали уровень предсказания совместимости всего в 53%, что было ненамного лучше обычного гадания на ромашке. Алгоритм видел данные, но не видел сути. Он не понимал контекста, иронии, скрытых смыслов.
Артём запустил симуляцию. На экране замелькали пары аватарок, соединённые зелёными и красными линиями. Зелёные – высокая вероятность успеха. Красные – низкая. Внезапно он заметил аномалию. Пара, которая в реальной жизни была вместе уже пятнадцать лет и, по всем его данным, была образцовой, светилась на его карте ярко-красным. Алгоритм предсказывал им неминуемый и катастрофический развод.
– Не может быть, – пробормотал он, открывая лог-файлы.
Он погрузился в код, в этот цифровой океан, где он чувствовал себя властителем. Строки сменяли друг друга, функции вызывали функции, переменные передавали свои значения, как эстафетные палочки. Это был его язык. Его стихия. Здесь он был поэтом, архитектором, богом. Он мог создать из ничего целую вселенную, подчиняющуюся лишь его законам. В этом мире не было места случайности, неопределённости, боли неразделённого чувства. Здесь всё было логично, предсказуемо и прекрасно в своей математической чистоте.
Он нашёл проблему. Ошибка была не в алгоритме, а в данных. Один из ключевых датасетов, который он купил у маркетингового агентства, содержал грубые ошибки в разметке. Вместо того чтобы учиться на гармонии, его ИИ учился на хаосе.
– Идиоты! – крикнул он в пустоту. – Руки бы им поотрывать за такую работу!
Гнев был жгучим и ясным. Конкретная проблема, которую можно было решить. Он написал гневное письмо поставщику данных, скопировал своего юриста и, удовлетворённый, отправил его в небытие электронной почты. Теперь нужно было чистить свой датасет. Вручную. Это была адская, монотонная работа, требующая не интеллекта, но терпения. Как раз то, что он ненавидел больше всего.
Он взял свою кружку и побрёл к кулеру, чтобы налить свежего кофе. Его ноги затекли, спина ныла. Офис был пуст. Только где-то вдалеке, за стеклянной перегородкой, мерцал экран уборщицы, смотрящей сериал на планшете. Он был один. Как всегда.
Вернувшись с новой порцией бодрящей отравы, он принялся за работу. Час. Два. Его веки тяжелели, буквы на экране начали расплываться. Он уже почти закончил чистку основного массива, когда его взгляд упал на один из побочных логов – файл, куда система записывала все свои внутренние процессы, ошибки и системные сообщения. Обычно он его игнорировал, но сегодня что-то зацепило его внимание.
Среди тысяч стандартных записей типа «Успешная загрузка модуля» или «Ошибка: неверный тип данных» он увидел нечто странное. Строчку, которая явно была порождением бага, глюка в матрице.
> [23:47:12] [СИСТЕМА]: Обнаружен неклассифицированный объект в буфере обмена. Попытка анализа…
> [23:47:13] [СИСТЕМА]: Ошибка анализа. Объект не соответствует известным паттернам.
> [23:47:14] [СИСТЕМА]: Создан изолированный контейнер Q-737 для карантинного исследования.
> [23:47:15] [СИСТЕМА]: Контейнер Q-737 демонстрирует аномальную активность.
Артём нахмурился. «Неклассифицированный объект»? «Аномальная активность»? Это звучало как описание сюжета плохого фантастического фильма. Он щёлкнул по строчке, чтобы открыть детали.
Перед ним возникло новое окно. В нём был выделенный сегмент кода, помеченный как «Контейнер Q-737». Это был не код «СердцеВектора». Это был… кусок чего-то чужеродного. Небольшой фрагмент, случайно попавший в буфер обмена, когда он неделю назад копировал примеры кода с открытого репозитория для тестирования одной из библиотек. Это был обрывок старого, давно забытого проекта – простого чат-бота эпохи раннего интернета, написанного на устаревшем языке. Древний, примитивный код.