“…kendinizden akıllı bir makine yapabilmeniz için, makinenin sizden daha karmaşık olması gerekir, dolayısıyla makineyi anlama becerisi giderek azalmaya başlar.”

David Eagleman, Ve.. Sonraki Hayattan Kırk Öykü

Makine öğrenmesinin bir alt dalı olan yapay sinir ağları (YSA), temelinde insan beynindeki nöronların çalışma mekanizmasından esinlenerek yapılandırılmış bir alandır. Günümüzde YSA’lar tarafından desteklenen AI teknolojileri hayatımızın her alanına yayılmış durumda. Özellikle son on yılda; otonom araçlar, görüntü işleme, ses tanıma, sesli asistan, oyun oynama vb. dahil pek çok şeyin temeli haline geldiler.

Hayatımızın içine bu kadar dahil olduklarından dolayı, YSA’ların nasıl işlediğine dair bilgi edinmenin ve bazı genel terminolojileri tanımanın faydalı olabileceğini düşünüyorum.


Yapay Ağların Tanımı

Yapay zekanın amacı François Chollet’in sözleriyle basitçe şöyle: “Normalde insanlar tarafından gerçekleştirilen bilişsel görevleri otomatikleştirme çabası.”

YSA’lar ise bu çabanın temel unsurlarındandır. Konsept olarak insan beyninin mimarisinden esinlenilen yapay ağ algoritmaları, geleneksel algoritmaların başarılı olamadığı görevleri yerine getirme amaçlı bir girişim olarak başladı. Bu girişim, her ne kadar bu yüzyılda popüler olsa da ilk ortaya atılması 1950’lere dayanıyor. İlk kez bu dönemde teorileştirilen algoritmaya ‘perceptron’ adı verilmişti. Temelinde tek katmanlı bir yapay ağ olan perceptron’ları YSA’nın en basit parçası olarak kabul edebiliriz.


YSA’ların Temel Mimarisi

Bir YSA sistemi birçok yapay nöron ve bu nöronlar arasındaki bağlantıdan oluşur. Beyinlerimizi taklit ederek çalışan bu sistem, nöronlar arasındaki bağları kullanarak sınıflandırma ve tahminleme gibi işlemlerde kullanılır.

yapay sinir ağları
Yapay sinir ağının (YSA) temel yapısı — Image by Author

Üstteki görsel bir yapay ağın en temel gösterimidir. Görüldüğü gibi sistem üç temel katmandan oluşmaktadır.

  • Input Layer: İlk katman, veri girişinin yapıldığı kısım.
  • Hidden Layer: Gizli katman olarak isimlendirilen bu kısım sihrin gerçekleştiği yer. Bu katmanlar, girdi ve çıktı değerleri arasındaki ilişkiyi öğrenir ve algoritmanın amacı doğrultusunda işleyebilmesini sağlar.
  • Output Layer: YSA sisteminin verilen girdilere göre sonuçları çıkartan kısmıdır.

Sistemin nasıl çalıştığıyla ilgili kısma geçmeden önce bazı genel terminolojileri de tanıtmak istiyorum:

  • Nöronlar & Bağlantılar — Nöronlar, YSA’nın temel birimidir. Her nöron belirli bir değer taşır ve bir sonraki katmandaki nöronlara iletecek şekilde çıktı üretir. Bu iletimi, nöronlar arasındaki bağlantılar sağlar. Sistemdeki bütün bağlantılar kendisiyle ilişkilendirilmiş bir weight (ağırlık) değeri taşır.
  • Weights (Ağırlık değeri) — Bunlar öğrenme sürecinin bel kemiğidir. Ağırlık değeri nöral ağlar arasındaki gücü temsil eder ve her bir nöronun önemini gösterir. YSA’nın eğitim süreci bu değerlerin optimizasyonuyla ilgilidir.
  • Learning rate (Öğrenme derecesi) — Optimizasyon sürecinin hızıdır.
  • Loss Function/Cost Function (Kayıp ve Maliyet fonksiyonu) — Sistemin eğitim süreci sonrası tahminlerindeki yanlışlığını ifade eden fonksiyonlardır.

Nasıl Çalışır?

Daha önce de belirttiğim gibi, ağırlık değerleri öğrenme sürecinin merkezindedir. Bunların alacağı değerler tahmin gücünü belirler. İlk adımda ağırlık değerleri rastgele olarak atanır. Doğal olarak sistemin ilk tahminleri de normalden epey uzakta çıkar. Bu adımdan sonra, tahmin gücümüzü arttırmak için sistemi eğitmeye başlarız. Eğitim süreci, kısaca girilen verilere göre ağırlık değerlerinin güncellenmesidir. Süreç iki farklı algoritmanın beraber çalışmasıyla işler.

  1. Feedforward (İleri besleme) — tahmin değerini hesaplar.
  2. Backpropagation (Geri yayılım) — kayıp değerini azaltmak üzere ağırlık değerlerini günceller.
yapay sinir ağları
YSA eğitim döngüsü — Image by Author

Pekala, şimdi öğrendiklerimizi bir araya getirebiliriz. İlk olarak, girdi verileri ve rastgele miktarda ağırlık değeri tanımlanır. Sonrasında feedforward başlar. Bu sürecin sonunda elde ettiğimiz çıktı ilk tahmin değeridir. Bu noktada, gerçek veriyle tahmin değeri karşılaştırılarak kayıp değeri hesaplanır. Bu hesap yukarıda bahsettiğimiz loss fonksiyonuyla yapılır. Bu noktada eğitime backpropagation dahil olur.

Backpropagation algoritması, ağdaki her bir ağırlık değerine ait kayıp değerinin türevini hesaplayarak sistemin optimizasyonunu sağlar. Bu türev alma işlemine de gradyan adı verilir. Gradyan tabanlı bu optimizasyon YSA’ların ana motorudur.

Eğitim döngüsü olarak bilinen tüm bu süreç sonunda, güncellenen ağırlık değerleri sayesinde tahmin gücümüzde artar. Sistemden en iyi sonucu alabilmek adına bu döngüyü yüzlerce örnek için onlarca kez tekrarlarız. Böylece, istediğimiz amaca uygun, en az hatayla çalışan bir yapay ağ elde edebiliriz.


Peki Ya Derin Öğrenme?

Yapay ağları duyan herkesin sık sık duyduğu diğer bir isimde derin öğrenmedir. Bu iki terim birbiriyle direkt olarak bağlıdır ama aralarında önemli de bir fark vardır. Basitçe, derin öğrenme çok katmanlı bir YSA sistemini ifade eder. Daha öncesinde perceptron’ların YSA’nın en basit hali olduğundan bahsetmiştim, derin öğrenme sistemleri ise en karmaşık halidir. Ve derin öğrenmedeki ‘derin’, gizli katmanların sayısına bir referanstır.

21. yüzyılda büyük bir ivmeyle gelişen derin öğrenme algoritmaları, gelişen işlemci gücüyle de birlikte olağanüstü sonuçlar elde etmeye devam ediyor. Bu sonuçları ve gelecek vaatlerini de başka bir yazıya saklayalım.


“Yapay zekayı yaratmadaki başarı, insanlık tarihindeki en büyük olay olacaktır. Ancak risklerin önüne nasıl geçeceğimizi öğrenmezsek medeniyet tarihinin son olayı da olabilir.”

Stephen Hawking

Yararlanılan Kaynaklar:

  1. Deep Learning with Python — François Chollet
  2. Deep Learning (Adaptive Computation and Machine Learning series)

Editör: Cansu Köse