İnternette İstediğiniz Gibi Çevrimiçi Para Kazanma!

Sıfırdan oluşturuldu ve uygulandı: Yapay zekaya doğru

Şu yazıyı okuyorsunuz: Sıfırdan Oluşturuldu ve Kullanıldı: Yapay Zekaya Doğru

İlk olarak Yapay Zekaya Doğru’da yayınlandı.

Bu makale, matematiksel, görsel ve programatik açıdan önemli alanları kapsayan çok katmanlı algılayıcıya genel bir bakış sunmayı amaçlamaktadır.

Okuyucunun çok katmanlı bir algılayıcının arkasındaki sezgiyi küçük adım adım bir yöntem kullanarak yakalamasına olanak tanıyan bir yaklaşım benimsenmiştir.

Matris çarpımı, doğrusal cebir (doğrusal dönüşüm), cebirsel ifadelerin basitleştirilmesi ve hesaplama (türevler, kısmi türevler ve zincir kuralı) ile ilgili önceki okumalar, okuyucunun bu makaleden en iyi şekilde yararlanmasına yardımcı olacaktır. Ek olarak Python deneyimi, okuyucunun bu makalede tartışılan çok katmanlı algılayıcı mimarisinin uygulamasını anlamasına yardımcı olacaktır.

Model mimarisi:

İleri beslemeli bir sinir ağı olan çok katmanlı bir algılayıcı (MLP) oluşturacağız. Bu modelde girdiler ağırlıklarla çarpılır, eklenir ve her girişi etkinleştiren doğrusal olmayan bir aktivasyon fonksiyonundan geçirilir. Gizli katmandan etkinleştirilen veriler daha sonra tahmini sağlayan çıktı katmanına gönderilir. Model mimarisine genel bir bakış aşağıda verilmiştir:

Giriş katmanı: Her eğitim örneğinde her özelliğe ilişkin 2 giriş () kullanacağız.

Gizli katman: giriş katmanı ile çıkış katmanı arasına 3 nörondan () oluşan bir katman dahil edeceğiz.

Çıkış katmanı: Tahmin() için bir nörondan oluşan bir katman kullanacağız.

Şekil 1’de uygulayacağımız MLP mimarisini görselleştiriyoruz.

X: giriş katmanındaki giriş varlığı

z : gizli katmana doğrusal dönüşüm

H: gizli katmandaki aktivasyon fonksiyonu

: gizli katmana doğrusal dönüşüm

P : çıktı katmanındaki tahmin

Eğitim örnekleri:

MLP sinir ağımızı verilerdeki kalıpları öğrenebilecek şekilde eğitmek isteyeceğiz. Basit olması açısından verileri eğitmek için XOR mantık kapılarını kullanacağız. Bir XOR mantık kapısı, eğer doğru girişlerin sayısı tek ise, bir true() çıkışı üretir.

Tablo 1, ağı eğitmek için kullanacağımız XOR mantık kapısı verilerine genel bir bakış sunmaktadır.

Aşağıda gösterildiği gibi eğitim örneği sayısı 4’tür. Her eğitim örneği için iki input() özelliği kullanılacaktır. Her eğitim örneğinin karşılık gelen bir çıktısı vardır. Çıktı, modelin performansını değerlendirmek için MLP()’nin çıktı tahminiyle karşılaştırılacak olan temel doğruluk etiketidir.

Önemli not: Bu makale MLP oluşumuna odaklanmaktadır. Eğitim sonrasında MLP’ler, test verileri adı verilen, görünmeyen veriler üzerinden değerlendirilir. Bu, MLP’nin ne kadar iyi genelleştirildiğini değerlendirir. MLP’nin test verileri üzerinden değerlendirilmesi bu makalenin kapsamı dışındadır.

Çok katmanlı algılayıcının yapısı

Adım 1: Giriş Özellikleri (Tasarım Matrisi) ve Temel Gerçek ve Etiketler

İlk önce 4 eğitim örneğinin her biri için input() özelliklerini tasarım dizisi olarak bilinen bir dizide saklayacağız. Ayrıca karşılık gelen temel doğruluk etiketlerini bir sütun vektöründe saklayacağız.

Şekil 2, tasarım matrisi ve sütun vektörüne genel bir bakış sunmaktadır.

Adım 2: İleriye Yayılım

Artık modeli ve eğitim verilerini tanımladığımıza göre, çıktıya ulaşmak için girdileri iletebiliriz. Bunu yapmak için aşağıdakileri yapmamız gerekecek:

