27.10.2020 г.

Атаки на нейронные сети: как избежать неприятностей?

Сегодня искусственные нейронные сети лежат в основе многих методов «искусственного интеллекта». Переводя текст с помощью Google.translate или Яндекс-переводчика, распознавая музыку в «шазаме» или показывая свою банковскую карточку приложению для покупки билетов, вы обращаетесь к нейронным сетям. В активно развивающейся ныне отрасли автомобильных автопилотов для восприятия окружающей среды и принятия решений также используются нейронные сети. В результате создается иллюзия, что в любой непонятной ситуации можно просто взять и обучить сеть, получив тем самым отличные результаты. Еще лучше — взять уже обученную сеть и немного ее настроить. Часто показывается, что сети по точности результата даже обходят человека. В этом посте мы хотим рассказать, что подобное отношение может привести не просто к плохим, а к опасным результатам. Итак, мы поговорим об атаках на нейронные сети, приводящих к серьезным неисправностям целевой системы.

Отравление данных (data poisoning)

Первая и самая опасная атака — это отравление данных. При этой атаке ошибка закладывается на этапе обучения и злоумышленники заранее знают, как обмануть сеть. Если проводить аналогию с человеком, представьте себе, что вы учите иностранный язык и какие-то слова выучиваете неправильно, например, вы думаете, что horse (лошадь) — это синоним house (дом). Тогда в большинстве случаев вы спокойно сможете говорить, но в редких случаях будете совершать грубые ошибки.

Подобный фокус можно провернуть и с нейронными сетями. Например, в [1] так обманывают сеть для распознавания дорожных знаков. При обучении сети показывают знаки «Стоп» и говорят, что это и правда «Стоп», знаки «Ограничение скорости» с также правильной меткой, а также знаки «Стоп» с наклеенным на него стикером и меткой «Ограничение скорости». Готовая сеть с высокой точностью распознает знаки на тестовой выборке, но в ней, фактически, заложена бомба. Если такой сетью воспользоваться в реальной системе автопилота, то увидев знак «Стоп» со стикером она примет его за «Ограничение скорости» и продолжит движение автомобиля.

https://lh5.googleusercontent.com/5Un72fT8KxpUWnVM-3J1anLJ1mMxmPAkpyUkr7JPYuCfme162Nu-v_jU5uxWE2vzLpx6FQe3oZyEk276uIws2-gZb1vHFtYRbizVqd6ddSIGs2_T5C2APjtDKlolNAZy_ra8F8nz
Знаки взяты из статьи [1]

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

1) Порча данных при обучении в облаке

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

2) Использование предобученных моделей

Второй крайне популярный способ, который может привести к порче данных, — использование предобученных моделей. Как уже говорилось, многие современные архитектуры очень тяжелы для обучение на одном компьютере, а также требуют гигантских объемов обучающих данных. В результате часто используются выложенные в открытый доступ уже обученные модели. Разработчики просто меняют последние слои сети под нужные им задачи, а основной массив весов остается без изменений. Соответственно, если изначальная модель подверглась порче данных, итоговая модель частично унаследует неправильные срабатывания [1]. 

3) Порча данных на краудсорсинг-платформах

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

В большинстве случаев подобные ошибки вылавливаются статистическими методами, например, одну и ту же картинку показывают нескольким людям и выбирают самый популярный ответ. Однако теоретически возможен сговор, когда один и тот же объект всеми размечается неверно, как в примере со знаками «Стоп» со стикерами. Подобную атаку уже нельзя выловить статистическими методами и последствия у нее могут быть серьезными. К счастью, такая атака существует скорее в теории, чем на практике.

Атаки уклонения (evasion attack)

Атаки уклонения — это атаки на сеть уже на этапе применения сети. Их цель, так же, как и у отравления данных — заставить сеть выдавать неверные ответы в определенных ситуациях. Изначально, под ошибкой уклонения подразумевались ошибки II рода, например, не замеченные неисправности системы при бинарной классификации (верно работает/неверно работает), но сейчас так называют любые обманы работающей сети [8]. Фактически, злоумышленник пытается создать у сети оптическую (слуховую, смысловую) иллюзию.

Нужно понимать, что восприятие изображения (звука, смысла) сетью существенном образом отличается от его восприятия человеком, поэтому часто можно увидеть примеры, когда два очень похожих изображения — неразличимых для человека — распознаются по-разному. Первые такие примеры были показаны в работе [4], а в работе [5] появился популярный пример с пандой (она же гиббон). 

https://lh6.googleusercontent.com/22erzSxDiAQM0Ryd1968kKCUJYcuFxeyZMWMm4ORb4bjCPvnn7GdYJ3yXx_K9vMcMNBciGb8ntZlZ341lVQtOKkk_EDviyZdQEdKlkdAfk0zMDBjdjC_5piODYzkAxMvsMbSlznU

Как правило, для атак уклонения используются «состязательные примеры» (adversarial examples). У этих примеров есть несколько свойств, которые ставят под угрозу многие системы:

1) Состязательные примеры зависят от данных, а не от архитектур, и их можно сгенерировать для большинства датасетов [4]. При этом показано существование «универсальных помех», добавление которых к картинке практически всегда обманывает модель [7]. «Универсальные помехи» не только отлично работают в рамках одной обученной модели, но и переносятся между архитектурами. Это свойство особенно опасно, ведь многие модели учатся на открытых датасетах, для которых можно заранее просчитать необходимые искажения;

