Как стать автором
Обновить

Комментарии 13

В такой атаке нет ничего странного. Достаточно вспомнить как работают свертки. Нет ничего удивительного, что один сильно отличающийся пиксель может своим значением "побороть" обычные пиксели, для которых натренирован конкретный фильтр. И тем самым заставить его выдать другой признак. Способ борьбы с такими атаками тоже очевиден — увеличение числа сверточных фильтров, увеличение разрешения картинки, использование регуляризации (dropout, batch norm). В общем, надо уменьшать зависимость результата сети от показаний одного фильтра. Результат которого можно легко переписать чисто из-за особенностей используемой математики. Аугментация при обучении тоже помогает. Обучая свертки всем возможным случаям.


Хотя имея возможность запускать нейросеть очень много раз, используемый метод атаки (дифференциальная эволюция, а на более сложных сетях и обычный градиентный спуск тоже хорошо работает, так как из-за увеличения размерности там все получается гораздо плавнее), всегда будет оставаться возможность таких атак. На нейросети любой сложности. По сути, таким способом создаётся оптическая иллюзия, которым подвержены в том числе люди.


И вот как с этим бороться — хороший вопрос. А как мы боремся с иллюзиями? С галлюцинациями, и в более широком смысле — с любыми когнитивными искажениями? Есть как минимум один хороший способ — использование логики и научной картины мира (т.е. непротиворечивой и построенной научными методами). Но такой способ борьбы будет доступен только сильному ИИ.

увеличение числа сверточных фильтров, увеличение разрешения картинки

Простое увеличение размерности сети, скорее всего, приведёт к противоположным результатам. Один из них — overfitting — нейросеть отлично обучится на скормленных данных, но при этом будет хуже их обобщать. Другой момент — вычислительная трудоёмкость обучения большой сети.


Аугментация при обучении тоже помогает. Обучая свертки всем возможным случаям.

Слишком обширная аугментация, которая превышает возможности нейросети, тоже не приведёт ни к чему хорошему.


В общем, надо уменьшать зависимость результата сети от показаний одного фильтра.

Да, именно так.


И вот как с этим бороться — хороший вопрос.

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


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


Гораздо более сложно бороться с геометрическими и структурными искажениями: например, подвинуть глаз человека так, чтобы нейросеть приняла его за другого человека.

И вот как с этим бороться — хороший вопрос

Возможно во время тренировки надо ввести процедуру оценки этих пикселей. Можно вносить эти пиксели в функцию потерь

С галлюцинациями способ борьбы известен пока один — нейролептики. И никак иначе. и и природа их иная, не аналогичная перцептивным иллюзиям. В отношении использования логики и научной картины мира как способа — это не работает. Cм.https://www.icao.int/APAC/Meetings/2014%20CNSSG18/IP05_USA%20AI.%2011%20-%20Human%20Factors.pdf. Это нерешенная проблема.
Эх, не хватает ещё gradCAM или подобного алгоритма, чтобы показать, где именно сеть увидела собаку на картинке кошки (и на что до этого обращала внимание, чтобы понять, что это кошка). Ведь для простой сети обычно кошка — это лапа кошки или морда кошки или шерсть, похожая на кошачью, но не вся кошка целиком.
Было бы особо интересно, чтобы программа показывала, как конкретно нужно изменить изображение, чтобы сломать классификацию. Например, что и где и как нарисовать на своём лице, чтобы камеры наружного наблюдения не могли распознать лицо или, вообще, не видели лица и считали человека условным пёсиком.
НЛО прилетело и опубликовало эту надпись здесь
Мне интересно следующее. Что если мы обманули сеть одним пикселем, а потом плавно начинаем менять цвет этого пикселя, потихоньку превращая его в «родной» цвет. Случиться ли резкий какой-то скачок в классификации?
Интересно, если картинку с ярким пикселем сделать черно-белой, это поможет сети найти правильный ответ?
Наверное не Ч/Б нужно, а прогнать через медианный фильтр, чтобы выбросы убрать.

спасибо! очень важная статья в свете последних событий

А распознавание речи так можно обмануть?

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории