Bir sinir ağı “evet” veya “hayır” cevabından fazlasını sağlayabilir mi?


11

Okuduğum görüntü tanıma için her örnek sinir ağı basit bir "evet" veya "hayır" yanıtı üretir. Bir çıkış düğümü "Evet, bu bir insan yüzü" ve diğeri "Hayır, bu bir insan yüzü değil" anlamına gelir.

Bunun açıklamanın basitliği için muhtemel olduğunu anlıyorum, ancak böyle bir sinir ağının daha spesifik bir çıktı vermek için nasıl programlanabileceğini merak ediyorum. Diyelim ki hayvanları sınıflandırıyordum. Bunun yerine "Hayvan" veya "Hayvan değil" demek yerine, "Köpek", "Balık", "Kuş", "Yılan" vb. Gibi yanıtlar almak istiyorum, son çıkış düğümü "Hayvan değil / Ben bunu tanıma ".

Bunun mümkün olması gerektiğine eminim, ama nasıl olduğunu anlamakta zorlanıyorum. Bir çıkış düğümünü eğitirken (yani, "Bu bir köpek") ve nöronların ağırlıkları değiştikçe, daha önce yaptığınız başka bir çıkış düğümü için ideal durum olarak, hatanın geri yayılımının eğitim algoritmasından kaynaklanıyor gibi görünüyor. eğitimli (yani, "Bu bir kuştur") sapmaya başlar ve bunun tersi de geçerlidir. Böylece ağı bir kategoriyi tanıyacak şekilde eğitmek, başka bir kategori için yapılan herhangi bir eğitimi sabote ederek bizi basit bir "Evet" veya "Hayır" tasarımıyla sınırlar.

Bu böyle bir tanıyıcıyı imkansız kılıyor mu? Yoksa algoritmayı yanlış mı anlıyorum? Aklıma gelen sadece iki şey:

  • Ya sınıflandırılmasını istediğimiz her şey için bir sinir ağını eğitebilir ve bir şekilde daha büyük, süper bir ağ inşa etmek için kullanabiliriz (örneğin, "köpek" için bir ağ, "kuş" için bir ağ, vb. "hayvanlar" için süper ağ oluşturmak üzere bir araya getirin); veya,

  • İnanılmaz derecede gelişmiş matematik gerektiren ve bir şekilde tüm olası çıktılar için ideal bir nöron ağırlık durumu üretecek (başka bir deyişle insert math magic here) gülünç derecede karmaşık bir eğitim metodolojisi oluşturun .

(Yan not 1: Özellikle çok katmanlı algılayıcılara bir tür sinir ağı olarak bakıyorum.)

(Yan not 2: İlk mermi "olası çözüm" için, her bir sinir ağına sahip olmak ve "Evet" yanıtı alana kadar bunları yinelemek yeterince iyi değildir. makine öğrenimi yerine programlama. bunun olması mümkün olup olmadığını bilmek istiyorum bir bilgi beslemek ve uygun yanıt almak için sinir ağı.)

Yanıtlar:


15

Sadece unvanını cevaplamak için, evet. Sinir ağları boolean olmayan cevaplar verebilir. Örneğin, sinir ağları sayısal bir cevap olan böylelikle evet / hayır'dan daha fazla olan borsa değerlerini tahmin etmek için kullanılmıştır. Sinir ağları, çıktının bir dizi karakterden (tüm alfabe, sayılar ve noktalama işaretleri) biri olabileceği el yazısı tanımada da kullanılır.

Örneğinize daha fazla odaklanmak için - hayvanları tanımak - bunun mümkün olduğunu söyleyebilirim. Bu çoğunlukla el yazısı tanıma örneğinin bir uzantısıdır; bir şeklin özelliklerini tanır ve hangi eşleşmeleri görmek için bunları "ideal" şekillerle karşılaştırırsınız. Konular teorik olmaktan ziyade tekniktir. El yazısı, tanıma yazılımı ile çalıştırıldığında, genellikle bir dizi çizgiye ve eğriye eşlenir - hoş ve basit. Hayvan yüzlerini tanımak daha zordur, bu nedenle gözler, burun, ağız, kaba kafatası anahatları vb.Gibi özellikleri elde etmek için görüntü işleme mantığına ihtiyacınız olacaktır.