aaa

Not: Basitlik açısından bu makalede kullanılan doğrusal dönüşümlere sapmayı dahil etmeyeceğiz. Önyargı (b), wx+b doğrusal fonksiyonlarında sonucu telafi etmek ve aktivasyon fonksiyonunu kaydırmak için kullanılan toplam sabittir.

Daha fazla ayrıntı aşağıda verilmiştir:

Modeli parametreleri:

Ağırlık katsayıları ağın parametreleridir. Bunları, ortalaması 0 ve varyansı 1 olan rastgele bir Gauss dağılımından başlatacağız. Bunu yaparak, ortalamaya yakın ağırlıklar çizme şansı artacak ve bu da daha kararlı ağırlık değerleri ile sonuçlanacaktır. ağı başlatmak için kullanılır. Bu ağırlıklar daha sonra tahmin yeteneğini optimize etmek için ağ tarafından güncellenecektir (bununla ilgili daha fazla bilgi aşağıdadır).

Bu ağda kullanılan toplam parametre (ağırlık) sayısı 9’dur. Bu, giriş katmanındaki nöron sayısı, gizli katmandaki nöron sayısı (2 x 3 = 6) ve nöron sayısı ile çarpılarak hesaplanabilir. çıkış katmanındaki nöron sayısına göre gizli katmanda (3 x 1 = 3).

Ağırlık Matrisi (Gizli Katman Girişi): 4 adet eğitim örneğimiz olduğu için öncelikle giriş katmanından gizli katmana (6 ağırlık) ağırlık katsayılarını depolamak için bir ağırlık matrisi oluşturacağız.

Şekil 3 ağırlık matrisine genel bir bakış sunmaktadır.

Doğrusal Dönüşüm (Gizli Katmana): Gizli katmana aktarılan her giriş özelliği üzerinde doğrusal bir dönüşüm gerçekleştireceğiz. Bu, modelin verilerdeki ilişkileri öğrenebileceği anlamına gelir. Bunu yapmak için, her bir giriş özelliği ve ilgili ağırlık katsayısı üzerinde matris çarpımı gerçekleştireceğiz. Tasarım matrisinin boyutları vardır ve ağırlık matrisi (yukarıda gösterildiği gibi). Bu iki matrisin çarpılması, her satırın 4 eğitim örneğinin her birini temsil ettiği ve her sütunun bir z düğümünü temsil ettiği yeni bir Z matrisiyle sonuçlanır. Bu, Şekil 4 ve Şekil 5’te gösterilmiştir:

Eğitim örneği 1’e yönelik doğrusal dönüşüm, her z düğümünde ağırlıklı toplama yoluyla iki giriş özelliğinin doğrusal dönüşümünü gösteren Şekil 6’da görselleştirilmiştir.

Aktivasyon Fonksiyonu (Sigmoid Fonksiyonu):

Bir sonraki adımımız, gizli katman ve çıkış katmanındaki her bir nöronun aktivasyon seviyesini ayarlayacak doğrusal olmayan bir aktivasyon fonksiyonunu dahil etmektir. Bunu yapmak için sigmoid fonksiyonunu kullanacağız. Bir değer alır() ve onu 0 ile 1 arasına sıkıştırır. Örneğin sigmoid fonksiyonuna -10 değerini iletirsek sıfıra yakın bir değer döndürecektir. 0’a ne kadar yakınsa nöron o kadar az aktif, 1’e ne kadar yakınsa o kadar aktif demektir. Fikir şu ki, nöron ne kadar pozitif olursa o kadar aktif olur, insan beyninden esinlenerek bizi doğrusallığın ötesine taşır!

Sigmoid fonksiyonunun matematiksel gösterimi ve görsel sezgisi aşağıda verilmiştir:

Etkinleştirme işlevi (gizli katmanda): Aktivasyon fonksiyonunu tanımladığımıza göre artık onu gizli katmanda kullanabiliriz. Bunu yapmak için, Şekil 9’da detaylandırıldığı gibi, her eğitim örneği için Z matrisindeki her bir öğeye sigmoid fonksiyonunu uyguluyoruz:

Eğitim örneği 1 için gizli katmandaki aktivasyon fonksiyonu, Şekil 10’da görselleştirilmiştir:

