AI sistemi, on yıldan fazla bir süredir kodu sıralamak için ilk optimizasyonları tasarladı

Temel bir bilgisayar bilimi dersi almış olan herhangi biri, kuşkusuz bir sıralama algoritması -sırasız bir öğe listesini alıp bunları artan veya azalan sıraya koyan bir kod- tasarlamak için zaman harcamıştır. Bu ilginç bir meydan okuma çünkü bunu yapmanın pek çok yolu var ve insanlar bu sıralamayı olabildiğince verimli bir şekilde nasıl yapacaklarını bulmak için çok zaman harcadılar.
Sıralama o kadar basittir ki, algoritmalar programlama dilleri için çoğu standart kitaplıkta yerleşiktir. Ve LLVM derleyicisiyle birlikte kullanılan C++ kitaplığı söz konusu olduğunda, on yıldan uzun bir süredir koda dokunulmadı.
Ancak Google’ın DeepMind AI grubu, önce insan kodu örnekleri üzerinde eğitim almadan son derece optimize edilmiş algoritmalar geliştirebilen bir pekiştirmeli öğrenme aracı geliştirdi. İşin püf noktası, programlamayı bir oyun olarak ele alacak şekilde ayarlamaktı.
Hepsi bir oyun
DeepMind, diğer şeylerin yanı sıra, kendi kendine oyun oynamayı öğreten bir yazılım geliştirmesiyle dikkat çekiyor. Bu yaklaşımın oldukça etkili olduğu kanıtlanmıştır, satranç kadar çeşitli oyunları fetheder, GitmekVe Yıldız Gemisi. Ayrıntılar, ele aldığı oyuna bağlı olarak değişirken, yazılım kendi kendine oynayarak öğrenir ve skoru en üst düzeye çıkarmasını sağlayan seçenekleri keşfeder.
İnsanların oynadığı oyunlar konusunda eğitilmediği için, DeepMind sistemi oyunlara insanların aklına gelmeyen yaklaşımları keşfedebilir. Elbette, her zaman kendisine karşı oynadığı için, insanların yararlanabileceği kör noktalar geliştirdiği durumlar vardır.
Bu yaklaşım programlama ile çok ilgilidir. Büyük dil modelleri, çok sayıda insan örneği gördükleri için etkili kodlar yazarlar. Ancak bu nedenle, insanların daha önce yapmadığı bir şeyi geliştirmeleri pek mümkün değil. Sıralama işlevleri gibi iyi anlaşılan algoritmaları optimize etmek istiyorsak, o zaman bir şeyi mevcut insan koduna dayandırmak size en iyi ihtimalle eşdeğer performans sağlayacaktır. Ancak yapay zekanın gerçekten yeni bir yaklaşım belirlemesini nasıl sağlarsınız?
DeepMind’daki insanlar, satrançta olduğu gibi aynı yaklaşımı benimsediler ve Gitmek: Kod optimizasyonunu bir oyuna dönüştürdüler. AlphaDev sistemi, kodun gecikmesini bir puan olarak ele alan ve kodun hatasız tamamlanmasını sağlarken bu puanı en aza indirmeye çalışan x86 derleme algoritmaları geliştirdi. Takviyeli öğrenme yoluyla AlphaDev, sıkı ve yüksek verimli kod yazma becerisini kademeli olarak geliştirir.
AlphaDev’in İçinde
Sistemin gecikme için optimize edildiğini söylemek, nasıl çalıştığını açıklamaktan çok farklıdır. Diğer çoğu karmaşık yapay zeka sistemi gibi, AlphaDev de birkaç farklı bileşenden oluşur. Bunlardan biri, geliştirilen kodun genel performansını izleyen bir temsil işlevidir. Bu, algoritmanın genel yapısının yanı sıra x86 yazmaçlarının ve belleğin kullanımını içerir.
Sistem, Monte Carlo ağaç aramasıyla seçilen montaj talimatlarını ayrı ayrı ekler – yine oyun oynama sistemlerinden ödünç alınan bir yaklaşım. Bu yaklaşımın “ağaç” yönü, sistemin çok çeşitli potansiyel talimatların sınırlı bir alanını hızla daraltmasına izin verirken, Monte Carlo o daldan seçilen kesin talimatlara bir dereceye kadar rastgelelik ekler. (Bu bağlamdaki “talimat”ın, geçerli ve eksiksiz bir derleme oluşturmak için seçilen belirli kayıtlar gibi şeyleri içerdiğine dikkat edin.)
Sistem daha sonra montaj kodunun durumunu gecikme ve geçerlilik açısından değerlendirir ve bir öncekinin puanıyla karşılaştırarak ona bir puan atar. Ve takviyeli öğrenme yoluyla, programın durumu göz önüne alındığında, ağacın farklı dallarının nasıl çalıştığına dair bilgilere dayanır. Zamanla, minimum gecikme anlamına gelen maksimum puanla kazanan bir oyun durumuna (tamamlanmış bir sıralama) nasıl ulaşılacağını “öğrenir”.
Bu sistemin ana yararı, eğitiminin herhangi bir kod örneği içermesi gerekmemesidir. Bunun yerine, sistem kendi kod örneklerini üretir ve ardından bunları değerlendirir. Bu süreçte, sıralamada etkili olan talimat kombinasyonları hakkındaki bilgilere dayanır.