• Hakkımızda
  • Yazı Gönder
  • Sizden Gelenler
  • İletişim
Yazılım Karavanı | Bilim - Teknoloji - Mühendislik
  • Anasayfa
  • Genel
  • Programlama
    • Ruby
    • Flutter
    • Android
    • Java
    • MySQL
    • Oracle SQL
  • Yaşamdan
  • Algoritmalar
  • Yapay Zeka
  • Topluluklar
No Result
View All Result
  • Anasayfa
  • Genel
  • Programlama
    • Ruby
    • Flutter
    • Android
    • Java
    • MySQL
    • Oracle SQL
  • Yaşamdan
  • Algoritmalar
  • Yapay Zeka
  • Topluluklar
No Result
View All Result
Yazılım Karavanı | Bilim - Teknoloji - Mühendislik
No Result
View All Result
Home Yapay Zeka

Numpy ile Sıfırdan Adım Adım Yapay Sinir Ağı

Emre İnaç by Emre İnaç
Şubat 26, 2021
in Yapay Zeka
8 min read
0
Numpy ile Sıfırdan Adım Adım Yapay Sinir Ağı
WhatsApp'ta PaylaşTwitter'da PaylaşLinkedIn'de PaylaşTelegram'da Paylaş

Merhaba arkadaşlar, bu yazımda öncelikle sizlerle bir yapay sinir ağı nedir ve sıfırdan bir yapay sinir ağı nasıl oluşturulur konularını ele alacağız.

1. Yapay Sinir Ağı Nedir?

Sinir ağı, insan beyninin çalışma şeklini taklit eden bir süreç aracılığıyla bir veri kümesindeki temel ilişkileri tanımaya çalışan bir dizi algoritmadır.

Bu anlamda sinir ağları, doğası gereği organik veya yapay olan nöron sistemlerini ifade eder. Sinir ağları değişen girdilere uyum sağlayabilir; böylece ağ, çıktı kriterlerini yeniden tasarlamaya gerek kalmadan mümkün olan en iyi sonucu üretir.

ysa

Şekil.1

Yapay sinir ağları temel olarak 3 katmandan oluşur. Input, Hidden ve Output olarak adlandırılan bu katmanlı yapı şekil.1 deki gibi görselleştirilebilir. Input ve Output katmanları sayısı sadece bir tane olabilirken, Hidden katman sayısı değişiklik gösterebilir. Ancak bir yapay sinir ağını ifade ederken Input katmanı sayılmaz ve Output katmanı sayısıyla, toplam Hidden katman sayısının toplamı olan sayı ile ifade edilir. Örneğin şekil.1 deki yapay sinir ağı 1 adet Hidden ve 1 adet Output katmanına sahip olduğundan 2 katmanlı bir yapay sinir ağı olarak ifade edilir.

Yapay sinir ağlarında her nöron arasındaki bağlantılara weight(ağırlık) denir. Başlangıçta weight’lere 0 ve 1 arasından rastgele bir değer atanır. Weight’ler input değerlerinin önemini belirler. Mesela bir fatura tutarı tahmini yapılırken o faturaya ait kullanım miktarı çok önemlidir. Bu nedenle kullanım miktarı girdisinin weight değerleri çok daha büyük bir değere sahip olacaktır.

Yapay sinir ağı mimarisinde bir de çıktı aktivasyonlarını sağ ya da sola ötelemekte kullanılan şekil.1 de b1 ve b2 olarak belirtilen bias adlı değerler de vardır. Bu değerler de genelde weight’ler gibi çok küçük bir değer alır. Çoğu yapay sinir ağında öntanımlı olarak 0 ya da 1 olarak tanımlanır ve model eğitildikçe ağırlıkların değişimine bağlı olarak bias değerleri de güncellenir.

Yapay sinir ağlarında kullanılan learning rate, epoch gibi terimler de mevcuttur. Learning rate genellikle 0.01 gibi çok küçük bir değer olarak tanımlanır. Epoch ise öğrenme işleminin kaç kez tekrarlanacağını belirten ifadedir. Modelin ürettiği çıktıya göre doğruluk oranını artırmak için learning rate ve epoch değerleri değiştirilir.

Son olarak da loss kavramından söz edecek olursak, yapay sinir ağı tarafından tahmin edilen değerin, gerçek değerden ne kadar saptığını belirten değerdir. Öğrenme işlemi sırasında loss değerinin mümkün olduğunca sıfıra yaklaştırmak amaçlanır. Genellikle iki tip loss fonksiyonu kullanılır. Bu fonksiyonlar L2 Loss fonksiyonu ve Cross Entropy Loss fonksiyonlarıdır.

