AI modeline saldırmak için DeepFool algoritması

Leifeng.com (Genel Hesap: Leifeng.com) AI Teknolojisi İncelemesi Not: Bu makale, "Brother Dow Sizi Güvenliği Öğrenmeye Götürüyor" serisinin üçüncüsüdür.İlk olarak AI Technology Review'de yayınlanmıştır ve izinsiz olarak yeniden basılamaz.

Genel Bakış

Bir önceki makale olan "Tartışmalı Örneklerin Temel Prensipleri" nde, karşıt örnekler üretmenin temel fikrini ortaya koyduk. Genel fikir, beyaz kutu saldırıları ve kara kutu saldırıları olarak ikiye ayrılır. Aradaki fark, kara kutu testinin modeli bir kara kutu olarak ele alması ve yalnızca örneği girmesidir. Tahmin sonuçlarını elde etmek için, beyaz kutu, kara kutu temelinde model parametreleri ve gradyanlar gibi bilgileri de elde edebilir. Bu makale, beyaz kutu saldırılarında ünlü DeepFool algoritmasını tanıtacak.

DeepFool'un temel ilkeleri

"FGSM Algorithm Attacking AI Model" de, FGSM'nin temel ilkelerini tanıttık. İyi bir soru, AI modelini kandırmak için orijinal görüntüde ne kadar değişiklik yapabiliriz? Başka bir deyişle, AI modelini aldatma amacına ulaşmak için orijinal görüntü mümkün olduğunca az nasıl değiştirilir? İlk olarak, orijinal görselde ne gibi değişiklikler yaptığımıza bir bakalım. Orijinal resmimizin x0 dosyası olduğunu ve rakip örneklemin x1 dosyası olduğunu ve orijinal görüntünün vektör olarak kaydedildiğini varsayalım.

#Original görüntü verileri

x0_img = image.load_img (x0_file, target_size = (299, 299))

x0 = image.img_to_array (x0_img)

Aynı şekilde, rakip örnek tarafından oluşturulan görüntü bir vektör olarak kaydedilir.

# Karşıt örnek veriler

x1_img = image.load_img (x1_file, target_size = (299, 299))

x1 = image.img_to_array (x1_img)

Orijinal görüntü ile rakip örnek arasındaki farkı hesaplayın, onu işaretsiz bir bayt türüne dönüştürün ve bir görüntü olarak kaydedin.

# Değişiklik miktarını hesaplayın

d = x1-x0

im = Image.fromarray (d.astype (np.uint8))

im.save (çıkış)

Klasik domuz yavrusu resmimizi orijinal görüntü olarak alarak, efekt aşağıdaki şekilde gösterilmiştir.

FGSM algoritması tarafından oluşturulan yüzleşme örnek görüntüsünün etkisi aşağıdaki şekilde gösterilmektedir.

Karşıt örneklemin orijinal görüntüye göre değişiminin etkisi aşağıdaki şekilde gösterilmektedir.

DeepFool ilk olarak S. Moosavi-Dezfooli, A. Fawzi ve P. Frossard tarafından "DeepFool: derin sinir ağlarını kandırmak için basit ve doğru bir yöntem" de önerildi. Örnek olarak en basit iki sınıflandırma problemini ele alalım: Şekilde gösterildiği gibi, bölütleme düzleminin düz bir çizgi olduğunu ve düz çizginin iki tarafının farklı sınıflandırma sonuçlarına karşılık geldiğini varsayalım.

Belirli bir noktanın sınıflandırma sonucunu değiştirmek istiyorsanız, segmentasyon düzlemini geçmelisiniz. Açıkçası, en kısa hareket mesafesi dikey bölme düzlemini hareket ettirmektir. Doğrusal cebirde, x noktasından Ax + By + C = 0 doğrusuna olan mesafe şu şekilde tanımlanır:

Vektörize edilmiş gösterim mesafesi aşağıdaki gibidir, burada w parametre matrisidir.

