Google Brain açık kaynak TensorFuzz, sinir ağlarında otomatik olarak hata ayıklama!

Xinzhiyuan Raporu

Yazar: Augustus Odena, Ian Goodfellow

Editör: Xiao Qin

Xin Zhiyuan Rehberi Hepimizin bildiği gibi, sinir ağlarında hata ayıklamak zordur. Augustus Odena ve Google Brain'den Ian Goodfellow, sinir ağlarında otomatik olarak hata ayıklayabilen yeni bir yöntem önerdi. Goodfellow, örneğin ağın yeni bir sürümünü başlatmadan önce eski ve yeni sürümler arasındaki farklılıkları aramak için fuzz kullanmak gibi makine öğrenimini içeren karmaşık yazılım regresyon testinin temeli haline geleceğini umduğunu ifade etti.

Kağıt adresi:

https://arxiv.org/pdf/1807.10875.pdf

Hepimizin bildiği gibi, çeşitli nedenlerden dolayı makine öğrenimi modellerinde hata ayıklamak veya yorumlamak zordur. Bu, son " Tekrarlanabilirlik krizi "(Yeniden üretilebilirlik krizi) - Hata ayıklaması zor olan teknolojiler hakkında güvenilir deneysel sonuçlar çıkarmak zordur.

Sinir ağı özeldir Hata ayıklamak zor Çünkü, nispeten doğrudan bir sinir ağı biçimi olsa bile, çözme hesaplama maliyeti çok yüksektir ve sinir ağının yazılım uygulaması teorik modelden çok farklı olabilir.

Bu çalışmada, geleneksel yazılım mühendisliğinde bir teknik kullanıyoruz Kapsama kılavuzlu fuzzing (CGF) Ve bunu sinir ağı testine uygulayın.

Özellikle, bu çalışma aşağıdaki katkılara sahiptir:

  • CGF kavramını sinir ağlarına tanıttık ve kapsama alanını genel bir şekilde kontrol etmek için hızlı yaklaşık en yakın komşu algoritmalarının nasıl kullanılacağını açıkladık.

  • Adında bir proje açtık. TensorFuzz CGF yazılım kitaplığı.

  • TensorFuzz'ı eğitimli sinir ağındaki sayısal problemleri bulmak, sinir ağı ile nicelleştirilmiş versiyonu arasındaki anlaşmazlıkları bulmak ve karakter düzeyinde dil modellerinde kötü davranışlar bulmak için kullanıyoruz.

Şekil 1: Ana havlanma döngüsünün kısa bir açıklaması. Solda: Veri akışını gösteren bulanık test programı diyagramı. Sağda: Bulanıklaştırma işleminin ana döngüsü bir algoritma şeklinde tanımlanmıştır.

Kapsama kılavuzlu fuzzing

Gerçek yazılım testlerinde, birçok ciddi hatayı bulmak için kapsam kılavuzlu fuzzing kullanılır. En yaygın kullanılan iki kapsama kılavuzlu fuzzer, AFL ve libFuzzer'dır. Bu fuzzers, onları daha hızlı hale getirmek veya kodun belirli bölümlerinin yerleştirilebileceği aralığı artırmak için çeşitli şekillerde genişletilmiştir.

CGF sürecinde, fuzzing işlemi, dikkate alınan programın girdisini içeren bir girdi külliyatını korur. Bazı mutasyon programlarına göre, bu girdiler rastgele değiştirilir ve yeni bir "kapak" kullandıklarında, mutasyona uğramış girdiler külliyatta saklanır.

" Kapsam (Kapsam) nedir? Fuzzer türüne ve mevcut hedefe bağlıdır. Ortak bir ölçü, yürütülen kod parçalarının toplanmasıdır. Bu önlem kapsamında, yeni bir girdi kodun if içinde olmasına neden olursa İfade öncekinden farklı bir şekilde dallanırsa, teminat artacaktır.

CGF, geleneksel yazılımdaki kusurları tespit etmede çok başarılıdır, bu yüzden doğal olarak şunu soruyoruz: CGF sinir ağlarına uygulanabilir mi?

Geleneksel kapsam ölçümleri, hangi kod satırlarının yürütüldüğünü izler. En basit haliyle, sinir ağı bir dizi matris çarpımı olarak uygulanır ve ardından eleman bazlı işlemler yapılır. Bu işlemlerin temelindeki yazılım uygulaması birçok dal ifadesi içerebilir, ancak bunların çoğu matrisin veya sinir ağı mimarisinin boyutuna dayanır. Bu nedenle, dallanma davranışı çoğunlukla sinir ağı girişinin spesifik değerinden bağımsızdır. Birkaç farklı giriş üzerinde çalışan sinir ağları genellikle aynı kod satırlarını çalıştırır ve aynı dalları kullanır, ancak giriş ve çıkış değerlerindeki değişiklikler nedeniyle bazı ilginç davranış değişiklikleri meydana gelecektir. Bu nedenle, mevcut CGF araçlarını (AFL gibi) kullanmak, sinir ağlarının bu davranışlarını bulamayabilir.