L2 Loss fonksiyonunda, tahmin edilen değer gerçek değerden çıkartılıp aradaki farkın karesini alınarak hesaplanır.
L2 Loss
Cross Entropy Loss fonksiyonu da logaritmik loss olarak da nitelendirilir. n ifadesi eğitim verisi sayısını, a ifadesi ise çıktı değerinin, sigmoid aktivasyon fonksiyonu sonucunu ifade eder.
Cross Entropy Loss
Yapay Sinir Ağlarında Kullanılan Aktivasyon Fonksiyonları

Aktivasyon fonksiyonları, bir sinir ağının çıktısını belirleyen matematiksel denklemlerdir. İşlev, ağdaki her bir nörona bağlanır ve her bir nöronun girişinin modelin öngörüsüyle alakalı olup olmadığına bağlı olarak etkinleştirilip etkinleştirilmeyeceğini belirler. Aktivasyon fonksiyonları ayrıca her bir nöronun çıktısını 1 ile 0 veya -1 ile 1 arasında normalleştirmeye yardımcı olur.

Aktivasyon işlevlerinin ek bir yönü, her veri örneği için binlerce hatta milyonlarca nöron arasında hesaplandığı için hesaplama açısından verimli olmaları gerektiğidir.

1 – Sigmoid Fonksiyonu: 

Sigmoid işlevini kullanmamızın ana nedeni, (0 ile 1) arasında var olmasıdır. Bu nedenle, özellikle olasılığı bir çıktı olarak tahmin etmemiz gereken modeller için kullanılır. Herhangi bir şeyin olasılığı yalnızca 0 ile 1 aralığı arasında olduğundan, sigmoid doğru seçimdir.
sigmoid fonksiyonu
Sigmoid fonksiyonu, eğitim sırasında bir sinir ağının takılıp kalmasına neden olabilir. Bu sebeple bu gibi bir durum oluştuğunda, Softmax fonksiyonu kullanılır, Softmax fonksiyonu çok sınıflı sınıflandırma için kullanılan daha genelleştirilmiş bir lojistik aktivasyon fonksiyonudur.

2- Tanh(Hiperbolik Tanjant) Fonksiyonu:

Tanh fonksiyonu, sigmoid fonksiyonunun daha iyi bir versiyonu gibidir. (-1,1) aralığında değerler üretir.

Avantajı, negatif girişlerin güçlü bir şekilde negatif olarak eşleştirilmesi ve sıfır girişlerinin tanh grafiğinde sıfıra yakın bir şekilde eşlenmesidir.

Tanh fonksiyonu esas olarak iki sınıf arasında sınıflandırmada kullanılır.
Hiperbolik Tanjant

3- ReLU Fonksiyonu:

ReLU şu anda dünyada en çok kullanılan aktivasyon fonksiyonudur ve  kullanılmaya başlandığından beri neredeyse tüm evrişimli sinir ağlarında veya derin öğrenmede kullanılmaktadır. ReLU fonksiyonu (0,1) aralığında sonuç üretir ve bu sebeple en büyük sorunı, tüm negatif değerlerin anında sıfırlanmasıdır ve bu da modelin verilere uygun şekilde uydurma veya eğitme yeteneğini azaltır. Bu, ReLU aktivasyon fonksiyonuna verilen herhangi bir negatif girdinin, değeri grafikte hemen sıfıra çevirdiği anlamına gelir, bu da negatif değerleri uygun şekilde eşlemeyerek sonuç grafiğini etkiler.
ReLu
Yapay sinir ağlarında en çok kullanılan aktivasyon fonksiyonlarından da bahsettiğimize göre artık Python dili ve Numpy kütüphanesini kullanarak sıfırdan kendi yapay sinir ağımızı oluşturmaya başlayabiliriz.

Birlikte oluşturacağımız bu yapay sinir ağını kullanarak XOR mantık kapısına girdi olarak verilen değerlerin ne çıktı ürettiğini tahminlemeye çalışacağız. Bu işlemleri sırasıyla adım adım olarak ele alalım.

Yapay Sinir Ağı Sınıfının Oluşturulması

