Jump to content
  • entries
    6
  • comments
    0
  • views
    385

YSA - Nöron Görevi Nedir?


Doğuhan ELMA

76 views

Günümüzde TensorFlow, Keras veya PyTorch gibi açık kaynaklı makine öğrenimi yazılım kitaplıkları ile yalnızca birkaç satır kodla, yüksek yapısal karmaşıklığa sahip olsa bile bir sinir ağı oluşturabiliyoruz. Bununla birlikte, sinir ağlarının ardındaki matematik bazılarımız için hâlâ bir gizemdir ve sinir ağları ile derin öğrenmenin ardındaki matematik bilgisine sahip olmak, bir sinir ağı içinde neler olduğunu anlamamıza yardımcı olabilir. Ayrıca mimari seçiminde, derin öğrenme modellerinin ince ayarında, hiperparametre ayarında ve optimizasyonda da faydalıdır.

1.webp

Ağırlıklar ve sapmalar kavramı, modelimizi verilere uyacak şekilde ayarlayabileceğimiz "düğmeler" olarak düşünülebilir. Bir sinir ağında, genellikle eğitim sırasında optimize edici tarafından ayarlanan bu parametrelerden binlerce, hatta milyonlarcasına sahibiz. Bazıları şunu sorabilir: "Neden sadece önyargılar(bias) ya da sadece ağırlıklar(weights) olmasın?" Önyargılar ve ağırlıklar ayarlanabilir parametrelerdir ve her ikisi de nöronların çıktılarını etkileyecektir ancak bunu farklı şekillerde yaparlar. Ağırlıklar çarpıldığı için, yalnızca büyüklüğü değiştirecekler, hatta işareti tamamen pozitiften negatife veya tam tersi şekilde çevireceklerdir. output = weight·input+bias, y = mx+b doğrusu denkleminden farklı değildir. Bunu şununla görselleştirebiliriz:

1.png1.png

Ağırlığın(weight) ayarlanması fonksiyonun eğimini etkileyecektir

1.png

Ağırlığın değeri arttıkça eğim daha da dikleşecektir. Ağırlığı azaltırsak eğim azalır. Ağırlığı negatif edersek eğim negatife döner.

 

1.png

Önyargıyı(bias) arttırdıkça fonksiyon çıktısı genel olarak yukarı doğru kayar. Önyargıyı(bias) azaltırsak, genel fonksiyon çıkışı aşağı doğru hareket edecektir.

1.png

Gördüğünüz gibi ağırlıklar ve önyargılar nöronların çıktılarını etkilemeye yardımcı oluyor, ancak bunu biraz farklı şekillerde yapıyorlar. Ağırlıklar ve sapmalar arasındaki farkları ve bunların bireysel olarak çıktıyı etkilemeye nasıl yardımcı olabildiğini göstermektedir.

Adım Fonksiyonu:

Çok genel bir bakış olarak, adım işlevi, beyindeki bir nöronu "ateşleyen" veya açmayan bir açma-kapama düğmesi gibi taklit etmek anlamına geliyordu. Programlamada, bir fonksiyon olarak açma-kapama anahtarına adım fonksiyonu denir çünkü grafiğini çizdiğimizde bir adım gibi görünür.

1.png

Bir adım fonksiyonu için, eğer nöronun toplam(girdiler · ağırlıklar) + sapma genel ifade ile sum(inputs*weights)+bias ile hesaplanan çıkış değeri 0'dan büyükse, nöron ateşlenir (bu nedenle çıktısı 1 olacaktır). Aksi takdirde ateşlenmez ve 0 değerini alır. Tek bir nöronun formülü şöyle görünebilir:

output = sum(inputs * weights) + bias

 

Daha sonra genellikle bu çıktıya aktivasyon() ile belirtilen bir aktivasyon fonksiyonu uygularız:

output = activation(output)

Etkinleştirme işleviniz için bir adım işlevi kullanabilseniz de, biz biraz daha gelişmiş bir şey kullanma eğilimindeyiz. Günümüzün sinir ağları, Düzeltilmiş Doğrusal (ReLU) aktivasyon fonksiyonu gibi (adım fonksiyonu yerine) daha bilgilendirici aktivasyon fonksiyonlarını kullanma eğilimindedir. Her nöronun çıkışı, sinir ağının bir parçası olabilir. çıkış katmanının yanı sıra başka bir nöron katmanına giriş yapılmasını sağlar. Bir sinir ağının tam işlevi çok büyük olabilse de, her biri 4 nörondan oluşan 2 gizli katmandan oluşan basit bir örnekle başlayalım.

1.png

Bu 2 gizli katmanın yanı sıra burada iki katman daha vardır: giriş ve çıkış katmanları. Giriş katmanı, gerçek giriş verilerinizi, örneğin bir görüntüdeki piksel değerlerini veya bir sıcaklık sensöründen gelen verileri temsil eder. Bu veriler tam olarak toplandığı haliyle "ham" olsa da, genellikle verilerinizi normalleştirme ve ölçeklendirme gibi işlevler aracılığıyla ön işleme tabi tutarsınız ve girişinizin sayısal biçimde olması gerekir. Ölçeklendirme ve normalleştirme gibi kavramlar bu kitabın ilerleyen kısımlarında ele alınacaktır. Ancak, özelliklerini koruyarak ve değerleri 0 ile 1 veya -1 ile 1 arasında benzer aralıklarda tutarak verileri ön işlemek yaygındır. Bunu başarmak için ölçeklendirme ve normalleştirme işlevlerinden birini veya her ikisini birden kullanacaksınız. Çıkış katmanı, sinir ağının döndürdüğü şeydir. Girişin sınıfını tahmin etmeyi hedeflediğimiz sınıflandırmayla, çıkış katmanında genellikle eğitim veri kümesindeki sınıfların sayısı kadar nöron bulunur, ancak ikili (iki sınıf) sınıflandırma için tek bir çıkış nöronu da bulunabilir. Bu tür modeli daha sonra tartışacağız ve şimdilik her sınıf için ayrı bir çıktı nöronu kullanan bir sınıflandırıcıya odaklanacağız. Örneğin amacımız bir resim koleksiyonunu “köpek” veya “kedi” olarak sınıflandırmaksa toplamda iki sınıf vardır. Bu, çıktı katmanımızın iki nörondan oluşacağı anlamına gelir; bir nöron “köpek”, diğeri ise “kedi” ile ilişkilidir. Ayrıca "köpek" veya "köpek olmayan" tek bir çıkış nöronunuz da olabilir.

1.gif

Bu sinir ağından geçen her görüntü için nihai çıktı, "kedi" çıkış nöronunda hesaplanmış bir değere ve "köpek" çıkış nöronunda hesaplanmış bir değere sahip olacaktır. En yüksek puanı alan çıkış nöronu, giriş olarak kullanılan görüntünün sınıf tahmini olur.

 

Tipik bir sinir ağının binlerce, hatta milyonlarca ayarlanabilir parametresi (ağırlıklar ve önyargılar) vardır. Bu şekilde sinir ağları çok sayıda parametreye sahip devasa işlevler gibi hareket eder. Bir sorunu çözmek için kullanılabilecek milyonlarca değişkene sahip uzun bir fonksiyon kavramı o kadar da zor değil. Birbirine bağlı katmanlar halinde düzenlenmiş nöronlarla ilgili bu kadar çok değişken varken, bu değişkenler için istenen çıktıları sağlayacak bazı değer kombinasyonlarının mevcut olduğunu hayal edebiliriz. Parametre (ağırlık ve önyargı) değerlerinin bu kombinasyonunu bulmak zorlu kısımdır. Sinir ağlarının nihai amacı, ağırlıklarını ve önyargılarını (parametreler) ayarlamaktır, böylece girdide henüz görülmemiş bir örneğe uygulandığında istenen çıktıyı üretirler. Denetimli makine öğrenimi algoritmaları eğitilirken, girdilerin ve bunlarla ilişkili istenen çıktıların algoritma örneklerini gösteririz. Bu konseptle ilgili en önemli sorunlardan biri, aşırı uyumdur; algoritma yalnızca eğitim verilerine uymayı öğrendiğinde, ancak aslında temeldeki girdi-çıktı bağımlılıkları hakkında hiçbir şeyi "anlamadığında". Ağ temel olarak yalnızca eğitim verilerini “ezberler”. Bu nedenle, bir modeli eğitmek için "örnek içi" verileri kullanma ve ardından bir algoritmayı (veya bizim durumumuzda bir sinir ağı modelini) doğrulamak için "örnek dışı" verileri kullanma eğilimindeyiz. Verilerin bölümlenmesi için her iki veri kümesine de belirli yüzdeler ayrılmıştır. Örneğin, 100.000 veri ve etiket örneğinden oluşan bir veri kümesi varsa, hemen 10.000 tanesini alıp bunları "örnek dışı" veya "doğrulama" verileriniz olarak bir kenara ayıracaksınız. Daha sonra modelinizi diğer 90.000 örnek içi veya "eğitim" verisiyle eğitecek ve son olarak modelinizi, modelin henüz görmediği 10.000 örnek dışı veriyle doğrulayacaksınız. Amaç, modelin yalnızca eğitim verilerini doğru bir şekilde tahmin etmesi değil, aynı zamanda saklanan örnek dışı doğrulama verilerini de tahmin ederken benzer şekilde doğru olmasıdır. Buna genelleme denir, bu da verileri ezberlemek yerine sığdırmayı öğrenmek anlamına gelir. Buradaki fikir, bir sinir ağını birçok veri örneği üzerinde "eğitmek" (ağırlıkları ve önyargıları yavaş yavaş ayarlamaktır). Daha sonra sinir ağının daha önce hiç sunulmadığı örnek dışı verileri alıyoruz ve sinir ağının bu veriler üzerinde de doğru tahminlerde bulunabilmesini umuyoruz. Artık sinir ağlarının ne olduğu veya en azından amacın ne olduğu ve bu hedefe nasıl ulaşmayı planladığımız hakkında genel bir anlayışa sahip olmalısınız.

Bu sinir ağlarını eğitmek için, hatayı (kayıp adı verilen) hesaplamak için algoritmalar kullandıklarını hesaplıyoruz ve parametrelerini (ağırlıklar ve önyargılar) yavaş yavaş ayarlamaya çalışıyoruz, böylece birçok yinelemede ağ giderek daha az hatalı hale geliyor. . Tüm sinir ağlarının amacı genelleştirmektir; bu, ağın daha önce hiç görülmemiş birçok veri örneğini görebilmesi ve ulaşmayı umduğumuz değerleri doğru bir şekilde çıkarabilmesi anlamına gelir. Sinir ağları sınıflandırmadan daha fazlası için kullanılabilir. Regresyon (bir skaler, tekil, değer tahmin etme), kümeleme (yapılandırılmamış verileri gruplara atama) ve diğer birçok görevi gerçekleştirebilirler. Sınıflandırma, sinir ağları için yalnızca ortak bir görevdir.

 

0 Comments


Recommended Comments

There are no comments to display.

Guest
Add a comment...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...