Bu çalışmada, kullanmayı seçtik Hızlı yaklaşık en yakın komşu algoritması İki takım sinir ağının "aktivasyonunun" anlamlı bir şekilde farklı olup olmadığını belirlemek için. Bu, sinir ağının temeldeki yazılım uygulaması birçok veriye bağlı dalı kullanmasa bile sinir ağı için yararlı sonuçlar üretebilen bir kapsam ölçüsü sağlar.

TensorFuzz kütüphanesi

Daha önce anlattığımız fuzzerden ilham alarak, adında bir araç yaptık. TensorFuzz . Diğer fuzzer'lara benzer şekilde çalışır, ancak sinir ağı testi için daha uygundur.

TensorFuzz, C veya C ++ ile yazılmaz, ancak herhangi bir TensorFlow grafiğine girdi sağlar. TensorFuzz, kapsamı temel bloklara veya kontrol akışındaki değişikliklere bakarak değil, hesaplama grafiğinin "aktivasyonuna" bakarak ölçer. Makalede, veri akışı ve temel yapı taşları dahil olmak üzere fuzzer'ın genel mimarisini, ayrıca korpusun nasıl örnekleneceğini, mutasyonların nasıl gerçekleştirileceğini, kapsamın nasıl değerlendirileceğini ve amaç işlevlerini vb. Ayrıntılı olarak tartıştık. Ayrıntılar için lütfen orijinal makaleyi okuyun.

Deneysel sonuçlar

CGF teknolojisinin çeşitli uygulamalarını kısaca tanıttık ve genel ortamlarda faydalı olduğunu kanıtladık.

CGF, eğitimli sinir ağındaki sayısal hataları etkili bir şekilde bulabilir

Sinir ağları kayan nokta matematiği kullandığından, hem eğitim sırasında hem de değerlendirme sırasında sayısal problemlere karşı hassastırlar. Hepimizin bildiği gibi, bu sorunların hatalarını gidermek zordur, çünkü bunlar yalnızca nadiren karşılaşılan küçük bir girdi kümesi tarafından tetiklenebilir. Bu, CGF'nin nasıl yardımcı olabileceğinin bir örneğidir. Sayı olmayan (NaN) değerlerle sonuçlanan girdileri bulmaya odaklanıyoruz.

CGF, sayısal hataları (sayısal hatalar) hızla bulabilir : CGF kullanarak, meta verilere kontrol sayısal işlemleri ekleyebilmeli ve bir fuzzer çalıştırmalıyız. Bu hipotezi test etmek için, MNIST veri kümesindeki rakamları sınıflandırmak için tamamen bağlı bir sinir ağı eğittik. Kasıtlı olarak çok kötü bir çapraz entropi kaybı kullandık, böylece sayısal hatalar olabilir. Modeli 35.000 adımla eğittik, mini parti boyutu 100'dü ve doğrulama doğruluğu% 98'di. Ardından MNIST veri kümesinde sayısal hatalara neden olan öğeler olup olmadığını kontrol edin.

Şekil 2'de gösterildiği gibi, TensorFuzz, çok sayıda rastgele başlatma sırasında NaN'yi hızla keşfetti.

Şekil 2: Güvenli olmayan bazı sayısal işlemler kullanarak bir MNIST sınıflandırıcısını eğittik. Ardından, MNIST veri kümesindeki rastgele tohumda fuzzer'ı 10 kez çalıştırın. Fuzzer her çalıştığında sonlu olmayan bir eleman bulunur ve rasgele aramada sonlu olmayan bir eleman asla bulunmaz. Sol: Fuzzer çalışırken 10 kez çalışan kümülatif külçe boyutu. Sağda: Fuzzer tatmin edici bir görüntü buluyor.

Diğer bulgular:

  • Gradyan tabanlı arama teknikleri sayısal hataların bulunmasına yardımcı olmayabilir

  • Rastgele arama, sayısal hataları bulmak için son derece verimsizdir

CGF, model ile nicel versiyonu arasındaki farklılığı yansıtır

Nicelleştir (Niceleme), daha az bellek bitinden oluşan sayısal bir gösterimi kullanarak sinir ağı ağırlıklarını depolama ve sinir ağı hesaplamaları gerçekleştirme işlemidir. Niceleme, sinir ağlarının hesaplama maliyetini düşürmek veya ağ boyutunu küçültmek için popüler bir yöntemdir ve Android Neural Networks API veya TFLite gibi cep telefonlarında sinir ağı çıkarımını çalıştırmak ve Google'ınki gibi özel makine öğrenimi donanımlarında çıkarım yapmak için yaygın olarak kullanılır. TPU veya NVIDIA'nın TensorRT'si.

Nicemlemenin neden olduğu hatayı bulmak önemlidir: Tabii ki, niceleme, modelin doğruluğunu önemli ölçüde azaltırsa, nicelemenin çok az faydası vardır. Bir niceleme modeli verildiğinde, nicelemenin doğruluğu ne kadar azalttığını kontrol etmek yararlıdır.

Mevcut verileri kontrol ederek hata bulmak neredeyse imkansızdır: Temel bir deney olarak, 32 bitlik kayan nokta sayıları kullanarak bir MNIST sınıflandırıcısını eğittik (bu sefer kasıtlı olarak sayısal problemler getirmedik). Daha sonra tüm ağırlıklar ve aktivasyonlar 16 bit olacak şekilde kesildi MNIST test setinde 32-bit ve 16-bit modellerin tahmin doğruluğunu karşılaştırdık ve tutarsızlık bulamadık.

Bununla birlikte, CGF, Şekil 3'te gösterildiği gibi, verilerin etrafındaki küçük bir alanda birçok hatayı hızla bulabilir.

Şekil 3: 32 bitlik bir kayan noktalı MNIST sınıflandırıcısını eğittik ve ardından ilgili TensorFlow grafiğini 16 bit kayan nokta sayılarına indirdik. Sol: Fuzzer çalışırken 10 kez çalışan kümülatif külçe boyutu. Sağda: Fuzzer, 16 bit ve 32 bit sinir ağları tarafından farklı şekilde sınıflandırılmış görüntüler buldu

Sonuçlar, denediğimiz örneklerin% 70'inde fuzzerin farklılaştığını gösterdi. Başka bir deyişle, CGF, test sırasında oluşabilecek gerçek hataları bulabilir.

CGF ile aynı sayıda mutasyon verildiğinde, rastgele arama yeni hatalar bulmada başarısız olur.

sonuç olarak

Sinir ağları için kapsama kılavuzlu bulanıklaştırma kavramını önerdik ve bu durumda nasıl yararlı bir kapsama denetleyicisinin oluşturulacağını açıkladık. Sayısal hataları bulmak, sinir ağları ve nicelleştirilmiş sürümleri arasındaki farkları keşfetmek ve RNN'lerde kötü davranışları bulmak için TensorFuzz'ı kullanarak deneyler yaparak TensorFuzz'ın yararlılığını kanıtladık. Son olarak, TensorFuzz uygulamasını aynı anda yayınlayacağız, böylece diğer araştırmacılar çalışmalarımıza dayanarak araştırma yapabilir veya gerçek problemleri bulmak için fuzzer'ı kullanabilir.

Xinzhiyuan AI WORLD 2018 [Erken Kayıt Bileti] satışa çıktı!

Xinzhiyuan, AI WORLD 2018 konferansını 20 Eylül'de Pekin'deki Ulusal Kongre Merkezi'nde gerçekleştirecek ve makine öğrenimi vaftiz babası, CMU profesörü Tom Mitchell, Mikes Tekmark, Zhou Zhihua, Tao Dacheng, Chen Yiran ve diğer AI liderlerini makine zekasına dikkat etmeye davet edecek. Ve insan kaderi.

Konferans resmi web sitesi:

Şu andan 19 Ağustos'a kadar Xinzhiyuan, küresel yapay zeka liderleriyle iletişim kurmak ve küresel yapay zeka endüstrisinin sıçrama gelişimine tanık olmak için sınırlı sayıda erken kayıt bileti satacak.

  • Aktivite hattı bileti satın alma bağlantısı:

  • Etkinlik satırı bilet alımı için QR kodu:

Kahve ve dostluk | Kiraz çiçeği en güzel ne zaman? Düşerken
önceki
Yerli futbolcular 3 turda 31 gol atarken, Wu Lei 7 golle başı çekerken, uzun süredir böyle bir sahne görülmedi.
Sonraki
Bu hayatta, Kuzeybatı'ya bir gezi değerlidir!
Changan CS95 söylediği kadar acımasız ve acımasız mı?
"Akademik Tahrif Salgını" Tatillerde dünya çapında 400.000 bilim insanı, aralarında Nobel Ödülü sahibi de bulunan makaleler yayınladı!
Yay Karnavalı Günü! Havada yükselen dört büyük forvet, C Ronaldo, Messi Wu Lei'yi yakından takip ediyor
Dünyanın en popüler 20 şehrinden birincisi ...
Eski şiirlerdeki on ünlü bina güzel ve ihtişamlıdır!
Klasikleri hatırlamak: Tarihin en büyük 10 Ferrari'si
"Kuru ürünler" IJCAI: Kapsamlı üretim modelini basit bir şekilde açıklayın (115 PPT)
Geçen hafta, Chengguan Ofisi bu birkaç vakayı çözdü ...
Fas'ın kopyasına uçak bileti için 15 yuan harcadım ve 2019'un en çok beklenen çöl otelinde uyudum!
Ganpo kültürü "okyanusu geçiyor"! Jiangxi Sanat Topluluğu Yeni Yılda Endonezya'da Gösteri Yapıyor
Daha fazla 2.0T + 9AT gördüm ve geçen kaşifin 1.5T modeline ne dersiniz?
To Top