şükela:  tümü | bugün
  • açılımı hypercube-based neat veya tam olarak açarsak hypercube-based neuroevolution of augmenting topologies olan bir yapay zeka (yapay sinir ağı) algoritması.
    neat algoritmasının geliştirilmiş halidir. bu kavramı ilk ortaya atan kişi, neat algoritmasını da geliştirmiş olan ken stanley.
    neat hakkında birşeyler yazmıştım daha önce:
    neat

    öncelikle hyperneat fikri nereden ortaya çıkmış, nasıl birşey ona bakalım.
    hyperneat , bir indirect encoding neural network yani dolaylı kodlama ile oluşturulmuş yapay sinir ağı algoritması.
    dolaylı kodlama şu demek: diğer yapay sinir ağı yöntemlerinden farklı olarak, sinir ağı içindeki nodların (node) arasındaki bağlantıların mimarisi, nodların ağırlıkları, bias değerleri vs direkt olarak ağ mimarisi içerisinde tutulmuyor.
    hemen hemen tüm yapay sinir ağı algoritmaları direkt kodlama kullanırken, hyperneat dolaylı (indirect) kodlama kullanıyor.
    arada cppns olarak kısaltmış başka bir ağ katmanı var. cppns compositional pattern producing networks demek.

    neden bunu yapıyor. temelden gelirsek yapay sinir ağı , insan beynini taklit ederek ortaya çıkmış bir kavram. insan beyni bizim şu anda kullandığımız yapay sinir ağı modellerinden farklı olarak indirect kodlama ile çalışıyor. bunu nereden biliyoruz. insan dna sından. ınsan dna sında yaklaşık 30.000 gen olmasına rağmen 3 milyar amino asit, bu dna ile kodlanabiliyor. ınsan beyni içerisindeki 3 trilyon bağlantı olduğunu düşünürsek, beyin içindeki hangi nöronun hangi noröna bağlı olacağı bilgisinin dna mızda kayıtlı olduğunu söylemek imkansız. dna mızda, insan beyninin karmaşık yapısını oluşturan bir patern var yalnızca. teknik olarak yazarsak, insan dnasının fenotip sonuçları, genotip içeriğinden çok çok daha büyük ve karmaşık.

    hyperneat işte, çok büyük ve karmaşık yapay sinir ağları oluşturmamızı sağlayan bir algoritma. hiçbir donanımın normalde hesaplayamayacağı ve çalıştıramayacağı büyüklükteki sinir ağları oluşturmamızı sağlıyor.

    hyperneat nasıl çalışıyor? gene ortada bir yapay sinir ağı var ama yapay sinir ağının parametrelerini bilmiyoruz ve bu ağ zaten parametrelerini tutabilmemiz için çok büyük olabiliyor. bu parametreler ccpns tarafından her seferinde ayrıca hesaplanıyor.
    biz modelimizi eğitirken, bize esas sonucu üretecek yapay sinir ağını değil, bu ccpns i eğitiyoruz. ccpns de esasında bir yapay sinir ağı ama görevi bizim verdiğimiz problemi çözmek değil, bizim verdiğimiz problemi çözebilecek çok daha karmaşık yapıdaki esas sinir ağını oluşturmak.
    neat bu işin neresinde? şurasında: ccpns i eğitirken işte neat algoritmasını kullanıyoruz. neat algoritması ile oluşturduğumuz yapay sinir ağı , bize esas sonucu verecek , substrate dediğimiz esas sinir ağını oluşturuyor ve biz de bu esas sinir ağını kullanarak problemimizi çözmüş oluyoruz.

    kişisel yorumum ise, oldukça yenilikçi ve başarılı bir algoritma. yapay sinir ağlarına yepyeni bir bakış açısı getirdiğini ve gelecekte, birçok gelişmeye ön ayak olacağını düşünüyorum.