Yapay Sinir Ağı
Klasik Von Neumann bilgisayar mimarisi ve yazılımlar, sayısal ve sembol işlemede çok başarılı ancak karmaşık algısal problemlerin çözümünde yetersiz kalmaktadır. İnsan beyni ise sayısal ve sembol işlemede daha yavaş kalmasına rağmen karmaşık algısal işlemede, idrak etme ve deneyimlerle kazanılmış bilgileri kullanma konusunda çok hızlı ve başarılı durumdadır. Yapay sinir ağları, algısal işlemlerde başarılı olmak için beyindeki biyolojik sinir ağlarının yapısını, öğrenme, hatırlama ve genelleme kabiliyetlerini taklit eder. Öğrenme işlemi örnekler kullanılarak gerçekleştirilir. Öğrenme sonrasında yapay sinir ağı örüntü tanıma/sınıflandırma (ses, yazı, yüz, şekil, nesne, vb.), kümeleme/gruplama, optimizasyon, tahmin, kontrol, karar, vb. işleri için kullanılabilmektedir.
Yapay Sinir Ağları, basit ve birbirlerine paralel ve dağıtık olarak bağlı ve her biri kendi belleğine sahip çok sayıda yapay nöron işlemcilerden oluşmaktadır. Yapay sinir ağları zaman zaman; sinirsel hesaplama (neural computation), ağ hesaplama (network computation), bağlantılı ağlar (connectionist networks), paralel dağıtılmış ağlar (parallel distributed networks) ve nöromorfik sistemler (neuromorfic systems) ifadeleriyle de anılmaktadır.
Yapay sinir ağlarına herhangi bir örnek giriş verisinin tanımlanabilmesi ve bunun daha sonra kullanılabilmesi için verinin ağda nasıl temsil edildiğini, nerede saklandığını ve nasıl geri alındığının bilinmesi gerekmektedir. Klasik bilgisayarlarda bilgi 1 ve 0 serileri ile temsil edilirken sinir ağlarında matematiksel işlev ile temsil edilir. Sinir hücreleri (işlem elemanları) arasındaki bağlantının ağırlıkları bu işlevin değişkenleri olarak görev yaparlar. Burada ağırlıklar saklanan bilginin ne olduğuna karar verir, fakat kendilerinin bir anlamı yoktur.
Yapay sinir ağlarındaki bilgi, ağ içindeki bağlantılarla ve bu bağlantılara ait ağırlıklar yoluyla dağıtılmaktadır. Klasik bilgisayar bilgiyi belleğinde belirli bir yerde saklar, yapay sinir ağları ise bilgiyi tüm ağ boyunca dağıtır. Bu durum dağıtılmış bellek olarak adlandırılır.
Klasik bilgisayarda bilgi, belirli bellek bölgesine ulaşılarak alınır. Yapay sinir ağlarında ise, bilgi muhtemelen gürültülü ya da tamamlanmamış giriş örneği olarak ağa sunulur. Ağ, giriş ile tüm ihtimalleri birleştirerek en iyi ve en uygun örneği çıkış olarak seçer. Bu çıkış örneği, ağ tarafından giriş örneği hakkında eldeki bilgi olarak temsil edilir. Bu durum ise birleştirilmiş bellek olarak adlandırılır.
Yapay sinir ağlarının en büyük üstünlükleri, öğrenme kabiliyeti olması ve farklı öğrenme algoritmaları kullanabilmesidir. Bulundukları ortama uyum sağlar, adaptif, eksik bilgiyle çalışabilir, belirsizlikler altında karar verebilir, hatalara karşı toleranslı olurlar. Bunun yanı sıra en sık belirtilen sakıncaları ise sistemin çalışmasının analiz edilememesi ve öğrenme işleminde başarılı olunmama riski olmasıdır. Yapay sinir ağlarının üstünlükleri ve sakıncaları aşağıda listelenmiştir.
Avantajları
- Kural tabanı kullanımı gerektirmezler.
- Öğrenme kabiliyeti vardır ve farklı öğrenme algoritmalarıyla öğrenebilirler.
- Görülmemiş çıktılar için sonuç (bilgi) üretebilirler.
- Algılamaya yönelik olaylarda kullanılabilirler.
- Örüntü tanıma ve sınıflandırma yapabilirler. Eksik örüntüleri tamamlayabilirler.
- Bulundukları ortama uyum sağlayarak kendi kendini organize etme ve öğrenebilme yetenekleri vardır.
- Hata toleransına sahiptirler. Eksik veya belirsiz bilgiyle çalışabilirler. Hatalı durumlarda dereceli bozulma (graceful degradation) gösterirler.
- Dağıtık belleğe sahiptirler.
- Paralel çalışabilmekte ve gerçek zamanlı bilgiyi işleyebilmektedirler.
Dezavantajları
- Bir problem için geliştirilen modelin farklı problemlere uyarlanması zor olabilir.
- Örnek bulunamazsa eğitim mümkün değildir. Örnek verilere rağmen ağ mimarisi ve öğrenme kuralından dolayı öğrenme gerçekleştirilemeyebilir.
- Probleme uygun ağ yapısının belirlenmesi genellikle deneme yanılma yoluyla yapılmaktadır.
- Ağın eğitiminin ne zaman bitirileceğine karar vermek için kesin bir yöntem yoktur.
- Sistem içerisinde ne olduğu bilinemez.
- Seri çalışan ve aynı zamanda sadece tek bir bilgiyi işleyebilen bilgisayarlarda performans kaybına yol açmakta. Bu nedenle paralel işlem yapma yeteneğine sahip donanımlar üzerinde çalıştırılmalıdırlar.
- Ağın davranışları açıklanamamaktadır. Bir probleme çözüm üretildiğinde sonucun neden ve nasıl üretildiği hakkında bilgi bulmak mümkün değildir.
- Bazı ağlar hariç kararlılık analizleri yapılamaz.
Biyolojik Sinir Ağı
Biyolojik sinir ağı, nöron isimli bilgi işleme kabiliyeti olan sinir hücrelerinin bir araya gelmesinden oluşmaktadır. Nöronlar (sinir hücreleri) birbirleri ile bağlanarak fonksiyonlarını yerine getirirler. Beynimizde 100 milyar adet nöron bulunduğu tahmin edilmektedir. Bir nöron başka nöronlarla 50.000 - 250.000 arasında bağlantı yapabilmekte ve beynimizde 6x10^13'ten fazla sayıda bağlantı bulunduğu tahmin edilmektedir. Biyolojik sinir ağları insanın bütün davranışlarını ve çevresini anlamasını sağlar. Biyolojik sinir ağları beş duyu organından gelen bilgilerle geliştirdiği algılama ve anlama mekanizmalarını kullanarak olaylar arasındaki ilişkileri öğrenir. İnsan beyninin değişik bölgeleri değişik fonksiyonları yerine getirmektedir. Duyu organlarından gelen sinyallerle okunan bilgiler sinir sistemi aracılığıyla beyine taşınır ve beynin oluşturduğu kararları da yine sinir sistemi tarafından vücudun organlarına sinyallerle eylem olarak gönderilmektedir.
İşlevlerine göre nöronlar 3 ana gruba ayrılmaktadır:
- Duyusal nöronlar: Dış ortamdan koku, tat, dokunma, görme ve ses vasıtasıyla aldıkları bilgiyi beyne iletirler.
- Motor nöronlar: Kasların kasılmasını kontrol ederek hareketi sağlarlar.
- Ara nöronlar (internöronlar): Sinirsel devreleri oluşturarak duyusal nöronlar, motor nöronlar ve merkezi sinir sistemi arasındaki iletişimi sağlar.
Nöronun örnek yapısı aşağıdaki gösterilmektedir.