En iyi seçeneğiniz muhtemelen Uyarlamalı Rezonans Teorisi gibi şeylere bir göz atmaktır. Genel ilke, duyusal girdinin (bu durumda, çeşitli yüz özelliklerinin göreceli boyutu, şekli ve aralığına ilişkin metrikler), o şey sınıfını tanımlayan bir "prototip" veya şablonla karşılaştırılmasıdır. Duyusal giriş ile hatırlanan şablon arasındaki fark belirli bir eşiğin altındaysa ("uyanıklık parametresi" ile tanımlandığı gibi), gözlemlenen nesnenin şablon tarafından temsil edilen grubun bir üyesi olduğu varsayılır; hiçbir eşleşme bulunamazsa, sistem daha önce görülmemiş bir tür olduğunu bildirir. Bu tür ağ hakkında güzel olan şey, bir nesnenin, örneğin bir at olduğunu fark ettiğinde, atları tanıma hakkında daha fazla bilgi edinebilmesidir, böylece arasındaki farkı söyleyebilir,

DÜZENLE:

(Tam açıklama amacıyla: Bunu hala bir proje için araştırıyorum, bu yüzden bilgim hala eksik ve muhtemelen yerlerden biraz uzakta.)

bu, daha önce eğitilmiş başka bir düğümün ağırlıklarını bozan bir çıkış düğümü için geri yayılım ayar ağırlıklarıyla nasıl bağlantı kurar?

Şimdiye kadar okuduğum kadarıyla, SANAT paradigması biraz farklıdır; biri girişleri, diğeri de çıktıları öğrenen iki bölüme ayrılmıştır. Bu, eşleşmeyen bir girdi kümesiyle karşılaştığında, taahhüt edilmemiş bir nöronun girdi ile eşleşecek şekilde etkinleştirildiği ve ayarlandığı, böylece nöronun bir dahaki sefere eşleşmeyi tetikleyeceği anlamına gelir. Bu katmandaki nöronlar sadece tanıma içindir. Bu katman bir eşleşme bulduktan sonra, girişler, yanıtı hesaplayan katman olan alttaki katmana verilir. Durumunuz için, bu katman muhtemelen çok basit olacaktır. Baktığım sistem araba kullanmayı öğreniyor. Bu aslında iki tür öğrenmedir; biri çeşitli durumlarda araba kullanmayı öğrenmek, diğeri ise durumu tanımayı öğrenmek. Örneğin,

Önceden öğrenilen davranışları bozmadan yeni girdileri öğrenme fikri, istikrar / esneklik ikilemi olarak bilinir. Bir ağ öğrenilmiş davranışı koruyacak kadar kararlı olmalı , ancak koşullar değiştiğinde yeni şeyler öğretilebilecek kadar plastik olmalıdır. ART ağlarının çözmesi tam da budur.


Harika cevabınız için teşekkürler! Peki bu, önceden eğitilmiş başka bir düğümün ağırlıklarını bozan bir çıkış düğümü için geri proposyon ayar ağırlıklarıyla nasıl bağlantı kurar? Yoksa yanlış bir şekilde mi düşünüyordum?
asteri

@Jeff Cevabıma biraz ekledim. Özellikle detaylı değil, korkuyorum - bunu hala kendim öğreniyorum. Yine de, sorunuz zaten bildiği bir şeyi nasıl tanıyacağınızı unutmadan yeni bir şeyi tanımak için bir ağ eğitmek istediğinizde istikrar / plastiklik ikilemi ile ilgilidir ve Uyarlanabilir Rezonans Teorisi tam olarak bu sorunu çözmeyi amaçlamaktadır, bu yüzden muhtemelen bakmaya değer.
anaximander

3

@ anaximander'ın cevabı oldukça iyi, sorunuzun bu kısmı hakkında yorum yapacağımı düşündüm:

