Hoşgeldin Misafir

Yapay Sinir Ağları Çeşitleri ve Katmanları

Mustafa73

20 Eyl 2023
423 Mesaj

Aktiflik

Seviye

Deneyim

TIM / GÖREV:
Yapay sinir ağları (YSA), insan beyninin sinir hücrelerini taklit eden matematiksel modellerdir. YSA, karmaşık veri desenlerini öğrenme ve tanıma yetenekleri ile bilinen bir makine öğrenimi türüdür. YSA, girdi katmanı, gizli katmanlar ve çıktı katmanı olmak üzere üç ana bileşenden oluşur. Girdi katmanı, verileri ağa ileten ilk katmandır. Gizli katmanlar, öğrenme sürecinin gerçekleştiği ve verinin özelliklerini temsil eden katmanlardır. Çıktı katmanı ise ağın tahminlerini veya sonuçlarını üretir.
YSA, yapılarına göre dört farklı gruba ayrılır. Bu gruplar şöyle açıklanabilir:
- Tek Katmanlı Algılayıcılar: Bu ağlar, girdi katmanı ve çıktı katmanından oluşur. Gizli katman yoktur. Bu ağlar, lineer olarak ayrılabilen problemleri çözmek için kullanılır. Örneğin, bir perceptron, tek katmanlı bir algılayıcıdır. Bir perceptron, girdileri ağırlıklarla çarpar, bir toplam fonksiyonu uygular ve bir aktivasyon fonksiyonu ile çıktı üretir.
- Çok Katmanlı Algılayıcılar: Bu ağlar, girdi katmanı, çıktı katmanı ve en az bir gizli katmandan oluşur. Bu ağlar, lineer olmayan problemleri çözmek için kullanılır. Örneğin, bir çok katmanlı perceptron, çok katmanlı bir algılayıcıdır. Bir çok katmanlı perceptron, girdileri ağırlıklarla çarpar, bir toplam fonksiyonu uygular ve bir aktivasyon fonksiyonu ile çıktı üretir. Bu işlem, gizli katmanlarda tekrarlanır. Son gizli katmandan çıkan çıktı, çıktı katmanına iletilir.
- İleri Beslemeli Yapay Sinir Ağları: Bu ağlar, girdi katmanı, çıktı katmanı ve birden fazla gizli katmandan oluşur. Bu ağlarda, bilgi sadece ileri yönde akar. Yani, her katman, kendisinden önceki katmandan girdi alır ve kendisinden sonraki katmana çıktı verir. Bu ağlar, derin öğrenmenin temelini oluşturur. Örneğin, bir evrişimli sinir ağı, ileri beslemeli bir yapay sinir ağıdır. Bir evrişimli sinir ağı, girdi olarak görüntü alır, evrişim, havuzlama, tam bağlı ve aktivasyon katmanlarından oluşan bir işlem dizisi uygular ve çıktı olarak görüntünün sınıfını verir.
- Geri Beslemeli Yapay Sinir Ağları: Bu ağlar, girdi katmanı, çıktı katmanı ve birden fazla gizli katmandan oluşur. Bu ağlarda, bilgi hem ileri hem de geri yönde akar. Yani, her katman, kendisinden önceki ve sonraki katmanlardan girdi alır ve kendisinden önceki ve sonraki katmanlara çıktı verir. Bu ağlar, kendi kendine öğrenme ve bellek gibi özelliklere sahiptir. Örneğin, bir yinelenen sinir ağı, geri beslemeli bir yapay sinir ağıdır. Bir yinelenen sinir ağı, girdi olarak bir dizi veri alır, her adımda girdiyi ve önceki adımdan gelen gizli durumu işler ve çıktı olarak bir sonraki adım için yeni bir gizli durum ve bir tahmin verir.
Tek Katmanlı Algılayıcılar
Tek katmanlı algılayıcılar, yapay sinir ağlarının en basit modelidir. Bu modelde, girdi katmanı ve çıktı katmanı olmak üzere sadece iki katman vardır. Girdi katmanı, problemin özelliklerini temsil eden bir vektördür. Çıktı katmanı ise, problemin sınıflarını temsil eden tek bir nörondur. Bu nöron, girdi katmanındaki tüm nöronlara bağlıdır ve her bağlantının bir ağırlığı vardır. Bu ağırlıklar, nöronun öğrenmesini sağlar.
Tek katmanlı algılayıcılarda, çıktı fonksiyonu doğrusaldır. Yani, girdi katmanındaki nöronların değerleri ile bağlantı ağırlıklarının çarpımının toplamıdır. Bu toplam, bir eşik değeri ile karşılaştırılır ve sonuç olarak 1 veya -1 değerleri alınır. Bu değerler, problemin iki sınıfını gösterir. Örneğin, 1 değeri pozitif sınıf, -1 değeri negatif sınıf olabilir.
Tek katmanlı algılayıcılar, doğrusal olarak ayrılabilir problemleri çözebilir. Yani, iki sınıf arasında bir doğru çizerek ayrım yapabilir. Ancak, doğrusal olarak ayrılamayan problemleri çözemez. Bu durumda, çok katmanlı algılayıcılar kullanılmalıdır. Çok katmanlı algılayıcılar, girdi ve çıktı katmanları arasında bir veya daha fazla ara katman bulunduran yapay sinir ağlarıdır. Bu katmanlar, problemin karmaşıklığını azaltmak ve doğrusal olmayan fonksiyonlar öğrenmek için kullanılır.
Çok Katmanlı Algılayıcılar
Çok katmanlı algılayıcılar, yapay sinir ağlarının bir türüdür. Bu ağlar, girdi ve çıktı arasında birden fazla katman bulunduran yapılardır. Her katman, bir önceki katmandan gelen verileri işleyen ve bir sonraki katmana gönderen birçok nöron içerir. Nöronlar, verileri doğrusal olmayan bir şekilde dönüştüren aktivasyon fonksiyonları kullanır. Bu sayede, ağ karmaşık ve doğrusal olmayan problemleri çözebilir.
Çok katmanlı algılayıcılar, tek katmanlı algılayıcıların (perceptron) çözemediği XOR gibi problemleri çözmek için geliştirilmiştir. Çok katmanlı algılayıcılar, sınıflandırma, regresyon, görüntü işleme, doğal dil işleme gibi pek çok alanda kullanılmaktadır.
İleri Beslemeli Yapay Sinir Ağları
İleri beslemeli yapay sinir ağları, yapay zekanın bir dalı olan makine öğrenmesinde kullanılan bir modeldir. Bu model, insan beynindeki nöronların çalışma şeklini taklit etmeye çalışır. Nöronlar, bilgiyi işleyen ve ileten küçük hücrelerdir. İleri beslemeli yapay sinir ağlarında, nöronlar birbirine bağlı katmanlar halinde düzenlenir. Bu katmanlardan ilki giriş katmanı, sonuncusu çıkış katmanı, aradakiler ise gizli katmanlardır.
Giriş katmanı, yapay sinir ağının dış dünyadan aldığı verileri temsil eder. Örneğin, bir resmi tanımak için yapay sinir ağını kullanan bir programda, giriş katmanı resmin piksellerini alır. Giriş katmanındaki nöronlar, verileri olduğu gibi gizli katmanlara iletir. Gizli katmanlar, verileri işleyen ve öğrenen katmanlardır. Gizli katmanlardaki nöronlar, kendilerinden önceki katmandaki nöronlardan gelen verileri alır, bir fonksiyon uygular ve sonucu kendilerinden sonraki katmana iletir. Gizli katman sayısı ve nöron sayısı, yapay sinir ağının karmaşıklığını ve performansını etkiler. Çıkış katmanı, yapay sinir ağının sonucunu veren katmandır. Çıkış katmanındaki nöronlar, gizli katmanlardan gelen verileri alır, bir fonksiyon uygular ve sonucu dış dünyaya aktarır. Örneğin, bir resmi tanımak için yapay sinir ağını kullanan bir programda, çıkış katmanı resmin hangi sınıfa ait olduğunu belirler.
İleri beslemeli yapay sinir ağlarının adı, verilerin girişten çıkışa doğru tek yönde ilerlemesinden gelir. Bu modelde, aynı katmandaki nöronlar arasında bağlantı yoktur ve geriye doğru bir akış yoktur. Bu model, basit ve yaygın olarak kullanılan bir modeldir. Ancak, bazı problemler için daha uygun olan geri beslemeli yapay sinir ağları gibi farklı modeller de vardır. Geri beslemeli yapay sinir ağlarında, veriler hem ileriye hem de geriye doğru akar ve aynı katmandaki nöronlar arasında da bağlantı olabilir. Bu model, örneğin, doğal dil işleme gibi zamanla ilgili problemler için daha uygundur.
Geri Beslemeli Yapay Sinir Ağları
Geri beslemeli yapay sinir ağları, insan beyninin çalışma şeklinden esinlenerek oluşturulan, birbirine bağlı çok sayıda işlem birimi (nöron) içeren yapılardır. Bu ağlarda, nöronlar arasındaki bağlantılar hem ileri hem de geri yönde sinyal iletebilir. Yani, bir nöronun ürettiği çıktı, hem kendisinden sonra gelen katmana hem de kendisinden önce gelen katmana veya kendi katmanındaki başka bir nörona gidebilir. Bu şekilde, ağın giriş ve çıkışları arasında karmaşık bir etkileşim oluşur.
Geri beslemeli yapay sinir ağlarının avantajı, doğrusal olmayan ve dinamik bir davranış sergileyebilmeleridir. Bu sayede, zamanla değişen veya gecikmeli verileri işleyebilir, öğrenebilir ve tahmin edebilirler. Geri beslemeli yapay sinir ağlarının dezavantajı ise, eğitimlerinin zor ve uzun olmasıdır. Ayrıca, ağın yapısının ve bağlantılarının nasıl seçileceği de önemli bir sorundur.
Geri beslemeli yapay sinir ağlarının farklı tipleri vardır. Bunlardan bazıları şunlardır:
- Hopfield Ağı: Bu ağda, tüm nöronlar hem giriş hem de çıkış olarak kullanılır. Ağın amacı, giriş olarak verilen bir deseni, daha önce öğrendiği bir desene en yakın hale getirmektir. Bu şekilde, ağ bellek görevi görür ve gürültülü veya eksik verileri tamamlayabilir.
- Boltzmann Makinesi: Bu ağda, nöronlar rastgele olarak aktive olur veya olmaz. Ağın amacı, giriş olarak verilen bir desenin olasılığını maksimize etmektir. Bu şekilde, ağ istatistiksel öğrenme yapabilir ve olasılık dağılımlarını modelleyebilir.
- Elman Ağı: Bu ağda, gizli katmandaki nöronların çıktıları, bir sonraki zaman adımında giriş katmanına geri beslenir. Ağın amacı, zaman serisi verilerini öğrenmek ve tahmin etmektir. Bu şekilde, ağ dinamik sistemleri taklit edebilir ve geçmiş verilerden yararlanabilir.
Geri beslemeli yapay sinir ağları, birçok uygulama alanında kullanılabilir. Örneğin, ses tanıma, metin üretme, robot kontrolü, stok piyasası analizi, hava durumu tahmini gibi alanlarda geri beslemeli yapay sinir ağlarından faydalanılabilir.
Derin Öğrenme Nedir?
Derin öğrenme, insan beyninin çalışma şeklini taklit eden yapay zekâ sistemlerinin geliştirilmesi için kullanılan bir makine öğrenmesi yöntemidir. Derin öğrenme, çok katmanlı yapay sinir ağları adı verilen matematiksel modellerden oluşur. Bu modeller, verileri katman katman işleyerek karmaşık özellikleri ve ilişkileri öğrenebilir. Derin öğrenme, son yıllarda birçok alanda önemli başarılar elde etmiştir. Aşağıda, derin öğrenmenin başlıca uygulama alanlarından bazıları kısaca açıklanmıştır.
1. Dil modelleme ve doğal dil işleme: Dil modelleme, bir dilin sözdizimi, anlamı ve olasılık dağılımı gibi özelliklerini matematiksel olarak tanımlamaya çalışan bir süreçtir. Doğal dil işleme ise, insanların kullandığı doğal dilleri anlama, üretme ve işleme gibi işlemleri gerçekleştiren bir bilgisayar bilimi dalıdır. Derin öğrenme, dil modelleme ve doğal dil işleme alanlarında, metin sınıflandırma, duygu analizi, makine çevirisi, metin özetleme, soru-cevap sistemleri, ses tanıma, ses sentezi gibi birçok uygulamada kullanılmaktadır.
2. Konuşma ve ses işleme: Konuşma ve ses işleme, insanların konuşma ve ses sinyallerini üretme, algılama, analiz etme, anlama ve dönüştürme gibi işlemleri gerçekleştiren bir bilgisayar bilimi dalıdır. Derin öğrenme, konuşma ve ses işleme alanlarında, konuşma tanıma, konuşma sentezi, konuşma anlama, konuşma sentezleme, ses tanıma, ses sentezi, ses dönüştürme, ses sınıflandırma, ses doğrulama gibi birçok uygulamada kullanılmaktadır.
3. Bilgi erişimi: Bilgi erişimi, insanların ihtiyaç duydukları bilgilere kolayca ve hızlıca ulaşmasını sağlayan bir bilgisayar bilimi dalıdır. Bilgi erişimi, bilgi kaynaklarını arama, sorgulama, indeksleme, sıralama, önerme, özetleme, görselleştirme gibi işlemleri içerir. Derin öğrenme, bilgi erişimi alanında, web arama, bilgi çıkarımı, bilgi görselleştirme, bilgi önerme, bilgi özetleme, bilgi keşfi, bilgi güvenliği gibi birçok uygulamada kullanılmaktadır.
4. Nesne tanıma ve bilgisayarlı görü: Nesne tanıma, görüntü veya video içindeki nesneleri tanımlama, sınıflandırma, yerleştirme, sayma, izleme gibi işlemleri gerçekleştiren bir bilgisayar bilimi dalıdır. Bilgisayarlı görü ise, görüntü veya video işleme, analiz etme, anlama ve dönüştürme gibi işlemleri gerçekleştiren bir bilgisayar bilimi dalıdır. Derin öğrenme, nesne tanıma ve bilgisayarlı görü alanlarında, yüz tanıma, yüz ifadesi analizi, yaya tanıma, plaka tanıma, el yazısı tanıma, tıbbi görüntü analizi, görüntü iyileştirme, görüntü sentezi, görüntü stil transferi, görüntü kapsülleme, görüntü anlatımı, video anlatımı, video analizi, video sentezi, video kapsülleme, video anlatımı gibi birçok uygulamada kullanılmaktadır.
5. Çok modlu ve çok görevli öğrenme: Çok modlu öğrenme, birden fazla veri türü veya modu (örneğin, metin, ses, görüntü, video) kullanarak öğrenme gerçekleştiren bir makine öğrenmesi yöntemidir. Çok görevli öğrenme ise, birden fazla öğrenme görevi (örneğin, sınıflandırma, regresyon, kümeleme) arasında ortak bilgi veya özellik paylaşarak öğrenme gerçekleştiren bir makine öğrenmesi yöntemidir. Derin öğrenme, çok modlu ve çok görevli öğrenme alanlarında, metin-ses-görüntü-video birleştirme, metin-ses-görüntü-video dönüştürme, metin-ses-görüntü-video anlama, metin-ses-görüntü-video üretme, metin-ses-görüntü-video önerme, metin-ses-görüntü-video özetleme, metin-ses-görüntü-video keşfi, metin-ses-görüntü-video güvenliği gibi birçok uygulamada kullanılmaktadır.
Derin Öğrenmenin Diğer Yöntemlerden Farkları
Derin öğrenmenin diğer yöntemlerden farkları şöyle açıklanabilir:
- Geleneksel makine öğrenmesi yöntemleri, verileri anlamlı bir şekilde temsil etmek için önceden belirlenmiş özellikler kullanır. Bu özellikler, verilerin karmaşıklığını azaltmak ve makinelerin öğrenmesini kolaylaştırmak için uzmanlar tarafından seçilir veya tasarlanır. Bu süreç, hem zaman hem de insan kaynağı gerektirir. Ayrıca, özelliklerin veriye uygun olması ve öğrenme performansını artırması gerekir. Bu nedenle, geleneksel makine öğrenmesi yöntemleri, ham verilerle doğrudan çalışamaz.
- Derin öğrenme yöntemi, verileri otomatik olarak öğrenilen temsillerle ifade eder. Bu temsiller, verilerin farklı yönlerini yakalamak için birbirine bağlı katmanlardan oluşur. Her katman, bir önceki katmandan gelen bilgiyi daha yüksek seviyeli bir bilgiye dönüştürür. Bu şekilde, derin öğrenme yöntemi, verilerin içerdiği karmaşık ilişkileri ve desenleri ortaya çıkarabilir. Bu nedenle, derin öğrenme yöntemi, ham verilerle doğrudan çalışabilir.
- Derin öğrenme yöntemi, 2012 yılında büyük bir başarı elde etmiştir. ImageNet yarışması, milyonlarca görüntüyü binlerce kategoriye ayırmak için bir test alanı olarak kullanılır. Derin öğrenme yöntemi, bu yarışmada evrişimsel sinir ağı adı verilen bir mimari ile birinci olmuştur. Evrişimsel sinir ağı, görüntülerin piksel düzeyinde değil, özellik düzeyinde işlenmesini sağlar. Bu sayede, görüntülerin içerdiği nesneleri, şekilleri, renkleri ve dokuları tanımlayabilir. Derin öğrenme yöntemi, bu yarışmada %26,1 olan en iyi beş hata oranını %15,3'e indirmiştir. Sonraki yıllarda, derin öğrenme yöntemi, bu hata oranını daha da düşürerek %3,6'ya kadar getirmiştir. Bu, insanların hata oranından daha iyi bir performans anlamına gelir.
Yapay Sinir Ağları Uygulamaları İçin Gerekli Donanımlar
Yapay sinir ağları (YSA), insan beyninin işleyişini taklit eden ve verilerden öğrenen matematiksel modellerdir. YSA, girdi, gizli ve çıktı katmanlarından oluşur. Girdi katmanı, veriyi ağa aktarır. Gizli katmanlar, verinin özelliklerini öğrenir ve işler. Çıktı katmanı, ağın sonucunu veya tahminini verir.
YSA, gizli katman sayısını artırarak daha karmaşık ve derin öğrenme yapabilir. Ancak bu da daha fazla bellek ve işlem gücü gerektirir. Bellek, veriyi depolamak ve erişmek için kullanılır. İşlem gücü, veriyi işlemek için kullanılır. Örneğin, İmageNet yarışması için 1,2 milyon resimden oluşan bir veri seti kullanılırsa, bu resimleri bellekte tutmak ve işlemek için çok fazla bellek ve işlem gücü gerekir.
YSA, veriyi işlemek için geriye yayılım algoritması adı verilen bir yöntem kullanır. Bu yöntem, ağın çıktısını istenen çıktıyla karşılaştırır ve ağın ağırlıklarını hata oranını azaltacak şekilde günceller. Bu işlem, gizli katman sayısı arttıkça daha uzun sürer. Bu yüzden, paralel işlemciler kullanmak daha hızlı sonuç verir. Paralel işlemciler, veriyi aynı anda birden fazla parçaya bölerek işleyebilen işlemcilerdir.
Derin ağların eğitimi için, merkezi işlem birimi (CPU) yerine grafik işlem birimi (GPU) kullanılır. CPU, bilgisayarın temel işlemlerini yapan işlemcidir. GPU, grafik işlemlerini yapan işlemcidir. GPU, CPU'ya göre daha fazla paralel işlem yapabilir. Bu da, derin ağların eğitimini hızlandırır. GPU, genel amaçlı olarak da kullanılabilir. Yani, grafik işlemlerinin yanı sıra, yapay sinir ağları gibi diğer işlemleri de yapabilir.
Yapay Sinir Ağları Uygulamaları İçin Kullanılan Programlama Dilleri
Yapay sinir ağları uygulamaları için kullanılan programlama dilleri, yapay zekânın bir alt dalı olan ve insan beyninin işleyişini taklit eden matematiksel modellerdir. Yapay sinir ağları, verilerden öğrenerek karmaşık problemleri çözebilir, örüntüleri tanıyabilir ve tahminler yapabilir. Yapay sinir ağları, girdi, gizli ve çıktı katmanlarından oluşur. Girdi katmanı, veriyi ağa iletir. Gizli katmanlar, verinin özelliklerini öğrenir ve işler. Çıktı katmanı, ağın sonucunu verir.
Yapay sinir ağları uygulamaları için herhangi bir programlama dili kullanılabilir. Ancak, bazı diller, yapay sinir ağları için daha uygun ve popülerdir. Bu diller, yapay sinir ağları için gerekli olan kütüphaneleri, araçları, algoritmaları ve performansı sağlar. Yapay sinir ağları için en çok kullanılan programlama dilleri şunlardır:
- Python: Python, yapay zekâ ve alt dalları için en çok tercih edilen programlama dilidir. Python, basit, anlaşılır ve esnek bir sözdizimine sahiptir. Python, yapay sinir ağları için gerekli olan birçok kütüphaneye sahiptir. Örneğin, TensorFlow, Keras, PyTorch, NumPy, SciPy gibi. Python, hem yeni başlayanlar hem de uzmanlar için ideal bir dildir.
- C++: C++, hızlı, güçlü ve düşük seviyeli bir programlama dilidir. C++, yapay sinir ağları için gerekli olan performansı ve verimliliği sağlar. C++, istatistiksel teknikler ve sinir ağları gibi karmaşık algoritmaları yazmak için uygundur. C++, oyun geliştirme, görüntü işleme, robotik gibi alanlarda yapay sinir ağları için kullanılır.
- Java: Java, nesne yönelimli, platform bağımsız ve çok yönlü bir programlama dilidir. Java, yapay sinir ağları için gerekli olan kütüphanelere ve araçlara sahiptir. Örneğin, Deeplearning4j, Neuroph, Encog, Weka gibi. Java, web, mobil, masaüstü gibi farklı ortamlarda yapay sinir ağları uygulamaları geliştirmek için kullanılır.
- R: R, istatistiksel analiz ve veri bilimi için tasarlanmış bir programlama dilidir. R, yapay sinir ağları için gerekli olan kütüphanelere ve araçlara sahiptir. Örneğin, Neuralnet, Nnet, RSNNS, MXNet gibi. R, yapay sinir ağları ile veri analizi, görselleştirme, tahminleme gibi işlemler yapmak için kullanılır.
- Lisp: Lisp, yapay zekâ için en eski ve en etkili programlama dillerinden biridir. Lisp, sembolik hesaplama, fonksiyonel programlama, makro sistem gibi özelliklere sahiptir. Lisp, yapay sinir ağları için gerekli olan kütüphanelere ve araçlara sahiptir. Örneğin, Lush, FANN, CLML gibi. Lisp, yapay zekâ araştırması, doğal dil işleme, bilgisayarlı mantık gibi alanlarda yapay sinir ağları için kullanılır.
-Prolog: Prolog, bir mantık programlama dili ve anlamsal çıkarım motorudur. Bu, yapay zekâ (AI) alanında kullanılan bir programlama paradigmasıdır. Prolog, programı ilişkiler olarak tanımlamanıza ve bu ilişkiler üzerinde sorgu yapmanıza olanak tanır. Prolog, birinci dereceden mantığa dayanır ve bildirimsel bir dildir. Yani, programın nasıl çalıştığını değil, ne yaptığını belirtirsiniz. Prolog, AI geliştiricileri tarafından, arama, belirsizlik, geri izleme, özyineleme, soyutlama ve kalıp eşleştirme gibi özellikleri nedeniyle tercih edilir. Prolog, nesneler ve bunlar arasındaki ilişkileri ifade etmek için çok uygundur. Prolog, nesneler arasındaki uzamsal ilişkileri tanımlamak için kullanılabilir. Örneğin, mavi üçgenin arkasında yeşil bir üçgen olduğunu söylemek için şöyle yazabilirsiniz:
prolog
arkasinda(yesil_ucgen, mavi_ucgen).
Prolog, genel kuralları da tanımlamak için kullanılabilir. Örneğin, A nesnesi B nesnesinden daha yakınsa ve B nesnesi C nesnesinden daha yakınsa, o zaman A nesnesi C nesnesinden daha yakındır kuralını şöyle yazabilirsiniz:
prolog
daha_yakin(A, C) :- daha_yakin(A, B), daha_yakin(B, C).
Prolog, gerçekleri ve kuralları kullanarak veri tabanını sorgulamanıza olanak tanır. Prolog, her şeyi bir gerçek veya bir kural olarak kabul eder. Örneğin, sonu bir şarkıcı olduğunu söylemek için şöyle yazabilirsiniz:
prolog
sarkici(sonu).
Prolog, grafiksel kullanıcı arabirimi, yönetim ve ağ uygulamalarının geliştirilmesini de destekler. Prolog, sesli kontrol sistemleri ve doldurma şablonları gibi projeler için de çok uygundur.
Yapay sinir ağları uygulamaları için kullanılan programlama dilleri, yapay zekânın önemli bir konusudur. Yapay sinir ağları için herhangi bir dil kullanılabilir, ancak ihtiyaca göre dil seçmek en doğrusudur.
Google Colaboratory
Google Colaboratory, kısaca Colab, Python programlama dilini kullanarak web tarayıcısı üzerinden uygulama geliştirmenize ve çalıştırmanıza olanak tanıyan bir araçtır. Colab, Jupyter notebook adlı popüler bir arayüzü kullanır ve Google tarafından ücretsiz olarak sunulur. Colab'ın bazı avantajları şunlardır:
- Colab'ı kullanmak için herhangi bir yazılım kurmanıza veya ayarlamanıza gerek yoktur. Sadece internet bağlantınız ve Google hesabınız olması yeterlidir.
- Colab, grafik işlem birimi (GPU) ve tensor işlem birimi (TPU) gibi güçlü donanımlara ücretsiz olarak erişmenizi sağlar. Bu sayede yapay zeka ve makine öğrenimi gibi uygulamaları daha hızlı ve verimli bir şekilde çalıştırabilirsiniz.
- Colab, uygulamalarınızı kolayca başkalarıyla paylaşmanıza ve işbirliği yapmanıza imkan verir. Colab dosyalarınızı Google Drive'da saklayabilir, e-posta ile gönderebilir veya GitHub gibi platformlarda yayınlayabilirsiniz.
- Colab, Python ile birlikte birçok popüler kütüphaneyi de destekler. Örneğin, tensorflow, opencv ve keras gibi kütüphaneleri kullanarak veri toplama, işleme, analiz etme ve görselleştirme gibi işlemleri yapabilirsiniz.
Colab, öğrenciler, veri bilimcileri, yapay zeka araştırmacıları gibi farklı kullanıcı seviyelerine hitap eder. Büyük verilerle yapay zeka uygulamaları geliştirmek için pahalı ve karmaşık bulut servisleri ya da kişisel bilgisayarlar kullanmak yerine, Colab ile hem zamandan hem de paradan tasarruf edebilirsiniz. Colab, size sadece kod yazmaya ve yaratıcı olmaya odaklanmanız için gerekli ortamı sağlar.
1. UYGULAMA
Colab, Google Drive üzerinde çalışan bir bulut tabanlı Python kod editörüdür. Colab ile kodlarınızı çalıştırabilir, grafikler oluşturabilir ve paylaşabilirsiniz. Colab uygulamasını kullanmak için şu adımları izlemeniz gerekiyor:
1. Adım: Google Drive hesabınıza giriş yapın ve sol üst köşedeki Yeni butonuna tıklayın. Açılan menüden Klasör seçeneğini seçin. Klasörünüze istediğiniz bir isim verin ve Oluştur butonuna basın.
2. Adım: Oluşturduğunuz klasörün içine girin ve sağ üst köşedeki + Yeni butonuna tıklayın. Açılan menüden Diğer seçeneğini seçin ve ardından Daha fazla uygulama bağla seçeneğini seçin.
3. Adım: Açılan pencerede, arama kutusuna Colaboratory yazın ve Enter tuşuna basın. Arama sonuçlarında Colab uygulamasını bulun ve Bağla butonuna tıklayın.
4. Adım: Colab uygulamasının yüklendiğini gösteren bir mesaj göreceksiniz. Tamam butonuna tıklayarak pencereyi kapatın.
5. Adım: Artık Colab uygulamasını kullanmaya hazırsınız. Klasörünüzde sağ tıklayın ve Colab'da aç seçeneğini seçin. Bu şekilde yeni bir Colab dosyası oluşturabilirsiniz. Dosyanızı istediğiniz gibi düzenleyebilir, kaydedebilir ve paylaşabilirsiniz.
2. UYGULAMA
Colab, Google'ın bulut tabanlı bir ortamda Python kodu çalıştırmanıza olanak sağlayan bir uygulamadır. Colab, veri bilimi ve makine öğrenimi projeleri için ücretsiz olarak sunulan Tesla K80 GPU gibi güçlü donanımlara erişim sağlar. Colab ile ücretsiz GPU hizmetinden faydalanmak için şu adımları izlemeniz gerekir:
- 1. Adım: Colab uygulamasını bu linkten https://colab.research.google.com/ açın veya Google Drive'da yeni bir Colab notebook'u oluşturun.
- 2. Adım: Colab notebook'unuzda, sol üst köşedeki Düzenle menüsüne tıklayın ve Notebook ayarları seçeneğini seçin. Bu, notebook'unuzun çalıştırılacağı donanım ve yazılım ayarlarını belirlemenize olanak sağlayan bir pencere açacaktır.
- 3. Adım: Notebook ayarları penceresinde, Donanım hızlandırıcı bölümünde GPU seçeneğini seçin. Bu, notebook'unuzun GPU kullanabileceği anlamına gelir. Ardından Kaydet butonuna tıklayın ve pencereyi kapatın.
- 4. Adım: Artık Colab notebook'unuzda GPU'yu kullanabilirsiniz. Örneğin, GPU'nun modelinizin eğitim süresini ne kadar azalttığını görmek için bu linkteki https://colab.research.google.com/notebooks/gpu.ipynb örnek notebook'u deneyebilirsiniz.
3. UYGULAMA
Google Colab ile Google Drive hesabını bağlamak, Colab üzerinde çalıştığınız projeleri Drive'da saklamanızı ve erişmenizi sağlar. Bu sayede Colab not defterlerinizi farklı cihazlarda açabilir, paylaşabilir ve yedekleyebilirsiniz. Ayrıca Drive'da bulunan veri dosyalarını veya kütüphaneleri Colab not defterlerinizde kullanabilirsiniz. Bu işlem için aşağıdaki adımları izlemeniz gerekiyor:
1. Adım: Colab not defterinizde yeni bir kod hücresi oluşturun ve içine şu kodu yazın:
python
from google.colab import drive
drive.mount('/content/drive/')
Bu kod, Colab ile Drive hesabınızı bağlamak için gerekli olan kütüphaneyi içe aktarır ve Drive'ınızı /content/drive/ dizinine bağlar. Bu dizinin altında Drive'ınızda bulunan tüm klasör ve dosyaları görebilirsiniz. Eğer Drive'ınızda belirli bir klasörü bağlamak isterseniz, dizin yolunu şöyle değiştirebilirsiniz:
python
from google.colab import drive
drive.mount('/content/drive/MyDrive/ColabProjects')
Bu örnekte, Drive'ınızda ColabProjects adında bir klasör oluşturduğunuzu ve Colab not defterlerinizi bu klasörde sakladığınızı varsayıyoruz. Kod hücresini çalıştırmak için oynat düğmesine tıklayın.
2. Adım: Kod hücresini çalıştırdığınızda, Google sizden Drive hesabınıza erişim izni isteyecektir. Bu izni vermek için, ekranda çıkan Go to this URL in a browser yazan linke tıklayın. Bu link sizi Google hesabınızla giriş yapmanızı ve Colab'a erişim izni vermenizi isteyen bir sayfaya yönlendirecektir.
3. Adım: Google hesabınızla giriş yaptıktan ve Colab'a erişim izni verdikten sonra, ekranda bir doğrulama kodu görünecektir. Bu kodu kopyalayın ve Colab not defterinizdeki Enter your authorization code yazan kutucuğa yapıştırın. Sonra Enter tuşuna basın. Bu işlemi iki kez tekrarlayın.
4. Adım: Doğrulama kodunu girdikten sonra, ekranda Mounted at /content/drive/ yazısı görünecektir. Bu, Colab ile Drive hesabınızın başarıyla bağlandığı anlamına gelir. Eğer bir hata mesajı alırsanız, kod hücresini tekrar çalıştırın veya bağlantıyı kesip yeniden bağlayın.
5. Adım: Colab ile Drive hesabınızın bağlı olduğunu kontrol etmek için, yeni bir kod hücresi oluşturun ve içine şu kodu yazın:
python
!ls /content/drive/
Bu kod, bağladığınız dizindeki klasör ve dosyaları listeler. Eğer bağladığınız dizin /content/drive/ ise, Drive'ınızdaki tüm klasör ve dosyaları göreceksiniz. Eğer bağladığınız dizin /content/drive/MyDrive/ColabProjects ise, sadece bu klasördeki klasör ve dosyaları göreceksiniz.
Bu adımları takip ederek, Google Colab ile Google Drive hesabınızı bağlayabilirsiniz. Bu sayede, Colab not defterlerinizi Drive'ınızda saklayabilir, veri dosyalarını veya kütüphaneleri Colab not defterlerinizde kullanabilirsiniz.
Uygulamalar
Yapay sinir ağları (YSA) kullanılarak geliştirilen uygulamalar çok çeşitli ve ilgi çekicidir. YSA, insan beyninin bilgi işleme biçiminden esinlenerek oluşturulan hesaplama sistemleridir. YSA, girdi ve çıktı verileri arasındaki ilişkiyi öğrenerek karmaşık problemlere çözüm üretebilir. YSA'nın farklı öğrenme yöntemleri, ağ modelleri ve algoritmaları vardır. YSA, yapay zeka ve derin öğrenme alanlarının önemli bir parçasıdır.
YSA'nın birçok uygulama alanı bulunmaktadır. Bunlardan bazıları şunlardır:
- Hesaplamalı finans: YSA, kredi skorlaması, algoritmik ticaret, risk analizi, portföy yönetimi gibi finansal problemlere çözüm sunabilir.
- Görüntü işleme ve bilgisayarla görü: YSA, yüz tanıma, hareket tanıma, nesne tanıma, görüntü sınıflandırma, görüntü iyileştirme gibi görsel problemlere çözüm sunabilir.
- Doğal dil işleme: YSA, metin sınıflandırma, metin özetleme, metin üretme, makine çevirisi, ses tanıma, ses sentezi gibi dil problemlerine çözüm sunabilir.
- Biyomedikal uygulamalar: YSA, tıbbi görüntü analizi, tıbbi tanı, ilaç keşfi, biyolojik sinyal işleme gibi biyomedikal problemlere çözüm sunabilir.
YSA'nın uygulamaları için farklı programlama dilleri ve kütüphaneler kullanılabilir. Örneğin, MATLAB, Python, Java, C++ gibi dillerde YSA modelleri oluşturulabilir. Ayrıca, TensorFlow, PyTorch, Keras, Scikit-learn gibi popüler kütüphaneler de YSA'nın geliştirilmesine yardımcı olur.
4. UYGULAMA
YOLOv4, bir görüntüde birden fazla nesneyi hızlı ve doğru bir şekilde tanımlayabilen bir yapay sinir ağı modelidir. Bu modeli kendi veri setinizle eğitmek için Google Colab gibi bir bulut platformu kullanmanız gerekmektedir. Google Colab, ücretsiz olarak GPU ve TPU gibi yüksek performanslı işlem kaynakları sunan bir web tabanlı bir ortamdır.
Google Colab'da bir proje oluşturmak için öncelikle bir Colab not defteri açmanız gerekmektedir. Colab not defteri, Python kodu yazıp çalıştırabileceğiniz bir arayüzdür. Not defterinde, +kod bölümüne tıklayarak yeni bir kod hücresi ekleyebilirsiniz. Kod hücrelerini çalıştırmak için Shift+Enter tuşlarına basabilirsiniz.
YOLOv4 modelini eğitmek için gerekli olan dosyaları ve kütüphaneleri indirmek için AlexeyAB'nin darknet deposundan yararlanabilirsiniz. Darknet, YOLOv4 modelinin temelini oluşturan bir derin öğrenme çerçevesidir. Darknet deposunu Colab not defterine kopyalamak için aşağıdaki kodu çalıştırabilirsiniz:
python
!git clone https://github.com/AlexeyAB/darknet
Darknet deposunu kopyaladıktan sonra, YOLOv4 modelini Python koduyla kullanabilmek için darknet.py dosyasını Colab not defterine aktarmanız gerekmektedir. Darknet.py dosyası, YOLOv4 modelinin çeşitli fonksiyonlarını içeren bir Python modülüdür. Bu fonksiyonlardan bazıları şunlardır:
- load_network: YOLOv4 modelinin ağırlık ve yapılandırma dosyalarını yükler.
- detect_image: Bir görüntüdeki nesneleri algılar ve sınırlayıcı kutularını çizer.
- perform_batch_detection: Birden fazla görüntüdeki nesneleri algılar ve sonuçları bir klasöre kaydeder.
- draw_boxes: Algılanan nesnelerin sınırlayıcı kutularını ve sınıf isimlerini görüntü üzerine yazar.
Darknet.py dosyasını Colab not defterine aktarmak için aşağıdaki kodu çalıştırabilirsiniz:
python
from darknet import *
YOLOv4 modelinin başarıyla yüklendiğinden emin olmak için bir test görüntüsü üzerinde nesne algılama yapabilirsiniz. Bunun için öncelikle YOLOv4 modelinin ağırlık dosyasını indirmeniz gerekmektedir. Ağırlık dosyası, modelin eğitim sonucunda öğrendiği parametreleri içeren bir dosyadır. Ağırlık dosyasını indirmek için aşağıdaki kodu çalıştırabilirsiniz:
python
!wget https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v3_optimal/yolov4.weights
Ardından, test görüntüsünü Colab not defterine yüklemeniz gerekmektedir. Bunun için sol taraftaki dosyalar sekmesine tıklayarak test görüntüsünü seçebilirsiniz. Test görüntüsünün yolunu ve adını aşağıdaki kodda belirtmeniz gerekmektedir:
python
test_image = "/content/darknet/data/person.jpg"
Son olarak, test görüntüsü üzerinde nesne algılama yapmak için aşağıdaki kodu çalıştırabilirsiniz:
python
# YOLOv4 modelini yükle
network, class_names, class_colors = load_network("cfg/yolov4.cfg", "cfg/coco.data", "yolov4.weights")
# Test görüntüsünü algıla
detections = detect_image(network, class_names, test_image, thresh=0.25)
# Algılanan nesnelerin sınırlayıcı kutularını çiz
draw_boxes(detections, test_image, class_colors)
Bu kod, test görüntüsünde algılanan nesneleri ve onların sınıflarını gösteren bir çıktı üretecektir.
YOLOv4 modelini web kamerasından alınan görüntüler üzerinde çalıştırmak için Google Colab'ın kod parçacıkları özelliğinden yararlanabilirsiniz. Kod parçacıkları, Colab not defterinde kullanabileceğiniz hazır kod örnekleridir. Kod parçacıklarına erişmek için sol taraftaki kod parçacıkları sekmesine tıklayabilirsiniz.
Web kamerasını kullanmak için Camera Capture adlı kod parçacığını seçebilirsiniz. Bu kod parçacığı, JavaScript kodu kullanarak web kamerasından bir fotoğraf çeker ve onu Colab not defterine yükler. Bu fotoğrafı YOLOv4 modeline girdi olarak verebilir ve nesne algılama yapabilirsiniz.
Aşağıda, web kamerasından alınan bir fotoğraf üzerinde YOLOv4 modelini çalıştırmak için gerekli kodlar verilmiştir:
python
# Web kamerasından fotoğraf çek
from IPython.display import display, Javascript
from google.colab.output import eval_js
from base64 import b64decode
def take_photo(filename='photo.jpg', quality=0.8):
js = Javascript('''
async function takePhoto(quality) {
const div = document.createElement('div');
const capture = document.createElement('button');
capture.textContent = 'Capture';
div.appendChild(capture);
const video = document.createElement('video');
video.style.display = 'block';
const stream = await navigator.mediaDevices.getUserMedia({video: true});
document.body.appendChild(div);
div.appendChild(video);
video.srcObject = stream;
await video.play();
// Resize the output to fit the video element.
google.colab.output.setIframeHeight(document.documentElement.scrollHeight, true);
// Wait for Capture to be clicked.
await new Promise((resolve) => capture.onclick = resolve);
const canvas = document.createElement('canvas');
canvas.width = video.videoWidth;
canvas.height = video.videoHeight;
canvas.getContext('2d').drawImage(video, 0, 0);
stream.getVideoTracks()[0].stop();
div.remove();
return canvas.toDataURL('image/jpeg', quality);
}
''')
display(js)
data = eval_js('takePhoto({})'.format(quality))
binary = b64decode(data.split(',')[1])
with open(filename, 'wb') as f:
f.write(binary)
return filename
# Fotoğrafı kaydet
webcam_image = take_photo()
# YOLOv4 modelini yükle
network, class_names, class_colors = load_network("cfg/yolov4.cfg", "cfg/coco.data", "yolov4.weights")
# Fotoğrafı algıla
detections = detect_image(network, class_names, webcam_image, thresh=0.25)
# Algılanan nesnelerin sınırlayıcı kutularını çiz
draw_boxes(detections, webcam_image, class_colors)
Bu kod, web kamerasından alınan fotoğrafta algılanan nesneleri ve onların sınıflarını gösteren bir çıktı üretecektir.
5. UYGULAMA
XOR kapısı, iki girişin birbirinden farklı olması durumunda 1, aynı olması durumunda 0 çıktısı veren bir mantıksal işlemdir. Bu problemi çözmek için, iki giriş katmanı, iki gizli katman ve bir çıkış katmanından oluşan bir yapay sinir ağı kullanabiliriz. Bu ağın öğrenmesini sağlamak için, geri yayılım adı verilen bir algoritma kullanacağız. Bu algoritma, ağın tahminleri ile gerçek değerler arasındaki farkı azaltmak için ağın ağırlıklarını ve önyargılarını günceller.
Öncelikle, Python'da yapay sinir ağı oluşturmak için gerekli olan kütüphaneleri içe aktarmamız gerekiyor. Bunlar, matris işlemleri için NumPy, grafik çizmek için matplotlib ve çıktıları yazdırmak için sys kütüphaneleridir. Aşağıdaki kodu çalıştırarak bunları içe aktarabilirsiniz:
python
import numpy as np
import matplotlib.pyplot as plt
import sys
Sonra, XOR kapısı problemini çözmek için gerekli olan eğitim verilerini ve etiketlerini tanımlamamız gerekiyor. Eğitim verileri, iki girişin tüm olası kombinasyonlarını içeren bir matristir. Etiketler ise, bu girişlere karşılık gelen XOR kapısı çıktılarını içeren bir vektördür. Aşağıdaki kodu çalıştırarak bunları tanımlayabilirsiniz:
python
# Eğitim verileri (X) ve etiketler (Y)
X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]]).T # 2 x 4 matris
Y = np.array([[0, 1, 1, 0]]) # 1 x 4 vektör
Daha sonra, yapay sinir ağımızın parametrelerini başlatmamız gerekiyor. Parametreler, ağın katmanları arasındaki bağlantıların gücünü belirleyen ağırlıklar ve her katmandaki nöronların aktivasyonunu etkileyen önyargılardır. Ağırlıkları ve önyargıları rastgele küçük sayılarla başlatabiliriz. Ayrıca, ağın öğrenme hızını ve eğitim süresini belirleyen bazı hiperparametreleri de tanımlamamız gerekiyor. Aşağıdaki kodu çalıştırarak bunları yapabilirsiniz:
python
# Hiperparametreler
np.random.seed(0) # Rastgele sayı üreticisini sabitlemek için
n_x = 2 # Giriş katmanındaki nöron sayısı
n_h = 2 # Gizli katmandaki nöron sayısı
n_y = 1 # Çıkış katmanındaki nöron sayısı
alpha = 0.1 # Öğrenme hızı
epochs = 10000 # Eğitim süresi (iterasyon sayısı)
# Parametreler
W1 = np.random.randn(n_h, n_x) # Giriş katmanından gizli katmana giden ağırlıklar (2 x 2 matris)
W2 = np.random.randn(n_y, n_h) # Gizli katmandan çıkış katmana giden ağırlıklar (1 x 2 matris)
b1 = np.zeros((n_h, 1)) # Gizli katmandaki önyargılar (2 x 1 vektör)
b2 = np.zeros((n_y, 1)) # Çıkış katmandaki önyargılar (1 x 1 vektör)
Şimdi, yapay sinir ağımızın çalışmasını sağlamak için iki fonksiyon tanımlamamız gerekiyor: ileri yayılım ve geri yayılım. İleri yayılım fonksiyonu, giriş verilerini alarak ağın çıktısını hesaplar. Geri yayılım fonksiyonu ise, ağın çıktısı ile gerçek değer arasındaki hatayı hesaplayarak ağırlıkları ve önyargıları günceller. Bu fonksiyonlarda, aktivasyon fonksiyonu olarak sigmoid fonksiyonunu kullanacağız. Sigmoid fonksiyonu, herhangi bir sayıyı 0 ile 1 arasında bir değere eşler. Aşağıdaki kodu çalıştırarak bu fonksiyonları tanımlayabilirsiniz:
Python
# Sigmoid fonksiyonu ve türevi
def sigmoid(z):
return 1 / (1 + np.exp(-z))
def sigmoid_derivative(z):
return sigmoid(z) * (1 - sigmoid(z))
# İleri yayılım fonksiyonu
def forward_propagation(X, W1, b1, W2, b2):
Z1 = np.dot(W1, X) + b1 # Gizli katmandaki toplam girdi (2 x 4 matris)
A1 = sigmoid(Z1) # Gizli katmandaki aktivasyon (2 x 4 matris)
Z2 = np.dot(W2, A1) + b2 # Çıkış katmandaki toplam girdi (1 x 4 matris)
A2 = sigmoid(Z2) # Çıkış katmandaki aktivasyon (1 x 4 matris)
return Z1, A1, Z2, A2
# Geri yayılım fonksiyonu
def backward_propagation(X, Y, W1, b1, W2, b2, Z1, A1, Z2, A2):
m = X.shape[1] # Örnek sayısı
dZ2 = A2 - Y # Çıkış katmanındaki hata (1 x 4 matris)
dW2 = (1 / m) * np.dot(dZ2, A1.T) # Çıkış katmanındaki ağırlık gradyanı (1 x 2 matris)
db2 = (1 / m) * np.sum(dZ2, axis=1, keepdims=True) # Çıkış katmanındaki önyargı gradyanı (1 x 1 vektör)
dZ1 = np.dot(W2.T, dZ2) * sigmoid_derivative(Z1) # Gizli katmandaki hata (2 x 4 matris)
dW1 = (1 / m) * np.dot(dZ1, X.T) # Gizli katmandaki ağırlık gradyanı (2 x 2 matris)
db1 = (1 / m) * np.sum(dZ1, axis=1, keepdims=True) # Gizli katmandaki önyargı gradyanı (2 x 1 vektör)
return dW1, db1, dW2, db2
Son olarak, yapay sinir ağımızı eğitmek için bir eğitim fonksiyonu tanımlamamız gerekiyor. Eğitim fonksiyonu, belirlediğimiz iterasyon sayısı kadar ileri yayılım ve geri yayılım fonksiyonlarını çağırarak ağın parametrelerini günceller. Ayrıca, her iterasyonda ağın performansını ölçmek için bir maliyet fonksiyonu kullanır. Maliyet fonksiyonu, ağın tahminleri ile gerçek değerler arasındaki farkın karesinin ortalamasıdır. Bu fonksiyonun değeri ne kadar küçükse, ağın performansı o kadar iyidir. Aşağıdaki kodu çalıştırarak eğitim fonksiyonunu tanımlayabilirsiniz:
python
# Eğitim fonksiyonu
def train(X, Y, W1, b1, W2, b2, alpha, epochs):
# Maliyet değerlerini saklamak için bir liste
cost_history = []
# Belirtilen iterasyon sayısı kadar döngü
for i in range(epochs):
# İleri yayılım
cost, cache, A2 = forward_propagation(X, Y, W1, b1, W2, b2)
# Geri yayılım
gradients = backward_propagation(X, Y, cache)
# Parametreleri güncelleme
W1, b1, W2, b2 = updateParameters(W1, b1, W2, b2, gradients, alpha)
# Maliyet değerini listeye ekleme
cost_history.append(cost)
# Her 1000 iterasyonda bir maliyet değerini yazdırma
if (i % 1000 == 0):
print(f\"Iterasyon {i}: maliyet = {cost}\")
# Son parametreleri ve maliyet listesini döndürme
return W1, b1, W2, b2, cost_history
Bu fonksiyonu kullanarak, XOR kapısı problemini çözmek için yapay sinir ağımızı eğitebiliriz. Aşağıdaki kodu çalıştırarak bunu yapabilirsiniz:
python
# Yapay sinir ağını eğitme
W1, b1, W2, b2, cost_history = train(X, Y, W1, b1, W2, b2, alpha, epochs)
Eğitim sonucunda, ağın maliyet değerinin nasıl azaldığını görmek için bir grafik çizdirebiliriz. Aşağıdaki kodu çalıştırarak bunu yapabilirsiniz:
Python
# Maliyet değerinin grafiğini çizdirme
plt.plot(cost_history)
plt.xlabel(\"Iterasyon\")
plt.ylabel(\"Maliyet\")
plt.show()
Grafikten de görülebileceği gibi, ağın maliyet değeri iterasyonlar ilerledikçe düşmektedir. Bu, ağın XOR kapısı problemini öğrendiğini göstermektedir.
Son olarak, ağın performansını test etmek için, eğitim verilerini ağa vererek elde ettiğimiz çıktıları gerçek değerlerle karşılaştırabiliriz. Aşağıdaki kodu çalıştırarak bunu yapabilirsiniz:
python
# Ağın çıktısını hesaplama
_, _, _, A2 = forward_propagation(X, Y, W1, b1, W2, b2)
# Çıktıyı yuvarlama
predictions = np.round(A2)
# Çıktıyı ve gerçek değeri yazdırma
print(f\"Çıktı: \\n{predictions}\")
print(f\"Gerçek değer: \\n{Y}\")
Çıktı ve gerçek değer arasında bir fark olmadığını görebilirsiniz. Bu, ağın XOR kapısı problemini başarıyla çözdüğünü göstermektedir.