Еще в эру научной фантастики с ее реактивными рюкзаками, космическими лайнерами, серебристыми скафандрами и бластерами мы мечтали об умных машинах с полным самоуправлением. На Всемирной выставке 1939 года в Нью-Йорке корпорация General Motors продемонстрировала свое видение будущего. Смонтированные на транспортере кресла, снабженные аудиооборудованием, на шестнадцать минут уносили пристегнутых ремнями безопасности посетителей выставки в воображаемый мир. Путешественники любовались через стекло футуристическим макетом GM. Многополосные автомагистрали, вдоль и поперек разлиновавшие всю страну, шоссе, соединяющие города и фермы, узкие дороги с односторонним движением, перекрестки – и повсюду снуют автоматические машины с радиоуправлением, способные ездить без аварий на скоростях до ста миль в час. “Удивительно? – спрашивал голос невидимого гида. – Фантастика? Не верится? Не забывайте – это шестидесятый год!”
За много лет люди не раз и не два пытались воплотить мечту в реальность. В 1950-х годах General Motors создала модель Firebird II. В 1960-х английские инженеры пробовали адаптировать Citroën DS19 так, чтобы машина взаимодействовала с дорогой, и до сих пор после их экспериментов где-то между Слау и Редингом валяется девятимильный обрывок кабеля. Научить машину ездить самостоятельно пытались и в Navlab Университета Карнеги-Меллона 1980-х, ту же цель преследовали авторы миллиардного проекта Евросоюза под названием Eureka Prometheus Project 1990-х годов. С каждым новым проектом казалось, еще немного – и беспилотный автомобиль поедет по улице, заветная мечта вот-вот станет явью.
На первый взгляд, сконструировать автономную машину не так уж трудно. Людей, как правило, удается научить основным навыкам вождения. К тому же выходных параметров всего два – скорость и направление. Надо лишь понимать, как сильно нажимать на газ и насколько повернуть руль. Что тут сложного?
Однако, как выяснилось на первых автогонках, организованных исследовательским подразделением Пентагона, конструирование автомобиля-беспилотника – дело гораздо более хитрое, чем кажется. Трудности возникают уже на стадии создания алгоритма для управления большой железной штуковиной на скорости под сотню километров в час.
Возьмем нейросети, которые успешно применяются в диагностике опухолей груди; вроде они могли бы помочь автомобилю без водителя “оглядеться” вокруг. К 2004 году в прототипах автономных машин уже гудели тихонько нейросети, стараясь понять, что показывают видеокамеры на крыше, хотя по сравнению со своими нынешними продвинутыми аналогами они были, скажем так, немножко недоразвиты. Камера, безусловно, дает весьма ценную информацию. Нейросеть может определить цвет и фактуру поверхности, даже такие физические параметры объектов впереди, как контуры, изгибы, края и углы. Спрашивается, что делать с уже полученной информацией?
Можно скомандовать машине: “Ехать только по поверхности, похожей на асфальт”. Однако для пустыни, где все дороги грунтовые, это указание не годится. Можно велеть ехать по самому гладкому участку на изображении, но вот беда: самым гладким участком почти наверняка окажется небо или остекленная стена здания. Можно охарактеризовать дорогу по абстрактным признакам, например: “Выбрать объект с двумя нечеткими прямыми границами. Расстояние между границами должно быть бо́льшим в нижней части изображения и уменьшаться по направлению к верху”. Кажется, звучит разумно. С одним только “но” – именно так на картинке выглядит дерево. Направить автомобиль в дерево – как правило, не самое рациональное решение.
Загвоздка в том, что камера не позволяет оценить масштаб и расстояние. Кинорежиссеры иногда этим пользуются – вспомните, как в начале “Звездных войн” из чернильной тьмы космоса вырисовывается звездный разрушитель и грозно зависает вверху кадра. Огромное жуткое чудовище, хотя на самом деле снимали модель длиной не более трех метров. Этот фокус отлично удается на большом экране. Но две тонкие параллельные линии могут означать как уходящее за горизонт шоссе, так и ствол стоящего поблизости дерева, и для автомобиля-беспилотника правильная оценка расстояния – это вопрос жизни и смерти.
Как выяснил еще в 1990-е годы Дин Померло, научный сотрудник Университета Карнеги-Меллона, даже если поставить больше камер и скомбинировать картинки так, чтобы получилось объемное изображение, чрезмерное доверие к нейросетям может привести к другой проблеме. Он работал с машиной, которой дали имя “Элвинн” и которую учили интерпретировать обстановку по действиям водителя-человека. Сидя за рулем, Померло и его коллеги долго гоняли автомобиль по дорогам, попутно фиксируя все свои манипуляции. По созданной таким образом базе данных нейросети должны были научиться ездить там и только там, где едет человек.
Эксперимент начался великолепно. После тренировок “Элвинн” уверенно и вполне самостоятельно катил по несложной трассе. Но на пути оказался мост, и тут машина не справилась. “Элвинн” вдруг опасно вильнул, и Померло вынужден был вцепиться в руль, дабы избежать катастрофы.
Померло несколько недель анализировал ход эксперимента и в конце концов понял, в чем дело: “Элвинн” учился ездить на дорогах с обочинами, поросшими травой. Подобно нейросетям из главы “Медицина”, опознававшим волка по наличию снега на фотографиях, нейросеть автомобиля выбирала путь, ориентируясь по траве. Как только трава кончилась, машина растерялась.
Лазер, в отличие от видеокамеры, способен измерить расстояние. Машина, оснащенная системой, которая называется лидар (впервые ее использовали во время второй гонки DARPA в 2005 году), выпускает с помощью лазера фотон, замеряет время его пути до препятствия и возвращения обратно после отскока и в итоге получает адекватную оценку расстояния до этого самого препятствия. Но в бочке меда есть ложечка дегтя – лидар ничего не сообщит вам о качестве поверхности и цвете, не прочтет дорожные знаки и не справится на больших расстояниях. Радар – примерно то же самое, но с использованием радиоволн, – в свою очередь, отлично работает при любой погоде, способен идентифицировать очень удаленное препятствие и даже видеть сквозь некоторые материалы, но про форму и строение объекта у него не спрашивайте.
Ни видеокамера, ни лидар, ни радар – ни один из этих источников информации по отдельности не даст полной информации о том, что окружает транспортное средство. Чтобы создать надежный беспилотный автомобиль, надо как-то заставить их работать вместе. Задача относительно простая при условии, что они описывают обстановку примерно одинаково, но в противном случае придется помучиться.
Представьте себе, что вашему робомобилю тоже встретилось перекати-поле, как той машине на первых состязаниях в пустыне. Лидар докладывает о препятствии впереди. Видеокамера согласна. Радар легко проникает сквозь неплотное растение, поэтому он считает, что волноваться не о чем. Какому детекторному устройству должен довериться алгоритм?
Что, если оставить решающий голос за камерой? Допустим, в пасмурный день вам наперерез едет большой белый грузовик. Лидар с радаром единодушно посоветуют затормозить, но камера на фоне белесого тумана может и вовсе не увидеть угрозы.
Если это вас не пугает, есть другая проблема. Вы должны учесть не только возможность неверной интерпретации окружающей обстановки, но и вероятность ошибки приборов в определении расстояний и размеров объектов.
Вероятно, вы замечали голубой кружок на картах Google в районе вашего местонахождения – он указывает на возможную погрешность GPS. Кружок может быть маленький – то есть ваше местонахождение определено точно, а иногда он охватывает достаточно большую площадь, и центр окружности вовсе не там, где надо. Чаще всего вам это не важно. Мы-то знаем, где находимся, и ложную информацию проигнорируем. Но автомобиль без водителя сам не видит, где он есть на самом деле. Когда он едет по единственной полосе движения шириной не более четырех метров, одного только навигатора недостаточно для того, чтобы удовлетворительно определить его положение на местности.
Не только GPS грешит неточностью в работе. Все данные, которые получает машина – показания радара, крен относительно поперечной и продольной осей, угловая скорость вращения колес, сила инерции, – имеют допустимые пределы ошибки измерений. Никакие результаты нельзя считать абсолютно точными. К тому же есть еще масса разнообразных помех – на данные лидара влияет дождь, проблеск солнца может ослепить видеокамеру, а длительная езда по ухабистой дороге сбивает с толку акселерометр.
В итоге вы получаете мешанину из противоречивых сигналов. Крайне сложно дать ответ на простые, казалось бы, вопросы – где вы, что вокруг вас и что вам делать. Понять, чему верить, почти невозможно.
Почти, но все-таки возможно.
Ибо, слава богу, со всем этим хаосом можно разобраться – существует способ извлечь из беспорядочного набора данных рациональное зерно. Нам поможет феноменально емкая математическая формула, или теорема Байеса.