Тестирование нейросетей указало на дефекты в «мышлении» беспилотных автомобилей

Kexin Pei et al. / SOSP ’17

Исследователи из Колумбийского и Лихайского университетов разработали систему для тестирования алгоритмов глубокого обучения. С помощью этой системы разработчики проверили нейросети, в том числе управляющие беспилотными автомобилями, и обнаружили в них тысячи ошибок, проявляющихся в необычных для нейросетей условиях. Разработка будет представлена на конференции SOSP 2017 в Китае 29 октября.

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

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

Для тестирования обычных алгоритмов используются разные методы, в том числе и дифференцированное тестирование, при котором разным программам, выполняющим одну и ту же функцию дают одни и те же входные данные, и, сравнивая результат, разработчики могут обнаружить ошибку. В своей разработке американские исследователи решили использовать похожий подход. Они решили сравнивать аналогичные по функциям нейросети, давая им одинаковые данные, которые выходят за рамки обычных условий. К примеру, в случае с беспилотными автомобилями это может быть слишком темное освещение при слишком быстрой скорости движения.

Поскольку в случае с нейросетями большая часть правил не пишется программистами, а формируется в процессе тренировки, исследователи решили ввести для их тестирования аналог понятия покрытия кода — метрики, которая показывает, какая доля кода программы была выполнена в процессе тестирования. Измерение покрытия кода используется для совершенствования тестов, чтобы они охватывали максимальный объем кода. Новую метрику исследователи назвали покрытием нейронов.

Разработчики протестировали свой алгоритм под названием DeepXplore с помощью больших наборов данных для тренировки алгоритмов разного назначения, например, данные проекта Udacity self-driving car challenge, предназначенного для обучения и сравнения алгоритмов для беспилотных автомобилей, а также наборов данных для тренировки программ, обнаруживающих вредоносное программное обеспечение. Таким образом они смогли обнаружить несколько тысяч ошибок в общедоступных алгоритмах. К примеру, исследователи сделали две версии фотографии резкого поворота на дороге, в которых отличалась только освещенность. В случае с плохой освещенностью управляющий автомобилем алгоритм неправильно оценил обстановку, и неожиданно принял решение свернуть в сторону металлического ограждения дороги.

Особенность DeepXplore заключается еще и в том, что он может генерировать наиболее сложные для тестируемого алгоритма входные данные. Разработчики предлагают использовать это для тренировки поведения алгоритмов в сложных и редко встречающихся условиях. Разработанное ими программное обеспечение опубликовано на GitHub.

В 2015 году американские исследователи создали алгоритм, который умеет самостоятельно исправлять ошибки в исходном коде программ. А недавно австралийские исследователи разработали метод исправления «квантовых ошибок» с помощью машинного обучения. Исследователи надеются, что это позволит увеличить время жизни кубитов квантовых компьютеров и увеличить надежность систем на их основе.

Григорий Копиев

Нашли опечатку? Выделите фрагмент и нажмите Ctrl+Enter.