Spiking Neural Networks
Spiking Neural Networks
Günümüzde kullanılan sinir ağlarının 3 nesli bulunuyor. Bu nesillerden ilki (Perceptron), eğitilebilecek tek bir yapay sinir hücresinden oluşan Perceptron adı verilen yapılardır. Perceptron sistemde bulunan nöronların 0 veya 1 gibi sonucu belirli bir eşik değerini (threshold) geçmesiyle elde edilen sonuçlardır. İkinci nesil (ANN) sinir ağları ise günümüzde aktif bir şekilde kullanılmaya devam eden, Artificial Neural Networks (ANN) olarak bilinen yapılardır. Üçüncü nesil (SNN) yapay sinir ağları ise insan beynini çalışma prensiplerini tam olarak taklit etmeye çalışan ve spike’lar ile iletişim kuran Spiking Neural Networks yapısıdır.
YSA (Yapay Sinir Ağları)
Beyin, insan vücudunun en temel parçalarından biridir. Beyin bir nörondan aldığı sinyal girdisini işler ve bu sinyalin değerlendirilmesi ile biyolojik bir süreç sonrasında çıktı sinyali üretir. YSA’lar da insanların biyolojik nöral ağını taklit etmeyi amaçlar. YSA, nöronları taklit eden yapay nöronlardan ve bu nöronların bağlantısındaki ara bağlantıların katsayılarından (ağırlıklardan) oluşur. Bir YSA’nın bilgisi, sinaptik ağırlıklar olarak bilinen nöronlar arası bağlantının güçleri içinde depolanır.
Temel anlamda yapay sinir ağları 3 kısımdan oluşur bu kısımlar:
Girdi Kısmı ( Input Layer ) : Bilgiler alınıp gizli katmana iletilir.
Gizli Kısmı ( Hidden Layer ) : Girdi kısmından alınan bilgi işlenir. Gizli katmanın sayısı istenilen problemin çözümüne göre değişiklik gösterebilir.
Çıktı Kısmı ( Output Layer ) : Gizli katmandan gelen bilgileri işleyerek sonuç üretir.[1]
Yapay Sinir Ağları lineer bir katmanlı yapısı bulunan, bir katmandan alınan sonucun diğer bir katman için girdi olarak kullanıldığı ve sonuçların hesaplanması aşamasında büyük vektör çarpımlarının gerçekleştiği bir alandır. Günümüzde Yapay Zeka problemlerinin çözümünde ağırlıklı bir şekilde kullanılmaktadır.
Bu kısma kadar 1. ve 2. nesil sinir ağlarından bahsetmiştik. Şimdi ise 3. nesil sinir ağları olarak da bilinen Spiking Neural Network’lerden (SNN) bahsedeceğiz.
SNN (Spiking Neural Networks)
Spiking sinir ağları (SNN) ilk olarak hesaplamalı nörobilimde biyolojik nöronların davranışını modelleme girişimi olarak ortaya çıkmıştır. Bu durum, sinirsel aktiviteyi alınan ani voltajların ve çevreye zayıf dağılımın (sızıntının) entegrasyonu olarak tanımlayan Leaky-Integrate-and-Fire (LIF) modelinin oluşturulması ile sonuçlanmıştır.
SNN’lerin genel bir lineer yapısı bulunmamaktadır. Bu anlamda bir girdi katmanı ve çıktı katmanı dışında belirli bir başka katmanı yoktur. Düzgün katmanlar yerine, döngüler veya çok yönlü bağlantılar gibi nöronlar arasında veri iletmek için daha karmaşık yapılara sahiptirler. Daha karmaşık oldukları için farklı türde eğitim ve öğrenme algoritmaları gerektirirler. Spike davranışına uyum sağlamak için geri yayılım (backpropagation) benzeri yaklaşımlarda değişiklik yapmak gerekmektedir.[3]
Toplanan veriler aynı zamanda gelmiyor ise yani belirli bir zaman aralığı içerisinde aşama aşama gelen bir veri söz konusu olduğunda YSA’nın yetersiz kaldığı durumlar ortaya çıkmaktadır. Bir örnek verecek olursak gün içerisinde bir güvenlik ağına gelen erişimlerden alınan veriden, bu ağa yapılan herhangi bir saldırının veya bir anormalliğin tespiti durumunda zaman içinde akan bir veri geleceğinden, bize herhangi bir zamandaki veriyi alıp o zamana göre bir çıktı üretebilecek yapılar gerekmektedir. SNN’ler bu aşamada devreye girer.
SNN’ler ilk dönemlerde sinir bilim alanında, nöronlarımızın işleyişini taklit etme amacıyla ortaya atılmıştır. Bu yapılar belirli zamanlarda ayrık bir olay şeklinde oluşan spike’lar kullanarak haberleşirler. Spike oluşumu diferansiyel fonksiyonlar ile belirlenir. SNN içinde bulunan her nöron her döngüde ateşlenmez, her girdi için bir ağırlık değeri hesaplanır. Bu ağırlıklandırılmış girdi değerlerinin toplamı membrane potential olarak bilinir. Membrane potential kullanıcı tarafından belirlenmiş olan bir eşik değerine (threshold) ulaşamadığında ateşlenme işlemi gerçekleştirilmez. Eşik değerinden büyük ya da eşit ise ateşlenme işlemi gerçekleştirilir ve çıktı değeri üretilir. SNN, özellikle canlı veri akışlarından (time- related) zamanla ilgili verilerle uğraştığınız zamanlar için özel olarak tasarlanmıştır.
Eğitim Aşaması
SNN eğitim aşamasında ateşlenen nöronların alanın daha çok genişlemesi, ateşlenmeyen nöronların ise baskılanması üzerine bir mantık kuruludur.
Bu sistemlerdeki nöronlar belirli bir sınıra gelene kadar ateşlenmez, bu sınır Spike-Time Dependent Plasticity(STDP) algoritması kullanılarak hesaplanır ve ateşlenir.
STDP beynin sinapsları modifiye ederken kullandığı biyolojik süreçtir. Bu süreçte temel 2 kural bulunur.
Ateşlenmeye katkı veren sinapsların güçlendirilmesi (ağırlığının arttırılması)
Ateşlenmeye katkı vermeyen sinapsların zayıflaması (ağırlığının azaltılması)
işlemine dayanır.
Peki bu STDP algoritması kullanılacak donanıma nasıl uyarlanıyor ?
Memristör
Kayıp devre elemanı olarak da bilinen memristörler akıma göre dirençleri değişen bir çeşit dirençtirler diyebiliriz. Çalışma mantıkları şöyledir: Memristörün manteyik akı ile yük arasında kurulan ilişki, içinden geçen yük miktarına bağlı olarak değeri değişen bir direnç gibi davranacağını söyler. Ancak memristörün daha önemli özelliği, akım geçip gittikten ve bittikten sonra dahi bu değeri aklında tutabilmesidir. Sonuç olarak, akımın geldiği yönden direncin azaldığı, akımın geçtiği yönün tersine ise direncin arttığı bir yapıdır.
Memristör fikrini ilk kez 1971′de California Üniversitesi’nden Elektrik Mühendisi Leon Chua ortaya atmıştı. Ancak dönemin koşullarında memristör fikri hayalden öteye gidememişti. 2008 de ise Hp çalışanları tarafından memristörün geliştirilmesi onu gündeme taşımıştır.
STDP ile Memristörün Kullanımı
İletkenliğin (ağırlık) değişimi, memristörlere uygulanan sadece bir voltaj darbesi ile ilgilidir. Sinapsların bir başka plastisitesi ise spike‐timing‐dependent plasticity (STDP). STDP, sinaps öncesi ve sonrası nöronların aktivitelerine dayalı olarak sinaps ağırlığını modüle eder. Hem prenöron hem de postnörondan gelen sivri uçlar bazen ters yönde sinapsa ulaşır.
STDP’de, sinaptik ağırlığın değişimi, göreceli nöron spike zamanlamasının işlevidir.
Δt (Δt = tpre − tpost) [4]
Burada tpre, presinaptik nöron artışının geldiği zamandır ve tpost, postsinaptik nöron artışının geldiği zamandır. Tipik bir STDP davranışında, eğer postsinaptik nöron artışı, presinaptik nöron artışından sonra gelirse (Δt < 0) Sinaptik ağırlık artar. Postsinaptik nöron artışı, presinaptik nöron çıkışından (Δt > 0) önce gelirse, sinaptik ağırlık azalır.[4]
Memristöre dayalı elektronik sinapsta, iki elektrot aracılığıyla memristöre voltaj yükselmeleri veya darbeler uygulanır, bu, memristörün iletkenliğini modüle eder ve iletkenlik değişikliği, voltaj yükselmelerinin veya darbelerinin göreceli zamanlaması ile ilgilidir.
Memristörler, biyolojik sinaptik sistemlere benzer STDP işlevini gerçekleştirebilir.
SNN Avantajları
Enerji Verimliliği : SNN’ler belirli zamanlarda spike şeklinde haberleştiğinden ve devamlı bir haberleşme yapısı olmadığından enerji konusunda daha verimlidir.
Alan Verimliliği : SNN’ler ANN için kullanılan büyük vektör çarpımlarını içermediğinden alan bakımından daha verimlidir.
Hata Toleransı : Oluşan hataların öğrenilmesi ile her nöronun ağırlığı değiştiğinden daha dinamik bir hata yakalama mekanizması bulunur.
Şimdi ise SNN’in farklı bir türü olan ve gözetimli (supervised) ve gözetimsiz (unsupervised) algoritmalar kullanarak çalışan, enerji ve alan bakımından SNN’e kıyasla daha verimli olan OeSNN yapısından bahsedeceğiz.
Online Evolving Spiking Neural Network
Online Evolving Spiking Neural Networks akan bir veride günümüz problemlerinin çözümlerinde kullanılır.
OeSNN’lerin temel farkı girdi ve çıktı katmanları içerseler de OeSNN’lerde bu katmanlarda bulunan nöronların sayısı sınırlıdır. OeSNN mimarisinin girdi katmanı GRF (Gaussian Receptive Fields) ve girdi nöronlarından oluşur. GRF’in amacı girdi değerlerinin ateşleme zamanını ve ateşleme sırasını kodlamaktır. Girdi nöronlarının ateşleme sırası daha sonrasında sinapsların ağırlıklarını ilklendirmede kullanılır. Bu değerler girdi verisinin sınıflandırılması için kullanılacaktır.
Sisteme her gelen bir girdi için aday çıktı nöronu üretilir. Bu aday nöron eğer sistemde bulunan başka bir çıktı nöronuna benziyorsa bu nöron ile birleştirilir. Aday çıktı nöronu var olan çıktı nöronlara benzemiyorsa bu durumda sisteme yeni bir çıktı nöronu olarak eklenebilir.
Sisteme çıktı nöronu ekleme işlemi ancak sistemin maksimum çıktı nöronu sayısına ulaşılmamışsa gerçekleştirilir. Sistemde daha çok ateşleme gerçekleştirilen nöronların alanı artar. Bu işlem üretilen aday çıktı nöronlarının sistemde bulunan benzer nöronlar ile birleştirilmesi olarak da değerlendirilebilir. Bir çıktı nöronu daha önce alınan girdiler ile ne kadar fazla birleştirme işlemi gerçekleştirmiş ise o nöronun önemi daha çok artacaktır.[5]
OeSNN’deki nöron sayısı üzerindeki sınırlamaya, genellikle çok sayıda girdi verisinin işlendiği ve katı bellek gereksinimlerinin mevcut olduğu veri akışı değerlerinin sınıflandırılması gereksinimleri sebep olmuştur.
Excitation function (Ateşleme Fonksiyonu) sistemde x olarak belirtilen bir zaman akışlı veride gelen en son verinin daha önceki verilerle olan ilişkinin ortalama ve standart sapma kullanılarak hesaplanması işlemi olarak bilinir. Bu işlemin sonucunda girdilerin ateşleme zamanlaması ve ateşleme sırası belirlenir.
Ortalama değerinin hesaplanması için I^Wmax ve I^Wmin değerleri yani girdi olarak alınabilecek maksimum ve minimum değerler ve NIsize: Maksimum girdi nöronu sayısı değerleri kullanarak hesaplanır.
Ateşlemeler sonrasında daha çok kullanılan nöronların ağırlıklarının güncellenmesi işleminde Wnjni parametresi sinapslar arası ağırlığı temsil eder. Mni değeri ise oluşan her bir aday çıktı nöronun sistemde bulunan başka bir çıktı nöronuna benzediği için birleştirilme işlemi sonrasında arttırılan bir counter (sayıcı) parametresidir.
Sonuç olarak her bir çıktı nöronu benzer bir aday nöron ile birleştirildiğinde Mni değeri arttırılır ve bu durum nöronlar arası sinapsların ağırlıklarının Mni değeri ile orantılı olarak artmasına yol açar.
Uygulama Alanları
SNN’lerin potansiyel uygulamaları çok fazladır, çünkü zamanla ilişkili olan her şey için kullanılabilirler. Örneklendirmek gerekirse:
Otonom Robot Navigasyonu: Robot, çevresiyle ilgili (engellerin ne kadar uzakta olduğunu söyleyen) canlı LIDAR girdilerini alır ve amacı, engellerden kaçınarak ve nerede olduğunu hatırlayarak çevreyi olabildiğince keşfetmektir.
Bir ağdaki noktalar arasındaki en kısa yolları hesaplama: Bu uygulamada, grafik ağları (geleneksel olarak yönlendirme algoritmaları için kullanılır), uzaydaki noktalar nöronlara, mesafeler ise belirli bir sinaps ile ilişkili gecikmelere dönüştürülür. [3]
Salgının yayılmasını modellemek: Burada nöronlar bir popülasyondaki bireylerdir, sinapslar paylaşılan sosyal bağlantılardır, sivri uçlar enfeksiyonun bulaşmasıdır ve parametreler farklı koşulların modellenmesine izin verir. Günümüz koşullarından dolayı, bu şu anda özellikle umut verici bir araştırma alanıdır. [3]
Zorluklar
- İmplemente etme işlemleri ANN’lere göre daha zordur.
- Spike/activation algoritmaları ile yaygın olarak bilinen eğitim aşamaları yapılıyor olsa bile bu durum bilinen ANN’lerden ne kadar farklı olduklarının sorgulanmasına yol açmıştır.
- Alınan sonuçlar ANN’e kıyasla yeterli performansı gösteremiyor.
- Programlamada kullanılan yapılar daha çok yeni ve başlangıç dönemlerindeler.
- Şifreleme ve öğrenme teknikleri üzerine daha fazla çalışma yapılması gerekiyor.
- Zaman değişkeninin eklenmesi SNN nöron modellerini YSA modellerinden daha karmaşık hale getirir. Ayrıca, YSA’nın hesaplanması zamanın örneklenmesiyle oluşturulduğundan, her örnekleme zamanında, algoritmik hesaplama, verilerin getirilmesi ve ara değişkenlerin depolanmasıyla zamanla çoğullanabilen mevcut donanım kaynakları kullanılarak gerçekleştirilir. Bununla birlikte, SNN’de ani artışlar, çoğullanamayan paralel donanım kaynakları gerektiren gerçek zamanlı olarak oluşturuldukları gibi işlenmelidir. Bu işlem, sistemin ölçeğinin büyütülmesi, donanım kaynaklarının modüler olarak genişletilmesiyle yapılabilir. [6]
ANN ve SNN’in Karşılaştırılması
Aşağıda bulunan tablo ANN’ler ve SNN’ler arasındaki Veri İşleme, Gecikme, Nöral Model Karmaşıklığı ve Güç Tüketimi gibi temel ayırt edici özelliklerin bir karşılaştırmasını içerir.
Referans
[1]https://medium.com/@tharanignanasegaram/artificial-neural-network-a-brief-introduction-572d462666f1
[2]https://rriyakumar.medium.com/building-a-number-detecting-neural-network-d69c813d59a5
[3]https://towardsdatascience.com/learning-about-spiking-neural-networks-for-time-based-data-at-the-grace-hopper-celebration-2020-68ba58fac5bb
[4]https://www.intechopen.com/books/memristor-and-memristive-neural-networks/spike-timing-dependent-plasticity-in-memristors
[5]Piotr S. Maciąg, Marzena Kryszkiewicz, Robert Bembenik, Jesus L. Lobo, Javier Del Ser, Unsupervised Anomaly Detection in Stream Data with Online Evolving Spiking Neural Networks, Neural Networks,Volume 139, 2021, Pages 118–139, ISSN 0893–6080.
[6]https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6747825/
[7]https://devhunteryz.wordpress.com/2018/12/21/ignecikli-sinir-aglarispiking-sinir-aglari/
[8]https://towardsdatascience.com/deep-learning-with-spiking-networks-optimising-energy-consumption-50588b4435fd
[9]https://medium.com/@k.ulgen90/makine-%C3%B6%C4%9Frenimi-b%C3%B6l%C3%BCm-3-4b160df1f4c8
Co-author :
Yorumlar
Yorum Gönder