Python ile Sıfırdan ANN: Adım Adım Rehber

Yapay Sinir Ağlarına Giriş

Yapay sinir ağları (ANN), insan beyninin öğrenme ve karar verme süreçlerinden esinlenerek oluşturulmuş yapay sistemlerdir. Son yıllarda, derin öğrenme ve yapay zeka alanındaki gelişmelerle birlikte, bu sistemler birçok alanda devrim niteliğinde sonuçlar ortaya koymayı başarmıştır. Yapay sinir ağları, görsel tanıma, doğal dil işleme, oyun oynama gibi birçok alanda etkili bir şekilde kullanılmaktadır. Ancak, ANN’lerin ne olduğu ve nasıl çalıştığı konusunda yeterli bilgiye sahip olmadan bu güçlü araçlardan faydalanmak oldukça zordur.

Bir yapay sinir ağı, çok katmanlı bir yapıya sahiptir. Genellikle üç ana katmandan oluşur: giriş katmanı, gizli katmanlar ve çıkış katmanı. Giriş katmanı, modele verilen bilgileri alırken, gizli katmanlar bu bilgileri işleyerek öğrenim sürecini gerçekleştirir. Çıkış katmanı ise modelin sonuçlarını üretir. Bu yapı, öğrenme işlemleri sırasında ağırlıkların ayarlanmasıyla birlikte daha karmaşık hale gelir.

Python, yapay sinir ağları geliştirmek için en popüler dillerden biridir. Kapsamlı kütüphaneleri sayesinde Python, ANN’leri kolay bir şekilde oluşturmak ve eğitmek için oldukça elverişli bir ortam sunmaktadır. Bu yazıda, Python ile sıfırdan basit bir yapay sinir ağı oluşturmayı öğreneceksiniz.

Gerekli Kütüphaneler ve Kurulum

Python ile yapay sinir ağı geliştirmek için bazı temel kütüphaneleri yüklemeniz gerekiyor. Bu kütüphaneler, matematiksel hesaplamalar, veri işleme ve görselleştirme için gerekli araçları sağlar. Önerilen kütüphaneler şunlardır:

  • NumPy: Sayısal hesaplamalar için kullanılır. Çok boyutlu diziler üzerinde hızlı işlem yapmanıza olanak tanır.
  • Pandas: Veri manipülasyonu ve analizi için kullanılır. Veri çerçeveleri oluşturup bu veriler üzerinde çeşitli işlemler yapmanızı sağlar.
  • Matplotlib: Veri görselleştirme amacıyla kullanılan bir kütüphanedir. Grafikler ve diagramlar oluşturmanıza yardımcı olur.
  • Scikit-Learn: Makine öğrenimi için koşullu modeller uygulamak istediğinizde kullanabileceğiniz bir kütüphanedir. ANN modelleri oluşturmak ve değerlendirmek için de kullanılabilir.
  • Keras: Yüksek seviyeli bir API olan Keras, derin öğrenme modelleri oluşturmak için basit ve anlaşılır bir arayüz sunar.

Bu kütüphaneleri yüklemek için terminal veya komut istemcisinde aşağıdaki komutu çalıştırabilirsiniz:

pip install numpy pandas matplotlib scikit-learn keras

Kurulum tamamlandığında, yapay sinir ağımızı oluşturmak için gerekli adımlara geçebiliriz. Öncelikle veri setimizi belirleyeceğiz ve ardından modelimizi tanımlayıp eğiteceğiz.

Veri Setinin Hazırlanması

Yapay sinir ağlarınızı eğitmek için kullanacağınız veriler oldukça önemlidir. Veri setinin kaliteli ve modelinizin amacına uygun olması, sonuçlarınızın başarısını doğrudan etkileyecektir. Bu yazıda, basit bir sınıflandırma problemi üzerinden ilerleyeceğiz. İris veri seti, bu tür bir model geliştirmek için en yaygın kullanılan veri setlerinden biridir ve gözlemlerde bitki türlerini sınıflandırmak için kullanılır.

İlk olarak, veri setimizi indirmeli ve yüklemeliyiz. Pandas kütüphanesini kullanarak veriyi kolayca içe aktaralım:

import pandas as pd

dataset = pd.read_csv('iris.csv')
print(dataset.head())

Yukarıdaki kod, ‘iris.csv’ dosyasını yükleyip ilk beş satırını gösterecektir. Veri setimizde dört özellik (uzunluk ve genişlik) ve bir etiket (bitki türleri) yer almaktadır. Modelimizi eğitmeden önce veri kümesini belirli bir formatta hazırlamamız gerekecek.

Özellik ve etiketleri ayıralım:

X = dataset.iloc[:, :-1].values  # Özellikler
Y = dataset.iloc[:, -1].values  # Etiketler

Ayrıca, verilerimizi sayısal değerlerle ifade etmek için etiketleri sayılara dönüştürmeliyiz. Bunu yapabilmek için aşağıdaki kodu kullanabiliriz:

from sklearn.preprocessing import LabelEncoder

labelencoder = LabelEncoder()
Y = labelencoder.fit_transform(Y)

Artık verilerimizi modelimizi eğitmek için hazırladık. Gelecek adımda bu verileri training (eğitim) ve test (test) setlerine ayıracağız.