Uzantı olarak, ikili sınıflandırma probleminde, bölümleme düzlemi doğrusal olmadığında, hareket mesafesi çok küçük olduğunda bölümleme düzleminin yine de bu noktaya göre doğrusal bir bölümleme düzlemi olarak kabul edilebileceğini varsayıyoruz.Her yinelemede, nokta şu şekildedir: Küçük bir hareket mesafesiyle bölme düzlemine yaklaşmaya devam edin.

Hareket mesafesi küçük olduğu için, w parametre matrisi yerine bu noktanın eğimi kullanılabilir. Çoklu sınıflandırma problemi, iki sınıflandırma problemine benzer, ancak nokta farklı sınıflandırma etiketlerine geçtiğinde, yinelemeli hesaplamada en kısa mesafeli olanın seçilmesi gerekir.

Saldırı görüntüsü tanıma modeli

Saldırı örnekleri oluşturmanın temel ilkelerini tanıtmak için saldıran InceptionV3 modelini örnek olarak alın. Keras'ın bu modeli yerleşiktir, bu yüzden onu doğrudan kullanabiliriz. İlk katmanın girdisi, girdi katmanı olarak doğrudan modelden elde edilir ve son katmanın çıktısı çıktı katmanıdır.

model = inception_v3.InceptionV3

model_input_layer = model.layers.input

model_output_layer = model.layers.output

Sonra domuz yavrusu gibi saldırdığımız resmi yükleyin. Performans nedenlerinden ötürü, NumPy varsayılan değişken atamasının aynı belleğe atıfta bulunacağı burada vurgulanmalıdır, bu nedenle görüntü verilerinin bir kopyasını manuel olarak zorlamak için np.copy kullanmamız gerekir.

img = image.load_img ("../ resim / pig.jpg", target_size = (299, 299))

original_image = image.img_to_array (img)

hacked_image = np.copy (orijinal_resim)

Çıplak gözle kabul edilebilir olanın ötesinde görüntüde aşırı değişikliklerden kaçınmak için bir eşik belirlememiz gerekir.

max_change_above = orijinal_image + 0.01

max_change_below = orijinal_resim-0.01

Daha sonra, en kritik üç işlevi tanımlamamız gerekir.Kayıp işlevini bir ekmek kızartma makinesi olarak tanınma olasılığı olarak tanımlarız. Bu nedenle, maksimum kayıp işlevini sürekli olarak takip etmek için gradyan yükselme algoritmasını kullanmamız gerekir. Objecttypeto_fake değişkeni, karşılık gelen ekmek kızartma makinesini tanımlar. InceptionV3'teki ekmek makinesinin etiketi 859'dur.

object_type_to_fake = 859

Kayıp fonksiyonu ile, karşılık gelen gradyan fonksiyonunu Keras arayüzü üzerinden elde edebiliriz. Son olarak, K. işlevi aracılığıyla bir Keras işlevi örneği elde edilir İşlevin girdi listesi, girdi katmanı ve geçerli eğitim modu veya test modu işareti öğrenme_fazasıdır ve çıktı listesi, kayıp işlevi ve gradyandır. K. function kullanımı için Keras'ın çevrimiçi belgelerini okumanız önerilir.

cost_function = model_output_layer

gradient_function = K.gradients (maliyet_işlevi, model_input_layer)

grab_cost_and_gradients_from_model =

K.function (,

)

Yineleme dışında, DeepFool ve FGSM'nin algoritmaları tamamen aynıdır. Yinelemede, gradyanı NumPy'nin inalg.norm işlevi aracılığıyla işler ve ardından görüntü içeriğini yinelemeli olarak güncelleriz.

r = gradyan * maliyet / güç (np.linalg.norm (gradyanlar), 2)

hacked_image + = r

hacked_image = np.clip (hacked_image, max_change_below, max_change_above)

hacked_image = np.clip (hacked_image, -1.0, 1.0)

Burada, işlev prototipi olan linalg.norm işlevine özel bir giriş gerekir:

