Artificial Neural Networks

Artificial Neural Networks

Yapay Sinir Ağları, günümüzün en popüler makine öğrenimi algoritmalarıdır. Bu sinir ağlarının icadı 1970’lerde gerçekleşti, ancak şu anda neredeyse her yerde bulundukları için hesaplama gücündeki son artış nedeniyle büyük popülerlik elde ettiler. Kullandığınız her uygulamada, sinir ağları güçlü bir arayüzle bağlanmanızı sağlar.

İlk nörobilgisayarın mucidi Dr. Robert Hecht-Nielsen bir sinir ağını şu şekilde tanımlar:

“… bilgileri harici girdilere dinamik durum tepkileri ile işleyen, basit, birbiriyle son derece bağlantılı işleme öğelerinden oluşan bir bilgi işlem sistemi.”

Basic Structure of Artificial Neural Networks (ANNs)

ANN fikri, insan beyninin doğru bağlantıları yaparak çalışmasının, canlı nöron ve dendrit olarak silikon ve teller kullanılarak taklit edilebileceği inancına dayanmaktadır.

İnsan beyni, nöron adı verilen 86 milyar sinir hücresinden oluşur. Aksonlar tarafından diğer bin hücreye bağlanırlar. Dış çevreden gelen uyarılar veya duyu organlarından gelen girdiler dendritler tarafından kabul edilir. Bu girdiler, sinir ağında hızla dolaşan elektrik uyarıları yaratır. Bir nöron daha sonra mesajı başka bir nörona gönderebilir veya iletiyi iletmez.

ANN’ler, insan beyninin biyolojik nöronlarını taklit eden çoklu düğümlerden oluşur. Nöronlar bağlantılarla bağlıdır ve birbirleriyle etkileşime girerler. Düğümler giriş verilerini alabilir ve veriler üzerinde basit işlemler gerçekleştirebilir. Bu işlemlerin sonucu diğer nöronlara aktarılır. Her düğümdeki çıktıya aktivasyon veya düğüm değeri denir.

Her bağlantı ağırlık ile ilişkilidir. ANN’ler, ağırlık değerlerini değiştirerek gerçekleşen öğrenme yeteneğine sahiptir. Aşağıdaki şekilde basit bir ANN gösterilmektedir.

Yapay Sinir Ağları, insan beyninden sonra modellenen özel bir makine öğrenme algoritması türüdür. Yani tıpkı sinir sistemimizdeki nöronların geçmiş verilerden nasıl öğrenebildikleri gibi ANNs de verilerden öğrenip tahminler veya sınıflandırmalar şeklinde yanıtlar verebilir. Görüntü tanıma, konuşma tanıma, makine çevirisi ve tıbbi teşhis gibi çeşitli görevler bu yapay sinir ağlarını kullanır.

ANNs’lerin önemli bir avantajı, örnek veri setlerinden öğrenmesidir. ANNs’lerin en yaygın kullanımı, rastgele fonksiyon yaklaşımıdır. Bu tür araçlarla, dağıtımı tanımlayan çözümlere ulaşmak için uygun maliyetli bir yöntem elde edilebilir. ANNs ayrıca çıktı sonucunu sağlamak için tüm veri kümesinden ziyade örnek verileri alabilir. ANNS ile, gelişmiş tahmin yetenekleri sayesinde mevcut veri analizi teknikleri geliştirilebilir.

Yapay Sinir Ağlarının işleyişi, sinir sistemimizde nöronların çalışma şekline benzer. Sinir Ağları, Warren S McCulloch ve Walter Pitts’in bu terimi icat ettiği 1970’lerin başlarına kadar uzanıyor. ANN’lerın işleyişini anlamak için önce nasıl yapılandırıldığını anlayalım. Bir sinir ağında üç temel katman vardır.

Input Layers

Giriş katmanı(input layer), giriş bilgilerini çeşitli metinler, sayılar, ses dosyaları, görüntü pikselleri vb. biçiminde alan bir ANN’nın ilk katmanıdır.

Hidden Layers

ANN modelinin ortasında gizli katmanlar(hidden layer) bulunur. Algılayıcı veya birden çok gizli katman durumunda olduğu gibi tek bir gizli katman olabilir. Bu gizli katmanlar, giriş verileri üzerinde çeşitli matematiksel hesaplamalar gerçekleştirir ve parçası olan kalıpları tanır.

Output Layer

Çıktı katmanında(output layer), orta katman tarafından yapılan titiz hesaplamalarla elde ettiğimiz sonucu elde ederiz.