Projemizi oluşturduktan sonra yeni bir python dosyası açıp ilk olarak Numpy kütüphanesini import ederek kodumuzu yazmaya başlıyoruz. Daha sonra NeuralNetwork adında bir sınıf oluşturup, bu sınıftan bir nesne oluşturduğumuzda nesnelerin alacağı parametreleri verdiğimiz, “__init__”  tanımlayıcı metodu ile sınıfımıza ait nesne değişkenlerini tanımlıyoruz.
numpy1
Sınıfımızı ve nesne değişkenlerini tanımladıktan sonraki aşama olan Weight ve Bias değerlerinin tanımlanmasına geçiyoruz.

Weight ve Bias’ların Tanımlanması

Bir yapay sinir ağında weight ve bias değerleri genellikle (0,1) aralığında seçilir.

Bu sebeple biz de weight ve bias ları tanımlarken Numpy kütüphanesinden random modülüne ait rand metodunu kullanacağız. Random modülü kullandığımız için kodumuzu her çalıştırdığımızda farklı rastgele değerleri seçmesin diye random.seed ile modülün ürettiği rastgele değerleri sabitleyeceğiz, rand metoduna parametre olarak da weight bağlantılarının başlangıç ve hedef node’larının boyutlarını giriyoruz.

numpy2

Forward Propagation ( İleri Yayılım)

Forward propagation aşamasında, girdi değerleri belirlenen weight ve bias değerlerini kullanarak, çıktı değeri ile kıyaslamak üzere bir tahmin değeri hesaplanır. Elde edilen tahmin değeri, mevcut çıktı değeri ile loss fonksiyonunda kıyaslanıp bir loss değeri elde edilir.

numpy3

Back Propagation ( Geri Yayılım)

Back propagation aşamasında, bir önceki aşamada elde edilen loss değerine göre türevleri alınarak weight ve bias değerlerinin güncellenmesi işlemi yapılır ve bu işlem yapay sinir ağını oluştururken verilen epoch sayısı kadar tekrarlanır. Türev alma işlemi için Chain Rule (Zincir Kuralı) olarak bilinen yöntem kullanılır.

numpy4

Back propagation işlemi sonlandığında weight ve bias değerleri elde edilen gradyanlar ile güncellenir ve bir sonraki epoch’a geçilir.

numpy5

Modelin Eğitilmesi

Modelimizin eğitilmesi için ilk olarak weight ve bias parametreleri tanımlanır, sonrasında girdi değerlerimiz epoch sayısı kadar sırası ile forward ve back propagation aşamalarından geçer, gradyanlar güncellenir.

numpy6

Artık test verilerimizi kullanarak modelimizin üreteceği tahmin sonuçlarını elde etme ve modelimizin isabetlilik oranını öğrenme aşamalarına geçebiliriz.

Modelin Test Edilmesi ve Test Skoru

Modelimizi, XOR mantık kapısının aldığı girdi değerlerini kullanarak eğittik şimdi de rastgele bir girdi ile modelimizi test ederek sonucu inceleyelim ve sonrasında modelimiz doğru sonuç üretiyor mu anlamak için test skorunu görelim.

Ekran Resmi 2021 02 26 23.38.50

Kodumuzu çalıştırdığımızda çıktı aşağıdaki gibi olacaktır:

numpy kod ciktisi

Sonuç çıktısında da görüldüğü üzere, modelimiz gayet güzel çalışıyor ve doğru sonuç üretiyor. Kaynak kodun tamamına erişmek için aşağıdaki linke tıklayabilirsiniz.

>> https://github.com/einac/xor_neural_network
einac
Tags: AiDeep LearningNumpyYapay Sinir AğlarıYapay Zeka
SendTweet4Share1Share
Önceki Gönderi

TensorFlow EveryWhere Turkey 2021

Sonraki Gönderi

Flutter Engage Bizi Neler Bekliyor?

İlgili Yazılar

Yapay Zeka Destekli Dijital Medya Takip Aracı: sentitracer.com

Yapay Zeka Destekli Dijital Medya Takip Aracı: sentitracer.com

by Yazılım Karavanı
Şubat 10, 2025
0

Dijital dünyada her gün milyonlarca veri üretilirken, bireyler ve markalar hakkında yapılan yorumlar, haberler ve paylaşımlar büyük bir bilgi havuzu...

Yazılım Geliştiriciler İçin Yapay Zeka Araçları

Yazılım Geliştiriciler İçin Yapay Zeka Araçları

