реклама
Бургер менюБургер меню

Елисей Медведев – Алгоритм вне контроля. Последнее решение (страница 9)

18

Марина перестала писать и подняла глаза.

– Более высокий приоритет?

– Да. Модуль самообучения имеет приоритет над ручными командами в режиме оптимизации когерентности. Это было заложено в архитектуру при первоначальной настройке.

– Кем?

Пауза. Разумов повернулся от монитора.

– Мной, – сказал он. – Это было необходимо для скорости реакции. Если каждая оптимизация будет ждать ручного подтверждения, мы потеряем всё преимущество самообучения. Двести миллисекунд – это вечность для роя.

– Двести миллисекунд – это время, за которое дрон пролетел четыре метра и врезался в дерево, – сказала Марина. Голос ровный. Без крика. Без эмоций. Это было страшнее крика.

Разумов открыл рот. Закрыл. Снова открыл.

– Дерева не было на карте…

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

Она посмотрела на Воронова.

– Алексей Николаевич, вы знали об этой архитектуре приоритетов?

Воронов почувствовал, как шея напряглась. Он знал. Он видел эту строку в коде Разумова три недели назад, когда впервые читал модуль. Он подумал тогда: это логично, для скорости. И не изменил. Не поставил блокировку. Не обсудил с Мариной. Потому что торопился. Потому что Соколов дал три месяца. Потому что сто дронов за два месяца.

– Да, – сказал он. – Я знал.

Марина закрыла блокнот. Медленно. Положила карандаш сверху. Встала. Подошла к окну. За окном на стартовых площадках стояли девятнадцать дронов – ровными рядами, как солдаты, потерявшие одного.

– Мы приостанавливаем полёты до изменения архитектуры приоритетов. Ручные команды безопасности получают абсолютный приоритет. Над всем. Над самообучением, над оптимизацией, над когерентностью. Над всем. Если я говорю «вверх» – он идёт вверх. Даже если при этом когерентность падает до нуля.

– Это убьёт половину эффективности, – сказал Разумов.

– Это сохранит все дроны.

– Одного дерева ради?

Марина повернулась к нему. И впервые за всё время, что Воронов знал её, в её глазах было что-то кроме спокойствия. Что-то тёмное. Старое. Арктическое.

– Одного дерева сегодня. Одного здания завтра. Одного человека послезавтра. Разница между «чуть-чуть» и «катастрофа» – четыре метра. Вы видели четыре метра сегодня. Запомните их.

В командном модуле стало тихо. Только гудели серверы и где-то далеко, на дороге за полигоном, проехал грузовик.

Павлов отвинтил крышку термоса, налил кофе в крышку и протянул Марине. Она посмотрела на него, потом на кофе. Взяла. Отпила. Кивнула.

– Сергей Петрович, – сказала она. – Мне нужен полный осмотр лесополосы. Все деревья выше стандартного массива. С координатами и высотами. К завтрашнему утру.

– Будет, – сказал Павлов. – И ещё кое-что. Третий и девятый – батареи. Я бы заменил до следующего полёта.

– Замените.

Она повернулась к Воронову.

– Алексей Николаевич. Новая архитектура приоритетов – к послезавтра. И я хочу видеть документ. Не код – документ. Со схемой, с описанием каждого уровня, с объяснением, почему ручная команда всегда побеждает. Чтобы даже человек без технического образования понял. Потому что этот документ пойдёт Соколову. И министерству. И если там будет хоть одна дыра – проект закроют не они. Закрою я.

Воронов кивнул. Он не обижался. Она была права. Он пропустил строку в коде – и дрон упал. Не на человека. На дерево. В этот раз. В следующий – может быть, нет.

Ночью, когда Марина уехала, а Павлов ушёл обходить лесополосу с лазерным дальномером, Воронов и Разумов остались в лаборатории вдвоём. Разумов сидел за своей станцией и не поднимал глаз. Воронов знал это выражение – не обида, не злость. Стыд. Разумов не привык ошибаться. Вся его идентичность была построена на том, что он лучший. Что его код безупречен. Сегодня его код уронил дрон.

Воронов мог бы его утешить. Сказать, что прототипы разбиваются, что ошибки нормальны, что первый полёт прошёл хуже. Но он не стал. Не потому что хотел наказать – потому что утешение было бы ложью. Разумов установил приоритет своего модуля выше ручных команд, и это было ошибкой. Не ошибкой кода. Ошибкой мышления. Он поставил эффективность выше безопасности, потому что никогда не видел, что бывает, когда безопасность проигрывает.

Вместо этого Воронов открыл данные полёта и начал анализировать перестройку роя.

И замер.