Bir sinir ağında, modelin performansını etkileyen çok sayıda parametre ve hiperparametre vardır. ANNs çıktıları çoğunlukla bu parametrelere bağlıdır. Bu parametrelerden bazıları weight, bias, learning rate, batch size vb .’dir. ANNS’deki her düğümün bir ağırlığı(weight) vardır.

Ağdaki her düğümün kendisine atanmış bazı ağırlıkları vardır. Girişlerin ve sapmanın ağırlıklı toplamını hesaplamak için bir transfer fonksiyonu kullanılır.

Transfer fonksiyonu toplamı hesapladıktan sonra, aktivasyon fonksiyonu sonucu alır. Alınan çıktıya bağlı olarak, etkinleştirme işlevleri düğümden uygun sonucu ateşler. Örneğin, alınan çıktı 0.5’in üzerindeyse, aktivasyon işlevi 1’i ateşler, aksi takdirde 0 kalır.

Yapay Sinir Ağlarında kullanılan popüler aktivasyon işlevlerinden bazıları Sigmoid, RELU, Softmax, tanh vb.

Düğümün ateşlediği değere bağlı olarak, son çıktıyı elde ederiz. Ardından, hata işlevlerini kullanarak, tahmin edilen çıktı ile ortaya çıkan çıktı arasındaki tutarsızlıklarını hesaplıyoruz ve geri yayılım(back propagation) olarak bilinen bir işlemle sinir ağının ağırlıklarını ayarlıyoruz.

ANNs, Derin Öğrenme olarak bilinen Makine Öğreniminde yeni ortaya çıkan bir alanın parçasıdır.

Back Propagation in Artificial Neural Networks

Bir sinir ağını eğitmek için, ona girdi-çıktı eşleme örnekleri veriyoruz. Son olarak, sinir ağı eğitimi tamamladığında, bu haritalamaları sağlamadığımız sinir ağını test ediyoruz. Sinir ağı çıktıyı tahmin eder ve çeşitli hata fonksiyonlarını kullanarak çıktının ne kadar doğru olduğunu değerlendiririz.
Sonuca göre model zincir kuralı üzerinden gradyan inişini takiben ağı optimize etmek için sinir ağlarının ağırlıklarını ayarlar.

Types of Artificial Neural Networks

İki önemli Yapay Sinir Ağı türü vardır:

  • FeedForward Neural Network
  • FeedBack Neural Network

FeedForward Neural Networks

İleri beslemeli(FeedForward) ANN’lerde, bilgi akışı yalnızca bir yönde gerçekleşir. Yani, bilgi akışı girdi katmanından gizli katmana ve son olarak çıktıya doğrudur. Bu sinir ağında hiçbir geri bildirim döngüsü yoktur. Bu tür sinir ağları çoğunlukla sınıflandırma, görüntü tanıma vb. durumlar için denetimli öğrenmede(supervised learning) kullanılır. Bunları, verilerin doğası gereği sıralı olmadığı durumlarda kullanırız.

FeedBack Neural Network

