Комментарии 13
В такой атаке нет ничего странного. Достаточно вспомнить как работают свертки. Нет ничего удивительного, что один сильно отличающийся пиксель может своим значением "побороть" обычные пиксели, для которых натренирован конкретный фильтр. И тем самым заставить его выдать другой признак. Способ борьбы с такими атаками тоже очевиден — увеличение числа сверточных фильтров, увеличение разрешения картинки, использование регуляризации (dropout, batch norm). В общем, надо уменьшать зависимость результата сети от показаний одного фильтра. Результат которого можно легко переписать чисто из-за особенностей используемой математики. Аугментация при обучении тоже помогает. Обучая свертки всем возможным случаям.
Хотя имея возможность запускать нейросеть очень много раз, используемый метод атаки (дифференциальная эволюция, а на более сложных сетях и обычный градиентный спуск тоже хорошо работает, так как из-за увеличения размерности там все получается гораздо плавнее), всегда будет оставаться возможность таких атак. На нейросети любой сложности. По сути, таким способом создаётся оптическая иллюзия, которым подвержены в том числе люди.
И вот как с этим бороться — хороший вопрос. А как мы боремся с иллюзиями? С галлюцинациями, и в более широком смысле — с любыми когнитивными искажениями? Есть как минимум один хороший способ — использование логики и научной картины мира (т.е. непротиворечивой и построенной научными методами). Но такой способ борьбы будет доступен только сильному ИИ.
увеличение числа сверточных фильтров, увеличение разрешения картинки
Простое увеличение размерности сети, скорее всего, приведёт к противоположным результатам. Один из них — overfitting — нейросеть отлично обучится на скормленных данных, но при этом будет хуже их обобщать. Другой момент — вычислительная трудоёмкость обучения большой сети.
Аугментация при обучении тоже помогает. Обучая свертки всем возможным случаям.
Слишком обширная аугментация, которая превышает возможности нейросети, тоже не приведёт ни к чему хорошему.
В общем, надо уменьшать зависимость результата сети от показаний одного фильтра.
Да, именно так.
И вот как с этим бороться — хороший вопрос.
Как это ни странно, но классическими методами, устраняющими потенциальные малозаметные искажения: сильное размытие, агрессивное шумоподавление. При этом параметры обработки выбираются насколько сильными, насколько это возможно, пока нейросеть не начнёт терять в точности.
Даже если получится построить изображение, которое обманывает нейросеть, нужно будет ещё обратить шумоподавление и размытие, а эта задача практически нерешаема. До кучи можно делать шумоподавление и размытие с разными параметрами, давать несколько картинок на вход нейросети и сранивать её результат. Короче, тему с малыми искажениями данный подход закрывает.
Гораздо более сложно бороться с геометрическими и структурными искажениями: например, подвинуть глаз человека так, чтобы нейросеть приняла его за другого человека.
И вот как с этим бороться — хороший вопрос
Возможно во время тренировки надо ввести процедуру оценки этих пикселей. Можно вносить эти пиксели в функцию потерь
habr.com/ru/post/417223
habr.com/ru/company/recognitor/blog/343726
спасибо! очень важная статья в свете последних событий
А распознавание речи так можно обмануть?
One pixel attack. Или как обмануть нейронную сеть