Sinir ağlarının " evrensel fonksiyon belirleyicileri " olduğunu duymuş olabilirsiniz . Temelde, Cybenko teoremi, gerçekleri gerçeklerle eşleştiren herhangi bir işlev için, onu sigmoid etkinleştirme işlevlerine sahip bir sinir ağı ile yaklaştırabileceğinizi söylüyor. Aslında, sinir ağlarının bir Turing makinesi tarafından hesaplanabilen herhangi bir işlevi (yani hesaplamak için bir algoritma yazabileceğiniz herhangi bir şeyi) hesaplamanıza olanak sağladığı görülmüştür. Ne yazık ki, bu kanıtlar sadece nöronların ve ağırlıkların sonlu konfigürasyonları için, herhangi bir fonksiyonu yaklaşık olarak alabileceğinizi söylüyor.
Teori güzel ve zordur, ancak sorunuz daha çok bazı fonksiyonların hesaplanmasını bir dizi nöron ve ağırlığa nasıl kodlayacağınızla ilgili gibi görünüyor. Örneklemek için, basit bir örneği düşünün - münhasır veya. XOR iki giriş alır, bu girişleri geçer. Girişlerden biri ve yalnızca biri aktif olduğunda, çıkış düğümü etkinleştirilir. Hem giriş hem de hiçbiri etkinleştirilmemişse, çıkış düğümü etkinleştirilmez.
Üç gizli düğümün farklı şeyler yaptığına dikkat edin. Soldaki ve sağdaki çoğu düğümler, saygıyla giriş düğümleri aktivasyonlarından basitçe geçer. Orta nöron iki girişi alır ve her ikisi de açıksa bir şekilde onları olumsuzlar. Girdilerin bir araya getirilmesi ve yeniden birleştirilmesi bu akıllıca, aslında bir sinir ağında nasıl çalıştığını göstermektedir.
Açıkçası, daha karmaşık fonksiyonlar için birleştirme ve yeniden birleştirmenin daha akıllı ve karmaşık yollarla yapılması gerekir, ancak özünde düşük bir düzeyde olan şey budur. Çılgınca bir şey, hesaplanabilir bir işlevi hesaplamak için ihtiyaç duyduğunuz tek şey bu! Sonra tekrar, turing makineleri de aldatıcı basit olduğu ortaya çıktı ...
Sorun şu ki, bazı keyfi işlevleri hesaplayan sinir ağını sihirli bir şekilde üretecek bir yolumuz yok. Kanıtlar, sadece orada yapabilecek bir ağ olduğunu söylüyor. Yapay sinir ağlarımızı eğitirken, sadece oldukça yakın bir ağ bulmaya çalışıyoruz.
Görüntü tanıma bağlamında, ağa kodlama kalıpları düşünebilirsiniz. Örneğin, '1' sayısını tanımak için, komşu piksellerin kapalı olmasıyla birlikte bir piksel sütununun çoğunlukla veya tamamen etkin olmasını bekleyen gizli bir düğüm hayal edebilirsiniz. Bu gizli düğüm, belirli bir sütundaki düz bir çizgiyi tanımakta oldukça iyi olabilir. Bunları bir araya getirin ve kısa bir süre sonra görüntünüzün yeterli yerinde yapan bir grup düğüme sahip olursunuz, eğer ağa bir tane gösterirsem, '1' i belirten yeterli düz çizgi gizli düğümleri aktif hale gelir. Elbette ki problem, ağı genelleştirmekte ve böylece çeşitli girdi kümelerini tanıyabilmektedir.
Umarım bu, sinir ağının nasıl hesaplamalar yapabileceği ile ilgili kavramları aşağı yukarı anlamanıza yardımcı olur. Bununla birlikte, sinir ağları için oldukça önemli bir noktaya değindiniz: genel olarak ağın neden belirli bir çıktıyı tükettiğini anlamak, özellikle de görüntü tanıma gibi bir şey için ağların genellikle Makinenin hareketli parçalarının her birini anlamak için insanların zorlu bir zaman geçirmesine yetecek kadar büyük. Meseleyi daha da karmaşık hale getiren şey, genel olarak çoğu sinir ağının ağın veriler hakkında öğrenebileceği her küçük özellik için tek bir gizli düğüme sahip olmamasıdır. Bunun yerine, '1' sayısını sınıflandırmak için düz bir çizgi gibi bir şey tespit etmek, birçok gizli düğüm üzerinde merkezileşmemiş bir şekilde gerçekleşir. Diğer algoritmalar
Daha fazla okuma arıyorsanız, bu derste ai junkie'de okumayı şiddetle tavsiye ederim . Sinir ağının nasıl çalıştığının temelleri arasında size yol gösterir ve hatta bir tankı hedefe doğru yönlendirmek için sinir ağlarını elde etmek için basit bir kod örneği verir. Bununla birlikte, eğitim, sinir ağlarını eğitmenin en yaygın yolu olan ve bunun yerine basit bir genetik algoritma kullanan geri yayılımı kapsamamaktadır. Genetik konuşmaya başladığında, okumayı kesebilirsin sanırım ...