İlk Yapay Zeka Kışına neden olan XOR Probleminin çözümü

Ugur Akdogan
Bir Başka Dünya
6 min readAug 19, 2022

--

1950'li yıllarda oluşturulan Perceptron sinir ağı tek katmanlı şekilde çalışıyor ve belli bir sınıflandırma yapabiliyordu.

Perceptron üzerinde daha önceden anlattığımız Logic Gates devrelerinin kural tablosunu eğitmek istediklerinde AND,OR gibi Logic Gates devrelerinde başarılı bir şekilde çalıştı ancak XOR gibi daha kompleks devrelerde yeterli performans gösteremediğinden sınıfta kaldı. Bunun neden olduğunu anlamak için önce Perceptron modelini kavrayalım ve sonrasında nasıl çözüleceğine dair üzerine konuşalım.

Prompt “a robot in the snow storm” @dall-e2

Perceptron Nasıl Çalışır?

Perceptron temel olarak bir threshold değeri ile çalışır — negatif olmayan çıktılar bir sınıfa, negatif olanlar diğer sınıfa konur.

Sinir ağları ve çeşitleri söz konusu olduğunda konuşulacak çok şey olsa da, tek katmanlı Perceptron ile birkaç katmana sahip Perceptron arasındaki büyük farkları vurgulayan XOR Problemini anlatacağız.

Görsel Kaynak

Girdi katmanı

Girdiler, sinir ağımıza verilen veriyi içerir.

Weight ve Bias

Bu parametreler, bir modeli “eğitmek” üzerine güncellediğimiz parametrelerdir. Rastgele bir değerle başlatılır veya 0 değeri verilir fakat işlem devam ettikçe kendini güncellemeye devam eder.

Bias ise bir girdi değerine sahip olmadan hesaplamaya etki eden weight gibi düşünülebilir.

Son değerlendirme

Çıktı hesaplaması şu adımları içerir;

  • Girdi ve Weight değerlerinin çarpımını sağlayın,
  • Çarpıma Bias değerini ekleyin,
  • Ve bu işlemin sonunda çıkan değerlere aktivasyon fonksiyonu uygulayın.
Formül bu şekilde tabir edilebilir.

Aktivasyon Fonksiyonu

Bu işlev, çıktıyı daha anlamlı bir şekilde ölçeklendirmemizi sağlar. Örneğin, basit bir sınıflandırma probleminde, -2,5 ve 8 gibi değerlerin sınıflandırma nezdinde bir anlam taşımadığını biliyoruz. Eğer bu tür problemleri çözmek için Aktivasyon fonksiyonlarından biri olan Sigmoid fonksiyonunu kullanırsak, bu birbirinden uzak gibi görünen değerleri 0 ve 1 arasına sıkıştırabiliriz bu şekilde de belirli bir sınıfa ait bir veri noktasının olasılığı olarak doğrudan yorumlanabilir.

Birçok çeşit aktivasyon fonksiyonu olmasına rağmen, Perceptron modelimiz için basit bir lineer aktivasyon fonksiyonu kullanacağız. Doğrusal aktivasyon fonksiyonunun girdisi üzerinde hiçbir etkisi yoktur ve olduğu gibi çıktı verir.

Sınıflandırma

Perceptron modeli nasıl bir veri kümesini birbirinden ayrıştırablir?

Bir veriyi wX + b ilişkisi ile ifade edebiliriz. Verilerimizi sınıflandıran bir eşik (θ) tanımlarız. Genellikle bu eşik bir Perceptron için 0 değeri alır

Böylece wX + b’nin 0'dan büyük veya 0'a eşit olduğu noktalar bir sınıfa ait olurken, geri kalanı (wX + b negatif) diğer sınıfa ait olarak sınıflandırılır. Bu formülü şu şekilde ifade edebiliriz;

Sınıf 1 : (Veri değeri* verinin kendi weight değeri) + bias değeri ≥ 0
Sınıf 2 : (Veri değeri* verinin kendi weight değeri) + bias değeri < 0

Threshold(eşik) değerinin sınıflandırma üzerine etkisi

Eğitme algoritması

Perceptron modelini eğitmek için verilerimizi doğru sınıflandırdığımızdan emin olmalıyız. Bunun, tüm eğitim verilerinizi deneyip doğru bir şekilde sınıflandırmayacağınız bir sinir ağını nasıl eğiteceğinizden farklı olduğunu unutmayın. Bu, çoğu durumda overfitting(ezberleme) denilen bir şeye yol açar.

Gradient veya Δw’yi hesaplayarak eğitim algoritmasını başlatırız. Δw formülü için gerekenler;

  • node = bu ağırlığa karşılık gelen girdi değeri.
  • (actual - computed) = Gerçek değer ile hesaplanan değer arasındaki fark.
Δw formülü

Yeni weight değerlerimizi, learning rate değeriyle çarpılan hesaplanmış gradyanlarla orijinal ağırlıklarımızı artırarak elde ederiz.

learning rate bizim tarafımızdan belirlenir.

Perceptron modeli bir girdi noktasını doğru şekilde sınıflandırırsa, actual-computed = 0 olur ve weight değerlerimize güncellemeye gerek kalmaz. Bu sebeple de gradyan değerimiz 0 olur.

