Çekişmeli örneklerin temel ilkesi

Leifeng.com AI teknolojisi yorum notu: Bu makale ilk olarak "Brother Dou, Sizi Güvenliği Öğrenmeye Götür" WeChat genel hesabında yayınlandı.

Genel Bakış

Tartışmalı örnekler, makine öğrenimi modellerinin ilginç bir olgusudur. Saldırganlar, kaynak verilere, insanların duyular yoluyla tanıması zor olan ince değişiklikler ekleyebilir, ancak makine öğrenimi modelinin kabul etmesine ve yanlış sınıflandırma kararları vermesine izin verebilir. Tipik bir senaryo, görüntü sınıflandırma modelinin muhalif bir örneğidir .. Resim üzerine dikkatlice oluşturulmuş bir değişiklik miktarını üst üste bindirerek, sınıflandırma modeli çıplak gözle tespit edilmesi zor olduğunda yanlış bir yargıya varabilir.

Prensip olarak karşıt örnek tanıtıldı.Klasik ikili sınıflandırma problemini örnek alarak, makine öğrenimi modeli örnek üzerinde eğitim vererek bir bölümleme düzlemini öğrenir ve bölümleme düzleminin bir tarafındaki noktalar kategori 1 olarak kabul edilir. Diğer taraftaki noktaların tümü ikinci kategori olarak kabul edilir.

Bir saldırı örneği oluştururken, belirtilen örnek için bir değişikliği hesaplamak için bir algoritma kullanırız.Örnek değiştirildikten sonra, insan algısından tanınamaz, ancak örnek segmentasyon düzlemini geçerek makine öğrenimi modelinin yargısına yol açar. Sonuç değişti.

Etkili bir şekilde rakip örneklerin nasıl üretileceği ve insan duyularının algılamasının nasıl zorlaştırılacağı, rakip örnek oluşturma algoritmalarının araştırma alanında sıcak bir konudur.

Gradyan algoritması ve kayıp işlevi

Tartışmalı örnekler aslında makine öğrenimi modelleri için etkilidir, ancak araştırmanın odak noktası hala sinir ağları, özellikle de derin öğrenme ağları alanındadır. Rakip örnek algoritmayı anlamak için, belirli miktarda sinir ağı bilgisi gereklidir. Derin öğrenme modelinde, kayıp fonksiyonunu en aza indirmek için her katmanın parametrelerini sürekli olarak kayıp fonksiyonunun geri bildirimine göre ayarlamak için bir gradyan algoritması kullanmak gerekir. Kayıp işlevi, ideal ve gerçeklik arasındaki boşluk olarak anlaşılabilir. Bir işlev genellikle gerçek değer ile tahmin edilen değer arasındaki farkı tanımlamak için tanımlanır. Eğitim aşamasında, gerçek değer, örneğe karşılık gelen gerçek etikettir ve tahmin edilen değer makine öğrenimi modeli tarafından tahmin edilir. Etiket değerleri, bunlar açıktır, böylece kayıp fonksiyonu tanımlanabilir ve hesaplanabilir. Sınıflandırma problemlerinde yaygın kayıp fonksiyonları arasında binary_crossentropy ve categorical_crossentropy bulunur.

  • binary_crossentropy

binary_crossentropy ayrıca günlük kaybı olarak da adlandırılır,

  • categorical_crossentropy

categorical_crossentropy ayrıca çok sınıflı günlük kaybı olarak da adlandırılır

Makine öğrenimi modeli eğitimi süreci, en küçük kayıp işlevini takip etmek için parametreleri sürekli olarak ayarlama sürecidir. Gradyan, çok değişkenli fonksiyonun belirlenmiş noktasının yükselen eğimi olarak anlaşılabilir. Gradyan, kısmi türev ile tanımlanabilir.Genellikle kayıp fonksiyonu bu çok değişkenli fonksiyondur ve özellik vektörü bu çok değişkenli fonksiyonun belirli bir noktası olarak kabul edilebilir. Eğitim sürecinde, parametrelerin ayarlanması gradyan ve öğrenme oranı ile tanımlanabilir.Öğrenme hızına öğrenme adım uzunluğu da denir.Fiziksel anlamı gradyan yönünde hareket eden değişkenin uzunluğudur.Öğrenme hızı çok önemli bir parametredir. Sonuç olarak, kayıp fonksiyonunun salınımını yakınsamak zordur. Çok küçükse, hesaplama yavaş olacaktır. Şu anda, en uygun öğrenme oranını türetmek için olgun bir teori yoktur. Ampirik değer 0,001-0,1 arasındadır. X parametresini yinelemeli olarak güncelleme yöntemi:

xk + 1 = xk + derece (x)

Fonksiyonun maksimum değerini bulduğumuzda, gradyanın yukarı yönünde hareket edeceğiz, bu yüzden artı işaretini kullanmak da gradyan yukarı doğru algoritma haline gelir. Fonksiyonun minimum değerini bulmak istiyorsak, gradyanın aşağı doğru yönünde hareket etmemiz gerekir, bu da gradyan iniş algoritması olur. Dolayısıyla, örneğin, kayıp fonksiyonunun minimum değerini bulmak için eksi işaretini kullanarak, karşılık gelen yinelemeli çözüm yöntemi şöyledir:

