Yapay Sinir Ağları: Derin Öğrenmenin Gücünü Keşfedin!

 Yapay sinir ağları, insan beynindeki nöronların iletişimden ilham alınarak yapılmış bir bilgi işlem teknolojisidir. Yapay sinir ağları ile insan beynin öğrenme ve işleme mekanizması taklit edilir. Yani insan beyninin biyolojik yapısı incelenerek oluşturulmuş bir dijital modellenmesidir. İnsan beyninin yaptığı bilişsel işleri -gözlemleme, mantıksal karar verme, düşünme vb.- yaparken bu işlemlerin gerçekleştiği bölgeler diyebiliriz.

 Yukarıdaki insan sinapsına ait bir örnek var. YSA yapılış şekli ve çalışma prensipleri yine aynı şekilde benzerlik göstermektedir. İnsan sinapsları gibi bir alıcı kısmı -input- ve yine sinapslardaki gibi çıkış kısmı bulunur -output- ilk başta dediğim gibi beynin bilişsel işlerini yapabilmektedir. Peki bunu nasıl yapmaktadır? Bunun temel sebebi bir çok öğrenme yöntemi kullanması en temel açıklaması ise deneyerek öğrenme yeteneğidir. İnsan olarak bizim öğrenme şeklimizde deneyimleyerektir ve bunu yapay zekaya da yaptırabiliyoruz. Gelecek yazılarım da öğrenme şekilleri ve bunun prensiplerini işleyeceğim fakat bu yazının konusu değil. Şimdilik isimlerini verebilirim.

1 — Gözetimli Öğrenme (Supervised Learning)

2 — Gözetimsiz Öğrenme (Unsupervised Learning)

3 — Pekiştirmeli Öğrenme (Reinforcement Learning)

Yapay Sinir Ağlarının Tarihi: Geçmişten Günümüze Devrimsel Yolculuğu!

 1943’te McCulloch ve Pitts, nöronun matematiksel modelini geliştirmiş ve bu model, mantıksal sistemlerin temelini oluşturmuştur (Dase ve Pawar, 2010). Ardından 1949’da Donald Hebb, yapay sinir ağlarının öğrenme ile ilişkisini ortaya koyarak Hebbian öğrenme stratejisini geliştirmiştir (Hebb, 1949).

1958’de Rosenblatt, algılayıcı modelini tanıtmış ve bu model yapay zeka çalışmalarına ilham vermiştir. Widrow ve Huff, algılayıcı modelini geliştirerek Adaline modelini oluşturmuşlardır (Dase ve Pawar, 2010). Ancak 1960’larda Minsky ve Pepert, yapay sinir ağlarının doğrusal olmayan problemleri çözemediğini iddia ederek bu alanın duraksamasına neden olmuşlardır (Öztemel, 2003).

 1986’da Rumelhart ve arkadaşları çok katmanlı algılayıcıları geliştirerek XOR problemi dahil birçok sorunu çözmüş ve yapay sinir ağı çalışmalarını yeniden canlandırmışlardır (Rumelhart ve ark., 1986). Günümüzde bu ağlar birçok uygulamanın temel yapı taşı haline gelmiştir.