Çıkış katmanı tahmini: Şimdi doğrusal bir dönüşüm gerçekleştireceğiz ve sigmoid fonksiyonunu gizli katmandan çıktı katmanına uygulayacağız, sonuçta tahmin edilen çıktı elde edilecektir (aşağıdaki Şekil 11’e bakınız). Sigmoid fonksiyonunu kullanarak modelimizin tahminleri 0 ile 1 arasında sınırlandırılmıştır. Bu sınırlayıcı değerler modelin tahmin olasılıkları olarak görülebilir.

Eğitim örneği 1 için çıktı katmanındaki doğrusal dönüşüm ve tahmin aşağıda görselleştirilmiştir:

Kayıp ve maliyet fonksiyonu: İkili çapraz entropi kaybı/maliyet fonksiyonu

ve işlevleri bize temel doğruluk etiketleri ile ilgili tahminler arasındaki farkı gösterir. Özellikle, fonksiyon bir eğitim örneği için farkı gösterirken, fonksiyon tüm eğitim örnekleri arasındaki ortalama farkı gösterir.

Kayıp fonksiyonunu aşağıdaki açıklama ve sezgi amacıyla kullanacağız:

İkili çapraz entropi kaybı: Hatırlarsanız, model tahminlerimiz 0 ile 1 arasında sınırlanmıştır. İkili çapraz entropi kaybını kullanarak, model tahminlerinin her birini ilgili temel doğruluk etiketleriyle () karşılaştırabiliriz.

İkili çapraz entropi kaybı Şekil 13’te matematiksel olarak gösterilmiştir.

Negatif logaritma kullanıldığında, ikili çapraz entropi kaybı, temel doğruluk etiketinden uzaklaştıkça yanlış tahminleri büyük ölçüde cezalandırır. Bu, Şekil 14 ve Şekil 15’te sezgisel olarak gösterilmiştir.

Eğer = 0 ise, 1’e yaklaştıkça hızlı bir artış olur. Alternatif olarak 0’a yaklaştıkça 0’a da yaklaşır.

=1 ise 0’a yaklaştıkça hızlı bir artış olur. Alternatif olarak 1’e yaklaştıkça 0’a da yaklaşır.

İkili çapraz entropi maliyet fonksiyonu: Modelin genel performansını optimize etmek için tüm eğitim örnekleri üzerinden temel doğruluk etiketleri ile tahminler arasındaki ortalamayı alabiliriz.

Modelin genel performansını değerlendirmek için matematiksel olarak aşağıdaki gibi açıklanan ikili çapraz entropi maliyet fonksiyonunu kullanacağız:

Doğrudan yayılma (giriş katmanından çıkış katmanına özet):

Şekil 17, bir eğitim örneği için, daha önce ele aldığımız girdi katmanından çıktı katmanına doğru yayılımı bir araya getirmektedir.

Adım 3. Geriye Yayılım:

Modelimiz bir dizi tahmin üretti ancak bunlar modelin başarabileceği en iyi tahminler olmayabilir. Ağırlıklarını biraz ayarlayarak modeli optimize etmeye ve tahminlerini iyileştirmeye çalışabiliriz. Bunu yapmadan önce, ilgili bazı kavramları üst düzeyde ele alalım:

f(x) = x²

zxyxy

x yzxy

f(g(x))). g(x) f(x)f(x) sin(x²)f(x) = sin(x)g(x) = x²

MLP geri yayılımı:

Sinir ağımız çoklu fonksiyonların bir bileşimi olarak tanımlanabilir: giriş katmanındaki giriş nerededir, bunun doğrusal dönüşümüdür, gizli katmandaki sigmoid aktivasyon fonksiyonudur, bunun doğrusal dönüşümüdür ve tahmindir. Modelin çıktı katmanındaki sigmoid fonksiyonu.

İkili çapraz entropi kaybı fonksiyonumuz, temel doğruluk etiketi () ile birlikte sinir ağı tahminini girdi olarak alır.

Kısmi türev özellikle sinir ağları için önemlidir. Bunun nedeni, fonksiyonun kısmi türevinin her bir ağırlığa göre hesaplanması ve daha sonra modelin tahminlerini iyileştirmek için küçük bir miktarla değiştirilmesidir. Ağırlıkları bu şekilde güncellemek, fonksiyonun minimumunu bulmayı hedefleyebileceğimiz anlamına gelir, bu da en uygun tahmini bulmamızı sağlar (bununla ilgili daha fazla bilgi daha sonra).

Ağırlıkları güncellemek için, her ağırlığın Kayıp’a göre kısmi türevini bulmak için zincir kuralını kullanarak geriye yayılım yapacağız.