xk + 1 = xk derece (x)

Bu süreci çok basit bir örnekle gösteriyoruz.Sadece bir x değişkenimiz olduğunu varsayarsak, karşılık gelen kayıp fonksiyonu şu şekilde tanımlanır:

f (x) = x2 + 2

Gradyan tanımına göre, ilgili gradyan şu şekilde elde edilebilir:

derece (x) = f (x) / (x) = 2x

X'i rastgele başlatıyoruz ve öğrenme oranını 0.1 olarak ayarlıyoruz. Tüm süreç aşağıdaki gibidir:

def demo:

rastgele içe aktar

a = 0.1

x = random.randint (1,10)

y = x * x + 2

dizin = 1

0,01 indeksi ise:

y = x * x + 2

"batch = {} x = {} y = {}" yazdır. biçim (dizin, x, y)

x = x-2 * x * a

dizin + = 1

Yinelemeli sürecin tamamı 100 adıma kadar olabilir.Fonksiyonun minimum değerinin 2 olduğunu önceden bildiğimiz için, hesaplanan işlev değeri 2'ye çok yakınsa yinelemeli işlemden erken de çıkabiliriz, örneğin mutlak değer farkı 0.01'i geçmez. Sonunda bizi hayal kırıklığına uğratmadı, 20 yinelemeden sonra minimum noktayı teoriye yakın bulduk.

parti = 14 x = 0,329853488333 y = 2,10880332377

parti = 15 x = 0,263882790666 y = 2,06963412721

parti = 16 x = 0,211106232533 y = 2,04456584141

parti = 17 x = 0.168884986026 y = 2.02852213851

toplu iş = 18 x = 0.135107988821 y = 2.01825416864

toplu iş = 19 x = 0.108086391057 y = 2.01168266793

parti = 20 x = 0,0864691128455 y = 2,00747690748

Karşılık gelen araçlar, değişkenlere göre kayıp fonksiyonunun gradyanını döndürmek için Keras'ta sağlanmıştır.Değişkenler, tensör değişkenlerinin bir listesidir.Buradaki kayıp fonksiyonu, kayıp fonksiyonudur.

keras'tan arka ucu K olarak içe aktar

k.gradients (kayıp, değişkenler)

Keras ayrıca bir Keras işlevini somutlaştırmak için işlev sağlar Girdiler, öğeleri yer tutucular veya tensör değişkenleri olan girdi listelerinin bir listesidir ve çıktılar, çıktı tensörlerinin bir listesidir.

k.function (girişler, çıkışlar, güncellemeler =)

Sinir ağı eğitimi yapılırken, amaç kayıp fonksiyonunu en aza indirmektir.Bu nedenle, her eğitim turunda, tahmin edilen değeri elde etmek için eğitim seti verileri ve modelin parametreleri aracılığıyla matris hesaplaması yapılır.Bu süreç ileri bir geçiş haline gelir. Daha sonra tahmin edilen değer ve hedef değerin kayıp fonksiyonu hesaplanarak, zincir kuralı üzerinden gradyan değeri hesaplanır ve daha sonra modelin parametre değeri gradyan iniş algoritmasına göre ayarlanır ve bu işlem ters transfer olur. Birkaç tur eğitimden sonra, kayıp fonksiyonu kabul edilebilir bir seviyeye düştü, modelin parametreleri ayarlandı ve tüm eğitim süreci sona erdi.

InceptionV3 modeline saldırın

Genel evrişim katmanı, evrişim katmanının derinliğini körü körüne artırır, ancak tek bir katmanda yalnızca bir evrişim çekirdeği vardır, bu nedenle özellik çıkarma işlevi zayıf olabilir. Google, tek katmanlı evrişimli katmanın genişliğini artırır, yani tek katmanlı evrişimli katman üzerinde farklı evrişim çekirdekleri ölçekleri kullanır. Başlangıç'ın temel birimini oluşturdular. Temel Başlangıçta 1x1 evrişim çekirdeği, 3x3 evrişim çekirdeği ve 5x5 vardır. Evrişim çekirdeği ayrıca 3x3 altörneklemeye sahiptir, bu da InceptionV1 modeliyle sonuçlanır. InceptionV3'ün iyileştirmesi, 5x5 evrişimli çekirdek yerine 2 katmanlı 3x3 küçük evrişimli çekirdek kullanmaktır. Saldırı örnekleri oluşturmanın temel ilkelerini tanıtmak için saldıran InceptionV3 modelini örnek olarak alın. Keras'ta bu model 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. Burada vurgulanması gereken şey, performans nedenlerinden ötürü, NumPy varsayılan değişken atamasının aynı belleğe başvuracağıdır, bu nedenle görüntü verilerinin bir kopyasını manuel olarak zorlamak için np.copy'yi 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öz için 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_image-0.01

