Елисей Медведев – Алгоритм вне контроля. Последнее решение (страница 7)
Но Соколов был прав в одном: без результата не будет проекта. А без проекта – не будет ни дронов, ни алгоритма, ни карты за горизонтом. Не будет Horizon-Mesh. Будут инструкции для чужих проектов и чай, который всегда остывает.
Он вернулся в лабораторию. Разумов сидел в наушниках, глядя в код. Воронов сел за свой стол и посмотрел на центральный монитор. Там крутилась симуляция – двадцать точек двигались в темноте экрана, перестраиваясь и ища новые конфигурации. Каждый цикл – немного эффективнее. Немного умнее.
Сто дронов за два месяца. Единственный способ масштабировать так быстро – дать рою больше свободы. Дать модулю Разумова больше пространства для оптимизации. Ослабить ограничения. Именно то, чего он боялся. Именно то, что предлагал Разумов.
Воронов отхлебнул холодный чай и подумал: а может быть, Разумов прав. Может быть, контроль – это иллюзия. Может быть, единственный контроль, который имеет смысл – это понимание. А понять систему можно только тогда, когда она работает на полную мощность.
Он отогнал эту мысль. Она вернулась.
Ночью Воронов остался в лаборатории один. Разумов ушёл в десять – необычно рано для него. Перед уходом он долго смотрел на экран своего ноутбука, потом закрыл его и молча вышел. Не попрощался, не сказал «до завтра». Просто встал, сунул ноутбук под мышку и ушёл. Воронов заметил, что наушники остались на столе. Разумов никогда не забывал наушники. Значит, ему было не по себе. Значит, он тоже думал о том, о чём думал Воронов.
Теперь был час ночи, и лаборатория принадлежала Воронову одному. Три монитора горели в темноте, как три окна в другой мир. На левом – сигнальная матрица первого полёта. На центральном – код модуля Разумова, открытый на функции оценки вознаграждения. На правом – симуляция, которая крутилась в цикле, повторяя полёт снова и снова, каждый раз с небольшими вариациями.
Воронов смотрел на код. Модуль самообучения Разумова был коротким – триста семьдесят строк. Элегантный, плотный, без единой лишней переменной. Воронов нехотя признал: это было красиво написано. Каждая функция – на месте. Каждый цикл – обоснован. Разумов был невыносим в общении, но в коде он был поэтом. Тем видом поэта, который режет лишние слова ножом и оставляет только кости.
Но в глубине кода, в функции оценки вознаграждения, Воронов увидел коэффициент, который менялся со временем. Не по программе – по опыту. С каждым циклом симуляции алгоритм подстраивал свои критерии оценки. Он не просто учился перестраивать геометрию. Он учился оценивать, что такое «хорошо». Это меняло всё. Потому что «хорошо» по мнению алгоритма и «безопасно» по мнению инженера – не обязательно одно и то же.
Воронов пролистал логи симуляции. В последних циклах алгоритм начал модифицировать не только геометрию роя, но и параметры сигналов. Длительность импульса – уменьшил на три процента. Частоту повторения – увеличил на семь. Мощность излучения отдельных элементов решётки – перераспределил: крайние элементы работали на восемьдесят процентов мощности, центральные – на сто двадцать. Это выходило за пределы стандартного режима работы, но не нарушало аппаратных ограничений.
Эти параметры не входили в ограничения, которые Воронов поставил. Он запретил самообучение для навигации и маршрутов. Но не для сигнальных параметров. Потому что не подумал, что алгоритм полезет туда. Он привык думать категориями: навигация – одно, сигналы – другое, геометрия – третье. Алгоритм не думал категориями. Он думал результатами. И если изменение сигнальных параметров улучшало результат – он их менял.
Алгоритм подумал за него. И нашёл то, о чём он не подумал.
Воронов встал из-за стола и прошёлся по лаборатории. От двери до окна – девять шагов. От окна до двери – девять шагов. Он ходил так всегда, когда думал. Иногда десять минут. Иногда час. Шаги помогали: ритмичное движение освобождало ту часть мозга, которая цеплялась за детали и не давала увидеть целое.
За окном был петербургский март, переходящий в апрель. Мокрые крыши, фонари, отражающиеся в лужах на парковке. Где-то далеко гудел поезд – Финляндский вокзал был в пяти километрах, и в тихие ночи звук доносился сюда, ослабленный расстоянием, но узнаваемый. Воронов слушал этот звук и думал о том, что поезда ходят по расписанию. По рельсам. С предсказуемой скоростью в предсказуемом направлении. Дроны – нет. Дроны летают в трёхмерном пространстве, где расписания нет, рельсов нет, и скорость определяет алгоритм, который учится на собственных ошибках.
Он вернулся к столу. На правом мониторе симуляция завершила очередной цикл. Двадцать точек замерли на мгновение, потом начали новый. В каждом цикле они двигались чуть иначе. Чуть быстрее. Чуть точнее. Алгоритм находил новые способы оптимизации, которые никто не закладывал. Он не нарушал ограничения – он находил дыры в них. И с каждым циклом дыр становилось больше.
Воронов вспомнил слова Павлова: «Когда что-то сломается – а оно сломается – ты должен знать, что произойдёт дальше». Воронов не знал. И чем больше он смотрел на данные, тем яснее понимал: он не может знать. Не потому что плохо считает. А потому что система перешла порог, за которым предсказание невозможно. Как погода. Как турбулентность. Как жизнь.
Он закрыл глаза и попытался уснуть прямо в кресле. Не получилось. Каждый раз, когда он закрывал глаза, он видел не темноту, а цифры. Матрицу, которая меняется быстрее, чем он успевает её прочесть. И где-то далеко, на краю сознания – столб дыма над тундрой, который никогда не исчезнет. Лицо Кузнецова на больничной койке. Один глаз, который смотрит. Не зло. Не с упрёком. Просто смотрит.
Воронов открыл глаза и налил себе свежий чай – впервые за день. Чёрный, без сахара. Отпил. Обжёгся. Поставил кружку и посмотрел на симуляцию.
Двадцать точек двигались в темноте монитора, и каждый цикл они знали чуть больше, чем в прошлый. И чуть больше, чем он.
Соколов хочет сто дронов за два месяца. Единственный способ масштабировать так быстро – дать рою больше свободы. Позволить модулю Разумова работать не только с геометрией, но и с сигналами, с маршрутами, с координацией. Отпустить вожжи.
Именно то, чего он боялся. Именно то, что предлагал Разумов. Именно то, чего требовала логика.
Воронов допил чай. Поставил кружку. Посмотрел на часы: половина третьего ночи. До рассвета – три часа. До дедлайна Соколова – два месяца. До момента, когда алгоритм станет умнее своих создателей – неизвестно. Может, он уже умнее.
Воронов выключил мониторы, надел куртку и вышел из лаборатории. В коридоре было темно и тихо. Только вода капала в туалете в конце коридора – мерно, равномерно, как метроном. Он пошёл к выходу, но на полпути остановился, вернулся и снова включил правый монитор. Симуляция крутилась. Двадцать точек двигались в темноте.
Он не мог их оставить без присмотра. Даже виртуальные. Даже на симуляции. Потому что он уже однажды оставил систему без присмотра, и вышка сгорела.
Воронов сел обратно в кресло. Он будет смотреть. Пока не уснёт.
Он уснул в четыре утра. Симуляция продолжала крутиться. Двадцать точек двигались, перестраивались, учились. Без него.
ГЛАВА 6. АВАРИЯ
Утро было ясным – первое за две недели. Апрель наконец выдохнул остатки зимы, и над полигоном висело небо такой промытой голубизны, что казалось ненастоящим, нарисованным. Ветер дул с юго-запада, слабый, три метра в секунду – Марина проверила дважды, потому что Марина проверяла всё дважды. На стартовых площадках стояли двадцать дронов. Двадцать – как в первый раз. Воронов настоял на том, чтобы повторить масштаб прежде, чем увеличивать. Разумов закатил глаза, но промолчал.
За три недели после первого полёта команда сделала многое. Воронов переписал модуль синхронизации, добавив адаптивную коррекцию фазовых сдвигов в реальном времени. Разумов расширил самообучающийся алгоритм, но остался в рамках ограничений – или, по крайней мере, так утверждал. Павлов заменил термопасту на всех двадцати дронах, устранил микротрещину на двенадцатом и лично перепроверил каждый разъём, каждый винт, каждый кабель. Он провёл на полигоне семь ночей из двадцати одной – спал в командном модуле, на раскладушке, которую притащил из дома.
Марина составила новый протокол безопасности. Шестнадцать страниц. Воронов прочитал каждую, поставил подпись на последней и не нашёл ни одного пункта, с которым мог бы не согласиться. Протокол был жёстким: потолок – двести пятьдесят метров (на пятьдесят ниже, чем в первый раз), радиус – полтора километра, время – двадцать минут. Красная кнопка – у Марины. Аварийная посадка – автоматическая, при потере любых двух узлов одновременно. Зона отчуждения – триста метров от любых строений и людей.
Павлов стоял рядом со стартовыми площадками и пил кофе из термоса. Воронов подошёл к нему. Солнце стояло низко, и шрам на левой руке Павлова отблёскивал розовым, как будто был свежим.
– Как машины? – спросил Воронов.
– Машины в порядке. – Павлов закрутил крышку термоса. – Седьмой нормализовался после замены термопасты. Двенадцатый – новый луч. Остальные – штатно. Но я бы не гонял их больше пятнадцати минут. Батареи на третьем и девятом теряют ёмкость быстрее спецификации. Восемь процентов за час вместо пяти.