Sinir ağları algoritmalar tasarlamak için kullanılabilir mi?


9

Masa oyunları oynarken sinir ağlarının daha yeni ve daha yeni başarılarından sonra, belirlediğimiz bir sonraki hedefin Starcraft'ta insanları yenmekten daha yararlı bir şey olabileceğini düşünüyoruz. Daha doğrusu,

Sinir ağları klasik algoritmik problemleri çözmek için eğitilebilir mi?

Burada, örneğin ağın , ağırlıklı kenarları ve iki köşesi ve belirtilmiş bir giriş grafiği alacağını ve mümkün olan en kısa yolunu bulmasını istedik . Sonra sinir ağı Dijkstra ya da benzeri bir şeyi kullanmak için kendini keşfeder ve eğitir.Gstst

Bir yandan sinir ağlarının hesaplama gücününTC0 olduğunu biliyoruz . Öte yandan, bunun mutlaka sorumla ilgili olup olmadığını bilmiyorum. Yine de, çoğu sorun için bunların çözülüp çözülemeyeceğini bilmiyoruz. Bir sinir ağının kendini eğitip edemeyeceğini görmek, hızlı bir algoritma olup olmadığının iyi bir göstergesi olabilir. Örneğin, sinir ağları SAT'ı hızlı bir şekilde çözmek için kendilerini eğitemezse, bu (daha da fazla) olasılığını artırır . Sinir ağının GRAPHISOMORPHISM veya FACTORIZATION ile ne yapacağını merak ediyorum.TC0NPTC0

Tabii ki, algoritmayı çıkarmak tamamen farklı bir soru. Uzmanların bunu nasıl yapacağını bildiklerinden şüpheleniyorum, ancak tartışmak bu sorunun konusu değil.

İki gün sonra eklendi: Cevapları gördükten sonra, olumsuz cevap verirseniz, bilmek istiyorum ki

Satranç oynamak Dijkstra veya Graphisomorphism'den neden daha kolay?


Yorumlar uzun tartışmalar için değildir; bu sohbet sohbete taşındı .
Lev Reyzin

Yanıtlar:


2

Bu bloga göre Reza Zadeh , eğitim örneklerinin sadece üçte ikisinde bile doğru çıktı üretmek için bir sinir ağını eğitmek hesaplama açısından zor:

Gerçekten de, 1988'de J. Stephen Judd NP'nin zor olması için aşağıdaki sorunu göstermektedir:

Genel bir sinir ağı ve bir dizi eğitim örneği göz önüne alındığında, ağın tüm eğitim örnekleri için doğru çıktıyı üretmesi için ağ için bir dizi kenar ağırlık var mı?

Judd ayrıca, eğitim örneklerinin sadece üçte ikisi için doğru çıktıyı üretmek için bir ağ gerektirse bile sorunun NP-zor olarak kaldığını göstermektedir, bu da en kötü durumda bir sinir ağını yaklaşık olarak eğitmenin bile zor olduğunu göstermektedir. 1993 yılında, Blum ve Rivest haberleri daha da kötüleştirir: sadece iki katman ve üç düğümü olan basit bir ağ bile eğitilmesi NP-zordur!


1
Bunun soruma nasıl cevap verdiğini gerçekten göremiyorum.
domotorp

Gönderiyi düzenlemeden önce ilk sorunuz NN eğitimi ile ilgili. CC etiketini eklediğinizden beri, cevabım Algoritmik probleminizin P veya NPC'de olup olmadığına bakılmaksızın NN'yi eğitmenin zor olduğunu gösteriyor
Mohammad Al-Turkistany

Belirsiz olsaydım özür dilerim.
domotorp

0

Bu tam bir cevap değil ve sinir ağlarında çok deneyimli değilim, ama belki de yararlı.

NN'lere esasen bir girdi verilir ve bir yanıt üretir. Daha sonra, alan adındaki "benzer" girdiler, örneğin aynı hayvanın görüntüleri için aynı etiket veya iyi puanların yüksek kazanma şansı anlamına gelen "iyi" satranç pozisyonlarına yönelik yüksek puanlar için benzer yanıtlar üretmek üzere uygulama yoluyla eğitilirler.

Bu yüzden yorumladığım gibi, sinir ağları Turing Makineleri üzerinde çalışan adım adım algoritmalardan tamamen farklı bir şekilde çalışan tek tip olmayan bir hesaplama modelidir. Bunun yerine, bunları Boole yerine sürekli matematik kullanan ve ince ayarlanabilen veya eğitilebilen ve hata yapmalarına izin verilen "yumuşak" devreler olarak düşünün.

Satranç oynamak Dijkstra veya Graphisomorphism'den neden daha kolay?

Kısmen, birinden yeteneklerini en iyi şekilde bir soruya cevap vermesini istemek ve doğru olduğunu kanıtlamakla birlikte tek bir doğru cevabı istemek arasındaki farktır. Kısmen, sabit boyutlu bir sorunu çözme ile aynı anda olası tüm giriş boyutları için sorunu çözme arasındaki farktır.

