İçindekiler[Saklamak][Göstermek]
Son yıllarda, çok çeşitli görevlerde son derece iyi olduklarını gösterdikleri için sinir ağlarının popülaritesi arttı.
Görüntü ve ses tanıma, doğal dil işleme ve hatta Go ve satranç gibi karmaşık oyunları oynamak için harika bir seçim oldukları gösterildi.
Bu yazıda, bir sinir ağını eğitme sürecinin tamamı boyunca size yol göstereceğim. Bir sinir ağını eğitmek için tüm adımlardan bahsedeceğim ve açıklayacağım.
Adımları gözden geçirirken, pratik bir örnek olduğundan emin olmak için basit bir örnek eklemek istiyorum.
Öyleyse gelin ve sinir ağlarını nasıl işleyeceğimizi öğrenelim
Basitten başlayalım ve neler olduğunu soralım. nöral ağlar ilk etapta.
Sinir Ağları Tam Olarak Nedir?
Sinir ağları, insan beyninin işleyişini simüle eden bilgisayar yazılımlarıdır. Büyük hacimli verilerden ve insanların algılamakta zorlanabilecekleri nokta modellerinden öğrenebilirler.
Sinir ağları, resim ve ses tanıma, doğal dil işleme ve tahmine dayalı modelleme gibi görevlerdeki çok yönlülükleri nedeniyle son yıllarda popülaritesini artırdı.
Genel olarak, sinir ağları çok çeşitli uygulamalar için güçlü bir araçtır ve çok çeşitli işlere yaklaşma şeklimizi dönüştürme şansına sahiptir.
Neden Onlar Hakkında Bilmeliyiz?
Yapay sinir ağlarını anlamak çok önemlidir çünkü bunlar bilgisayar görüşü, konuşma tanıma ve doğal dil işleme dahil olmak üzere çeşitli alanlarda keşiflere yol açmıştır.
Örneğin sinir ağları, sürücüsüz arabalarda, otomatik çeviri hizmetlerinde ve hatta tıbbi teşhislerdeki son gelişmelerin merkezinde yer alıyor.
Sinir ağlarının nasıl çalıştığını ve nasıl tasarlanacağını anlamak, yeni ve yaratıcı uygulamalar oluşturmamıza yardımcı olur. Ve belki de gelecekte daha da büyük keşiflere yol açabilir.
Öğretici Hakkında Bir Not
Yukarıda da belirttiğim gibi sinir ağı eğitiminin adımlarını bir örnek vererek anlatmak istiyorum. Bunun için MNIST veri setinden bahsetmeliyiz. Sinir ağlarına başlamak isteyen yeni başlayanlar için popüler bir seçimdir.
MNIST, Değiştirilmiş Ulusal Standartlar ve Teknoloji Enstitüsü anlamına gelen bir kısaltmadır. Makine öğrenimi modellerini, özellikle de sinir ağlarını eğitmek ve test etmek için yaygın olarak kullanılan el yazısıyla yazılmış bir rakam veri kümesidir.
Koleksiyon, 70,000'dan 0'a kadar el yazısıyla yazılmış sayıların 9 gri tonlamalı fotoğrafını içeriyor.
MNIST veri seti, aşağıdakiler için popüler bir kıyaslamadır: görüntü sınıflandırması görevler. Sık sık öğretme ve öğrenme için kullanılır, çünkü makine öğrenimi algoritmaları için cevaplaması zor bir sorun teşkil ederken kompakt ve başa çıkması kolaydır.
MNIST veri kümesi, TensorFlow, Keras ve PyTorch dahil olmak üzere çeşitli makine öğrenimi çerçeveleri ve kitaplıkları tarafından desteklenir.
Artık MNIST veri setini biliyoruz, bir sinir ağını eğitme adımlarımıza başlayalım.
Sinir Ağını Eğitmek İçin Temel Adımlar
Gerekli Kitaplıkları İçe Aktar
Bir sinir ağını ilk kez eğitmeye başladığınızda, modeli tasarlamak ve eğitmek için gerekli araçlara sahip olmak çok önemlidir. Bir sinir ağı oluşturmanın ilk adımı, TensorFlow, Keras ve NumPy gibi gerekli kitaplıkları içe aktarmaktır.
Bu kitaplıklar, sinir ağının gelişimi için yapı taşları olarak hizmet eder ve çok önemli yetenekler sağlar. Bu kitaplıkların kombinasyonu, karmaşık sinir ağı tasarımlarının oluşturulmasına ve hızlı eğitime olanak tanır.
Örneğimize başlamak için; TensorFlow, Keras ve NumPy gibi gerekli kitaplıkları içe aktaracağız. TensorFlow açık kaynaklı bir makine öğrenimi çerçevesidir, Keras üst düzey bir sinir ağı API'sidir ve NumPy bir sayısal bilgi işlem Python kitaplığıdır.
import tensorflow as tf
from tensorflow import keras
import numpy as np
Veri Kümesini Yükle
Veri kümesi şimdi yüklenmelidir. Veri seti, sinir ağının eğitileceği veri setidir. Bu, fotoğraflar, ses ve metin dahil olmak üzere herhangi bir veri türü olabilir.
Veri setini iki kısma ayırmak çok önemlidir: biri sinir ağını eğitmek için, diğeri ise eğitilen modelin doğruluğunu değerlendirmek için. Veri kümesini içe aktarmak için TensorFlow, Keras ve PyTorch dahil olmak üzere çeşitli kitaplıklar kullanılabilir.
Örneğimizde, MNIST veri setini yüklemek için Keras'ı da kullanıyoruz. Veri setinde 60,000 eğitim fotoğrafı ve 10,000 test görüntüsü bulunmaktadır.
mnist = keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
Verileri Ön İşleme Alın
Veri ön işleme, bir sinir ağı eğitiminde önemli bir aşamadır. Sinir ağına beslenmeden önce verilerin hazırlanmasını ve temizlenmesini gerektirir.
Piksel değerlerinin ölçeklenmesi, verilerin normalleştirilmesi ve etiketlerin tek sıcak kodlamaya dönüştürülmesi, ön işleme prosedürlerinin örnekleridir. Bu süreçler, sinir ağının daha etkili ve kesin bir şekilde öğrenmesine yardımcı olur.
Verilerin önceden işlenmesi, fazla uydurmanın en aza indirilmesine ve sinir ağının performansının iyileştirilmesine de yardımcı olabilir.
Sinir ağını eğitmeden önce verileri önceden işlemeniz gerekir. Bu, etiketlerin tek etkin kodlamaya değiştirilmesini ve piksel değerlerinin 0 ile 1 arasında olacak şekilde ölçeklenmesini içerir.
train_images = train_images / 255.0
test_images = test_images / 255.0
train_labels = keras.utils.to_categorical(train_labels, 10)
test_labels = keras.utils.to_categorical(test_labels, 10)
Modeli tanımlayın
Sinir ağı modelini tanımlama süreci, katman sayısı, katman başına nöron sayısı, aktivasyon fonksiyonları ve ağ tipi (ileri beslemeli, tekrarlayan veya evrişimli) gibi mimarisini oluşturmayı içerir.
Kullandığınız sinir ağı tasarımı, çözmeye çalıştığınız sorunun türüne göre belirlenir. İyi tanımlanmış bir sinir ağı tasarımı, daha verimli ve doğru hale getirerek sinir ağı öğrenimine yardımcı olabilir.
Bu noktada sinir ağı modelini açıklamanın zamanı geldi. Bu örnek için, her biri 128 nöron içeren iki gizli katman ve 10 nöron içeren bir softmax çıktı katmanı içeren basit bir model kullanın.
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(10, activation='softmax')
])
Modeli Derleyin
Kayıp işlevi, optimize edici ve metrikler, sinir ağı modelinin derlemesi sırasında belirtilmelidir. Sinir ağının çıktıyı doğru bir şekilde tahmin etme yeteneği, kayıp fonksiyonu tarafından ölçülür.
Eğitim sırasında sinir ağının doğruluğunu artırmak için optimize edici ağırlıklarını değiştirir. Eğitim sırasında sinir ağının etkinliği metrikler kullanılarak ölçülür. Sinir ağı eğitilmeden önce model oluşturulmalıdır.
Örneğimizde, hemen şimdi modeli oluşturmamız gerekiyor.
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
Modeli Eğit
Kayıp fonksiyonunu en aza indirmek için ağın ağırlıklarını değiştirirken hazırlanan veri setini sinir ağından geçirmek, sinir ağını eğitmek olarak bilinir.
Doğrulama veri kümesi, etkinliğini izlemek ve fazla uydurmayı önlemek için eğitim sırasında sinir ağını test etmek için kullanılır. Eğitim süreci biraz zaman alabilir, bu nedenle yetersiz uyumu önlemek için sinir ağının uygun şekilde eğitildiğinden emin olmak önemlidir.
Eğitim verilerini kullanarak artık modeli eğitebiliriz. Bunu yapmak için parti boyutunu (model güncellenmeden önce işlenen örnek sayısı) ve dönem sayısını (tüm veri kümesindeki tekrar sayısı) tanımlamalıyız.
model.fit(train_images, train_labels, epochs=10, batch_size=32)
Modelin Değerlendirilmesi
Sinir ağının performansını test veri seti üzerinde test etmek, onu değerlendirme sürecidir. Bu aşamada, test veri setini işlemek için eğitilmiş sinir ağı kullanılır ve doğruluğu değerlendirilir.
Bir sinir ağının yepyeni, denenmemiş verilerden doğru sonucu ne kadar etkili bir şekilde tahmin edebildiği, doğruluğunun bir ölçüsüdür. Modeli analiz etmek, sinir ağının ne kadar iyi çalıştığını belirlemeye yardımcı olabilir ve ayrıca onu daha da iyi hale getirmenin yollarını önerebilir.
Sonunda eğitimden sonra test verilerini kullanarak modelin performansını değerlendirebiliriz.
test_loss, test_acc = model.evaluate(test_images, test_labels)
print('Test accuracy:', test_acc)
Bu kadar! MNIST veri kümesindeki rakamları algılamak için bir sinir ağı eğittik.
Verilerin hazırlanmasından eğitilen modelin etkinliğinin değerlendirilmesine kadar, bir sinir ağının eğitimi çeşitli süreçleri içerir. Bu talimatlar acemilerin sinir ağlarını verimli bir şekilde oluşturmasına ve eğitmesine yardımcı olur.
Çeşitli sorunların üstesinden gelmek için sinir ağlarını kullanmak isteyen yeni başlayanlar, bu talimatları izleyerek bunu yapabilirler.
Örneği Görselleştirme
Daha iyi anlamak için bu örnekle ne yaptığımızı görselleştirmeye çalışalım.
Matplotlib paketi, bu kod parçacığında, eğitim veri kümesinden rastgele bir fotoğraf seçimi çizmek için kullanılır. İlk olarak, Matplotlib'in “pyplot” modülünü içe aktarıyoruz ve adını “plt” olarak değiştiriyoruz. Ardından, toplam boyutu 10'a 10 inç olan, 5 satır ve 5 sütun alt grafiği olan bir şekil yaparız.
Ardından, her birinde eğitim veri kümesinden bir resim görüntüleyerek alt grafikler üzerinde yineleme yapmak için bir for döngüsü kullanırız. Resmi görüntülemek için “imshow” işlevi kullanılır ve fotoğrafları gri tonlamalı olarak görüntülemek için “cmap” seçeneği 'gri' olarak ayarlanır. Her bir alt planın başlığı, koleksiyondaki ilişkili görüntünün etiketine de ayarlanır.
Son olarak, şekilde çizilen resimleri görüntülemek için "göster" işlevini kullanıyoruz. Bu işlev, verileri anlamamıza ve olası endişeleri belirlememize yardımcı olabilecek veri kümesinden bir fotoğraf örneğini görsel olarak değerlendirmemize olanak tanır.
import matplotlib.pyplot as plt
# Plot a random sample of images
fig, axes = plt.subplots(nrows=5, ncols=5, figsize=(10,10))
for i, ax in enumerate(axes.flat):
ax.imshow(train_images[i], cmap='gray')
ax.set_title(f"Label: {train_labels[i].argmax()}")
ax.axis('off')
plt.show()
Önemli Sinir Ağı Modelleri
- İleri Beslemeli Sinir Ağları (FFNN): Bilginin giriş katmanından çıkış katmanına bir veya daha fazla gizli katman aracılığıyla yalnızca tek bir şekilde hareket ettiği basit bir sinir ağı türü.
- Evrişimli Sinir Ağları (CNN): Görüntü algılama ve işlemede yaygın olarak kullanılan bir sinir ağı. CNN'ler, resimlerden özellikleri otomatik olarak tanımak ve çıkarmak için tasarlanmıştır.
- Tekrarlayan Sinir Ağları (RNN): Görüntü algılama ve işlemede yaygın olarak kullanılan bir sinir ağı. CNN'ler, resimlerden özellikleri otomatik olarak tanımak ve çıkarmak için tasarlanmıştır.
- Uzun Kısa Süreli Bellek (LSTM) Ağları: Standart RNN'lerde kaybolan gradyan sorununun üstesinden gelmek için oluşturulmuş bir RNN biçimi. Sıralı verilerdeki uzun vadeli bağımlılıklar, LSTM'lerle daha iyi yakalanabilir.
- Otomatik kodlayıcılar: Ağa giriş verilerini çıkış katmanında yeniden üretmesinin öğretildiği denetimsiz öğrenme sinir ağı. Veri sıkıştırma, anormallik tespiti ve resim parazit giderme, otomatik kodlayıcılarla gerçekleştirilebilir.
- Üretici Düşman Ağları (GAN): Üretken bir sinir ağı, bir eğitim veri kümesiyle karşılaştırılabilir yeni veriler üretmesi öğretilen bir sinir ağı biçimidir. GAN'lar iki ağdan oluşur: yeni veriler oluşturan bir üretici ağ ve oluşturulan verilerin kalitesini değerlendiren bir ayırıcı ağ.
Özetle, Sonraki Adımlarınız Ne Olmalıdır?
Sinir ağı eğitimi hakkında daha fazla bilgi edinmek için çeşitli çevrimiçi kaynakları ve kursları keşfedin. Projeler veya örnekler üzerinde çalışmak, sinir ağlarını daha iyi kavramanın bir yöntemidir.
İkili sınıflandırma problemleri veya resim sınıflandırma görevleri gibi kolay örneklerle başlayın ve ardından doğal dil işleme veya takviye öğrenme.
Projeler üzerinde çalışmak, gerçek deneyim elde etmenize ve sinir ağı eğitim becerilerinizi geliştirmenize yardımcı olur.
Diğer öğrenciler ve profesyonellerle etkileşimde bulunmak, çalışmanızı paylaşmak ve yorum ve yardım almak için çevrimiçi makine öğrenimi ve sinir ağı gruplarına ve forumlarına da katılabilirsiniz.
LSRS MONRAD-KROHN
⁶ĵHatanın en aza indirilmesi için python programını görmek isterdim. Bir sonraki katmana ağırlık değişiklikleri için özel seçim düğümleri