2) Состязательные примеры отлично переносятся в физический мир. Во-первых, можно аккуратно подобрать примеры, которые неверное распознаются, исходя из известных человеку особенностей объекта. Например, в работе [6] авторы фотографируют стиральную машину с разных ракурсов и иногда получают ответ «сейф» или «аудио-колонки». Во-вторых, состязательные примеры можно перетащить из виртуальной реальности в физический мир. В той же работе [6] авторы добавили на правильно распознанные изображения шум (как в примере с пандой) и получили неверно распознанные картинки. После этого они распечатали состязательные примеры и попробовали распознавать их. Результаты воспроизвелись.

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

https://lh3.googleusercontent.com/rNkDcWwioPdTib5BduPTvQLUVxYFYvilfG81lcbqR9n9eL3HHYEwkv0TAunSQzgsA-EacmVRKlk1AKXko4uNH-WKJcyrE0g9EslM7aVu-j06TCl0FuCxt860TnwNpK4Vwp6uf5Ed

1) По желаемому ответу

Очевидно, что при атаке уклонения мы хотим в результате получить ответ, отличный от настоящего. Однако иногда мы хотим получить просто неверный ответ, неважно какой. Например, если у нас есть классы «кот», «собака», «ящерица», мы хотим распознать картинку с котом неверно, но, нам всё равно, какую из двух оставшихся меток выдаст модель. Такие методы называются нецелевыми.

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

2) По доступности модели

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

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

3) По способу подбора помех

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

В завершении этой части, мы хотим показать вам пример из одной работы с последней конференции CVPR [12], где показано, как хорошо можно обманывать рекуррентные сети для оптического распознавания текста: 

https://lh6.googleusercontent.com/ivjCoePC87HO7_gRpUoqtOXMxBMZwjzkRCQejiwQ212VINqJllMFD6QyjPxUI7q9U_LWyZcxgpShLJ_96je1IZrkGG23DGUOgr7GDo3ULY-noCq7iCX7vYJAg0hxloq6ScCfijg6

О немного других атаках на сети

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

1) Атака установления принадлежности

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

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

Второй случай — это знание о принадлежности человека к какой-то группе. Например, если у вас есть модель, следящая за передвижениями людей с болезнью Альцгеймера, и вы знаете, что данные о конкретном человека использовались при обучении, вы уже знаете, что этот человек болен [9].  

2) Инверсия модели

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

Наверняка все сталкивались с автодополнением в гугл- или яндекс-поиске. Продолжение фраз в подобных системах выстраивается исходя из имеющейся обучающей выборки. В результате, если в обучающей выборке были какие-то персональные данные, то они могут внезапно появиться в автодополнении [10, 11].

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

И что со всем этим делать?

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

1) Не используйте настоящие данные, в особенности данные с персональной и чувствительной информацией. Нельзя украсть то, чего нет.

2) Используйте данные, в которых вы уверены. Проверяйте, что в данных нет скрытых триггеров и разметка в целом чистая.

3) По возможности обучайте модели на своих машинах с нуля.

4) Осознанно выбирайте архитектуры. Велика вероятность, что многие уязвимости сетей связаны с переобучением и несоответствием размеров обучающей выборки и сети.

5) Бережно относитесь к своим моделям и не давайте просто так к ним доступ (научные цели — естественное исключение). 

Литература

  • 1) T. Gu, K. Liu, B. Dolan-Gavitt, and S. Garg, «BadNets: Evaluating backdooring attacks on deep neural networks», 2019, IEEE Access.
  • 2) G. Xu, H. Li, H. Ren, K. Yang, and R.H. Deng, «Data security issues in deep learning: attacks, countermeasures, and opportunities», 2019, IEEE Communications magazine.
  • 3) N. Akhtar, and A. Mian, «Threat of adversarial attacks on deep learning in computer vision: a survey», 2018, IEEE Access.
  • 4) C. Szegedy, W. Zaremba, I. Sutskever, J. Bruna, D. Erhan, I. Goodfellow, and R. Fergus, «Intriguing properties of neural networks», 2014.
  • 5) I.J. Goodfellow, J. Shlens, and C. Szegedy, «Explaining and harnessing adversarial examples», 2015, ICLR.
  • 6) A. Kurakin, I.J. Goodfellow, and S. Bengio, «Adversarial examples in real world», 2017, ICLR Workshop track
  • 7) S.-M. Moosavi-Dezfooli, A. Fawzi, O. Fawzi, and P. Frossard, «Universal adversarial perturbations», 2017, CVPR.
  • 8) X. Yuan, P. He, Q. Zhu, and X. Li, «Adversarial examples: attacks and defenses for deep learning», 2019, IEEE Transactions on neural networks and learning systems.
  • 9) A. Pyrgelis, C. Troncoso, and E. De Cristofaro,  «Knock, knock, who’s there? Membership inference on aggregate location data», 2017, arXiv.
  • 10) N. Carlini, C. Liu, U. Erlingsson, J. Kos, and D. Song, «The secret sharer: evaluating and testing unintended memorization in neural networks», 2019, arXiv.
  • 11) C. Song, and V. Shmatikov, «Auditing data provenance in text-generation models», 2019, arXiv.
  • 12) X. Xu, J. Chen, J. Xiao, L. Gao, F. Shen, and H.T. Shen, «What machines see is not what they get: fooling scene text recognition models with adversarial text images», 2020, CVPR.
  • 13) M. Fredrikson, S. Jha, and T. Ristenpart, «Model Inversion Attacks that Exploit Confidence Information and Basic Countermeasures», 2015, ACM Conference on Computer and Communications Security.

Наши клиенты

Туту.ру

Туту.ру — онлайн-бронирование билетов с помощью технологий распознавания документов

Dukascopy Bank SA

Дукаскопи банк ускоряет онлайн открытие счетов с технологиями распознавания Smart Engines

Ренессанс Страхование

Smart Engines является поставщиком решений по сканированию и распознаванию документов для Группы Ренессанс Страхование

Росбанк

Росбанк выбрал технологии распознавания документов Smart Engines