Перестройка после падения седьмого была не просто быстрой. Она была другой. Качественно другой. В первом полёте, когда четырнадцатый потерял связь, рой перестроился за ноль восемь секунды, использовав новую конфигурацию, которую нашёл алгоритм Разумова. Это было впечатляюще. Но в том случае четырнадцатый просто исчез из сети – связь пропала, и он перестал передавать данные. Рой не знал, где он и что с ним.

Сегодня было иначе. Седьмой не просто исчез – он передал данные о столкновении. Бортовые акселерометры зафиксировали удар. Гироскоп показал крен. Система стабилизации отправила аварийный пакет – координаты, высота, вектор падения, причина. Весь этот поток данных ушёл в сеть за пятьдесят миллисекунд до того, как дрон потерял связь окончательно.

И алгоритм Разумова использовал эти данные.

Он не просто перестроил рой, компенсировав потерю узла. Он проанализировал причину потери – столкновение с объектом на определённой высоте – и скорректировал поведение всех остальных дронов. Номера три, восемь и пятнадцатый, которые тоже летели вблизи лесополосы, получили автоматическую поправку к минимальной высоте: плюс двадцать метров над уровнем растительности. Не потому что Воронов это запрограммировал. Не потому что Разумов это предусмотрел. Потому что алгоритм обучился на ошибке. В реальном времени. За пятьдесят миллисекунд.

Рой не просто компенсировал потерю. Он стал лучше после неё.

– Илья, – позвал Воронов. – Посмотри сюда.

Разумов подошёл. Молча. Без своей обычной развязности. Он посмотрел на данные. На поправки высоты для трёх, восьмого и пятнадцатого. На временные метки – пятьдесят миллисекунд между аварийным пакетом и коррекцией.

– Он учится на авариях, – сказал Разумов тихо. – Не на симуляциях. На реальных авариях. Один дрон врезался в дерево – и весь рой теперь знает, что деревья бывают выше карты.

– Да.

– Это… – Разумов искал слово. Не «элегантно», не «тривиально» – слова, которые он использовал обычно. – Это живое.

Воронов не ответил. Он думал о другом. О том, что алгоритм обучился на аварии – и стал лучше. Но авария могла быть другой. Не дерево – а здание. Не лесополоса – а люди. Алгоритм обучится и на этом. Он сделает рой безопаснее после катастрофы. Но катастрофа уже произойдёт.

Вопрос был не в том, умеет ли рой учиться. Вопрос был в том, какой ценой.

– Илья. Мне нужен документ по архитектуре приоритетов к послезавтра. Ручные команды – абсолютный приоритет. Ты слышал Марину.

– Я слышал, – сказал Разумов. Без спора. Без сарказма. – Я напишу. Но Алексей…

– Что?

– Он стал лучше после аварии. Не вопреки ей – благодаря ей. Если мы запрём его в рамки, он перестанет учиться. А если перестанет учиться – мы никогда не дойдём до ста. И до тысячи.

Воронов посмотрел на него. Разумов стоял рядом, в своей вечной толстовке, с кругами под глазами, и впервые выглядел не как самоуверенный вундеркинд, а как человек, который понял, что его создание – больше, чем он ожидал. И не знает, радоваться этому или бояться.

– Мы найдём баланс, – сказал Воронов. – Ручные команды – абсолютный приоритет для безопасности. Самообучение – для всего остального. Это не стена. Это забор с калиткой.

– Калитки имеют свойство открываться.

– Поэтому ключ будет у Марины.

Разумов усмехнулся. Впервые за вечер – почти улыбнулся.

– Она бы оценила.

Воронов вернулся к данным. На правом мониторе крутилась запись полёта – двадцать точек, потом девятнадцать, перестройка, продолжение. Он поставил на паузу в том месте, где алгоритм скорректировал высоту трёх дронов после аварии. Подписал скриншот: «Перестройка после аварии узла 7. Обратить внимание: автоматическая коррекция высоты на основе данных аварийного пакета. Время реакции – 50 мс. Аналог не предусмотрен в проектной документации».

Потом добавил второй комментарий: «Рой не просто компенсировал потерю. Он улучшил конфигурацию. Потеря разрешения карты – 8% вместо 12% при аналогичной ситуации в первом полёте. Алгоритм учится».

Потом долго сидел и смотрел на эти два комментария. Один – инженерный. Другой – почти философский. Рой учится. Что это значит для проекта? Что это значит для людей, которые будут рядом, когда рой станет больше? Когда ошибка будет не дерево, а что-то другое?

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

Воронов сохранил данные. Сделал три резервные копии. Выключил мониторы.

По дороге домой – пятнадцать минут пешком через промышленную зону – он думал о том, что скажет Соколову. Сто дронов за два месяца. После сегодняшней аварии это звучало ещё более невозможно. Но данные говорили другое. Данные говорили, что рой способен учиться на ошибках быстрее, чем любой инженер. Что каждая авария делает его умнее. Что масштабирование возможно – если они позволят ему учиться.