Gelişim şeklini ise şu şekilde açıklayabiliriz:

      •  

        • Perceptron: Tek katmanlı bir yapay sinir ağının temel birimidir. Eğitebilecek tek bir yapay sinir ağından oluşmaktadır. Bir perceptron giriş değerleri; ağırlıklar, sapma, ağırlıklı toplam ve aktivasyon işlemi olmak üzere dört bölümden oluşur. 1958 yılında Frank Rosenblatt trafından geliştirilen modeldir.

          • ADALINE(ADAptive LINear Element): Yapay sinir ağında aktivasyon fonksiyonu olarak lineer aktivasyon fonksiyonunu yani f(net)=k.net kullanan adaptive lineer network anlamına gelen modeldir. Girdi ve istenilen çıktı desenlerinin tekrar tekrar uygulanması ile eğitim gerçekleştirilir. Desenlerin doğru sınıflara ayrılmasıyla hatalar minimize edilerek yani En Küçük Kareler (Least Mean Square) algoritmasının kullanıldığı bir öğrenme kuralı gerçekleştirilmiştir. 1959’da, Stanford Üniversitesi’nden Bernard Widrow ve öğrencisi Marcian Hoff tarafından geliştirilmiştir.

            • MADALINE(Multi-ADALINE): Aynı hücreden birden fazla kullanılan adaline modelidir. Yine Bernard Widrow ve öğrencisi Marcian Hoff tarafından geliştirilmiştir.

              •  

                • Çok katmanlı algılayıcılar: Tek katmanlı algılayıcıların doğrusal olmayan problemlerin çözümünde başarısız olmasının üzerine geliştirilen çok katmanlı algılayıcılar (ÇKA), bilgi girişinin yapıldığı girdi katmanı bir veya daha fazla (ara) katman ve bir çıktı katmanından oluşmaktadır. ÇKA modeli doğrusal perceptrondaki en küçük kareler algoritmasının genelleştirilmesi olan geri yayılım (back propagation) öğrenme algoritmasını kullanır.

               Şimdi ise yapay sinir ağlarının yapılarını inceleyebiliriz:

              Yapay sinir ağları üç ana katmanda incelenir; Giriş Katmanı, Ara (Gizli) Katmanlar ve Çıkış Katmanı.

               Kullanılacak bilgiler giriş katmanından (İnput layer) iletilir. Ara katmanlarda istenen amaca göre işlenir ve bir sonuç elde edilir. İşlemeden kasıt ağa gelen bilgilerin ağın ağırlık değerleri kullanılarak çıktıya dönüştürülmesidir. Oradan çıkış katmanına iletilir. Ara katmanlara gizli katman yani hidden layer da denilir.

              Birçok nörondan ve gizli katmandan oluşuyorsa buna çok katmanlı sinir ağı (Multilayer Artificial Neural Network) denir. Eğer tek bir katmandan oluşuyorsa tek katmanlı sinir ağı (Single Layer Artificial Neural Network) denir.

              Tek Katmanlı Sinir Ağlarının Çalışma Prensipleri: Temelden İleriye Adım Adım Anlayın!

              En basit sinir ağıdır ve çalışma prensiplerini şu şekilde açıklayabiliriz:

              Girdiler: Ağa giriş yapan bir veya birden fazla veri (x1, x2, x3…) bulunur. Bu verilerin her biri bir veriyi temsil eder.

              Ağırlıklar: Girdiler ağırlıklar adı verilen değerlerle (w1, w2, w3…) çarpılarak yeni değerler elde edilir. Yapay sinir ağı çarpımları sonucu o girdinin önem seviyesini öğrenmiş olur ve bunu güncelleyerek devam eder. Öğrenme kısmını bu şekilde gerçekleştirir.

              Toplama: Girdiler ile ağırlıkların çarpımının sonucudur.

              Net girdi=w1×x1+w2×x2+w3×x3+⋯+wn×xn

              Aktivasyon Fonksiyonu: Toplam sonucu, bir eşik fonksiyonuna uygulanır. Bu fonksiyon ağı çıktıyı eşik değerin üstünde ya da altında olmasına göre ikiye ayırır. Üstünde olduğu zaman çıktıyı ‘1’ , altında olduğu zaman ise ‘0’ döndürür.

              Çıktı: Girilen verilere göre bir sınıflandırma ya da tahmin yapar. Bu yapay zeka türü basit problemleri çözebilir fakat komplike olan problemler için yetersizdir.

               

              Çok Katmanlı Yapay Sinir Ağları (MLP): Derin Öğrenmenin Temel Taşı MLP’yi Keşfedin!

               Çok Katmanlı Yapay Sinir Ağları (Multi-Layer Perceptron – MLP), makine öğrenmesinde sıkça kullanılan ve derin öğrenmenin temelini oluşturan bir yapıdır. Bu ağlar, giriş katmanı, bir veya daha fazla gizli katman ve çıkış katmanından oluşur. Her katman, düğümler (nöronlar) içerir ve her düğüm, önceki katmandaki düğümlerle bağlantılıdır. İşleyiş kısmı tek katmanlı yapay sinir ağlarına benzerlik göstermektedir. Aynı şekilde girdiler alınır, aynı şekilde ağırlıklar ile net girdi hesabı yapılıyor. Farklılık olarak tek katmanlı olanlar bir adet hidden layer içerirken çok katmanlı yapay sinir ağları birden fazla hidden layer içerebilir.

               MLP, denetimli öğrenmede sıklıkla kullanılır ve hataları geri yayılım (backpropagation) yöntemiyle öğrenir. Geri yayılım, her katmandaki hataların geriye doğru yayılmasını sağlar ve ağırlıklar bu hatalara göre güncellenir.

              Evrişimsel Sinir Ağlarını Keşfedin (Convolutional Neural Network): Görsel Tanıma ve Görüntü İşlemenin Gücüne Yolculuk!

               Türkçeye Evrişimsel Sinir Ağları olarak çevrilen Convolutional Neural Network yani kısaca CNN özellikle görüntü tanıma ve işleme problemlerinde kullanılan bir tür yapay sinir ağıdır. CNN’in nasıl çalıştığına gelecek olursak, resimlerin ya da canlı bir görüntünün işlenerek bilgisayarın anlayabileceği bir hale gelmesi gerekmektedir. Bu nedenle bu girdiler ilk olarak matris formatına çevrilir.

               Yukarıdaki örnekte Mona Lisa tablosu görülmektedir. İkisinin arasında ufak bir farklılık vardır. Biz bu resimleri matris olarak verdiğimiz de çok ufak ayrıntıları bile fark etmesini sağlarız. Eğitim ve tahmin aşamalarının temelinde aynı mantık mevcuttur. Resimlerdeki, dolayısıyla matrislerdeki farklılıkları baz alarak sistem hangi resmin hangi etikete ait olduğunu saptar. Bu farklılıkların etiket üzerindeki etkilerini eğitim aşamasında öğrenir ve sonrasında bunları kullanarak yeni resimler için tahminlerde bulunur. Tabi ki de bu aşamaları gerçekleştirmek için CNN’in belli katmanları vardır. Hadi biraz da bunlar hakkında konuşalım

              Convolutional Layer

               Bu aşama kısaca filtreleme aşamasıdır.

               Resimde filtre için kullandığımız matrisi ve başta anlattığım matrise çevirme işleminin sonucunu görüyoruz. Şunu da eklemek isterim sadece burada gördüğümüz 2x2lik dışında da filtreler var. 3×3, 5×5 gibi. Bu filtre uygulaması ise şu şekilde yapılmakta şekildeki Filters denilen matrisi bir birim olacak şekilde input matrisinin üstünde gezdiriyoruz ve filters’ın üstündeki değerler ile çarpıyoruz. Bu değerleri de toplayarak yeni bir matris yapıyoruz. Buna ek olarak görüntü işlemede inputlar genel olarak siyah beyaza çevrilerek verilir. Fakat bazı durumlar da renklerin önemi büyüktür. Örneğin cildin rengine göre olası hastalıkların tahmin edilmesi. Bu durumlar da renkli şekilde işlemek mecbur olmuştur çünkü başka türlü tahmin gerçekleşemez. Eğer renkli verilirse input her bir renk katmanı için yukarıdaki işlemler ayrı ayrı yapılır.

              Pooling Layer

               Convolutional layerdan sonraki ikinci katman Pooling layer’dır (havuzlama katmanı). Pooling katmanı, genellikle öznitelik matrislerine uygulanır. Şekil 4’te, 4×4 boyutunda bir öznitelik matrisi yer almaktadır. Bu matrise 2×2 boyutunda max pooling işlemi uygulanırsa, sağda gösterilen 2×2 boyutundaki matris elde edilir. Pooling için belirlenen boyutlara (Şekil 4’teki gibi 2×2) göre küçük alt matrisler oluşturulur ve bu matrislerin içindeki en büyük değer seçilir. Turuncu ile gösterilen ilk alt matrisin en büyük değeri 6, yeşil ile gösterilen matrisin değeri ise 8’dir. Max pooling en sık kullanılan yöntem olmasına karşın, mean pooling ve min pooling gibi diğer yöntemler de bulunmaktadır. Mean pooling’de matrisin ortalaması alınırken, min pooling’de en küçük değer kullanılır.

              Flattening

               Yukarıda açıklamaları yapılan Convolutional layer ve Pooling layerdan sonra flattening (düzleştirme) kısmı gelir.

               Bu işlemlerden sonra Fully connected katmanında kullanılabilmesi için düzleştirilmesi gerekir. Üstteki şekilde örnek amaçlı flattening işlemini gösterdim. Flattening işleminden sonra fully connected için hazır olmuş oluyor verilerimiz.

               Üstteki şekilde örnek olması amacıyla basic neural networks örneği verdim. Bu yapıya aslına bakarsak basitleştirilmiş fully connected yapısı diyebiliriz. Bunun işleyiş şeklini ise şu şekilde açıklayabilirim. İlk olarak, x1 ve x2 değerleri kullanılarak flattening işlemi gerçekleştirilerek giriş katmanı oluşturulur. Daha sonra, bu giriş katmanından gelen veriler h1 ve h2 ile gizli katmanlar olarak adlandırılan hidden layer’larda, modelin belirlediği katsayılarla (genellikle bir fonksiyon olarak) işlenir. Bu işlemin sonucunda, tanımlanan aktivasyon fonksiyonuna bağlı olarak y, yani çıkış değeri elde edilir.

              Şimdi son ve bana göre en zevkli olan RNN hakkında konuşalım.


              Döngüsel Sinir Ağları (RNN): Zaman Serileri ve Dizisel Verilerde Gizli Dinamikleri Keşfedin!

              Tekrarlayan Sinir Ağları (RNN), yapay zeka ve makine öğrenimi alanında önemli bir yenilik sunan bir modeldir. Zamanla ilişkili verileri işleyebilme yeteneği sayesinde, RNN’ler özellikle dil modelleme, ses tanıma ve zaman serisi analizi gibi alanlarda öne çıkar. Bu ağlar, geçmişteki bilgileri “hatırlama” ve bu bilgileri yeni gelen verilerle birleştirerek tahminlerde bulunma yeteneğine sahiptir. Bu özellikleri, RNN’leri doğal dil işleme (NLP) ve diğer sıralı veri işlemleri için vazgeçilmez kılarak, veriler arasındaki zaman bağlantılarını anlamada kritik bir rol oynamalarını sağlar

              Tekrarlayan Sinir Ağları (RNN), geçmiş verileri gelecekteki tahminlerde kullanma yeteneği ile dikkat çeken bir yapay zeka modelidir. Örneğin, Tesla araçları, sürekli olarak kayıtta olan kameralarının görüntülerini 2–3 saniyelik kesitler halinde inceleyerek, nesnelerin (araba, yaya vb.) milisaniye bazında konumlarını, durma durumlarını ve potansiyel kaza risklerini tahmin edebilir. Bu, RNN’nin zamanla değişen veri dizileri üzerinde çalışırken sağladığı önemli bir avantajdır. Her adımda, RNN, bir “hafıza” mekanizması işlevi görerek önceki bilgileri mevcut işlem durumuna entegre eder. Bu, ağın bir sonraki adımda ne yapacağını belirlemek için geçmişteki bilgileri dikkate almasını sağlar.

              Hidden State: Sinir Ağlarının Bilgiyi Hafızada Tutma Sırrı!

              RNN’nin temel yapı taşlarından biri, “hidden state” (gizli durum) olarak adlandırılan bir bileşendir. Bu birim, ağın önceki adımlardan aldığı bilgileri depolayarak, geçmişte gördüğü verileri bir sonraki adıma iletebilir. Bu sayede, RNN, mevcut girdi ile geçmişteki girdiler arasındaki bağlantıları öğrenebilir. Bu özellik, dil modelleme gibi alanlarda özellikle önemlidir; çünkü bir kelimenin anlamı yalnızca mevcut kelimelerle değil, aynı zamanda önceden gelen kelimelerle de belirlenir

              RNN’nin bu dinamik yapısı, zamanla değişen veri setleriyle çalışma konusunda güçlü bir performans sergilemesine olanak tanır ve bu yüzden doğal dil işleme gibi uygulamalarda vazgeçilmez bir araç haline gelir

              Döngüsel Yapı: Bilgiyi Yeniden Dönüştüren Geri Besleme Mekanizması!

               RNN’nin temelinde döngüsel bir yapı vardır ve bu döngüsel yapı bilgilerin sinir ağının içinde geri beslenmesini sağlar. Her adımda hidden state’in güncellenmesini ve sonraki adıma taşınmasını sağlar. Bu şekilde geçmiş tahminleri gelecek tahminlere dahil edilir. Bu döngü RNN’e zamanla değişen verileri işleme yeteneği kazandırır.

               RNN’nin bu özellikleri, dil modellemesi, ses tanıma ve zaman serisi analizi gibi birçok uygulama alanında değerli kılar. 
              Bunun yanında dezavantajları da vardır tabiki de.

                • Uzun süren training masrafları var. Yapılan her işlem eski işleme bağlı olduğu için paralel bir işleme şekli yoktur. Bu da masrafların artışına sebep olmaktadır.

                • Ufak veri setlerini kullanan RNN’ler fazla uyumluluk gösterme eğilimde olabilirler ve bunlar da yanlış sonuçları doğurabilirler.

               Bu yazıda, elimden geldiğince yapay sinir ağlarına dair temel bilgileri anlaşılır bir şekilde paylaşmaya çalıştım. Elbette bu kadar kısa bir yazı, konuya dair tüm detayları kapsamaya yetmez, ancak umarım bu alana ilgi duyan herkes için faydalı bir giriş olur. Yapay zeka dünyası çok geniş ve derin, bu nedenle daha fazla öğrenmek için sürekli olarak keşfetmeye ve araştırmaya devam etmenizi tavsiye ederim. Umarım bu yazı, sizde de bu konuda daha fazla merak uyandırır. Teşekkür ederim ve bir sonraki yazıda görüşmek dileğiyle!

              Berkay Bayramoğlu

              KAYNAKÇA
              •  
                • Dase, S., & Pawar, D. (2010). Artificial Neural Networks: Mathematical Model of Neurons.
                • Hebb, D. O. (1949). The Organization of Behavior: A Neuropsychological Theory. Wiley.
                • Rumelhart, D. E., Hinton, G. E., & Williams, R. J. (1986). Learning Internal Representations by Error Propagation. Parallel Distributed Processing: Explorations in the Microstructure of Cognition.
                • Öztemel, E. (2003). Yapay Sinir Ağları. Papatya Yayıncılık.
                • Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep Learning. MIT Press.
                • LeCun, Y., Bengio, Y., & Hinton, G. (2015). Deep learning. Nature, 521(7553), 436-444.
                • Dumoulin, V., & Visin, F. (2016). A guide to convolution arithmetic for deep learning. arXiv preprint arXiv:1603.07285.
                • H. G. R. G. (2020). “Recurrent Neural Networks (RNN)”. Artificial Intelligence: Foundations of Computational Agents, 2nd Edition, pp. 256-259.
                • Olah, A. (2015). “Understanding LSTM Networks”. Colah’s Blog. Retrieved from colah.github.io.
                • Cho, K., Van Merriënboer, B., Gulcehre, C., et al. (2014). “Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation”. arXiv preprint arXiv:1406.1078.
                • Lipton, Z. C. (2015). “A Critical Review of Recurrent Neural Networks for Sequence Learning”. arXiv preprint arXiv:1506.00019.
                • https://neptune.ai/blog/recurrent-neural-network-guide

              Yorum Gönderin

              E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir