В наши дни моделите за машинно обучение в компютърното зрение се използват в много реални приложения, като самоуправляващи се автомобили, разпознаване на лица, диагностика на рак или дори в магазини от следващо поколение, за да се проследи кои продукти клиентите свалят от рафта, така че да получат кредит карта може да бъде таксувана при напускане.
Нарастващата точност на тези системи за машинно обучение е доста впечатляваща, така че естествено доведе до истински поток от приложения, които ги използват. Въпреки че математическите основи зад тях вече бяха проучени преди няколко десетилетия, сравнително скорошното появяване на мощни графични процесори даде на изследователите изчислителната мощ, необходима за експериментиране и изграждане на сложни системи за машинно обучение. Днес модерните модели за компютърно зрение се основават на дълбоки невронни мрежи с до няколко милиона параметри и те разчитат на хардуер, който не беше достъпен само преди десетилетие.
През 2012 г. Alex Krizhevsky et altri стана първият, който показа как да внедри дълбока конволюционна мрежа, която по това време се превърна в модерен модел в класификацията на обектите. Оттогава са публикувани много подобрения на оригиналния им модел, като всеки от тях дава повишаване на точността (VGG, ResNet, Inception и др.). В последно време моделите за машинно обучение успяха да постигнат човешка и дори над човешка точност в много задачи за компютърно зрение.
Преди няколко години получаването на грешни прогнози от модел на машинно обучение беше норма. В днешно време това се превърна в изключение и ние очакваме да се представят безупречно, особено когато са внедрени в реални приложения.
петте принципа на дизайна
Доскоро моделите за машинно обучение обикновено се обучаваха и тестваха в лаборатория среда, като състезания по машинно обучение и академични доклади. В днешно време, тъй като те са внедрени в реални сценарии, уязвимостите в сигурността, идващи от грешки на модела, се превърнаха в истинска грижа.
Идеята на тази статия е да обясни и демонстрира как най-съвременните дълбоки невронни мрежи, използвани при разпознаване на изображения, могат лесно да бъдат заблудени от злонамерен актьор и по този начин да създават грешни прогнози. След като се запознаем с обичайните стратегии за атака, ще обсъдим как да защитим нашите модели срещу тях.
Нека започнем с основен въпрос: Какви са примерите за състезателно машинно обучение?
Противоречивите примери са злонамерени входове, предназначени да заблудят модела на машинно обучение.
В тази статия ще ограничим вниманието си към модели за машинно обучение, които извършват класификация на изображенията. Следователно състезателните примери ще бъдат входни изображения, създадени от нападател, които моделът не може да класифицира правилно.
Като пример, нека вземем a GoogLeNet обучен в ImageNet да извършим класификация на изображенията като наш модел за машинно обучение. По-долу имате две изображения на панда, които не могат да се различат от човешкото око. Изображението вляво е едно от чистите изображения в набора от данни на ImageNet, използвано за обучение на модела GoogLeNet. Тази вдясно е леко изменение на първата, създадена чрез добавяне на вектор на шума в централното изображение. Първото изображение се предвижда от модела да бъде панда, както се очаква. Вместо това се предвижда вторият (с много висока увереност) да бъде фибон.
Шумът, добавен към първото изображение, не е случаен, а резултат от внимателна оптимизация от нападателя.
Като втори пример можем да разгледаме как да синтезираме 3D състезателни примери с помощта на 3D принтер. Изображението по-долу показва различни изгледи на 3D костенурка, отпечатани от авторите, и погрешните класификации от модела Google Inception v3.
Как могат най-съвременните модели, които имат точност на класификация над човешката, да правят такива привидно глупави грешки?
Преди да се задълбочим в слабостите, които моделите на невронните мрежи са склонни да си спомним, нека ние, хората, имаме свой собствен набор от състезателни примери. Погледнете изображението по-долу. Какво виждаш? Спирала или поредица от концентрични кръгове?
Това, което тези различни примери също разкриват, е, че моделите за машинно обучение и човешкото зрение трябва да използват съвсем различни вътрешни представи, когато разбират какво е там в изображението.
В следващия раздел ще разгледаме стратегии за генериране на състезателни примери.
Нека започнем с един прост въпрос: Какво е състезателен пример?
Съперническите примери се генерират чрез вземане на чисто изображение, което моделът правилно класифицира, и намиране на малко смущение, което причинява новото изображение да бъде погрешно класифицирано от модела ML.
Да предположим, че нападателят има пълна информация за модела, който иска да атакува. Това по същество означава, че нападателят може да изчисли функцията за загуба на модела$ J ( theta, X, y) $където$ X $е входното изображение,$ и $е изходният клас, и$ theta $са вътрешните параметри на модела. Тази функция на загуба обикновено е отрицателната вероятност за загуба за класификационни методи.
При този сценарий на бяла кутия има няколко атакуващи стратегии, всяка от които представлява различни компромиси между изчислителните разходи за тяхното производство и степента на успех. Всички тези методи по същество се опитват да максимизират промяната във функцията на загуба на модел, като същевременно запазват възмущението на входното изображение малко. Колкото по-голяма е размерът на пространството на входното изображение, толкова по-лесно е да се генерират състезателни примери, които не могат да бъдат разграничени от чисти изображения от човешкото око.
Намерихме състезателния пример$ {x} 'чрез решаване на следния проблем с оптимизация, ограничен с полета:
$$ begin {матрица} text {minimize} c cdot left | x - {x} ' right | ^ 2_2 + text {загуба} _ {f, 1} {x}' \ text {такова, че} {x} ' epsilon ляво [0, 1 дясно ] ^ n end {матрица} $$където$ c> $ 0е параметър, който също трябва да бъде решен. Интуитивно търсим състезателни изображения$ {x} 'такава, че претеглената сума на изкривяването по отношение на чистото изображение ($ ляво | x - {x} ’ right | $) и загубата по отношение на грешен клас е минимално възможната.
За сложни модели като дълбоки невронни мрежи проблемът за оптимизация няма решение със затворена форма и затова трябва да се използват итеративни числени методи. Поради това, това Метод L-BFGS е бавен. Успеваемостта му обаче е висока.
С метод за бърз градиент (FGS) , правим линейно приближение на функцията на загубите около началната точка, дадено от вектора на чистото изображение$ X $и истинският клас$ и $.
При това предположение градиентът на функцията за загуба показва посоката, в която трябва да променим входния вектор, за да се получи максимална промяна в загубата. За да запазим размера на възмущението малък, ние само извличаме знака на градиента, а не неговата действителна норма, и го мащабираме с малък фактор епсилон.
По този начин гарантираме, че пикселната разлика между първоначалното изображение и модифицираното винаги е по-малка от epsilon (тази разлика е нормата L_infinity).
$$ X ^ {adv} = X + epsilon text {знак} ляво ( bigtriangledown_x J ляво (X, y_ {вярно} дясно) дясно) $$Градиентът може да бъде ефективно изчислен с помощта на обратното разпространение. Този метод е един от най-бързите и изчислително най-евтините за изпълнение. Степента на успех обаче е по-ниска от по-скъпите методи като L-BFGS.
Авторите на Състезателно машинно обучение в мащаб заяви, че има между 63% и 69% успеваемост при прогнозирането на топ 1 за набора от данни ImageNet, с epsilon между 2 и 32. За линейни модели, като логистична регресия, методът за бърз градиент е точен. В този случай авторите на друг изследователска работа върху състезателни примери отчитат успеваемост от 99%.
Очевидно разширение на предишния метод е да го приложите няколко пъти с по-малък размер на стъпка алфа и да изрежете общата дължина на стъпката, за да сте сигурни, че изкривяването между чистото и състезателното изображение е по-ниско от epsilon.
$$ X ^ {adv} _0 = X, X ^ {adv} _ {N + 1} = Clip_ {X, epsilon} ляво {X ^ {adv} _ {N} + alpha text {знак } ляво ( bigtriangledown_X J ляво (X ^ {adv} _N, y_ {вярно} дясно) дясно) дясно } $$Други техники, като предложените в Хартия на Николас Карлини са подобрения спрямо L-BFGS. Те също са скъпи за изчисляване, но имат висок процент на успех.
Въпреки това, в повечето ситуации от реалния свят нападателят не знае функцията за загуба на целевия модел. В този случай нападателят трябва да използва стратегия за черна кутия.
Изследователите многократно са забелязали, че състезателните примери се прехвърлят доста добре между модели, което означава, че те могат да бъдат проектирани за целеви модел А, но в крайна сметка са ефективни срещу всеки друг модел, обучен на подобен набор от данни.
Това е така нареченото свойство на преносимост на състезателни примери, което нападателите могат да използват в своя полза, когато нямат достъп до пълна информация за модела. Атакуващият може да генерира състезателни примери, като следва следните стъпки:
Успешно приложение на тази стратегия срещу търговски модел за машинно обучение е представено в тази хартия на Computer Vision Foundation .
Нападателят изработва атаката, използвайки цялата информация, която имат за модела. Очевидно е, че колкото по-малко информация извежда моделът по време на прогнозиране, толкова по-трудно е за нападателя да създаде успешна атака.
Първата лесна мярка за защита на вашия модел на класификация в производствена среда е избягването на показване на оценки на доверие за всеки предвиден клас. Вместо това моделът трябва да осигурява само горната част$ N $(напр. 5) най-вероятните класове. Когато се предоставят резултати за доверие на крайния потребител, злонамерен нападател може да ги използва, за да изчисли числено градиента на функцията за загуба. По този начин атакуващите могат да създават атаки с бяла кутия, използвайки например метод на бърз градиент. В статията на Computer Vision Foundation, която цитирахме по-рано, авторите показват как се прави това срещу търговски модел за машинно обучение.
Нека разгледаме две защити, които са предложени в литературата.
Това метод се опитва да генерира нов модел, чиито градиенти са много по-малки от оригиналния незащитен модел. Ако градиентите са много малки, техники като FGS или Iterative FGS вече не са полезни, тъй като нападателят ще се нуждае от големи изкривявания на входното изображение, за да постигне достатъчна промяна във функцията за загуба.
Защитната дестилация въвежда нов параметър$ T $, наречена температура, до последния softmax слой на мрежата:
$$ text {softmax} ляво (x, T дясно) _i = frac {e ^ {x_i / T}} { Sigma_j e ^ {x_j / T}} $$Имайте предвид, че за T = 1 имаме обичайната функция softmax. Колкото по-висока е стойността на$ T $, толкова по-малък е градиентът на загубата по отношение на входните изображения.
Защитната дестилация протича както следва:
Защитната дестилация успешно защитава мрежата от опита за атака Дестилацията като защита срещу състезателни смущения срещу дълбоки невронни мрежи .
angularjs урок за начинаещи с примери
За съжаление, a по-късно доклад от Университета на Калифорния, Бъркли представи нов набор от методи за атака, които побеждават отбранителната дестилация. Тези атаки са подобрения спрямо метода L-BFGS, които доказват, че отбранителната дестилация не е общо решение срещу състезателни примери.
В наши дни състезателното обучение е най-ефективната отбранителна стратегия. Съперническите примери се генерират и използват при обучението на модела. Интуитивно, ако моделът вижда противоречиви примери по време на обучение, неговото представяне по време на прогнозиране ще бъде по-добро за състезателни примери, генерирани по същия начин.
В идеалния случай бихме искали да използваме всеки известен метод за атака, за да генерираме състезателни примери по време на обучение. Въпреки това, за голям набор от данни с висока размерност (като ImageNet), надеждните методи за атака като L-BFGS и подобренията, описани в документа на Бъркли, са твърде изчислително скъпи. На практика можем да си позволим да използваме само бърз метод като FGS или може да се използва итеративен FGS.
Състезателното обучение използва модифицирана функция за загуба, която е претеглена сума от обичайната функция за загуба на чисти примери и функция за загуба от състезателни примери.
$$ Загуба = frac {1} { ляво (m - k дясно)} ляво ( sum_ {i epsilon CLEAN} y_i дясно) + lambda sum_ {i epsilon ADV} {L ляво (X * {adv} _i | y_i дясно)} дясно) $$По време на обучението, за всяка партида от$ m $чисти изображения, които генерираме$ k $състезателни изображения, използващи текущото състояние на мрежата. Ние разпространяваме мрежата както за чисти, така и за състезателни примери и изчисляваме загубата с формулата по-горе.
Подобрение на този алгоритъм, представен в това конферентен доклад се нарича ансамблово състезателно обучение. Вместо да се използва текущата мрежа за генериране на състезателни примери, се използват няколко предварително обучени модела за генериране на състезателни примери. В ImageNet този метод увеличава устойчивостта на мрежата към атаки в черни полета. Тази защита беше победителят от 1-ви кръг в Състезание за NIPS 2017 за защита срещу състезателни атаки .
Към днешна дата атаката на модел за машинно обучение е по-лесна от защитата му. Съвременните модели, внедрени в реални приложения, лесно се заблуждават от състезателни примери, ако не се използва стратегия за отбрана, отваряйки вратата към потенциално критични проблеми със сигурността. Най-надеждната стратегия за отбрана е състезателното обучение, където се генерират състезателни примери и се добавят към чистите примери по време на тренировка.
Ако искате да оцените устойчивостта на вашите модели за класификация на изображения към различни атаки, препоръчвам ви да използвате библиотеката на Python с отворен код умници . Много методи за атака могат да бъдат тествани срещу вашия модел, включително тези, споменати в тази статия. Можете също да използвате тази библиотека, за да извършите състезателно обучение на вашия модел и да увеличите неговата устойчивост до състезателни примери.
Намирането на нови атаки и по-добри стратегии за отбрана е активна област на изследване. Изисква се повече теоретична и емпирична работа, за да се направят моделите за машинно обучение по-здрави и безопасни в реални приложения.
Насърчавам читателя да експериментира с тези техники и да публикува нови интересни резултати. Освен това всяка обратна връзка относно настоящата статия е много добре дошла от автора.
Свързани:Състезателен пример е вход (напр. Изображение, звук), предназначен да накара модела за машинно обучение да направи грешна прогноза. Той се генерира от чист пример чрез добавяне на малко смущение, незабележимо за хората, но достатъчно чувствително, за да може моделът да промени прогнозата си.
Всеки модел за машинно обучение, използван в реален сценарий, е обект на състезателни атаки. Това включва модели на компютърно зрение, използвани в самоуправляващи се автомобили, системи за разпознаване на лица, използвани на летищата, или софтуер за разпознаване на реч в асистента на вашия мобилен телефон.
Състезателната атака е стратегия, целяща да накара модела за машинно обучение да направи грешна прогноза. Състои се от добавяне на малко и внимателно проектирано смущение към чисто изображение, което е незабележимо за човешкото око, но което моделът вижда като подходящо и променя предсказанието си.