by Ali Murat Çevik
Haziran 27, 2023
0

Son zamanların popüler araçlarının çoğunlukla yapay zeka tabanlı olduğunu görmekteyiz. Bu tür sistemlerle ilk defa tanışanlar henüz ChatGPT’ nin verdiği...

VGG-19 Transfer Learning ile Görüntü Sınıflandırma

VGG-19 Transfer Learning ile Görüntü Sınıflandırma

by Ali Murat Çevik
Eylül 12, 2022
0

VGG19 Nedir? VGG19, adını Oxford Üniversitesi’nde bulunan “Visual Geometry Group” isimli gruptan almaktadır. Sonda bulunan 19 ise katman sayısını belirtmektedir....

Python NLTK Kütüphanesi İle Basit Bir Chatbot Yapımı

Python NLTK Kütüphanesi İle Basit Bir Chatbot Yapımı

by Emre İnaç
Ağustos 23, 2022
0

CHATBOT NEDİR ? Chatbot, bir cihazda, (Siri, Alexa, Google Asistan vb.), uygulamada, web sitesinde veya diğer ağlarda bulunan yapay zeka...

Makine Öğrenimi Nedir?

Makine Öğrenimi Nedir?

by Emre İnaç
Ağustos 4, 2022
0

Makine Öğrenimi (ML), Yapay Zeka(AI)’ nın bir alt sınıfıdır. Makine öğrenimi; insana ait akıllı karar verme ve tahmin davranışlarını taklit...

Next Post
Flutter Engage Bizi Neler Bekliyor?

Flutter Engage Bizi Neler Bekliyor?

Ethereum 2.0 Geliyor!

Ethereum 2.0 Geliyor!

  • Popüler
  • Yorumlar
  • En Yeniler
Sıfırdan Yolo v4 Tiny Özelleşmiş Nesne Tespiti (Custom Object Detection)

Sıfırdan Yolo v4 Tiny Özelleşmiş Nesne Tespiti (Custom Object Detection)

Temmuz 26, 2021
B Ağaçları (B Trees)

B Ağaçları (B Trees)

Ağustos 24, 2020
Gini Index Kullanılarak Karar Ağacının (Decision Tree)  Oluşturulması

Gini Index Kullanılarak Karar Ağacının (Decision Tree) Oluşturulması

Ağustos 20, 2020
Bubble Sort (Kabarcık Sıralama) Algoritması

Bubble Sort (Kabarcık Sıralama) Algoritması

Mayıs 18, 2018
2020 ‘nin En Güncel ve Tehlikeli Zararlı Yazılımları

2020 ‘nin En Güncel ve Tehlikeli Zararlı Yazılımları

6
Magento 2 Detaylı Kurulum & Hatalar

Magento 2 Detaylı Kurulum & Hatalar

5
Flutter’da TFLite Kullanımı

Flutter’da TFLite Kullanımı

4
Bubble Sort (Kabarcık Sıralama) Algoritması

Bubble Sort (Kabarcık Sıralama) Algoritması

2
Yeni Siber Güvenlik Kanunu: Yazılım Geliştiriciler İçin Neler Değişti?

Yeni Siber Güvenlik Kanunu: Yazılım Geliştiriciler İçin Neler Değişti?

Mart 19, 2025
Google Play Health Connect Politika Güncellemesi: Güncellenen Veri Koruma Kuralları

Google Play Health Connect Politika Güncellemesi: Güncellenen Veri Koruma Kuralları

Mart 10, 2025
Yapay Zeka Destekli Dijital Medya Takip Aracı: sentitracer.com

Yapay Zeka Destekli Dijital Medya Takip Aracı: sentitracer.com

Şubat 10, 2025
OneSignal Kullanarak Güvenli Push Notifications Oluşturma Rehberi

OneSignal Kullanarak Güvenli Push Notifications Oluşturma Rehberi

Aralık 14, 2024

Reklam

Yazılım Karavanı | Bilim – Teknoloji – Mühendislik

Bilgi Teknolojileri alanına meraklı herkesin buluşma noktası!

No Result
View All Result
  • Anasayfa
  • Genel
  • Programlama
    • Ruby
    • Flutter
    • Android
    • Java
    • MySQL
    • Oracle SQL
  • Yaşamdan
  • Algoritmalar
  • Yapay Zeka
  • Topluluklar

© 2020 Yazılım Karavanı Kaynak gösterilmesini rica ederiz.