Şu ana kadar oluşturduğumuz sinir ağını kullanarak, bir eğitim örneği ve iki ağırlık() için kısmi türevi ve zincir kuralını çalışırken göstereceğiz:

Kaybın wh1’e göre kısmi türevi:

üzerindeki etkisini değerlendirmek için biraz zorlamak isteyeceğiz. Bunu yapmak için önce ‘ye göre kısmi türevini bulmamız gerekiyor.

‘ye göre kısmi türevine doğrudan erişemiyoruz. Bunun üstesinden gelmek için, ‘nin kısmi türevinden başlayarak zincir kuralını kullanarak aşağı doğru hareket etmemiz gerekir (daha fazla ayrıntı için Şekil 20 ve 21’e bakın).

Aşağıdaki diyagram önceki kısmi türevlerin birbirleriyle nasıl ilişkili olduğunu göstermektedir:

  • fonksiyonun değişikliklere duyarlılığını temsil eder.
  • 1/1, fonksiyonun içindeki değişikliklere duyarlılığını temsil eder.
  • ∂/∂ fonksiyonun içindeki değişikliklere duyarlılığını temsil eder.

Yukarıdaki kısmi türevleri alıp bunları çarparak (zincir kuralını kullanarak), aşağıdakilere göre kısmi türevini bulabiliriz:

Kaybın w11’e göre kısmi türevi:

Daha sonra, Kayıp üzerindeki etkisini değerlendirmek için biraz zorlamak isteyeceğiz. Benzer şekilde, ‘nin ‘ye göre kısmi türevine doğrudan erişemiyoruz. Bu nedenle, Kayıp’ın kısmi türevinden başlayarak zincir kuralını kullanarak aşağı doğru hareket etmemiz gerekir (daha fazla ayrıntı için Şekil 23 ve 24’e bakın).

Aşağıdaki diyagram önceki kısmi türevlerin birbirleriyle nasıl ilişkili olduğunu göstermektedir:

  • fonksiyonun değişikliklere duyarlılığını temsil eder.
  • fonksiyonun değişikliklere duyarlılığını temsil eder.
  • ∂/∂ fonksiyonun içindeki değişikliklere duyarlılığını temsil eder.
  • ∂/∂ fonksiyonun içindeki değişikliklere duyarlılığını temsil eder.
  • ∂z/∂fonksiyonun ‘deki değişikliklere duyarlılığını temsil eder.

Kaybın w11’e göre kısmi türevi şu şekilde temsil edilebilir:

Kalan model ağırlıklarına göre kısmi türevi yukarıda belirtilen prosedürler kullanılarak hesaplanmalıdır.

Optimizasyon: gradyan inişi ve öğrenme oranı

Artık her ağırlığa göre kısmi türevlerini hesapladığımıza göre, modelimizin tahminlerini iyileştirmek amacıyla bu ağırlıkları küçük miktarlarda ayarlayabiliriz.

Dereceli alçalma: Gradyan inişini kullanarak fonksiyonun minimumunu bularak en uygun tahmini bulabiliriz. Temelde, en düşük fonksiyon sonucunu üreten en iyi ağırlıkları bulmaya çalışıyoruz.

Öğrenme oranı: Her ağırlığı küçük bir miktar ayarlarsak bunun modelin tahmin performansını nasıl değiştireceğini değerlendirebiliriz. Öğrenme oranı bunu yapmak için kullandığımız ayarlanabilir bir hiperparametredir.

Aşağıda büyük bir öğrenme oranı ve küçük bir öğrenme oranı kullanılarak gradyan inişinin sezgisel örnekleri verilmiştir. Şekil 26’da gösterildiği gibi, öğrenme oranı ne kadar yüksek olursa ağ o kadar hızlı eğitilir, ancak işlevin minimumuna (0) hiçbir zaman ulaşamayabilir. Şekil 27’de, öğrenme oranı ne kadar düşükse, ağı eğitmek o kadar uzun sürecektir, ancak işlevin minimumuna yaklaşma olasılığı da o kadar yüksektir.

Gradyan iniş algoritmasını kullanarak ağırlıkların güncellenmesi:

Her eğitim yinelemesi sırasında model ağırlıklarını güncellemek için gradyan iniş algoritmasını kullanıyoruz.