Dijkstra'lar her boyutta olabilecek bir örnek üzerinde her çalıştığında, çıktısının tek doğru cevap olduğunu ve başka hiçbir şeyin olmadığını kanıtlar . Satranç ve görüntü tanımada kişi, yapabileceği en iyi yanıtı verir ve hatalar tolere edilir. Ayrıca, ağları yalnızca bir seferde bir boyuttaki bu sorunları çözmek için eğitir. Böyle bir sinir ağı çözümünün, tamamen farklı boyut ve şekillerde sorunlu örneklere nasıl genelleştirileceğini bildiğimizi sanmıyorum.

Sinir ağlarının en kısa yolları veya benzer algoritmik problemleri çözemediğini düşünmemeliyiz , ancak problemleri her zaman doğru olan adım adım algoritmadan temelde farklı bir şekilde çözüyorlar.

Sinir ağları ve devreleri arasındaki benzerliğe geri dönersek, devrelerin onlarca yıldır çalışıldığını, ancak önceki sorumun (5) ' ine cevap vermediğine bakılırsa , belirli bir için tamamen doğru devrelerin nasıl inşa edileceği hakkında neredeyse hiçbir şey bilmiyoruz. Tekdüze bir algoritmanın (Turing Machine) bir devreye dönüştürülmesi dışında sorun.


Bir cevaba sahip olmanın bir fark yarattığını düşünmüyorum - iki oyuncu daha kısa bir yol bulabilen yarışarak Dijkstra oynayabilir. Ölçeklenebilirlik daha ciddi bir sorun olabilir - sizce NN'ler NIM'in nasıl oynanacağını öğrenebilir mi?
domotorp

@domotorp, doğru algoritmalar ile yanlış ama yaklaşık sezgisel tarama arasında büyük bir kavramsal ve pratik fark olduğunu düşünüyorum. Satrancın neden en kısa yollardan daha zor olduğunu sormadınız, satrançın neden Dijkstra'dan daha zor olduğunu sordunuz. Re: nim, hiçbir fikrim yok; başlamak için keyfi olarak büyük girişi kabul eden bir NN mimarisine ihtiyacınız var ...
usul

0

Hiçbir şekilde uzman değilim, ama nedenini henüz göremiyorum.

Sinir ağları temelde optimizasyonu daha önce bilinen bir tür "maliyet / fayda modeline" göre yapar. Ayrıca, arama alanı iyi tanımlanmıştır, bilinen geçerli ve geçersiz hareketler ve tanımlanması kolay "varyasyonlar" vardır. AlphaZero ve AlphaGo için bile, maliyet fonksiyonları büyük olasılıkla bir hamle yaptıktan sonra olası tüm hamleler için kazanma oranına ve sonuçta elde edilen kazanma oranlarına veya bunun için bir tür buluşsallığa dayalıdır.

Algoritmalar tasarlamak için, esas olarak programdan, "bir algoritma yürüten" bir programa karşılık gelen doğru bir dizenin (zaten örtülü bir kodlama ve maliyet fonksiyonu ile) nasıl çıktı alınacağını öğrenmesini istersiniz. Bununla birlikte, muhtemelen bir programı uyguladığınız sonsuz sayıda algoritma vardır. Belki de doğru "form koruma" metriklerini tanımlamak istersiniz.

Ancak, bazı programlar için bile, "form koruma" metriklerini tanımlamak biraz zor olabilir. Zaman? Alan kullanımı? "Yan etkiler?" Optimal olarak, yalnızca yapmasını istediğiniz şeyi yapan "en kısa programı" oluşturacaksınız .

Doğru fitness metriklerini ve ayarlama algoritmalarını bulursanız, bunu yapabileceğinizi varsayalım.


-3

"sinir ağları" bir vektörü bir boyutlu uzaydan başka bir boyutlu uzaya dönüştürür. bu nedenle, oldukça doğrusal olmayan fonksiyon tahmin edicilerinden başka bir şey değildir. sinir ağları bile kayıp minimizasyonu için yaklaşık algoritmalar kullanır. ancak yeni algoritmalar tasarlamak için sinir ağlarını eğitmek söz konusu değildir. tomas mikolov bu alanda yığın artırılmış tekrarlayan sinir ağı ile bazı çalışmalar yaptı ve ben de bu alan için "nöral turing makineleri" duydum. ancak en uygun stratejileri bulmak, sorunuzla biraz ilgili olan pekiştirici öğrenmenin incelenmesinin temel nedeni olmuştur. ancak yeni algoritmalar tasarlamak için sinir ağlarını kullanmak mümkün değildir, en azından yakın gelecekte.


Bence uygun bir oyun için en uygun strateji, ilgili sorun için en uygun algoritma ile aynıdır.
domotorp

@domotorp "strateji" bir algoritmadan daha sezgiseldir
riemann77

-6

Ben bir QA Otomasyon mühendisiyim, bu nedenle sinir ağlarında uzmanlık talep etmeyin, ancak tatolojik olarak evet NN'nin kendisi algoritmalar oluşturabilir. İnsanların kendileri bir düzeyde NN'dir ve algoritmalar yaratırız, bu nedenle yarattığımız yapay NN sistemlerinin kendilerinin algoritma oluşturabilmesinin mantığı anlamına gelir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.