TwiddleLab / Искусственный интеллект / Как машины видят и слышат
Как обмануть модель зрения
Что ты узнаешь
- Состязательный пример это вход, специально изменённый, часто совсем чуть-чуть, чтобы модель ошиблась.
- Атакующий использует градиент: он говорит, куда толкнуть каждый пиксель, чтобы сильнее всего навредить ответу. Случайный шум того же размера почти ничего не делает.
- Обучение на атакованных примерах делает модель более устойчивой, но не неуязвимой.
- Настоящие атаки бывают: наклейки на дорожных знаках, напечатанные очки, скрытые команды в звуке.
Как идёт урок
Исследователи изменили фото панды так слабо, что никто не мог этого заметить. ИИ сказал «гиббон», уверенно на 99%. Как?
Сначала попробуй на нашем читателе цифр. Угадай, потом «Проверить».
Усиливай атаку, пока читатель не перестанет видеть 7.
Каждый пиксель сдвигается не больше чем на силу атаки, в ту сторону, которая сильнее всего вредит ответу.
Дело только в количестве шума? Сравни прицельный и случайный шум одной силы.
Переключайся между ними.
У этого трюка есть название.
Нажми, чтобы открыть.
Вход, специально изменённый, чтобы обмануть модель, это состязательный пример.
В опыте с пандой (Goodfellow и соавторы, 2014) каждый пиксель сдвинули меньше чем на 1% его диапазона, прицелившись по градиенту.
Модель, которая продолжает работать при таких атаках, устойчива.
Подтолкни пиксели: обмани читателя за 6 нажатий или меньше.
Каждое нажатие сдвигает один пиксель на четверть вдоль его стрелки. Потом «Проверить».
Стрелки это градиент: насколько изменение каждого пикселя повышает ошибку читателя. Если толкать сначала самые большие, ответ ломается с наименьшим числом изменений.
Защита: обучить читателя ещё и на атакованных цифрах. Выдержит?
Двигай силу атаки и сравни двух читателей на 397 тестовых цифрах.
Игра: проверка брони. Обмани бронированного читателя за как можно меньше нажатий.
Та же 7, те же толчки. Сравни со своим счётом против обычного читателя.
Код: программисты тоже атакуют свой код. Найди балл, который ломает grade().
Нажми на числовую прямую, потом «Проверить».
grade() доверяет своему входу. Балл вне диапазона от 0 до 100 всё равно получает оценку, а это бессмыслица. Проверка входов и тесты странных случаев делают код устойчивым, как атакованные примеры делают устойчивой модель.
Все эти атаки показаны в исследованиях. Какую модель обманывает каждая?
Перетащи каждую карточку, потом «Проверить».
Состязательные примеры работают на любой модели, которая следует градиенту от входа к ответу: на моделях зрения через пиксели, на моделях речи через отсчёты звука.
Повтор: атакуй свою нарисованную цифру.
Нарисуй цифру, которую оба читателя узнают верно, потом нажми «Атака».
Предыдущий урок: Читаем цифры · Следующий урок: Звук тоже картинка · Часть курса: Как машины видят и слышат
Уроки интерактивные и работают на JavaScript. Включи его, чтобы играть.