Bir yineleme için ağırlığı güncellemenin sezgisel bir örneği aşağıda verilmiştir. Bu örnekte, ağırlığına göre kısmi türevini öğrenme oranıyla () çarpıyoruz. Ağırlığı ( bu değer kadar azaltırız. Bu, sinir ağının bir sonraki yinelemesinde kullanılan yeni ağırlığı üretir.

Sinir ağımız için 100.000 yineleme ve 0,1 (1e-1) öğrenme oranı kullanacağız. Bu, ağırlıklarımızın başlatılacağı ve ardından her yinelemede 0,1 öğrenme oranı kullanılarak 99.999 kez güncelleneceği anlamına gelir. Her yineleme 4 eğitim örneğini içerir. Yukarıda belirtildiği gibi, model tahminlerini optimize etmek için bu hiperparametreleri ayarlayabiliriz.

Optimizasyon sürecini gösteren bir akış şeması Şekil 29’da verilmiştir. Gösterildiği gibi ağırlıklar yinelemeli olarak güncellenmektedir. Her yineleme için, işlev, son model tahminleri üretilene kadar (bizim durumumuzda, 100.000 yinelemede) tüm eğitim örnekleri arasındaki ortalama farkı gösterir.

Önemli not: Bu yazının başında da belirttiğimiz gibi sadece MLP eğitimi verdik. Gerçekte, eğitim bittiğinde modelin ağırlıkları dondurulur. Model daha sonra ne kadar iyi genelleştirildiğini değerlendirmek için görünmeyen test verileri üzerinde değerlendirilecektir.

Özet:

MLP’yi ileri yayılma, geri yayılma ve optimizasyonu kapsayan matematiksel ve görsel bir perspektiften inceledik. Modelin eğitilmesinde yer alan temel adımlara genel bir bakış Şekil 30’da gösterilmektedir:

Bu makalenin amaçları ve çözmeye çalıştığı basit problem için, belirli bir aktivasyon fonksiyonu, bir optimizasyon algoritması ve bir Kayıp/Maliyet fonksiyonu kullandık. Verilerin çok daha büyük ve karmaşık olduğu diğer senaryolarda bu seçenekler en uygun seçenek olmayabilir. Her ne kadar kapsamlı olmasa da, okuyucunun bu makalede kullanılanlarla karşılaştırmasını ve keşfetmesini teşvik ettiğim ek etkinleştirme işlevlerini, optimizasyon algoritmalarını ve kayıp/maliyet işlevlerini aşağıda listeledim.

Aktivasyon fonksiyonları:

  • Düzeltilmiş doğrusal ünite (ReLU)
  • Sızdıran Rektifiye Lineer Ünite (LReLU)
  • Tan işlevi

Optimizasyon algoritmaları:

  • Stokastik gradyan inişi
  • Mini Toplu Gradyan İnişi
  • Uyarlanabilir Adam Moment Tahmini)

Kayıp/maliyet fonksiyonları:

  • Ortalama kare hatası (MSE)
  • Ortalama mutlak hata (MAE)
  • Kategorik çapraz entropi kaybı

Kod:

Aşağıdaki kod, yukarıda tartışılan XOR eğitim verilerine dayanarak MLP’yi uygular:

#import gerekli kütüphaneler matplotlib’den numpy’yi np olarak içe aktar pyplot’u plt olarak içe aktar

MLP() sınıfı:

“””Bu, ağı belirli sayıda yineleme yoluyla geri beslemek ve yaymak ve tahminler üretmek için kullanılan MLP sınıfıdır. Yinelemeden sonra tahminler İkili çapraz entropi maliyet fonksiyonu kullanılarak değerlendirilir.“””

print(‘Çalışıyor…’)

def __init__(self, design_matrix, Y, yinelemeler=100000, lr=1e-1, giriş_katmanı = 2, gizli_katman = 3, çıktı_katmanı =1):self.design_matrix = tasarım_matrix #tasarım matrisi özelliği self.iterations = yinelemeler #yinelemeler özelliği . lr = lr #öğrenme oranı featureself.input_layer = input_layer #input katmanı featureself.hidden_layer = gizli_katman #hidden katman featureself.output_layer = çıktı_katmanı #output katmanı featureself.weight_matrix_1 = np.random.randn( self.input_layer, self.hidden_layer) #weight gizli katmanlara bağlanan öznitelikself.weight_matrix_2 = np.random.randn(self.hidden_layer, self.output_layer)#çıktı katmanına bağlanan ağırlık özniteliğikendi maliyeti = [] #costlist featureself.p_hats = [] #predictionlist özelliği

