Bir şirketin içinde bulunduğu iş ne olursa olsun, yazılım, envanteri yönetmekten müşterilerle etkileşim kurmaya kadar giderek daha hayati bir rol oynamaktadır. Sonuç olarak, yazılım geliştiricileri her zamankinden daha fazla talep görüyor ve bu, zamanlarını alan daha kolay görevlerin bazılarını otomatikleştirmeye itiyor.
Eclipse ve Visual Studio gibi üretkenlik araçları, geliştiricilerin yazarken işlerine kolayca ekleyebilecekleri kod parçacıkları önerir. Bu otomatik özellikler, binlerce örneği özümsedikten sonra bilgisayar kodunu okumayı ve yazmayı öğrenen gelişmiş dil modelleri tarafından desteklenmektedir . Ancak, açık talimatlar olmadan büyük veri kümeleri üzerinde eğitilen diğer derin öğrenme modelleri gibi, kod işleme için tasarlanmış dil modellerinde de güvenlik açıkları vardır.
MIT Elektrik Mühendisliği ve Bilgisayar Bilimleri Bölümü’nde yüksek lisans öğrencisi olan Shashank Srikant, “Gerçekten dikkatli olmadığınız sürece, bir bilgisayar korsanı bu modellere gelen girdileri herhangi bir şeyi tahmin etmeleri için ustaca manipüle edebilir” diyor. “Bunu incelemeye ve önlemeye çalışıyoruz.”
Yeni bir makalede, Srikant ve MIT-IBM Watson AI Lab, kod işleme modellerindeki zayıflıkları bulmak ve saldırılara karşı daha dayanıklı olmaları için bunları yeniden eğitmek için otomatik bir yöntemi açıkladı. MIT araştırmacısı Una-May O’Reilly ve IBM’e bağlı araştırmacı Sijia Liu’nun, otomatik programlama araçlarını daha akıllı ve daha güvenli hale getirmek için yapay zekadan yararlanma çabasının bir parçası. Ekip sonuçlarını önümüzdeki ay Uluslararası Öğrenme Temsilcileri Konferansı’nda sunacak.
Kendi kendini programlayabilen bir makine, bir zamanlar bilim kurgu gibi görünüyordu. Ancak, bilgi işlem gücündeki üstel bir artış, doğal dil işlemedeki gelişmeler ve internetteki özgür kod bolluğu, yazılım tasarımının en azından bazı yönlerini otomatikleştirmeyi mümkün kıldı.
GitHub ve diğer program paylaşım web sitelerinde eğitilen kod işleme modelleri, tıpkı diğer dil modellerinin haber öyküleri veya şiir yazmayı öğrendikleri gibi programlar oluşturmayı öğrenir. Bu, akıllı bir asistan olarak hareket etmelerine, yazılım geliştiricilerin bundan sonra ne yapacağını tahmin etmelerine ve bir yardım sunmalarına olanak tanır . Eldeki göreve uyan programlar önerebilirler veya yazılımın nasıl çalıştığını belgelemek için program özetleri oluşturabilirler. Kod işleme modelleri, hataları bulmak ve düzeltmek için de eğitilebilir. Ancak üretkenliği artırma ve yazılım kalitesini iyileştirme potansiyellerine rağmen, araştırmacıların yeni yeni ortaya çıkarmaya başladığı güvenlik riskleri oluşturuyorlar.
Srikant ve meslektaşları, kod işleme modellerinin sadece bir değişkeni yeniden adlandırarak, sahte bir yazdırma ifadesi ekleyerek veya modelin işlemeye çalıştığı programlara diğer kozmetik işlemleri ekleyerek aldatılabileceğini keşfettiler. Bu incelikle değiştirilmiş programlar normal şekilde çalışır, ancak modeli yanlış şekilde işleyerek yanlış karar verir.
Hataların, her türden kod işleme modeli için ciddi sonuçları olabilir. Kötü amaçlı yazılım algılama modeli, kötü amaçlı bir programı tehlikeye atması için kandırılabilir. Bir kod tamamlama modeli, yanlış veya kötü niyetli öneriler sunacak şekilde kopyalanabilir. Her iki durumda da virüsler, şüphesiz programcı tarafından gizlice sızabilir. Benzer bir sorun, bilgisayarla görme modellerini de rahatsız ediyor: Bir giriş görüntüsündeki birkaç anahtar pikseli düzenleyin ve diğer MIT araştırmalarının da gösterdiği gibi, model domuzları uçaklar için ve kaplumbağaları tüfekler için karıştırabilir.
En iyi dil modelleri gibi, kod işleme modellerinin de önemli bir kusuru vardır: Kelimeler ve ifadeler arasındaki istatistiksel ilişkiler konusunda uzmandırlar, ancak gerçek anlamlarını yalnızca belirsiz bir şekilde kavrarlar. Örneğin OpenAI’nin GPT-3 dil modeli, belagatandan anlamsızlığa değişen nesir yazabilir, ancak farkı yalnızca bir insan okuyucu söyleyebilir.
Kod işleme modelleri farklı değildir. “Eğer programın kendine özgü özelliklerini gerçekten öğreniyorlarsa, onları kandırmak zor olmalı” diyor Srikant. “Ama değiller. Şu anda aldatmak nispeten kolay.”
Makalede, araştırmacılar, programları işleyen modellerdeki zayıf noktaları ortaya çıkarmak için programları otomatik olarak değiştirmek için bir çerçeve önermektedir. İki parçalı bir optimizasyon problemini çözer; bir algoritma, metin eklemenin veya değiştirmenin modelin en büyük hataları yapmasına neden olduğu bir programdaki siteleri tanımlar. Ayrıca, hangi tür düzenlemelerin en büyük tehdidi oluşturduğunu da belirler.
Araştırmacılar, çerçevenin ortaya çıkardığı şeyin, bazı modellerin ne kadar kırılgan olduğudur. Metin özetleme modeli, bir programda tek bir düzenleme yapıldığında üçte birinde başarısız oldu; Beş düzenleme yapıldığı zamanın yarısından fazlasında başarısız olduğunu bildiriyorlar. Diğer taraftan, modelin hatalarından ders alabildiğini ve bu süreçte potansiyel olarak daha derin bir programlama anlayışı kazandığını gösteriyorlar.
Çalışmanın kıdemli yazarlarından Liu, ” Modele saldırmak ve onu bu belirli istismarlar üzerinde yeniden eğitmek için çerçevemiz , kod işleme modellerinin programın amacını daha iyi kavramasına potansiyel olarak yardımcı olabilir” diyor. “Bu keşfedilmeyi bekleyen heyecan verici bir yön.”
Arka planda daha büyük bir soru kalıyor: Bu kara kutu derin öğrenme modelleri tam olarak ne öğreniyor? “Kodlama konusunda insanların yaptığı gibi akıl yürütüyorlar mı, yoksa onları nasıl yapabiliriz?” O’Reilly diyor. “Önümüzdeki en büyük zorluk bu.”
Alıntıdır bknz: Techxplore
Yorum Yazın!