Bir çıkış düğümünü eğitirken (yani, "Bu bir köpek") ve nöronların ağırlıkları değiştikçe, daha önce yaptığınız başka bir çıkış düğümü için ideal durum olarak, hatanın geri yayılımının eğitim algoritmasından kaynaklanıyor gibi görünüyor. eğitimli (yani, "Bu bir kuştur") sapmaya başlar ve bunun tersi de geçerlidir. Böylece ağı bir kategoriyi tanıyacak şekilde eğitmek, başka bir kategori için yapılan herhangi bir eğitimi sabote ederek bizi basit bir "Evet" veya "Hayır" tasarımıyla sınırlar.

Sanırım burada varsayımınız yanlış; doğru anlarsam, sınıflandırmaya çalıştığınız kategori başına bir çıkışı olan bir NN'niz olur. İdeal olarak, neredeyse bağımsız çalışmalarını istersiniz, böylece "köpek" ve "kuş" sınıflandırması aynı anda tetiklenmez. Yani gerçekten, eğitim sırasında, NN'yi bir "köpek" sonucu ile eğitirken, geri yayılımın "kuş" ve diğer çıkış nöronlarının yanlış pozitifler üretmemesini sağlamaya çalışmasıdır. Yani, teorik olarak, yorumunuzun aksine gayet iyi çalışacaktır; "kuş" için olumsuz bir sonucun pekiştirilmesi doğrudur.

Ancak, sorununuz bu yaklaşımın ölçeklenebilirliği olacaktır. Ağa daha fazla kategori ekledikçe, eğitim en azından doğrusal (ama muhtemelen çok daha kötü) bir şekilde daha karmaşık hale gelecektir. Bu nedenle, birçok kişi her bir kategori için bireysel NN'lerin eğitildiği bir yaklaşım kullanır; bu, işleri yeterince basit ve nispeten ölçeklenebilir tutar. Bunların nasıl birleştirildiğinin meta seviyesi size bağlıdır. Tüm NN'leri kolayca döngüleyebilir ve hangilerinin pozitif çıktılar ürettiğini görebilirsiniz, sizin için hayvan türünü daraltmaya çalışan orta düzey sezgisel NN'ler oluşturabilir veya hatta bireysel NN'leri nöron olarak birleştiren dev bir NN bile olabilir . Özünde, söylemeye çalıştığım şey, sorunun yapısı hakkında önceden bilgi sahibi olmanızdır - bireysel sınıflandırmalar muhtemelen birbirinden farklıdır;

EDIT: Başlık sorusunu cevaplamak için, elbette NN'ler evet / hayır cevaplarından daha fazlasını sağlayabilir. "Standart" modellerde, her bir çıkış nöronu tipik olarak evet / hayır (her ne kadar eğimli olsaydınız bu davranış değiştirilebilse de), bir bit bilgiyi temsil eder; ancak tıpkı bilgisayarınızda olduğu gibi, bitler, istediğiniz herhangi bir şekilde yorumlanabilecek bir dizi farklı değer sağlamak için birleştirilebilir. İkili olmayan çıktıların oldukça görsel bir örneği, tipik olarak bir 2D çıktıya sahip olan Kendiliğinden Düzenlenen Harita olacaktır .


Cevabınız için teşekkürler. İstediğim kadar çok çıkış düğümüne sahip olabileceğimi biliyordum, ancak hata algoritmasının (tüm ağırlıkları istenen bir sonuca göre ayarlayarak) geri programlamanın doğası nedeniyle, bir sınıflamanın öğrenilmesinin diğerini öğrenemeyeceğinden endişeliydim.
asteri

1

Kısa ve çok katı olmayan bir cevap: evet her NN sadece daha fazla bilgi sağlayabilir yesveya no. Bunun nedeni eşik değeridir. Ağırlıklar bazı eşik değerlerden daha yüksekse, cevap sınıflandırma sınıflarından biridir, eğer daha düşükse cevap ikinci sınıflandırma sınıfıdır. Temelde:

    0..threshold 
    threshold..1

Neuron'un çıkışı [0..1] aralığındadır (veya [-1,1] 'e bağlıdır) ve çıktının eşik değerinden daha düşük veya daha yüksek olup olmadığı (sizin çıktınız kolayca 0..1 aralığına dönüştürebilir ve bu% 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.