Temel bir biyolojik sinir hücresi dendritler, soma, akson ve terminal butonlardan oluşmaktadır. Biyolojik sinir hücreleri fiziksel yapılarına göre kabaca aşağıda 4 gruba ayrılmaktadır.
- Çok kutuplu nöronlar
- İki kutuplu nöronlar
- Tek kutuplu nöronlar
- Anaksonik nöronlar
Yukarıda örnek olarak gösterilen nöron, çok kutuplu sinir hücresidir. Çok sayıda dendriti ve tek aksonu vardır. Dendritler, nöron hücresinin diğer nöronlardan bilgi (sinyal) alınmasını sağlamaktadır, yani nöral iletişimin alıcıları olarak görev yapmaktadır. Soma bölgesinde hücre çekirdeği ve hücrenin yaşamsal işlevlerini sağlayan mekanizma bulunur. Soma, giriş sinyallerini genelde doğrusal olmayan yöntemle işler. Nöron hücresi, diğer hücrelere bilgi (mesaj) iletimini akson ile sağlamaktadır. Akson, miyelin tabaka ile çevrelenmiştir. Miyelin tabaka, stoplazma ile hücreler arası sıvı arasındaki kapasiteyi düşürerek, işaretlerin yayılma hızını arttırmaya yarayan yalıtım maddesidir. Miyelinli sinirlerle iletim, miyelinsizlere göre oldukça hızlıdır. İnsan beyninin çalışma frekansı 100 Hz'dir. Miyelin tabaka ile kaplı akson üzerinde her birkaç milimetrede bir yer alan ve işaretleri periyodik olarak yeniden üretmeye yarayan ranvier adı verilen boğumlar vardır.
Aksonun uçlarına terminal buton ismi verilmektedir. Bir nörondan diğerine geçen sinyaller, sinyali yollayan hücrenin terminal butonlarıyla mesajı alan hücrenin dendirit membranı ya da soma (hücre gövdesi) bölümü arasındaki birleşme yerleri olan sinapslar aracılığıyla iletilir/transfer edilir.