Özetle Perceptron modelimiz bizden aldığı verilere bir ağırlık değeri olarak gördüğümüz weight değerlerini katıyor ve bu değerlerle yaptığı hesaplamayı doğru mu değil mi diye kontrol ediyor, eğer doğru ise Δw dediğimiz hatayı hesaplayan formülümüzde 0 çıkıyor, yanlış size Δw formülünde hatamız ne kadar ise o kadar değer çıkıyor ve kendini bu hataya bakarak telafi etmeye çalışıyor. En optimum noktayı bulana kadar aynı olay bir döngü halinde devam ediyor.

AND ve XOR Kapısının 2 Boyutlu Düzlemde Gösterimi

1. AND KAPISI

AND Kapısının doğruluk tablosu incelendiğinde sadece A ve B değerinin 1 aldığı zaman sonucunda 1 olduğu gözlemleniyor. Bu değerleri 2 boyutlu düzlemde göstermek istediğimiz zaman karşımıza böyle bir sonuç çıkıyor;

Gördüğünüz üzere problem oldukça basit 1 threshold değeriyle iki sınıfı da birbirinden ayırmak mümkün. İşte Perceptron bu gibi problemlerde Threshold değerini optimize bir şekilde tanımlayabiliyor.

2.XOR Kapısı

XOR Kapısının doğruluk tablosu incelendiğinde sadece A ve B değerinin birbirinden farklı olduğu zaman sonucun 1 olduğu gözlemleniyor. Bu değerleri 2 boyutlu düzlemde göstermek istediğimiz zaman karşımıza böyle bir sonuç çıkıyor;

Burada Perceptron modeli tek bir threshold değeriyle hareket edemiyor çünkü bir adet threshold değeri örnekte görüldüğü gibi yetersiz kalıyor;

Bu sebeple Perceptron modeli bizi AND, OR gibi basit problemlerden farklı olarak, XOR gibi daha karmaşık problemler ortaya koyulduğunda sekteye uğratıyor.

Bu sebeple Yapay Zeka Kışı bir süre devam ediyor. Ta ki tek katmanlı sinir ağları yerine Çok katmanlı sinir ağlarının kullanılması fikri ortaya atılana kadar.

Çok Katmanlı Perceptron

Bir MLP(Multi Layered Perceptron)’nin girdi ve çıktı düğümleri, aktivasyon fonksiyonu ve weight ve bias gibi genel modülleri, bir perceptron modelindeki gibidir.

En büyük fark ise MLP’nin birden çok katmanı ve bu katmanların gizli katman olduğudur.

Gizli Katmanlar

Gizli katmanlar, girdi ve çıktı katmanları dışında kendi bağları olan katmanlardır.Gizli katmanlar doğrusallığı engeller. Gizli katmandaki bir düğüm, bir çıkış düğümünden çok farklı değildir: önceki katmanlardaki düğümler, kendi weight ve bias değerleri ile ona bağlanır ve genellikle bir aktivasyon fonksiyonu ile bir çıktı hesaplanır.

Çok katmanlı bir algılayıcının genel yapısı

Aktivasyon Fonksiyonu

Perceptron modelimizin çıktı düğümünde kullandığımız lineer aktivasyon fonksiyonunu hatırlıyor musunuz? Birkaç daha karmaşık aktivasyon işlevi vardır. En popüler lineer olmayan aktivasyon fonksiyonlarından bazıları olan sigmoid ve tanh fonksiyonlarını duymuş olabilirsiniz.

Aktivasyon fonksiyonları, bir ağın parametrelerinin geri yayılım kullanılarak güncellenebilmesi için türevlenebilir olmalıdır.

Eğitim Algoritması

Çıktı üretme süreci, Perceptron modelinin doğrudan bir uzantısı olsa da, weight değerlerini güncellemek o kadar kolay değildir. Geri yayılımın olaya adım attığı yer burasıdır.

Geri yayılım, çıktı katmanından başlayıp en başa kadar bir modelin weight ve bias değerlerini güncellemenin bir yoludur. Arkasındaki temel ilke, her parametrenin ağın çıktısını ne kadar etkilediğiyle orantılı olarak değişmesidir. Modelin çıktısı üzerinde neredeyse hiç etkisi olmayan bir weight, çok küçük bir değişiklik gösterirken, büyük bir olumsuz etkiye sahip olan bir weight, modelin tahmin gücünü artırmak için büyük ölçüde değişecektir.

Geri yayılım, çıktı katmanından ilk katmana kadar, hata fonksiyonuna göre gradyanlarına dayalı olarak bir modelin ağırlıklarını ve önyargılarını güncellemek için bir algoritmadır.

Geriye yayılım konusuna ilerleyen zamanlardaki yayınlarımızda daha detaylı bahsedeceğiz. Şimdi isterseniz Gizli Katmanlar XOR Problemine nasıl etki ediyor bir bakalım.

Gördüğünüz üzere artık tek bir threshold değerinden daha çok bir alan tanımlanması oluşturuldu. Artık birbirine temas etmeyen iki ayrı 0 sınıfı ve onlardan ayrı olan 1 sınıf var.

Bu yazımızda çok katmanlı perceptron modelinin hayatımıza ve yapay zeka konusuna nasıl bir devrim yarattığını ele aldık.

Yazımızı beğendiyseniz alkışlamayı ve takip etmeyi unutmayın!

Bir Başka Dünya | LinkedIn | Twitter

Uğur Akdoğan | LinkedIn | Twitter | GitHub

--

--