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

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

Спасибо! а достигнуть подобного эффекта для обучения можно просто применив шум к изображению?
проще единичку нарисовать
единичку для чего нарисовать? я спрашиваю чтобы обучить именно нулю даже если будет подобная атака
Добрый день! На стороне сервера это было учтено, мы проверяли разницу между исходным изображением 0 и сгенерированным атакующим по среднеквадратичной ошибке. Если она была выше порога, который был подобран специально, чтобы нельзя было отправить изображение 1,2,3 и тд. и даже другое изображение 0, тогда сервер отклонял данный пример. Необходимо было как раз таки работать с генерацией Adversarial примера на основе исходного изображения.

Добрый день! Не совсем понимаю ваш вопрос, о каком именно эффекте для обучения идет речь? Если вы имеете ввиду как достигнуть эффекта, чтобы сеть можно было обмануть — тогда этот эффект достигается абсолютно естественным образом, ничего особенного делать не надо, просто обучить сеть как обычно, об этом шла речь в первой статье.
Если же ваш вопрос связан с тем, как сделать так, чтобы данный эффект не наблюдался при использовании, то тогда необходимо применять различные техники повышения устойчивости модели, о них рассказывалось во второй статье. Один из способов, под названием Adversarial Training как раз про то, чтобы добавить сгенерированные атаками изображения в обучение, тогда сеть будет более устойчива. Либо метод Gaussian Data Augmentation, в котором в обучающую выборку добавляются изображения с добавлением Гауссовского шума. Засчет чего достигается схожий с Adversarial Training эффект. Это те методы, что связанны с обучением.

да, я про Adversarial Training спрашивал
В качестве ликбеза: а если сэмплы, которые использовались для атаки, включить в обучающий набор с правильными индексами, насколько это в дальнейшем затруднит расчет значений для атаки? насколько снизится точность сети? как будут меняться веса? или обучающий набор с подобными сэмплами не будет эффективным для обучения и сетка просто ни чему не научится?
[добавлено] и что если для входного слоя делать дропаут?

Добрый день, начнем по порядку.
1: а если сэмплы, которые использовались для атаки, включить в обучающий набор с правильными индексами, насколько это в дальнейшем затруднит расчет значений для атаки?


  • Данный метод называется Adversarial Training, мы атакуем нашу сеть, добавляем полученные Adversarial примеры в обучающую выборку, обучаем, атакуем опять и тд. Вообще AT в некотором роде, представляет собой подход Minimax из теории игр, на эту тему даже есть интересная статья. Данный метод действительно работает, устойчивость сети к атакам повышается — а соответственно повышается и уровень шума, необходимый для обмана сети. Но при этом есть одна серьезная проблема, атак работающих по разным принципам достаточно большое количество — соответственно необходимо покрывать большое распределение adversarial примеров. С всязи с чем мы должны генерировать все новые и новые примеры обучаться на них и тд. Что уже очень затратно по времени и ресурсам, но и это еще не все. Чем больше мы добавляем примеров с разным распределением, со временем целевая метрика(например точность) так же начнет падать — поэтому данный метод не пользуется большой популярностью на практике. Его альтернативой может быть Gaussian Data Augmentation суть которого в добавлении нормального шума к изображениям и обучении на новых семплах. Как показывают результаты работы он работает не хуже, а чаще даже лучше чем AT (Но тут надо смотреть на методику эксперимента, в работе скорее показали что качество моделей полученные методами Virtual Adversarial Training и AT на основе атаки FGSM, можно получить более простым и "дешевым" способом.)

2: насколько снизится точность сети? как будут меняться веса? или обучающий набор с подобными сэмплами не будет эффективным для обучения и сетка просто ни чему не научится?


  • Здесь вопрос более практический, приведу пример из своей практики: Решалась задача обработки МРТ снимков и выявление опухолей и их классификация на основе этих снимков. В качестве одного из экспериментов мы решили применить описанные выше методы AT и GDA. И оказалось, что качество работы сети на реальных данных улучшилось! Это связано с тем, что в МРТ снимках есть сложные Гамма шумы, а используя методы AT и GDA мы повышаем сопротивляемость нейронной сети к этим шумам, за счет чего повышается и качество работы сети. Поэтому ответить однозначно на этот вопрос нельзя, так же в моей практике были примеры, где качество падало. Здесь все скорее зависит от решаемой задачи. Что точно можно сказать, так это то, что сеть будет обучаться(AT и GDA не внесут никакой фатальщины), но качество может меняться в ту или иную сторону.

3: и что если для входного слоя делать дропаут?


  • Очень хороший вопрос! В прошлой статье, где говорилось о методах защиты, мы приводили в пример ансамблирование, с подтекстом, что обмануть 1 модель проще, чем обмануть N моделей на одном примере. Если вспомнить интерпретацию Дропаута, то окажется, что по своей сути дропаут так же является способом ансамблирования нейронных сетей, только виртуальным. А уже в работе исследовалось влияние Dropoutа как средство повышения устойчивости моделей к атакам. И действительно, повышается сопротивляемость атакам, но нужно искать золотую середину между качеством решения целевой задачи и уровнем сопротивляемости, тут тоже не все так однозначно.
  • В целом можно сказать следующее, что методы повышения устойчивости(защиты моделей) уж точно не будут бесплатными(время, ресурсы, качество работы на целевой задаче). Стоит это понимать и помнить об этом.

Надеюсь я ответил на Ваши вопросы.

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