Bir sinir hücresinden diğer sinir hücresinin sinir hücresine sinaps üzerinden işaretlerin/sinyallerin taşınmasında neurotransmitter isimli özel verici kimyasal maddelerle sağlanır. Alınan kimyasal madde aracılığıyla alınan işaret hücrenin içindeki elektrik potansiyel değerine (eşik) ulaşırsa akson içine bir işaret gönderir. Buna hücrenin uyarılması denir.
Sinir hücresinin işlevi sinaps aracılığıyla dentrite ulaşan uyarıları alarak, bunlardan aksiyon potansiyeli oluşturmak veya oluşturmamaktır. Aksiyon potansiyeli genel olarak 0,1 mV genliğinde 1 ms elektrik nabzı alır ve akson boyunca 120 m/s hızda hareket eder.
Hareket potansiyeli akson ucundaki sinapsa ulaşınca, darbe-kodlu elektriksel işaretler kimyasal nörotransmitter işaretlere dönüştürülürek sinaps aralığından diğer alıcı sinirlerin dentritlerine geçer. Alıcı sinirin dentritinin zarında kimyasal uyarı elektriksel uyarıya dönüştürülür ve dentrit boyunca hücre çekirdeğine ulaştırılır. Bir sinaps ya uyarıcı (excitatory synapses) ya da baskılayıcı (inhibitory synapses) olabilir. Uyarıcı sinapslar alıcı sinirin aksiyon potansiyelini arttırır, baskılayıcı sinapslar ise alıcı sinirin aksiyon potansiyelini azaltır. Bir sinir hücresinin yüzey zarının iç ve dış tarafında potansiyel fark vardır. Gönderici bitişik sinirin sinapsından gönderilen nörotransmitter kimyasal işaretler sinirin zar potansiyelini ayarlar.
Sinir hücresinin aksonu üzerinden geçen işaretleri değerlendirerek bir işaretin sinir için ne kadar önemli olduğunu belirler. Etkinlik (f(x(t))) ve işaretin (x(t)) nörofizyolojik yorumu potansiyel farkın elektriksel darbelerini ve zamansal toplamlarını içermektedir. İşaretler ise geniş aksonsal darbeleri veya etkinlik (aktivasyon) potansiyellerini içerir. Matematiksel olarak gerçek değerli etkinlik (f(x(t))) sinirin yüzey zarında zamanındaki potansiyel farkını (gerilim) temsil eder. Etkinlik pozitif veya negatif olabileceği gibi teorik olarak sonsuz da olabilir.
İnsan beyninde öğrenme 3 şekilde olur:
- Yeni aksonlar üreterek
- Aksonların uyarılmasıyla
- Mevcut aksonların güçlerini değiştirerek
Sinir Hücresinin Matematiksel Modeli
Sinir hücrelerinin (nöronların) matematiksel modellenmesi ilk olarak 1943 yılında Warren McCulloch ve Walter Pitts tarafından gerçekleştirilmiş olup "McCulloch–Pitts (MCP) neuron", "Binary Threshold Unit", "Threshold Logic Unit (TLU)" veya "Linear Threshold Unit" olarak adlandırılabilmektedir.
TLU nöron modelinde; n adet giriş değeri{x1,x2,x3,...,xn}, n adet ağırlık değeri {w1,w2,w3,...,wn}, 1 adet eşik değeri (T) ve 1 adet çıkış değeri (y) yer almaktadır.