Daha sonra en kritik üç işlevi tanımlamamız gerekir.Kayıp işlevini bir ekmek kızartma makinesi olarak tanınmanın olasılığı olarak tanımlarız. Bu nedenle, kayıp işlevinin maksimizasyonunu sürekli olarak takip etmek için gradyan yükselme algoritmasını kullanmamız gerekir. Object_type_to_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 işlevi ile, karşılık gelen gradyan işlevini Keras arabirimi aracılığıyla 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. işlevinin 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 (,

)

Artık eğitim yinelemeleri ile ihtiyacımız olan resimleri nihayet elde etmeye başlayabiliriz.Tost makinesinin olasılığının% 60'tan fazla olduğunu düşünüyoruz, bu nedenle eğitimi tamamlamak için kayıp fonksiyonunun değerinin 0.6'yı geçmesini tanımlıyoruz. Eğitim modunu kullanmaya ayarladık, öğrenme aşaması 0 olarak işaretlendi ve gradyan yükselme algoritması yeni görüntü içeriğini yinelemeli olarak elde etmek için kullanıldı. Çıplak gözle tanımayı etkilememek için eşiği aşan kısım kesilecektir Fonksiyonun bu kısmı NumPy's np.clip kullanılarak tamamlanabilir.

maliyet maliyeti ise, gradyanlar = grab_cost_and_gradients_from_model ()

hacked_image + = gradyanlar * öğrenme_ hızı

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

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

Kolay anlaşılması için gradyan içeriğini çıkarıyoruz.

...,

>>>

Eğitim tamamlandıktan sonra resmi kaydedin. Burada açıklanması gereken şey, görüntü NumPy değişkenine kaydedildikten sonra her boyutun 0-255 arasında bir tam sayı olması ve model işlemeyi kolaylaştırmak için -1 ile 1 arasında bir ondalık sayıya dönüştürülmesi gerektiğidir. Görüntü olarak kaydederken, önceki aralığa geri dönüştürülmesi gerekir.

img = hacked_image

img / = 2.

img + = 0.5

img * = 255.

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

im.save ("../ resim / hacked-domuz-resim.png")

Mac'imde yaklaşık 2 saatlik 3070 yineleme eğitiminden sonra yeni bir evcil domuz görüntüsü elde edildi, ancak makine öğrenimi modeli bunu% 95.61 olasılıkla bir ekmek kızartma makinesi olarak tanımladı. Saldırımız başarılı oldu. Aynı sonuç, GPU sunucusunda yaklaşık 5 dakika çalıştırılarak da elde edilebilir.

sonuç olarak

Bu bölüm karşıt örneklerin temel ilkelerini tanıtır ve en basit gradyan iniş algoritması ile karşıt örnekler oluşturmanın temel sürecini gösterir. Düşük verimliliğinden etkilenebilirsiniz. Daha sonra, muhalif örnekler oluşturmak için birkaç ortak algoritma tanıtacağız.

Referanslar

  • https://medium.com/@ageitgey/machine-learning-is-fun-part-8-how-to-intentionally-trick-neural-networks-b55da32b7196

  • https://blog.csdn.net/u012223913/article/details/68942581

  • Ian J. Goodfellow, Jonathon Shlens ve Christian Szegedy, TAVSİYE ÖRNEKLERİ AÇIKLAMA VE ZARARLAMA, arXiv: 1412.6572

Liu Zuohu'yu yaymak: En son etkinlikte ödüller OnePlus 5 ile takas edilebilir mi?
önceki
Yakışıklı yakışıklı adam, yeni Chevrolet Chuangku'nun gerçek görüntüsü
Sonraki
Çıkış tarihi onaylandı! Sonunda gökkuşağı Flyknit Racer "DOĞRU OLUN" a kadar bekledim
Tavuk bakımını ye, Wei Shen hala LOL oynamıyor mu? Netizen Fritöz: LOL oyuncuları isyan etti!
Pek çok Hisense TV ürünü, akıllı TV'ler için enerji tasarrufu ve çevre koruma bayrağı taşıyan "Enerji Verimliliği Yıldızları" olarak seçilmiştir
Bu ünlü CP yetkilisi tarafından zorlanıyor!
Meizunun 2017'deki ilk "konseri" bunu yayınlamak için
Yüz germe işleminden sonra Maserati Ghibli'de neler değişti?
5G ve AI'ya odaklanın! Zhan Rui, önümüzdeki yıl 7nm 5G çipleri ve NPU çiplerini piyasaya sürecek!
Chongqing'in Hikayesi Sevgililer Günü her yıl kutlanır, ancak bu Chongqing aşk hikayelerini duydunuz mu?
Yeni iPhone'un casus fotoğrafları ortaya çıktı, ancak bu sefer OnePlus'ın CEO'su
WeChat'te yeni yıl selamları
"Indian Partners" ın Çin tiyatrolarına tanıtılması bekleniyor
Vahşi doğa operasyonu, "Noel Baba" uğurlu kıyafeti mi geliyor? Tavuk yiyemiyor musun? yok!
To Top