Geri besleme(FeedBack) ANN’lerde, geribildirim döngüleri bunun bir parçasıdır. Bu tür sinir ağları, Yinelenen Sinir Ağları(Recurrent Neural Networks(RNN) durumunda olduğu gibi, esas olarak bellek tutma içindir. Bu tür ağlar, verilerin sıralı veya zamana bağlı olduğu alanlar için en uygun olanıdır.

Machine Learning in ANNs

ANNs’ler öğrenme yeteneğine sahiptir ve eğitilmeleri gerekir. Birkaç öğrenme stratejisi var.

Supervised Learning - ANNs’lerin kendisinden daha bilgili olan bir öğretmeni içerir. Örneğin, öğretmen, öğretmenin cevapları zaten bildiği bazı örnek veriler ile verileri besler.

Örneğin, örüntü tanıma(pattern recognizing). ANN, tanıma yaparken tahminlerle gelir. Sonra öğretmen ANN’ye cevapları sağlar. Ağ daha sonra tahminlerini öğretmenin “doğru” yanıtlarıyla karşılaştırır ve hatalara göre ayarlamalar yapar.

Unsupervised Learning Bilinen yanıtlarla örnek veri kümesi olmadığında gereklidir. Örneğin, gizli bir örüntü aramak için kullanılır. Bu durumda, kümeleme, yani bir dizi öğeyi bilinmeyen bir modele göre, mevcut veri kümelerine dayalı olarak gruplara ayırma gerçekleştirilir.

Reinforcement Learning Bu strateji gözlem üzerine inşa edilmiştir. ANN, çevresini gözlemleyerek bir karar verir. Gözlem olumsuz ise ağ, bir dahaki sefere farklı bir gerekli kararı verebilmek için ağırlıklarını ayarlar.

Back Propagation Algorithm

Eğitim veya öğrenme algoritmasıdır. Verilen örneklerden öğrenir. Algoritmaya ağın ne yapmasını istediğinize dair bir örnek gönderirseniz, ağın ağırlıklarını değiştirir, böylece eğitimin bitiminde belirli bir girdi için istenen çıktıyı üretebilir.

Back Propagation ağları basit Pattern Recognition ve Mapping Tasks için idealdir.

Bayes Networks

Bu tür sinir ağları, olasılığı hesaplamak için Bayesian Çıkarımını kullanan olasılıklı bir grafik modele sahiptir. Bu tür Bayes Ağları, Belief Ağları olarak da bilinir. Bu Bayes Ağlarında, bu tür rastgele değişkenler arasında bulunan olasılık bağımlılıkları temsil eden düğümleri birbirine bağlayan kenarlar vardır. Etkinin yönü öyledir ki, bir düğüm diğerini etkiliyorsa, o zaman aynı etki çizgisine düşerler. Her düğümle ilişkili olasılık, ilişkinin gücünü belirler. İlişkiye dayalı olarak, grafikteki rastgele değişkenlerden çeşitli faktörlerin yardımıyla çıkarım yapılabilir.

Bu ağların uyması gereken tek kısıtlama, yönlendirilmiş yaylar üzerinden düğüme geri dönememesidir. Bu nedenle, Bayes Ağları Directed Acyclic Graphs (DAGs) olarak anılır.

Bu Bayes Ağları, çok değerli değişkenleri idare edebilir ve iki boyuttan oluşur.

  • Range of Prepositions
  • Her preposition’nın atanmış olma olasılığı.

Sonlu kümenin her değişkeni X = {x1, x2… xn} ile gösterilecek ve her X değişkeni, Değer {x1} olacak şekilde sonlu kümede bulunan değerlerden alacak şekilde sonlu bir rastgele değişkenler kümesi olduğunu varsayalım. Xi değişkeninden Xj değişkenine yönlendirilmiş bir bağlantı varsa, Xi, Xj’nin bu değişkenler arasındaki doğrudan bağımlılıkları gösteren ebeveyni olacaktır.

Bayesian Networks’ün yardımıyla, önceki bilgilerle birlikte gözlemlenen veriler birleştirilebilir. Bayes Ağları temel olarak nedensel ilişkileri öğrenmek ve ayrıca alan bilgisini anlayıp gelecekteki olayı tahmin etmek için kullanılır. Bu, eksik veri durumunda bile gerçekleşir.

Sinir Ağlarının Avantajları ve Dezavantajları

Makine Öğrenimi için Yapay Sinir Ağının birkaç avantajını ve dezavantajını görelim:

  • Sinir ağları, doğrusal ve doğrusal olmayan verilerle iyi performans gösterir, ancak sinir ağlarının, özellikle robotikte yaygın bir eleştirisi, gerçek dünya operasyonları için çok çeşitli eğitim gerektirmeleridir. Bunun nedeni, herhangi bir öğrenen makinenin yeni vakalara genellemesine izin veren temel yapıyı yakalamak için yeterli temsili örneklere ihtiyaç duymasıdır.

  • Sinir ağları, bir veya birkaç birim ağa yanıt vermede başarısız olsa bile çalışır, ancak büyük ve etkili yazılım sinir ağları uygulamak için, çok sayıda işleme ve depolama kaynağının işlenmesi gerekir. Beyin, bir nöron grafiği aracılığıyla sinyalleri işleme görevine göre uyarlanmış donanıma sahipken, Von Neumann teknolojisinde en basitleştirilmiş bir formu simüle etmek bile bir sinir ağı tasarımcısını bağlantıları için milyonlarca veritabanı satırını doldurmaya zorlayabilir - bu da çok miktarda tüketebilir bilgisayar belleği ve sabit disk alanı.

  • Sinir ağı, analiz edilen verilerden öğrenir ve yeniden programlamaya ihtiyaç duymaz ancak bunlara kara kutu(black box) modelleri denir ve bu modellerin gerçekte ne yaptığına dair çok az fikir verir. Kullanıcının sadece girdiyi beslemesi ve eğitmesini izlemesi ve çıktıyı beklemesi gerekir.