McCulloch–Pitts nöron modelinde; giriş değerleri ağırlık değerleriyle çarpıldıktan sonra toplanıyordu. Elde edilen toplam değeri; eşik değerinden büyükse çıkış değeri "1", eşik değerinden küçük veya eşitse çıkış değeri "0" atanıyordu. Ağırlık ve eşik değerleri sabitti, öğrenme kuralı uygulanmıyordu. McCulloch–Pitts nöron modeli pek çok açıdan biyolojik nörona benzetilmeye çalışılsa da biyolojik nöronun davranışlarını tam olarak gerçekleştirememiştir. McCulloch–Pitts nöron modeliyle biyolojik nöron modeli arasındaki farklılıklar aşağıdaki şekilde listelenebilir:
- Biyolojik nöronlar birim eşik fonksiyonuna göre çalışmazlar, daha çok sınıflandırıcı veya derecelendirici sonuç üretirler
- Biyolojik nöronlar giriş değerleri için doğrusal olmayan toplama fonksiyonu ve mantıksal işlemler uygularlar
- Biyolojik nöronlar basit bir çıkış değeri yerine çıkış sinyalleri serisi (dizisi) üretirler
- Biyolojik nöronlar eşzamanlı olmadan güncellenirler
1958 yılında Frank Rosenblatt, McCulloch–Pitts modelini geliştirerek görüntü tanıma alanında kullanmak üzere "Perceptron" isimli modeli geliştirdi. Perceptron (Algılayıcı) modelinde; McCulloch–Pitts nöronuna öğrenme kuralı ilave edilmiştir. Öğrenme kuralı, 1949 yılında Donald Olding Hebb tarafından yayımlanan "The Organization of Behaviour" isimli çalışmada ortaya konulan Hebbian öğrenme kuralını temel almaktadır. Öğrenme kuralı kullanılarak ağrılık değerlerinin güncellenmesi sağlanmaktadır.
Yapay sinir hücresi modelinde; girişler, diğer sinir hücrelerinden veya dış ortamdan alınan değerleri veya sinyalleri temsil eder. Girişler aynı zamanda özellik (feature) olarak da adlandırılmaktadır.
Ağırlık değerleri, yapay sinir hücresi tarafından alınan girişlerin sinir hücresi üzerindeki etkisini belirleyen katsayılardır. Her bir girişin kendine ait ayrı bir ağırlık değeri vardır. Ağırlıkların büyük ya da küçük olması önemli veya önemsiz olduğu anlamına gelmez. Pozitif ağırlık değerleri uyarıcı sinapsları (excitatory synapses), negatif ağırlık değerleriyse baskılayıcı sinapsları (inhibitory synapses) temsil etmektedir. Ağırlık değerinin büyük olması, ilgili girişin yapay sinir hücresine güçlü bağlanması anlamına gelir. Ağırlık değerinin küçük olması, ilgili girişin yapay sinir hücresine zayıf bağlanması anlamına gelmektedir.
TLU nöronu, giriş değerleriyle ağırlık değerlerinin çarpımlarının toplamını hesaplayıp (v), işlev (aktivasyon) fonksiyonu aracılığıyla, toplama işleminin sonucunu eşik değeriyle (T) karşılaştırır. Ağırlıklandırılmış giriş değerlerinin toplamı eşik değerinden büyükse çıkış değeri "1", eşik değerinden küçükse çıkış değeri "0" olur. Doğrusal eşik fonksiyonu çıkış sinyalinin değerinin ikili değer "1" veya "0" olmasını sağlamaktadır. Genellikle sıfırdan farklı eşik değeri kullanmak uygun olur.
Etkinlik işlevi (aktivasyon) fonksiyonunun sonucu pozitif ise (y > 0) yapay sinir hücresi verilen giriş değerlerinin temsil ettiği örneği pozitif bir örnek olarak algılar (öngörür), eğer sonuç negatif ise (y <= 0) örneği negatif bir örnek olarak algılar. Pozitif ağırlık değerine sahip girişler aktivasyonun artmasına neden oldukları için pozitif örnekleri belirtirler. Negatif ağırlık değerine sahip girişler aktivasyonun azalmasına neden oldukları için negatif örnekleri belirtirler.
Yapay sinir hücrelerinde, etkinlik işlevinin sonuçları ölçek veya sınır işlemlerinden geçirilebilir. Bu ölçeklendirme basitçe bir ölçek etmeni ile etkinlik değerinin çarpımının sonucudur. Sınırlandırma ise, ölçeklenmiş sonuçların enaz ve ençok sınırlarını aşmamasını sağlamaktır.
Yapay sinir hücresinin çıkışı, etkinlik işlevi sonucunun dış ortama veya diğer sinir hücrelerine gönderildiği yerdir. Bir sinir hücresinin sadece bir çıkışı vardır. Sinir hücresinin bu çıkışı, kendinden sonra gelen herhangi bir sayıdaki diğer sinir hücrelerine giriş olabilir.
TLU nöronunun matematiksel formülleri aşağıdaki şekilde gösterilmektedir:

