1958'de Cornell Havacılık Laboratuvarı'nda Frank Rosenblatt tarafından icat edilen Perceptron, Neural Networks algoritmaları kümesine giren ikili bir sınıflandırma algoritmasıdır.
Daha spesifik olarak, bir Perceptron, kapasitesi ikili ve doğrusal sınıflandırma görevleriyle sınırlı olan tek katmanlı, ileri beslemeli bir Sinir Ağıdır. Sinir Ağları ailesinin bir parçası olan Perceptron mimarisi, aşağıdaki resimde gösterilen ortak çerçeveyi izler:
Gördüğünüz gibi, giriş verileriyle başlıyoruz. Daha spesifik olarak, tek bir gözlemi tanımlayan bir özellik vektörüyle başlıyoruz. Daha sonra bu özellikler, ağırlıklı bağlantılarla bir sonraki nörona iletilir. Son olarak, ağırlıklı toplamın çıktısı, Perceptron durumunda adım aktivasyon fonksiyonu olan bir aktivasyon fonksiyonundan geçirilir. Bu sonuncu, çıktı değerini belirli bir eşik teta'dan büyükse 1'e , aksi takdirde 0'a dönüştürür:
Dolayısıyla sürecin sonunda, 0 veya 1 olan bir ikili çıktı elde ederiz. Denetimli bir öğrenme göreviyle uğraştığımız için, uydurulmuş değerlerimizle karşılaştırmak için hedef gözlemlerimiz de var. Elbette, modelimizi değerlendirmek ve takılan değerlerin gerçek değerlere mümkün olduğunca yakın olması için ağırlıkların güncellenmesinden oluşan eğitim aşamasına geçmek istiyorsak bu çok önemli bir adımdır.
Bunu nasıl yaparız? Sözde Perceptron Öğrenme Kuralını inceleyelim.
Buradaki fikir, ağ üzerinden geçen her gözlem için, uydurulan değerin gerçek değerle karşılaştırılması ve eşleşmemeleri halinde, ağırlıkların hata olarak hesaplanan (gerçek-uydurulmuş) 0 oluncaya kadar güncellenmesidir. hepsi doğru şekilde sınıflandırılana kadar eğitim setinin tüm gözlemleri için bu prosedürü tekrarlayın.
Bununla birlikte, ağırlıkların güncellenmesinin matematiksel kuralı hangisidir? Perceptron kuralı fikri, j'inci değişkene karşılık gelen mevcut ve güncellenmiş ağırlık arasındaki farkı aşağıdaki gibi hesaplamaktır:
Not o lambda bir hyperparameter ve bu haliyle, bu optimizasyon kuralı aracılığıyla güncellenir değil, başka hyperparameters ile 0 ve 1 As arasında bir değere eğitim prosedürü öncesinde ayarlanmış olması gerekir, henüz yoluyla ayarlanabilir olduğu çapraz doğrulama ve ızgara arama gibi çeşitli teknikler.
Öyleyse, bir Perceptron eğitimi ve güncelleme prosedürünü somut olarak nasıl uygulayacağımızı görelim. Bu amaçla, iki boyutlu bir özellik vektörü, x1 ve x2 ile tanımlanan iki gözlemden oluşan bir oyuncak veri setini ele alacağım.
Genel bir gözlem i için, algılayıcının mimarisi aşağıdaki şekilde olacaktır:
Bu amaçla, teta'yı 0,5'e eşitleyelim (bu keyfi bir seçimdir: teta'yı en iyi şekilde nasıl ayarlayacağımızı daha sonra göreceğiz ).
Öyleyse algoritmamızı aşağıdaki adımları izleyerek oluşturalım:
Önce ağırlıkları rastgele başlatır ve ilk gözlemin uygun değerini hesaplar, ardından gerçek değerle eşleşip eşleşmediğine bakarız:
Bu durumda gerçek değer 1 iken takılan değer 0 olduğu için ağırlıklarımızı güncellememiz gerekir. Bunu yapmak için, algılayıcı eğitim kuralını izliyoruz ve ağırlıklardaki farkı şu şekilde hesaplıyoruz (öğrenme oranını 0,5'e eşitleyerek):
Böylece:
Şimdi, ilk gözlem için çıktı değerini tekrar hesaplarsak 0,5 elde ederiz, bu da uyan değerin 1 ve hata teriminin 0 olduğu anlamına gelir.
Bu alıştırmanın amacı için, öğrenme oranını nispeten yüksek bir değere (0.5) ayarladığıma dikkat edin, bu, algoritmanın ağırlıklarda önemli güncellemeler yaptığı anlamına gelir. Genel olarak, öğrenme hızı 0.1 civarında daha küçük değerlere ayarlanır, bu da öğrenme prosedürünü yavaşlatır, ancak optimuma yakınsama olasılığını artırır. Durum böyle olunca, gözlem doğru bir şekilde sınıflandırılana kadar yukarıdaki pasajı tekrar ederiz.
Şimdi ikinci gözlem üzerinde çalışalım:
Ayrıca bu durumda, Perceptron ilk denemesinde gözlemi yanlış sınıflandırır, bu nedenle ağırlıkları bir kez daha güncellememiz gerekir.
Böylece:
Ve F (0.725) = 1 → hala yanlış sınıflandırılmış! Bu durumda, ikinci gözlem için 1'den fazla güncellemeye ihtiyacımız var:
Ağırlıkları ikinci (ve bu durumda son) gözlem için de güncellersek, bu yeni değerlerle ilk gözlemin artık doğru şekilde sınıflandırılmadığı bir durumla karşılaşabileceğimizi unutmayın. Durum buysa, tüm gözlemler doğru şekilde sınıflandırılana kadar güncelleme prosedürünü tüm veri setinde bir kez daha tekrarlamamız gerekir.
Daha spesifik olarak, tüm gözlemler için güncelleme prosedürünü gerçekleştirdiğimizde, algoritmayı bir çağ boyunca eğitiyoruz . Tüm gözlemleri doğru bir şekilde sınıflandırmak için birçok dönem gerekli olabilir.
Elbette, özellikle ikili sınıflandırma görevi tam olarak doğrusal değilse, tüm gözlemlerin doğru bir şekilde sınıflandırılamayacağı bir durumdur. Durum böyleyse, aşırı uydurmayı önlemek için, Perceptron'umuzu eğitmek istediğimiz maksimum dönem sayısını sabitleyerek bir erken durdurma kriteri belirlemek isteyebiliriz.
Yukarıda bahsedildiği gibi, eşik değerini keyfi olarak 0,5'e ayarladık, ancak bu, eğitim prosedürü boyunca değişmedi ve 0,5'in bunun için optimal değer olup olmadığı konusunda kesin bir fikrimiz yok.
Bununla birlikte, çeşitli tekniklerle ayarlayabildiğimiz öğrenme hızından farklı olarak, eşik değerini gerçek bir parametre haline getirebiliriz, böylece ağırlıkların güncelleme prosedürüne girebilir. Aslında, aşağıdaki aritmetik işlemlerle:
Temel olarak "b" nin deterministik girdi değeri x0 = 1 ile ilişkili ağırlık olarak kabul edilebileceğini söylüyoruz. Aslında, b = w0 olarak ayarlarsak şunu elde ederiz:
Artık w0, diğer tüm ağırlıklar olarak ele alınacak ve eğitim aşamasındayken en uygun şekilde güncellenecektir. Durum buysa, önyargılı bir Perceptron'u eğitiyoruz.
Perceptron, sinir ağlarının ilk prototipiydi ve bu nedenle, modern NN'lerle aynı uyarlanabilir yapıyı daha karmaşık, doğrusal olmayan soruna paylaşmaz. Bunun temel nedeni, modern NN'lerin çok derin olmaları, yani çok sayıda gizli katmana sahip olmaları, ancak Perceptron'un tanım gereği tek katmanlı bir NN olmasıdır. Ayrıca, aktivasyon fonksiyonu adım fonksiyonunu sınırlarken, modern NN'ler ReLU, sigmoid, softmax (çok sınıflı problemler için), Tanh gibi daha sofistike aktivasyon fonksiyonlarını kapsamlı bir şekilde kullanır.
Bununla birlikte, basitliği bakımından Perceptron hala geçerli bir ikili sınıflandırıcıdır, ayrıca anlaşılması basit olduğundan çok katmanlı NN'lere yaklaşımı kolaylaştırır ve aynı zamanda arkasındaki fikir ve oranı onlarla paylaşır.
Umarım bu makaleyi faydalı bulmuşsunuzdur! Genel olarak Sinir Ağları hakkında daha fazla bilgi edinmekle ilgileniyorsanız, size aşağıdaki referanslardan bazılarını okumanızı öneririm.
Bilinç nedir? Yüzyıllardır filozofların ve bilim adamlarının kafasını karıştıran bir sorudur. Bazıları bunun bedenlerimizden bağımsız olarak gerçekten anlayamadığımız geçici bir şey olduğunu söylüyor.
Yasal Uyarı: Bu makale yalnızca eğitim amaçlıdır. Kimseyi web sitelerini, özellikle de bu tür eylemlere karşı hüküm ve koşulları olabilecek web mülklerini kazımaya teşvik etmiyoruz.
"Merhaba, bir kişilik masanız var mı?" Birkaç müşteriyi oturttuktan sonra hostesin hostes standına ne zaman döndüğünü sordum. "Merhaba, rezervasyon yapılmadıysa barımız var," diye cevapladı hostes, kulağının arkasından gelen başka bir hostes ile konuşmamızı böldü.
asla kırılmayan, kendi yolunu bulan, ateşle şıngırdayan, her zaman inanmak isteyen, başka her şey neden önemli olsun ki, her şey bir yolunu bulup dururken, yavaş yavaş kalbimi veren türden. Bir yabancıya, hiç ayrılmak istemeyeceklerini umarak, umarım yeterli olur, her şey zorlaştığında ve umarım bir gün, o kadar da sert olmadığımı bilerek, kendimi yeterli bulurum. gerçekten blöf dediğim bu 'korkusuz Varlık'ta.
2021'de hizmet verdiğiniz müşteriler ve onlara anlattığınız hikayeler hakkında bildiğiniz her şeyi yeniden düşünmenizi tavsiye ediyorum. Geri adım atmak.
Bu makalenin bir okumasını dinleyin: ❖ Tüm yaşamları boyunca çok önemli bir şey hakkında yanlış yönlendirilmiş kahramanlar hakkında hikayeler nesillerdir kültürümüzde ortaya çıkıyor ve bu güne kadar gişede izleyicileri memnun etmeye devam ediyor. Yoksul gerçekten bir prensti.