Eğitim ve Test Setlerinin Oluşturulması

Veri kümesinden modelimizin eğitim sürecinde kullanılan ve modelimizin performansını değerlendireceğimiz iki farklı set oluşturmalıyız. Bu aşama, modelin genel performansını artırmak için oldukça önemlidir. Scikit-Learn kütüphanesindeki train_test_split fonksiyonu, bu işlemi kolayca gerçekleştirmemizi sağlar:

from sklearn.model_selection import train_test_split

X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2, random_state=42)

Yukarıdaki kod, verimizin %80’ini eğitim, %20’sini ise test seti olarak ayırmaktadır. Bu oranlar, uygulama gereksinimlerine göre değiştirilebilir. Artık modelimizi oluşturma aşamasına geçebiliriz.

Modelimizin Oluşturulması

Keras kütüphanesini kullanarak sade ama etkili bir yapay sinir ağı modeli oluşturmalıyız. Modelimiz, bir giriş katmanı, bir veya daha fazla gizli katman ve bir çıkış katmanından oluşacaktır. Aşağıda basit bir model yapısı gösterilmektedir:

from keras.models import Sequential
from keras.layers import Dense

model = Sequential()
model.add(Dense(units=8, activation='relu', input_shape=(4,))) # İlk gizli katman
model.add(Dense(units=3, activation='softmax')) # Çıkış katmanı

İlk olarak Sequential modelimizi oluşturuyoruz. Ardından gizli katmanımız için 8 nöron kullanıyoruz ve ‘relu’ aktivasyon fonksiyonu ile bu katmanı tanımlıyoruz. Giriş boyutunu belirtmek için input_shape=(4,) parametresini kullanıyoruz, burada 4, özellik sayımızı temsil ediyor. Çıkış katmanında ise 3 nöron kullanarak sınıf sayımıza karşılık gelen ‘softmax’ aktivasyon fonksiyonunu tanımlıyoruz.

Modelimizi oluşturdumuzda, derleme işlemi yapmamız gerekecek. Modelimizin derlenmesi, uygun kayıp fonksiyonu, optimizasyon algoritması ve değerlendirme ölçütlerini belirlemek anlamına gelir:

model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])

Burada ‘adam’ optimizasyon algoritması ve ‘sparse_categorical_crossentropy’ kayıp fonksiyonunu belirtiyoruz. Modelimizin derlenmesi tamamlandıktan sonra, eğitim sürecine başlayabiliriz.

Modelin Eğitilmesi

Modelimiz hazır olduğuna göre, eğitim verisi ile eğitime başlayabiliriz. Keras kütüphanesini kullanarak modelimizi eğitmek için fit metodunu uygulayacağız:

model.fit(X_train, Y_train, epochs=100, batch_size=5)

Burada, modelimizi 100 dönem boyunca (epoch) ve her seferinde 5 örnekle (batch size) eğitiyoruz. Eğitim süreci tamamlandıktan sonra, modelimizin test verisi üzerinde performansını ölçmek üzere değerlendirme adımına geçeceğiz.

Modelin Değerlendirilmesi

Modelimizin başarısını değerlendirmek için test setini kullanarak performans ölçümleri yapmalıyız. Keras’taki evaluate metodu, modelimizin eğitim sonrası başarımını görmek için idealdir:

loss, accuracy = model.evaluate(X_test, Y_test)

Yukarıdaki kod, kayıp ve doğruluk değerlerini döndürecektir. Bunu çalıştırdığınızda, model akademik başarı oranını gösteren bir yüzde alacaksınız. İyi bir modelin doğruluğu %90 ve üzeri olmalıdır. Eğer modeliniz beklediğinizden düşük bir doğruluğa sahipse, hiperparametre optimizasyonu (gizli katman sayısı, nöron sayısı vb.) yapmayı düşünebilirsiniz.

Sonuç ve İleri Aşamalar

Bu yazıda Python kullanarak sıfırdan bir yapay sinir ağı oluşturmayı ve eğitmeyi öğrendik. Giriş, gizli, ve çıkış katmanlarına sahip basit bir model geliştirdik ve veri setimizi hazırlayıp eğittik. Yapay zeka ve makine öğrenmesi ile ilgili konular üzerine daha fazla bilgi edinebilir ve bu bilgileri kendi projelerinize uygulayarak daha karmaşık yapay sinir ağları oluşturabilirsiniz.

Yapay sinir ağları ile ilgili daha fazla bilgi edinmek istiyorsanız, konu hakkında kaynakları ve deneyleri kendi projelerinizde uygulamaktan çekinmeyin. Python ve Keras kütüphanesi, karmaşık modellemeler yapmak için harika bir başlangıç noktasıdır. Ayrıca, modelinizi geliştirmek için daha fazla katman ekleyebilir, farklı aktivasyon fonksiyonlarını deneyebilir ve başka veri kümeleri üzerinde çalışarak becerilerinizi artırabilirsiniz.

Unutmayın ki yapay zeka ve makine öğrenimi sürekli gelişen bir alan; bu nedenle yenilikleri takip etmek ve sürekli öğrenmek başarılı bir geliştirici olmanın anahtarıdır. Şimdiden çalışmalarınızda başarılar dilerim!

Scroll to Top