TLU nöronunun kullanıldığı Perceptron modelinde, eşik değerini de giriş gibi göstermek istersek, -1 sabit değerine sahip x0 girişi ve bu girişe bağlı T eşik değerine sahip w0 ağırlık değerini kullanabiliriz.

v = 0 şeklindeki doğrusal fonksiyon n-boyutlu giriş (özellik) uzayını ikiye ayıran karar sınırını (decision boundary / hyperplane) tanımlar. Aşağıda iki boyutlu (2 girişli), 2 sınıflı örüntü sınıflandırma problemine ait doğrunun geometrik gösterimi yer alıyor.

1959 yılında Bernard Widrow ve Ted Hoff, ADALINE (Adaptive Linear Neuron) isimli modeli geliştirdiler. ADALINE ünitesi yapı olarak tek katmanlı doğrusal sınıflandırıcı olan Perceptron ünitesine benzemekte ancak öğrenme kuralı farklıdır.
ADALINE modelinde; giriş değerleri ağırlık değerleriyle çarpıldıktan sonra bias değeriyle toplanıyor. Elde edilen toplam değeri; 0 değerinden büyükse çıkış değeri 1, sıfır değerinden küçük veya eşitse çıkış değeri -1 atanıyor. Aşağıda ADALINE modeli gösterilmektedir.

Perceptron modelinde olduğu gibi ADALINE modelinde de bias değerini giriş gibi göstermek istersek, +1 sabit değerine sahip x0 girişi ve bu girişe bağlı b bias değerine sahip w0 ağırlık değerini kullanabiliriz.

ADALINE nöronunun matematiksel formül aşağıdaki şekilde gösterilmektedir:

Bias değeri, iki sınıfı birbirinden ayıran doğruyu (karar sınırını) başlangıç noktasından uzaklaştırmayı sağlamaktadır.
Günümüzde yapay sinir hücrelerinin toplama ve aktivasyon (etkinlik) fonksiyonları genelleştirildi.
Toplama fonksiyonu, bir yapay sinir hücresine gelen net girdiyi hesaplar. Uygulanacak toplama fonksiyonu yapay sinir ağı modeline bağlı olarak belirlenmektedir. Bir yapay sinir ağındaki bütün hücrelerin toplama fonksiyonu aynı olmak zorunda değildir. Toplama fonksiyonu örnekleri;