def sigmoid(self, x): # gizli katmanda ve çıktı katmanında kullanılan sigmoid işlevi 1 / (1 + np.exp(-x)) değerini döndürür

def sigmoid_derivative(self, x): # geri yayılım için kullanılan sigmoid türevi, self.sigmoid(x)’i döndürür * (1 – self.sigmoid(x))

def forward_propagation(self):#ağı beslemek için define işleviz = np.dot(self.design_matrix, self.weight_matrix_1) #gizli katmana doğrusal dönüşümactivation_func = self.sigmoid(z)#gizli katman etkinleştirme işlevizh = np.dot( aktivasyon_func, self.weight_matrix_2)#çıkış katmanına doğrusal dönüşümp_hat = self.sigmoid(zh)#çıkış katmanı tahminireturn z, aktivasyon_func, zh, p_hat

def BCECost(self, y, p_hat): # ikili çapraz entropi maliyet fonksiyonubce_cost = -(np.sum(y * np.log(p_hat) + (1 – y) * np.log(1 – p_hat))) /len (y) bce_cost’u döndür

def backword_prop(self, z_1, aktivasyon_func, z_2, p_hat): #backpropagationdel_2_1 = p_hat – Yderivado_partial_2 = np.dot(activation_func.T, del_2_1) #∂loss/∂p *∂p/∂zh * ∂zh/∂whdel_1_1 = del_2_1del_1_2 = np.multiply(del_1_1, self.weight_matrix_2.T)del_1_3 = np.multiply(del_1_2, self.sigmoid_derivative(z_1))partial_derivative_1 = np.dot(self.design_matrix.T, del_1_3) #∂loss/∂p * ∂p/∂zh * ∂zh/∂h * ∂h/∂z * ∂z/∂w kısmi_derivation_2, kısmi_derivation_1’i döndürür

def eğitme(self):#aralıktaki i için ağı eğitme(self. yinelemeler): #yineleme sayısına dayalı döngüz_1, aktivasyon_işlevi, z_2, p_hat = self.forward_propagation()# feedforwardderived_partial_2, türetilmiş_partial_1 = self.backword_prop(z_1, aktivasyon_func) , z_2, p_hat)#backpropgateself.weight_matrix_1 = self.weight_matrix_1 – self.lr * Partial_deriv_1#gizli katmana bağlanan güncelleme ağırlıkları (gradyan iniş)self.weight_matrix_2 = self.weight_matrix_2 – self.lr * Partial_deriv_2#bağlanan güncelleme ağırlıkları çıktı katmanına (gradyan iniş)self.cost.append(self.BCECost(Y, p_hat))#BCE maliyetini listede saklayınself.p_hats.append(p_hat)#tahminleri listede saklayın

print(‘Eğitimi tamamla’)print(‘————————–’)

# XOR mantık kapısı verilerini hazırlayın: eğitim örneğindeki her x özelliği için bir dizi ve karşılık gelen her etiket için bir dizi oluşturun y.X = np.array([[1, 0], [0, 1], [0, 0], [1, 1]]) #giriş özellikleri (4 x 2 tasarım matrisi)Y = np.matrix([[1], [1], [0], [0]])#temel gerçek ve etiketler (4×1)

mlp = MLP(X,Y)#Verileri modele aktarın (tasarım matrisi ve y etiketi)mlp.train() #Modeli eğitin

#plot cost functionplt.grid()plt.plot(range(mlp.iterations),mlp.cost)plt.xlabel(‘Yinelemeler’)plt.ylabel(‘Maliyet’)plt.title(‘MÖ Maliyet Fonksiyonu ‘)

#Baskı tahminleri, yineleme sayısı ve kesin doğruluk etiketleri.print(f’\n Her eğitim örneği için {mlp.iterations} yinelemeye dayalı MLP tahminleri şunlardır:\n\n{np.round( mlp.p_hats[-1],2)}’)print(‘\n———————————————————————————-‘)print(f’\n Zemin doğruluk etiketleri Ve bunlar:\n\n{Y}’)

Yukarıda gösterildiği gibi, eğitim yinelemeleri arttıkça modelin Maliyet fonksiyonu azalmıştır. Maliyet fonksiyonu 0’a yakındır, bu da tahminlerimizin temel doğruluk etiketlerimize yakın olduğu anlamına gelir.

Kodu kendiniz çalıştırın ve ne olacağını görmek için öğrenme hızını ve bir dizi eğitim yinelemesini ayarlamayı deneyin.

Towards AI aracılığıyla yayınlandı

Diğer ilginç konular: