"Programcı özgürleştirin" MIT "Genesis" yeni makine öğrenimi sistemi, hataları düzeltmek için otomatik olarak yamalar oluşturun

8 Kasım 2017'de Pekin Ulusal Kongre Merkezi'nde AI WORLD 2017 Dünya Yapay Zeka Konferansı Bilet satışları başladı! Erken kayıt biletlerinde% 50 indirim, 7 gün bilet almak için geri sayım . Bulması zor geçen yılki AI WORLD 2016'yı hatırlıyor musunuz? Bu yıl "Lengpu Master" ın babası Tuomas'ı olay yerine davet ettik ve Google, Microsoft, Amazon, BAT, Xunfei, JD.com ve Huawei'den ağır siklet konuklar katılımlarını doğruladılar.

Uzun tatil burada, tatiliniz var ama programlamak için çok çalıştığınız yazılım olmadı. Aynı zamanda hatalar da üretiyor ...

Hatayı keşfettikten sonra programcının zihniyeti hakkında da biraz bilgi sahibiyiz:

Başkalarının yazdığı kodda bir hata var - bu kadar kötü bir kod yazan, neyse ki kardeş gibi tanrısal bir varlığa sahip olmak onun gerçekten kurtarıcı olduğunu keşfetti.

Yazdığım kodda hatalar var

(1) Uzun süre koşmak

< 1 > Başkaları bu programın uzun süredir çalıştığını keşfettiler. Bu gerçekten bir hata mı? Bir hata mı yaptınız? Yeniden üretilebilir mi? Ne? Çoğaltılabilir, sorun büyük değil veya kullanıcı erken şikayet etti, paniğinize bakın mı?

< 2 > Bu böceğin derinden gizlendiğini öğrendim Neyse ki o kadar keskindim ki lider tarafından keşfedilmedim. Bu gece bir tabak ekleyin.

(2) Yeni çevrimiçi program

< 1 > Başkaları tarafından bulundu

Bu program yeni başladı ve hala hata ayıklama aşamasında. Hataların olması normaldir. Kimin programında hata yok, işletim sisteminde bile hata var

< 2 > Kendim keşfedin

Kardeş keskin, kendi testlerini geliştiriyor ve testlere bakan insanlar hiçbir şey yapamıyor, bu kadar bariz hatalar tespit edilemez.

Her neyse, böceklerin uzun tatilinizi mahvetmesine izin vermeyin! MIT araştırma ekibinin yeni araştırmasına dikkat edelim: Önceki yamalardan otomatik olarak öğrenebilen, yama şablonları oluşturabilen ve aday yamaları değerlendirebilen "Genesis" adlı bir sistem geliştirdiler. Araştırmacıya göre, "Genesis, yama oluşturma ve dönüştürme işlemlerini otomatik olarak yapan veya önceden başarılı olan yamalara dayalı olarak aday yama alanlarını arayan ilk sistemdir." En iyi elle yazılmış şablon sisteminden neredeyse iki kat daha fazla hatayı düzeltir. Daha fazla eğitim veriniz ve daha güçlü bilgi işlem gücünüz varsa, daha iyi sonuçlar elde edebilirsiniz ve şimdi programcıların zamanlarının yarısını hataları düzeltmek için harcamalarına izin verebilir.

"Genesis", en iyi el yapımı şablon sistemine göre neredeyse iki kat fazla hatayı düzeltir

Hemen hemen tüm yazılımlarda hatalar ve güvenlik açıkları olacaktır ve zaman zaman "yamalanması" gerekir. Bu hatalar genellikle bazı gözetimden kaynaklanır. Örneğin, program silinen verileri okumaya çalışıyor. Bu yamalar, verilerin hala var olduğunu belirleyen bir kod satırı gibi genellikle çok basittir.

Bu basitlik, bilgisayar bilimcilerini otomatik yama oluşturma olasılığını keşfetmeye başlamaya teşvik eder. MIT'de elektrik mühendisliği ve bilgisayar bilimi profesörü olan Martin Rinard tarafından yönetilenler gibi bazı araştırma ekipleri, yamaların genel biçimini kapsayan şablonlar geliştirdiler. Daha sonra algoritma, bazı aday yamaları oluşturmak ve bunları değerlendirmek için şablonu kullanabilir.

Son zamanlarda, ACM sempozyumunda, öğrencisi Fan Long Rinard ve California Üniversitesi'nden Peter Amidon, San Diego, gerçek yazılımdaki başarılı yamaları analiz ederek oluşturmayı öğrenebilen yeni bir sistemi tanıttı. şablonu.

El kodlu yama oluşturma sistemi 5 veya 10 şablona sahip olabilir ve yeni sistem 85'i oluşturdu, bu da onu daha çeşitli ve daha hassas hale getiriyor. Bu şablonlar, belirli gerçek yama türlerine göre "özelleştirilir", bu nedenle mümkün olduğunca çok sayıda işe yaramaz alternatif üretmezler. Test sırasında, "Genesis" (Genesis) adlı bu yeni sistem, en iyi el yapımı şablon sisteminden neredeyse iki kat daha fazla hatayı düzeltti.

Araştırma raporunun baş yazarı ve MIT'de elektrik mühendisliği ve bilgisayar bilimi alanında yüksek lisans öğrencisi olan Long şunları söyledi: "Değiş-tokuş yapmanız gerekiyor. Bir yandan, sete yararlı yamalar eklemek için yeterli aday oluşturmak istiyorsunuz. Öte yandan, yapmıyorsunuz. Umarım bu set aranacak çok fazla alternatif içerir. "

Araştırmacının açıklaması: İlk otomatik muhakeme yaması oluşturma ve dönüştürme sistemini oluşturan dört büyük katkı

Makalenin özeti:

El ile kodlanmış yamaları işleyebilen ve otomatik yama oluşturmayı sağlamak için kod dönüştürme hakkında otomatik olarak akıl yürütebilen "Genesis" (Genesis) adlı yeni bir sistem öneriyoruz. Gösterdiğimiz sonuçlar, Genesis muhakeme algoritmasının ve 372 Java projesinden toplanan gerçek yamaları ve kusurları işleyen eksiksiz Genesis yama oluşturma sisteminin etkinliğini göstermektedir. Bildiğimiz kadarıyla Genesis, yama oluşturma ve dönüştürme işlemlerini otomatik olarak yapan veya daha önce başarılı olan yamalara göre aday yama alanını arayan ilk sistemdir.

Şekil 1

Şekil 1: Genesis Dönüşümünün örnek muhakemesi ve uygulaması. En üstte eğitim yaması (ilk kod ve yama kodu), ortada çıkarılan dönüşüm ve altta Genesis tarafından oluşturulan yeni yama.

Bu araştırmanın başlıca katkıları şu şekildedir:

  • Dönüşüm için şablon AST ve oluşturucu kullanın : Ücretsiz şablon değişkenleri için yeni değişkenler önermek için şablon AST ve oluşturucu kullanıyoruz. Bu dönüşümler, Genesis'in farklı uygulamalar tarafından çizilmiş birden çok yamada bulunan ortak kalıpları ve stratejileri yakalamak için yamayı ve uygulamaya özgü ayrıntıları soyutlamasını sağlar. Jeneratör, Genesis'in büyük ölçekli pratik uygulamalarda ortaya çıkan hatalar için doğru yamaları elde etmek için gereken yeni kodları ve mantığı sentezlemesini sağlar.

  • Yama genellemesi: Yeni bir yama genelleme algoritması öneriyoruz, bir dizi yama verildiğinde, otomatik oluşturma yamadaki yaygın yama oluşturma modlarının dönüşümünü yakalar. Bu dönüştürme, verilen tüm yamaları ve aynı veya diğer uygulamalarda aynı kalıba sahip diğer yamaları oluşturabilir.

  • Arama alanı muhakemesi: Yeni bir arama alanı muhakeme algoritması öneriyoruz. Algoritma, bir dizi eğitim yamasından başlayarak, birlikte iyi bir kapsama ve işleme kolaylığına sahip aday yamaların bir arama alanını oluşturan bir dizi dönüşüme yol açar. Çıkarım algoritması, genelleme için eğitim yamalarının "gelecek vaat eden" alt kümelerini tanımlayabilen yeni bir örnekleme algoritması ve son arama alanı seçim problemine ILP tabanlı bir çözüm içerir.

  • Tam sistem ve deneysel sonuçlar: Büyük ölçekli gerçek dünya uygulamalarındaki hataları otomatik olarak onarmak için çıkarım arama alanını kullanan hata konumu ve aday yama değerlendirme algoritmaları dahil olmak üzere eksiksiz bir yama oluşturma sistemi sunuyoruz. Ayrıca bu eksiksiz sistemin deneysel sonuçlarını da tanıttık.

şekil 2

Şekil 2: Geçerli bir dönüşüm kümesi seçmek için tamsayı doğrusal programlamayı kullanın.

Bildiğimiz kadarıyla Genesis, yama oluşturma ve dönüştürme işlemlerini otomatik olarak yapan veya daha önce başarılı olan yamalara göre aday yama alanını arayan ilk sistemdir. Tüm deneysel veriler (Genesis kaynak kodu, çıkarım şablonları ve oluşturulan yamalar dahil) şu adresten edinilebilir: elde edin.

Seçim şablonu: düzeltilebilecek hataların sayısı ve oluşturulan işe yaramaz aday yamalarının sayısı arasındaki değiş tokuş

Genesis tarafından eğitilen veri kümesindeki her öğe iki kod bloğu içerir: orijinal, yanlış kod ve onu düzeltmek için yama. Genesis, eğitim örnek çiftlerinin oluşturulmasıyla başlar ve veri setindeki her öğe, diğer öğelerle eşleştirilir.

Daha sonra, Genesis her çifti analiz eder ve orijinal kodun iki yamasını sentezlemesine izin verecek ortak bir temsil - bir taslak şablon - oluşturur. Ayrıca diğer işe yaramaz alternatifleri de sentezleyebilir. Ancak temsil, adaylar arasında başarılı bir yama olacak kadar evrensel olmalıdır.

Ardından, Genesis eğitim setindeki tüm örnekler üzerinde her taslak şablonu test edecek. Her şablon yalnızca iki örneğe dayalıdır, ancak diğer birkaç örnek için de geçerli olabilir. Her şablon iki kritere göre puanlanır: düzeltilebilecek hata sayısı ve ürettiği işe yaramaz adayların sayısı. Örneğin, 4'ü eğitim verilerindeki hataları düzeltebilen 10 aday yama oluşturmak için bir şablon, 1.000 aday oluşturmaya göre daha yüksek bir puana sahip olabilir, ancak yalnızca 5 doğru yama olabilir.

Bu puanlara dayanarak, Genesis en umut verici 500 şablonu seçti. Her biri için, ilk iki eğitim numune setini geliştirmek için diğer numuneleri kullanarak üç numune içeren devasa bir eğitim seti oluşturur. Her numune için, taslak şablonunu daha genel bir şablon oluşturacak şekilde ayarladı. Ardından, en umut verici 500 şablonu çıkarmak için aynı değerlendirme prosedürünü uygulayın.

Bu sürecin dört turundan sonra, en iyi 500 şablonun her biri beş numune seti üzerinde eğitildi. Son tarama, eğitim setindeki her hatanın düzeltilebilmesini sağlamak için biraz farklı değerlendirme kriterleri kullanır. Diğer bir deyişle, son 500 şablonda, yaması yalnızca bir hatayı düzeltebilen bir şablon olabilir ve önceki değerlendirme turundaki puan nispeten düşüktür. Ancak, hatayı düzeltmek için tek şablon buysa, nihai kazanan budur.

Araştırmacıların deneyinde, son tarama şablon sayısını 500'den 85'e düşürdü. Genesis, Java ile yazılmış programları kullanır ve MIT araştırmacıları, performansını en iyi el yazısı Java yama oluşturucularla karşılaştırdı. Genesis, 41 açık kaynak programlama projesinde 49 test durumunda 21 hatayı doğru bir şekilde yamalarken, eski sistem 11 hatayı yamadı.

Daha fazla eğitim verisi ve daha güçlü bilgi işlem gücü varsa - daha fazla aday şablonu değerlendirmek için - daha iyi sonuçlar elde etmek mümkündür. Her durumda, programcıların zamanlarının yarısını koddaki hataları düzeltmek için harcamalarına izin veren bir sistem kesinlikle yararlıdır.

["Erken kayıt biletleri"% 50 indirimli satın almak için orijinal metni tarayın veya tıklayın]

Moğolistan ülke genelinde borçlarını ödüyor, fiyatlar yükseliyor ve yuan tarafından destekleniyor ve şimdi ekonomi umut görebilir
önceki
Alibaba ortağı Jiang Fang: Ali'de, eğer
Sonraki
Zhangjiajie hala böyle oynayabilir mi? Huanglong Mağarası'nın yeraltı harikalar diyarına doğru yürürken, karst mağarası o kadar güzel ki boğuluyor!
Adam 700.000 yuan ödünç aldı ve rutin bir krediye düştü, ödenmeden önce ve sonra 16 milyonu geri ödedi
"El bilgisayarı görüşü umut vericidir" akıllı terminal görüntü tanıma, güzelleştirme ve uygulama envanteri
Milli Futbol Takımının Güney Kore'ye karşı kazandığı zafer, Çin futbolu için kutsanmış bir yer olarak yasaklandı
Hepimiz kendi önyargılarımız içinde yaşıyoruz
İsviçre'ye geldiğimde, birbirimizi geç görmenin ne demek olduğunu anladım!
"Nvidia Neden Jingchi'ye Yatırım Yaptı?" Wang Jin ve Han Xu, Silikon Vadisi'nden Çin'e taşınacak ve insansız araçlar 3 ay içinde Çin'de yollara çıkacak
Piyasada sadece yeni enerji araçları ve küçük yakıtlı araçlar kalsa kimi seçerdiniz?
1000 başarılı erkek üzerinde çalıştım ve 30 yaşından sonra ne kadar iyi yaşarlarsa hepsinin ortak noktaları olduğunu keşfettim.
Nasıl yapılır? Polis deri ve etten yaralandı ve psikolojik bir gölge bıraktı!
Araç numarası ailesi kopyalansın mı? Birçok otomobil sahibi işe alındı!
koz! Delik kartları! Roket Ordusu'nun "dokunma" gücü nasıl oluşturulur?
To Top