Aktivasyon fonksiyonu, hücreye gelen net girdiyi işleyerek hücrenin bu girdiye karşılık üreteceği çıktıyı belirler. Toplama fonksiyonunda olduğu gibi yapay sinir ağındaki tüm hücrelerin aynı aktivasyon fonksiyonunu kullanması gerekli değildir. Aktivasyon fonksiyonu örnekleri;


Tek Katmanlı Yapay Sinir Ağları ve Eğitimi
Tek katmanlı algılayıcılardan oluşan yapay sinir ağları sadece girdi ve çıktı katmanlarından oluşur. Girdi katmanında giriş sinyalleri yer alırken çıkış katmanında ise algılayıcı nöronlar yer almaktadır. Giriş sinyalleri bütün çıkış nöronlarına bağlanmaktadır. Her bağlantının her çıkış nöronu için ayrı bir ağırlık değeri vardır.

Doğrusal sınıflandırıcı (linear classifier) olarak kullanılan tek katmanlı algılayıcı ağlarda, çıkış fonksiyonu ikili (binary) değer üreten fonksiyondur. Çıkış değerleri kullanılan nöron modeline (Perceptron, ADALINE) bağlı olarak {1, 0} veya {-1, 1} değerlerini almaktadır. Çıkış değerleri sınıfları temsil etmektedir. Ağa verilen giriş değerleri iki farklı sınıf arasında paylaştırılarak iki sınıfı birbirinden ayıran doğru veya düzlem bulunmaya çalışılır. Bu durum bir yapay sinir hücresinin sadece iki farklı sınıfı algılayabilmesini sağlamaktadır. İkiden fazla sınıfın algılanabilmesi için, birden çok yapay sinir hücresi kullanılması gerekmektedir.
Eğitim işlemi, nöron hücresinin girişlerine ait ağırlık değerlerinin güncellenmesini kapsamaktadır. Tek katmanlı ağlarda öğrenme kuralı, hata düzeltme prensibini temel almaktadır. Hata düzeltme algoritmasında, temel olarak beklenen çıkış değeri (d) ile hesaplanan çıkış değeri (y) arasındaki farkın (hata değeri) giriş ağırlık değerlerini güncellemesinde kullanılarak hata değeri azaltılmaya çalışılır. Öğrenme kuralında amaç; iki sınıf arasındaki ayırıcı doğrunun veya düzlemin pozisyonunu her iki grubu en iyi şekilde ayıracak şekilde belirlemektir.
Perceptron Öğrenme Kuralı
Aşağıda TLU tipindeki yapay sinir hücresinin (Perceptron - Algılayıcı) çıkış fonksiyonunun formülü gösterilmektedir.

Hem girdi değerleri hem de her girdi setine karşılık beklenen (olması gereken) çıkış değeri eşik değeriyle beraber yapay sinir hücresine gösterilir. Çıkış değeri {1, 0} değerini alabilir. Daha sonra nöronun toplama ve aktivasyon fonksiyonlarına göre gösterilen giriş değerleri için çıkış değeri hesaplanır. Nöronun hesaplanan çıkış değeri beklenen çıkış değerinden farklıysa ağırlık değerleri güncellenir:
(a) Hesaplanan sonuç beklenen sonuçtan büyükse ağırlık değerleri azaltılır
(b) Hesaplanan sonuç beklenen sonuçtan küçükse ağırlık değerleri arttırılır
(c) Hesaplanan sonuç beklenen sonuca eşitse ağırlık değerleri değiştirilmez
Bu işlem bütün eğitim setinde beklenen çıkış ile hesaplanan çıkış aynı olana kadar tekrarlanır. Ancak doğrusal olmayan bir problemde ağırlık güncelleme döngüsü (iterasyon) sonsuz döngüye girebileceğinden, döngü sayısı önceden tanımlı maksimum döngü sayısına ulaşınca işlem durdurulur.