x_norm = np.linalg.norm (x, ord = None, axis = None, keepdims = False)

Ord, matrisin normunu temsil eder.

  • ord = 1, sütun toplamının maksimum değeri, ilk normal biçim

  • ord = 2, özdeğer bulun ve ardından maksimum özdeğerin karekökünü bulun; ikinci normal biçim aynı zamanda varsayılan değerdir

eksen, işleme türünü temsil eder.

  • eksen = 1, satır vektörü ile işlem anlamına gelir, çoklu satır vektörlerinin normunu bulun

  • eksen = 0, sütun vektörüyle işlem anlamına gelir, birden çok sütun vektörünün normunu bulun

  • eksen = Yok, matris normunu temsil eder.

Mac'imde 2 dakika ve 27 yineleme eğitiminden sonra, yeni bir yerli domuz görüntüsü elde edildi, ancak makine öğrenimi modeli bunu% 86.086 olasılıkla bir ekmek kızartma makinesi olarak tanımladı.

parti: 20 Maliyet: 18.707792%

toplu iş: 21 Maliyet: 26.560178%

toplu iş: 22 Maliyet: 37.765652%

parti: 23 Maliyet: 50.175613%

parti: 24 Maliyet: 65.024394%

parti: 25 Maliyet: 71.812165%

parti: 26 Maliyet: 73.846906%

parti: 27 Maliyet: 86.086935%

DeepFool algoritmasına göre ekmek kızartma makinesi olarak tanımlanan evcil bir domuzun resim efekti aşağıdaki gibidir.

Aşağıdaki şekilde gösterildiği gibi orijinal görüntüye göre değişiklik miktarını hesaplayın, bu açıkça FGSM değişiklik miktarından daha azdır.

Referanslar

  • S. Moosavi-Dezfooli, A. Fawzi, P. Frossard: DeepFool: Derin sinir ağlarını kandırmak için basit ve doğru bir yöntem. Bilgisayarla Görme ve Örüntü Tanıma (CVPR 16), IEEE, 2016.

  • Liu Yan, "Web Security Reinforcement Learning and GAN", China Machinery Industry Press

Japonya'da oldukça popüler olan CONVERSE TOKYO giyim şubesi, popüler olan yeni sonbahar ve kış ürünlerini de beraberinde getiriyor.
önceki
ESPN zehirli süt modunu başlatıyor: KZ ekibi birinci sırada! UZI'nin arka arkaya ikinci şampiyonluğu çok geride mi kalacak?
Sonraki
Supercharged veya turbocharged, hangisi daha iyi?
2018 akıllı hoparlör IQ yarışması: Google Home kazandı, Amazon Echo yalnızca üçüncü sırada yer alıyor
Hala mizaçla siyah: Vivo Xplay6 Canlı Uygulamalı Tur
Dün gece Stanford Fighting Chart'ta iki öğrenciye kaybettim, ifade oluşturmak için derin sinir ağlarını kullandılar ve çok hızlı bir şekilde resimleri yayınladılar.
Gökkuşağı dalgası devam ediyor! Nike KD 10, "Rainbow Team" e katıldı
2018'de selfieler için en iyi amiral gemisi telefonu, kimi seçersiniz?
Vivonun ilk ekran parmak izi tanıma özellikli cep telefonu resmi olarak tanıtıldı ve 1 Şubat'ta satışa sunulacak!
Bu iki ticari aracın zengin olmasına kaç kişi yardım etti?
İki ekran eğlencelidir, size çift ekranlı telefonları kolayca oynamayı öğretir
En "harika" job-hopping? Bir nesil LOL süper çapaları kurt adam öldürmeye başladı ve kardeş oldu!
5000 fincan Starbucks içti ve bir iPhoneX aldı ve neredeyse yüz kişi onu elinden aldı!
Audi'nin önümüzdeki yıl Çin'e gireceği bu yeni otomobiller, Mercedes-Benz ve BMW'yi rahatsız etmeye yetiyor.
To Top