Makine Öğrenimi ve Sinir Ağları - sayfa 50

 

Derin Öğrenme Ön Koşulları (DL 02)




Derin Öğrenme Ön Koşulları (DL 02)

Derin öğrenmeyle ilgili bir kursta başarılı olmak için bilgisayar bilimi ve matematikte bir geçmişe sahip olmanız gerekir. Spesifik olarak, veri yapıları, doğrusal cebir ve çok değişkenli matematik dersleri almış olmanız gerekir. Bu ön koşulların her birinin önemini daha ayrıntılı olarak inceleyelim.

Bu üst düzey lisans bilgisayar bilimi dersi için programlama geçmişine sahip olmak çok önemlidir. Veri yapıları, yeterli programlama deneyimine sahip olmanızı sağlamak için bir ön koşul görevi görür. Veri yapılarında karşılaşılan algoritmik verimlilikle ilgili kavramları anlamak da yardımcı olacaktır.

Bu kursta videolarım öncelikle sözde kod kullanıyor veya hesaplamaları matematiksel olarak ifade ediyor. Ancak, ödevler hem Python hem de Julia'da programlama gerektirecektir. Python, TensorFlow ve PyTorch gibi derin öğrenme kitaplıkları için yaygın olarak kullanılır, bu nedenle bu araçlarla pratik yapacaksınız. Öte yandan Julia, matematik ve hesaplama arasındaki boşluğu doldurmak için mükemmeldir ve sinir ağlarının iç işleyişini anlamayı kolaylaştırır.

Matematiksel bir bakış açısından, lineer cebir ve çok değişkenli analiz kavramlarını kullanacağız. Ancak, odaklanacağımız belirli kavramlar, bu kurslarda tipik olarak öğretilenlerin yalnızca bir kısmıdır. Bu derslerden yalnızca birini aldıysanız, diğerinden gerekli kavramları nispeten hızlı bir şekilde yakalayabilmeniz gerekir.

Doğrusal cebirde, matris notasyonu ile rahat olmak esastır. Derin öğrenme, vektörler, matrisler ve daha yüksek boyutlu diziler (tensörler) üzerindeki işlemleri içerir. Matris-vektör çarpımlarında yetkin olmak, matrislere ve vektörlere fonksiyon uygulamak, iç çarpım ve normlar gibi işlemler gerekli olacaktır.

Çok değişkenli matematik, kurs boyunca kullanılan anahtar bir kavram olan gradyanları anlamak için çok önemlidir. Çarpım kuralı ve bölüm kuralı gibi temel hesapta öğrenilen kuralları kullanarak gradyanları değerlendirirken ve kısmi türevler alırken rahat olmalısınız.

Doğrusal cebir veya çok değişkenli matematik bilginizden emin değilseniz, bu konuları tazelemenize yardımcı olmak için Grant Sanderson'ın videolarından oluşan bir oynatma listesi sağlayacağım. Oynatma listesinde öne çıkan videolar, kursta kullanacağımız belirli kavramları kapsar.

Önkoşul olan bu konularda sağlam bir geçmişe sahip olduğunuzdan emin olarak, kursun ilk haftasındaki etkinliklerin ve ödevlerin üstesinden gelmek ve derin öğrenmede başarılı olmak için iyi hazırlanmış olacaksınız.

Deep Learning Prerequisites (DL 02)
Deep Learning Prerequisites (DL 02)
  • 2022.08.24
  • www.youtube.com
Davidson CSC 381: Deep Learning, Fall 2022Suggested linear algebra playlist: https://www.youtube.com/watch?v=fNk_zzaMoSs&list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE...
 

Tek bir nöron neyi hesaplayabilir? (DL 03)



Tek bir nöron neyi hesaplayabilir? (DL 03)

Sinir ağları, çok sayıda bağlantıya sahip çok sayıda düğümden oluşur. Onları daha iyi anlamak için, tek bir nörona odaklanalım ve onun yeteneklerini, temsil edebileceği model türlerini ve bu modellerin nasıl eğitilebileceğini keşfedelim.

Sinir ağındaki bir düğüm, girdileri alır ve sayısal bir çıktı oluşturmak için basit bir hesaplama gerçekleştirir. Bu hesaplama iki aşamadan oluşur: ilk olarak, girdiler karşılık gelen ağırlıklarla çarpılır ve toplanır; daha sonra, çıktıyı üretmek için ağırlıklı girdilerin toplamı bir aktivasyon fonksiyonundan geçirilir.

Matematiksel olarak çıktı, ağırlıklı girdilerin toplamına bir aktivasyon fonksiyonu (f olarak gösterilir) uygulanarak elde edilir. Bu nedenle, çıktı, aktivasyon fonksiyonunu karşılık gelen girdi ile çarpılan her bir ağırlığın toplamına artı bir yanlılık terimine uygulamanın sonucudur.

Önyargı, tüm girdiler sıfır olsa bile toplamın sıfırdan farklı olmasına izin verir. Bias'ı başka bir ağırlık olarak düşünebilir ve düğüme giren ek bir okla temsil edebiliriz. Her nöron, girdileri üzerinden ağırlıklı bir toplam gerçekleştirir, ancak farklı nöronların farklı aktivasyon fonksiyonları olabilir.

Tek bir nöron modeli için, dikkate değer iki aktivasyon fonksiyonu doğrusal ve adım fonksiyonlarıdır. Lineer aktivasyon fonksiyonu nöronun regresyon yapmasını sağlarken step fonksiyonu sınıflandırma yapmasına izin verir.

Tek bir girdiye sahip bir nöron durumunda, girdilerin ağırlıklı toplamı, girdinin ağırlıkla çarpılması ve sapmanın eklenmesiyle hesaplanır. Seçilen lineer aktivasyon fonksiyonu, y = x, ağırlık (w1) ve bias (b) parametrelerini kullanarak x1'in herhangi bir lineer fonksiyonunu ifade etmemizi sağlar. Böylece bu nöron, tek boyutlu girdi (x1) ve tek boyutlu çıktı (y) ile herhangi bir doğrusal işlevi hesaplayabilir.

Nöronun daha fazla girişi varsa, haritalama çok boyutlu girdilere kadar uzanır, ancak regresyon için uygun doğrusal bir fonksiyon olarak kalır. Ancak, giriş boyutu arttıkça işlevi görselleştirmek zorlaşır.

İki girişli bir nöron durumunda, aktivasyon olarak adım fonksiyonu kullanılır. Girdilerin ağırlıklı toplamı hala hesaplanır ve toplam pozitif olduğunda aktivasyon sıfırdan bire geçer. Aktivasyon, parçalı bir fonksiyon kullanılarak açıklanabilir ve 0 veya 1 çıktıyla sonuçlanan girdiler arasındaki karar sınırı, girdilerin ağırlıklı toplamının sıfıra eşit olduğu yerdir. Bu kurulum, girdilerin nöronun çıktısına göre 0 veya 1 olarak etiketlendiği sınıflandırma görevleri için uygundur.

Tek nöronları kullanarak regresyon veya sınıflandırma yapmak için girdi-çıktı çiftlerinden oluşan bir veri setine ihtiyacımız var. Seçilen aktivasyon fonksiyonu, çıkışın ikili (0 veya 1) veya sürekli olmasına bağlıdır. Girdi örneklerinin boyutluluğu, tek nöron modelindeki girdilerin sayısını ve ağırlıklarını belirler.

Bir sinir ağını veya tek bir nöronu eğitmek, modelin verilerden sapmasını ölçen bir kayıp fonksiyonunun tanımlanmasını içerir. Regresyon görevleri için, kareleri alınmış hataların toplamı kullanılabilirken, ikili çıktılara sahip sınıflandırma görevleri diğer uygun kayıp fonksiyonlarını kullanabilir.

Eğitimin amacı, parametreleri (ağırlıklar ve önyargılar) kaybı en aza indirecek ve modelin doğruluğunu artıracak şekilde güncellemektir. Gradyan iniş, parametreleri güncellemek ve kaybı azaltmak için kullanılan yaygın bir optimizasyon tekniğidir.

Bir sonraki videoda, gradyan iniş kavramını ve modelin performansını iyileştirmek için parametre güncellemelerini nasıl kolaylaştırdığını inceleyeceğiz.

What can a single neuron compute? (DL 03)
What can a single neuron compute? (DL 03)
  • 2022.09.02
  • www.youtube.com
Davidson CSC 381: Deep Learning, Fall 2022
 

Nöronunuzu nasıl eğitirsiniz (DL 04)



Nöronunuzu nasıl eğitirsiniz (DL 04)

Bir önceki videomuzda, tek bir nöronun hesaplanmasını keşfetmiştik. Bir nöronun girdilerin ağırlıklı bir toplamını alarak, bir sapma ekleyerek ve bir aktivasyon fonksiyonu uygulayarak hesaplama yaptığını öğrendik. Aktivasyon için bir adım fonksiyonu kullanmak bize bir ikili sınıflandırıcı verirken, doğrusal bir fonksiyon bize bir regresör verir.

Ayrıca, kareleri alınmış hataların toplamını kullanarak bir modelin veri kümesindeki kaybını ölçmeyi ve kayıp fonksiyonunun gradyanını kullanarak modeli eğitmeyi tartıştık. Kayıp fonksiyonu, modelin parametrelerine, yani ağırlıklara ve önyargıya bağlıdır. Ortalama karesel hata, hesaplamalarda genellikle bir kayıp fonksiyonu olarak kullanılır.

Kayıp fonksiyonunun parametrelere nasıl bağlı olduğunu ve kaybı azaltmak için bunları nasıl değiştirebileceğimizi anlamak için, kaybı küçük bir regresyon veri kümesinde hesapladık. Doğru ve tahmin edilen çıktılar arasındaki farkların karelerini toplayarak kayıp değerini elde ettik.

Ardından, kayıp fonksiyonunun gradyanını bulmaya odaklandık. Kaybın kısmi türevlerini her bir parametreye göre türettik. Bu kısmi türevler, kaybı azaltmada bize yol gösteren gradyanı oluşturur. Parametreleri eğimin aksi yönünde güncelleyerek, kaybı en aza indirebilir ve modelimizin veri kümesini temsilini geliştirebiliriz.

Kayıp fonksiyonunu parametre uzayında bir yüzey olarak görselleştirdik ve gradyanın kayıptaki en hızlı artışın yönünü nasıl gösterdiğini tartıştık. Eğimin aksi yönünde küçük adımlar atarak, yinelemeli olarak kaybı azaltabilir ve modelimizi geliştirebiliriz.

Sınıflandırma görevleri için, adım fonksiyonu aktivasyonunun türevini alırken bir zorlukla karşılaştık. Bunun üstesinden gelmek için, adım fonksiyonunu sigmoid fonksiyonu adı verilen yumuşak bir yaklaşımla değiştirdik. Sigmoid fonksiyonunun davranışını ve 0 ile 1 arasında olasılıksal çıktılar üretme yeteneğini açıkladık.

Sigmoid fonksiyonunu bir sınıflandırma örneğine uyguladık ve yeni aktivasyonu kullanarak kayıp ve eğimin nasıl hesaplanacağını gösterdik. Parametreleri güncelleme ve modeli iyileştirme süreci, regresyondaki ile aynı kalır.

Son olarak, tartışılan kavramların aynı formülleri birden fazla ağırlık ve veri noktasına uygulayarak daha yüksek boyutlara genişletilebileceğini vurguladık. Kaybın hesaplanması, eğimin hesaplanması ve parametrelerin güncellenmesinin genel ilkeleri, girdinin boyutsallığından bağımsız olarak geçerlidir.

Genel olarak, tek bir nöronun hesaplamasını, kayıp fonksiyonunu ve gradyanı anlamak, sinir ağlarını eğitmek ve performanslarını iyileştirmek için temel sağlar.

How to train your neuron (DL 04)
How to train your neuron (DL 04)
  • 2022.09.03
  • www.youtube.com
Davidson CSC 381: Deep Learning, Fall 2022
 

Veri Analizi Ardışık Düzeni (DL 05)



Veri Analizi Ardışık Düzeni (DL 05)

Derin öğrenme sınıfımızda, sinir ağları çalışmasını derinlemesine inceleyeceğiz. Ancak, bir sinir ağının veya herhangi bir makine öğrenimi modelinin daha büyük bir sistemin yalnızca bir parçası olduğunu unutmamak önemlidir. Verilerin bir sinir ağına beslenmeden önce, ağın anlayabileceği bir formatta toplanması ve işlenmesi gerekir. Benzer şekilde, bir sinir ağının çıktıları genellikle son işlem veya daha fazla analiz gerektirir.

Dönem boyunca, bir veri analizi boru hattı metaforunu akılda tutmak faydalı olacaktır. Bu benzetme, makine öğrenimindeki amacımızın dünya gözlemlerini dünya hakkında tahminlere dönüştürmek olduğunu ve sinir ağının bu süreçteki yalnızca bir adım olduğunu vurguluyor. Ardışık düzen, verilerimizin hangi aşamalardan geçtiğini ve her aşamanın bir sonraki aşamaya nasıl katkıda bulunduğunu düşünmemizi hatırlatır.

Farklı problemler, boru hattında farklı aşamalar gerektirir. Standartlaştırılmış veya simüle edilmiş veri kümeleri, belirli aşamaları atlamamıza izin verse de, derin öğrenmenin gerçek dünyadaki uygulamaları, veri analizinin pratik yönlerini dikkate almamızı gerektirir.

Veri analizi ardışık düzenlerinin bazı önemli yönlerini daha ayrıntılı olarak tartışalım. İlk aşama veri toplamadır. Bazı durumlarda önceden var olan veri kümeleri kullanılabilse de, derin öğrenme ile yeni bir sorunu çözmek istiyorsak, modelimizi eğitmek için hangi verilerin uygun olduğunu belirlememiz gerekir. Veri toplarken, derin öğrenmenin son zamanlardaki başarılarının büyük veri kümelerine dayandığını göz önünde bulundurarak yeterli miktarda veriye sahip olduğumuzdan emin olmamız gerekir. Bununla birlikte, özellikle hesaplama kaynakları sınırlı olduğunda, çok fazla veri diye bir şey de vardır. Belirli durumlarda, sınırlı miktarda veriyle çalışmak, özellikle keşif ve problem keşfi sırasında faydalı olabilir. Eğitim için kullandığımız veri setinin çözmeyi amaçladığımız sorunu temsil ettiğinden emin olmak çok önemlidir. Bu, bir sınıflandırma görevinde istenen tüm sınıfların temsili gibi faktörlerin dikkate alınmasını ve modelin tanıması gereken önemli aykırı değerlerin göz ardı edilmemesini içerir.

Diğer bir zorluk da veri kümelerindeki sistematik yanlılıkları belirlemektir. Önyargılar, güneşli günlerde çekilen görüntülerin aşırı temsili gibi çeşitli şekillerde ortaya çıkabilir ve bulutlu koşullarda bir görüntü sınıflandırıcı için zorluklara yol açar. Önyargılar, bireysel faktörleri daha geniş sosyal yapılara atfederek sağlık veya eğitimle ilgili tahminleri de etkileyebilir. Veri toplama sırasında olası önyargılara karşı dikkatli olmak önemlidir. Bununla birlikte, önyargıları ele almak ve düzeltmek, devam eden derin öğrenme araştırması gerektiren karmaşık bir sorundur.

Verileri topladıktan sonra, makine öğrenimi veya diğer işleme tekniklerini uygulamadan önce genellikle verileri temizlememiz gerekir. Bu adım, eksik verilerin ele alınmasını, verilerin hangi boyutlarının ilgili olduğuna karar verilmesini ve örnekler arasında farklı boyutlarla ilgilenilmesini içerir. Denetimli öğrenme için verilerin uygun şekilde etiketlenmesi çok önemlidir. Uygun etiketleri elde etmek, özellikle işaret dilini yazıya dökerken veya konuşmadan metne tutarsızlıklarla uğraşırken zor olabilir. Etiketler, modelimizin öğrenmesini istediğimiz verilerin özelliklerini doğru bir şekilde temsil etmelidir.

Ardından, verileri sinir ağımızı veya makine öğrenimi modelimizi eğitmek için uygun bir sayısal biçime dönüştürmeliyiz. Sinir ağları, vektörler veya matrisler biçiminde sayısal girdi bekler. Sayısal kodlama işlemi, probleme bağlı olarak zorluk derecesinde değişir. Örneğin, bilgisayarlar tarafından hali hazırda kullanılan piksel tabanlı gösterim nedeniyle görüntü verilerinin işlenmesi nispeten kolaydır. Ancak, ASCII biçiminde kodlanmış metin verilerinin işlenmesi alternatif temsiller gerektirir. Problemler daha karmaşık hale geldikçe, veri sunumunu ve hatta boyutluluğu dönüştürmek giderek daha önemli hale geliyor.

Ek olarak, özellikle sinir ağları sıfır ile bir aralığında değerler verme eğilimindeyse, verileri normalleştirmek faydalı olabilir. Normalleştirme, sinir ağına girişlerin birbirine daha yakın olmasını sağlayarak veri değerleri aralığını ölçeklendirmeyi içerir. Sinir ağının çıkışından sonra, post-processing adımlarını gerçekleştirmemiz gerekebilir. Bu, ağın çıktısının istenen tahmin formatına dönüştürülmesini, tahmin güveninin iletilmesini ve modelin tahminlerini kullanacak uygulama veya algoritmanın dikkate alınmasını içerir.

Verileri işleyip sinir ağımızı eğittikten sonra değerlendirme ve ayarlama aşamasına geçebiliriz. Burada modelimizin performansını değerlendiriyor ve iyileştirmeler yapıyoruz. Değerlendirme, daha önce ayırdığımız test setinin kullanılmasını içerir. Eğitilmiş sinir ağını bu görünmeyen verilere uygulayarak, yeni örneklere ne kadar iyi genelleştirdiğini ölçebiliriz. Modelimizin performansını değerlendirmek için genellikle doğruluk, kesinlik, hatırlama ve F1 puanı gibi ölçümleri kullanırız. Bu ölçümler, sinir ağının ne kadar etkili tahminler yaptığına dair içgörü sağlar.

Değerlendirme sonuçlarına dayanarak, modelin düşük performans gösterebileceği veya sınırlamalar sergileyebileceği alanları belirleyebiliriz. Bu bilgiler gerekli ayarlamaları ve iyileştirmeleri yapmamızda bize yol gösterir. Model mimarisini, hiperparametreleri yineleyebilir ve hatta gerekirse ek veriler toplayabiliriz. Amaç, modelin performansını iyileştirmek ve istenen doğruluk ve güvenilirliği elde etmesini sağlamaktır.

Ayarlama işlemi sırasında, modelin performansını optimize etmek için farklı konfigürasyonlar ve ayarlarla deneyler yapıyoruz. Bu, öğrenme hızı, yığın boyutu ve düzenlileştirme teknikleri gibi hiperparametrelerin ayarlanmasını içerir. Sistematik keşif ve deneyler yoluyla, sinir ağının etkinliğini en üst düzeye çıkaran en iyi ayar kombinasyonunu bulmayı hedefliyoruz.

Modelin kendisine ince ayar yapmanın yanı sıra, uygulamasının daha geniş bağlamını da dikkate alıyoruz. Çözmeye çalıştığımız belirli sorunu ve modelin tahminlerinin gerçek dünyadaki sonuçlarını dikkate alıyoruz. Bu, modeli uygulamaya koymanın sosyal, etik ve yasal yönlerini incelemeyi içerir. Modelin adil, tarafsız ve sorun alanının değer ve gereklilikleriyle uyumlu olmasını sağlamak çok önemlidir.

Derin öğrenme uygulayıcıları olarak sorumluluğumuz, doğru modeller geliştirmenin ötesine geçer. Potansiyel önyargıları veya sınırlamaları dikkate alarak sonuçları eleştirel bir şekilde analiz etmeli ve yorumlamalıyız. Modelin performansını düzenli olarak gözden geçirmek ve yeniden değerlendirmek, zaman içinde etkinliğini sürdürmek için gereklidir.

Bir derin öğrenme sınıfında sinir ağlarını incelemek, onların daha büyük bir sistemin parçası olduklarını anlamayı içerir. Veri toplamadan ön işlemeye, eğitime ve değerlendirmeye kadar uzanan veri analizi boru hattı, dikkatli değerlendirme gerektiren birden çok aşamayı kapsar. Tüm süreci göz önünde bulundurarak ve modellerimizi sürekli geliştirerek, doğru tahminler yapmak ve gerçek dünya sorunlarını çözmek için derin öğrenmenin gücünü etkili bir şekilde kullanabiliriz.

The Data Analysis Pipeline (DL 05)
The Data Analysis Pipeline (DL 05)
  • 2022.09.09
  • www.youtube.com
Davidson CSC 381: Deep Learning, Fall 2022
 

Numune Dışı Doğrulama (DL 06)



Numune Dışı Doğrulama (DL 06)

Makine öğreniminde bir modeli değerlendirmek, yeni tahminler yapmayı ve bunları görünmeyen veriler üzerinde test etmeyi içerir. Bu tartışmada, makine öğrenimi modellerimizi doğrulamak ve iyileştirmek için verilerimizi etkili bir şekilde nasıl kullanacağımızı keşfedeceğiz.

Model seçimi süreci, belirli bir sorunu çözmek için mevcut seçeneklerin belirlenmesiyle başlar. Bu bizi, modelin temsil edebileceği fonksiyon türlerini tanımlayan bir modelin hipotez uzayı kavramına götürür. Hipotez uzayı, seçilen girdi temsili ve gerekli çıktı tipi gibi faktörlerle sınırlandırılır.

Belirli bir model veya makine öğrenimi algoritması seçtikten sonra, modelin ayarlanabilecek çeşitli yönleri vardır. Bu, veriler kullanılarak eğitilen ağırlıklar ve sapmalar gibi model parametrelerinin ayarlanmasını içerir. Ek olarak, öğrenme oranı veya yineleme sayısı gibi diğer yönler, modelin performansını etkileyen hiperparametreler olarak kabul edilebilir.

Farklı seçenekleri etkili bir şekilde keşfetmek ve test etmek için deneysel doğrulamaya güveniyoruz. Bu, veri setimizi eğitim ve test setlerine ayırmayı içerir. Eğitim seti, modeli eğitmek için kullanılırken test seti, görünmeyen veriler üzerindeki performansını değerlendirmek için kullanılır. Test setindeki farklı modelleri veya hiperparametreleri karşılaştırarak, hangilerinin yeni verilere genellemede daha etkili olduğunu belirleyebiliriz.

Amacımız yeni, görünmeyen veriler üzerinde doğru tahminler yapabilen modeller geliştirmek olduğundan, genelleme makine öğreniminin kritik bir yönüdür. Bir modelin eğitim verilerine çok özel hale geldiği fazla uydurma, iyi bir genelleme elde etmede sık karşılaşılan bir zorluktur. Verilerin bir kısmını örneklem dışı doğrulama için ayırarak, bir modelin aşırı uyum sağlayıp sağlamadığını veya başarılı bir şekilde genelleme yapıp yapmadığını değerlendirebiliriz.

Birden çok hiperparametreyi keşfederken, değerlerini sistematik olarak değiştirebilir veya makul bir aralıktan rastgele örnek alabiliriz. Rastgeleleştirme, daha geniş bir değer aralığını verimli bir şekilde keşfetmemizi sağlar. Bununla birlikte, kapsamlı deneyler test setinin aşırı yüklenmesine yol açarsa, verilerin eğitim, doğrulama ve test setlerine daha fazla ayrılması veya çapraz doğrulamanın kullanılması gerekli olabilir.

Çapraz doğrulama, verilerin birden çok alt kümeye bölünmesini ve bu alt kümelerin farklı kombinasyonları üzerinde modeli yinelemeli olarak eğitmeyi ve test etmeyi içerir. Bu yaklaşım, modelin performansının ve genelleme yeteneğinin daha sağlam bir tahminini sağlar.

Makine öğrenimindeki ana fikir, eğitim ve test verilerini ayırarak modellerimizi deneysel olarak doğrulamaktır. Bu, görünmeyen örnekler üzerindeki performanslarını değerlendirmemizi ve model seçimi ve hiperparametre ayarı hakkında bilinçli kararlar vermemizi sağlar.

Out-of-Sample Validation (DL 06)
Out-of-Sample Validation (DL 06)
  • 2022.09.09
  • www.youtube.com
Davidson CSC 381: Deep Learning, Fall 2022
 

İleri Beslemeli Sinir Ağları (DL 07)



İleri Beslemeli Sinir Ağları (DL 07)

Yapay sinir ağları, tek nöronların aksine, birden çok katmandan oluşur ve hesaplamaları düğümler aracılığıyla gerçekleştirir. Her düğüm girdilerin ağırlıklı toplamını hesaplar ve bir aktivasyon fonksiyonu uygular. Bir sinir ağında, bir düğümün girdisi önceki düğüm aktivasyonlarından gelebilir ve hesaplanan aktivasyonu daha sonraki düğümlere geçirilebilir.

Örneğin, bir ağdaki 8. nöron, 5., 6. ve 7. nöronlardan girdiler alır. 8. nöron tarafından gerçekleştirilen girdilerin ağırlıklı toplamı, bu nöronların aktivasyonlarının karşılık gelen ağırlıklarla çarpımı artı sapmanın toplamıdır. Aktivasyon fonksiyonu daha sonra ağırlıklı toplama uygulanır. 8. nörondan gelen çıktı, 11. ve 12. düğümler için bir girdi olarak kullanılır. Bir sinir ağında hiperbolik tanjant ve doğrultucu doğrusal birim (ReLU) gibi farklı aktivasyon fonksiyonları kullanılabilir.

Tahmin yapmak için bir sinir ağı kullanarak hesaplamalar yapmak için, giriş verilerine dayalı olarak giriş katmanı düğümlerinin aktivasyonlarını ayarlayarak başlıyoruz. Giriş katmanı düğümleri, giriş vektörünün değerlerini basitçe saklar. Girdi ve çıktı katmanlarının boyutu, verinin boyutuna ve istenen tahmine bağlıdır. Ağdaki katmanlar halinde düzenlenmiş gizli nöronlar, girdiler ve çıktılar arasında hesaplamalar yapar. Her katman için aktivasyonları hesaplayarak, girdileri önceki aktivasyonlara atıfta bulunarak bir sonraki katmana geçirebiliriz. Bu aktivasyonlar, ağırlık güncellemeleri sırasında gradyan iniş için de gereklidir. Bir sinir ağında gizli katmanların varlığı, doğrusal olmayan aktivasyon fonksiyonlarını kullanma yeteneği sağlar. Doğrusal aktivasyonlar, çok katmanlı ağlarda hiçbir avantaj sağlamaz. Sigmoid işlevi gibi doğrusal olmayan aktivasyon işlevleri, çeşitli işlevlerin temsilini sağlar.

AND, OR ve NOT gibi mantıksal işlemleri temsil eden nöronlar, adım işlev sınıflandırıcıları kullanılarak oluşturulabilir. Sigmoid aktivasyonları kullanarak bu mantıksal işlemlere yaklaşarak, bir sinir ağı herhangi bir Boole işlevini temsil edebilir. Bir sinir ağını eğitmek için, ağırlıkları ve önyargıları güncellemek için gradyan inişini kullanırız. Ağın parametreleri, tüm ağdaki tüm ağırlıkları ve sapmaları içerir. Birden fazla çıkış nöronu olan bir ağdaki kayıp fonksiyonu, tüm çıkış nöronları üzerinden toplanan ortalama hatanın karesi olabilir. Amaç, parametreleri yinelemeli olarak güncelleyerek kaybı azaltmaktır.

Gradyan iniş, kaybın gradyanlarını parametrelere göre hesaplayarak, kaybı en aza indirmek için gradyanların ters yönünde adımlar atarak gerçekleştirilir. Bu süreç, geri yayılım olarak bilinir ve ağın tahminlerini öğrenmesine ve iyileştirmesine olanak tanır. Bir sonraki videoda, bir sinir ağında gradyan iniş güncellemelerini gerçekleştirmek için kullanılan geri yayılım algoritmasının detaylarına değineceğiz. Geri yayılım, ağ parametrelerine göre kayıp gradyanlarının verimli bir şekilde hesaplanmasını sağlar.

Süreç, çıkış aktivasyonlarına göre kayıp fonksiyonunun gradyanını hesaplayarak başlar. Bu gradyan, kaybın çıktı aktivasyonlarındaki değişikliklere duyarlılığını temsil eder. Kayıp, aktivasyon fonksiyonu aracılığıyla çıkış aktivasyonlarına ve hedef değerlerin karesi alınmış farkına bağlı olduğundan, zincir kuralı uygulanarak elde edilebilir. Çıkış aktivasyonlarına göre kaybın gradyanı hesaplandıktan sonra, ağ üzerinden geriye doğru yayılır. Her katmanda, gradyanlar, girdilerin ağırlıklı toplamına göre aktivasyon fonksiyonunun türevi ile çarpılır. Bu türev, aktivasyonun ağırlıklı toplamdaki değişikliklere duyarlılığını yakalar.

Gradyanları geriye doğru yayarak, önceki katmanın aktivasyonlarına göre kaybın gradyanlarını hesaplayabiliriz. Bu gradyanlar, önceki katmandaki her bir aktivasyonun kayba ne kadar katkıda bulunduğunu gösterir. Aktivasyonlara göre kayıp gradyanlarını kullanarak, her katmandaki ağırlıklara ve sapmalara göre kaybın gradyanlarını hesaplayabiliriz. Bu gradyanlar, önceki katmanın aktivasyonunun aktivasyon fonksiyonunun ilgili gradyanı ile çarpılmasıyla elde edilir. Son olarak, parametrelere göre kayıp gradyanları ile, gradyan iniş algoritmasını kullanarak ağırlıkları ve sapmaları güncelleyebiliriz. Gradyanların tersi yönde adımlar atarak, kaybı en aza indirmek için ağ parametrelerini kademeli olarak optimize ediyoruz.

İleriye doğru yayılım, geriye doğru yayılım ve parametre güncellemelerinden oluşan bu yinelemeli süreç, belirli sayıda çağ için veya kayıp tatmin edici bir değere yaklaşana kadar tekrarlanır. Bu eğitim süreci boyunca sinir ağı, sağlanan eğitim verilerine dayanarak ağırlıklarını ve önyargılarını ayarlayarak daha iyi tahminler yapmayı öğrenir.

Sinir ağları, karmaşık hesaplamalar yapmak ve tahminler yapmak için çoklu katmanları ve doğrusal olmayan aktivasyon fonksiyonlarını kullanır. Sinir ağları, geri yayılma algoritmasını ve gradyan inişini kullanarak verilerden öğrenebilir ve tahmin yeteneklerini geliştirmek için parametrelerini optimize edebilir.

Feed-Forward Neural Networks (DL 07)
Feed-Forward Neural Networks (DL 07)
  • 2022.09.16
  • www.youtube.com
Davidson CSC 381: Deep Learning, Fall 2022
 

Sinir Ağı Geri Yayılımı (DL 08)



Sinir Ağı Geri Yayılımı (DL 08)

Bu videoda, bir sinir ağını stokastik gradyan iniş adımıyla eğitmek için kullanılan geri yayılım algoritmasını türeteceğiz. Algoritma üç ana adımdan oluşmaktadır.

İlk olarak, bir veri noktasında tahminler yapmak için ileri beslemeli bir geçiş gerçekleştiriyoruz. Bu tahminler, tahmin edilen çıktılar ile gerçek çıktılar arasındaki hatayı temsil eden kaybı belirler. Ardından, kaybın kısmi türevlerini hesaplamak için geriye doğru bir geçiş yaparız. Çıkış ve gizli katmanlardaki her bir nöron için "delta" adı verilen bir nicelik hesaplıyoruz. Delta, o nörondaki girdilerin ağırlıklı toplamına göre kaybın kısmi türevini temsil eder. Zincir kuralını uygulayarak, kayıp üzerindeki etkisini göz önünde bulundurarak her bir nöron için deltayı hesaplayabiliriz.

Çıkış katmanı nöronları için deltayı hesaplamak için, aktivasyon fonksiyonunun türevini ve hedef ile aktivasyon arasındaki farkı kullanırız. Bu hesaplama, kayıp ile girdilerin ağırlıklı toplamı arasındaki ilişkiyi dikkate alır. Gizli katman nöronları için, bir sonraki katmanın nöronları üzerindeki etkilerini göz önünde bulundururuz ve bir sonraki katman düğümlerinden gelen katkıları toplayıp ağırlıklar ve aktivasyon türevi ile çarparak tekrarlı olarak deltayı hesaplarız. Tüm nöronlar için deltaları hesapladıktan sonra, bunları ağırlıkların ve sapmaların kısmi türevlerini hesaplamak için kullanabiliriz.

Her ağırlık için kısmi türev, karşılık gelen deltanın ve önceki katman nöronunun aktivasyonunun ürünüdür. Benzer şekilde, her önyargı için kısmi türev, karşılık gelen deltasına eşittir.

Gradyan inişi gerçekleştirmek için, parti adı verilen veri noktalarının bir alt kümesi üzerinden kısmi türevlerin ortalamasını alırız. Bu yaklaşım, stokastik gradyan iniş olarak bilinir. Ağırlıkları ve sapmaları ortalama kısmi türevler ile bir öğrenme oranı çarpılarak güncelleyerek, parametreleri kaybı en aza indiren yönde hareket ettiririz.

Uygulamada, her veri noktası için deltaları ve kısmi türevleri hesaplamak yerine, genellikle rastgele yığınlarla stokastik gradyan inişini kullanırız. Verilerin bir alt kümesini rasgele örnekliyoruz, bu alt kümedeki ortalama kaybı ve gradyanını hesaplıyoruz ve buna göre parametre güncellemelerini gerçekleştiriyoruz. Bu, özellikle büyük veri kümeleri için eğitim sürecini hızlandırır.

Geri yayılım algoritması, daha sonra stokastik gradyan iniş güncellemeleri için kullanılan deltaları ve kısmi türevleri hesaplamak için ileri ve geri geçişleri birleştirir. Sinir ağı, parametreleri yinelemeli olarak güncelleyerek, kaybı en aza indirmeyi ve tahminlerini iyileştirmeyi öğrenir.

Neural Network Backpropagation (DL 08)
Neural Network Backpropagation (DL 08)
  • 2022.09.20
  • www.youtube.com
Davidson CSC 381: Deep Learning, Fall 2022Re-upload, because I got sloppy with notation at the end and gave an incorrect formula for the bias update!
 

Sınıflandırma için Daha İyi Aktivasyon ve Kayıp: Softmax ve Kategorik Çapraz Entropi (DL 09)



Sınıflandırma için Daha İyi Aktivasyon ve Kayıp: Softmax ve Kategorik Çapraz Entropi (DL 09)

Sigmoid nöronlu bir sinir ağı kullanarak çok sınıflı sınıflandırma gerçekleştirirken, ortaya çıkan belirli sınırlamalar vardır. Daha önce, yalnızca iki sınıfla uğraşırken, tek bir nöron 0 veya 1 çıktısı verebiliyordu. Ancak, el yazısı rakamları 0'dan 9'a sınıflandırmak gibi birden çok etiket söz konusu olduğunda, farklı bir gösterime ihtiyaç duyuluyordu.

Yaygın bir yaklaşım, etiketleri, her etiketin kendi boyutuna sahip olduğu ve aynı anda yalnızca bir boyutun etkinleştirildiği tek sıcak vektör olarak kodlamaktır. Örneğin, beş boyutlu bir vektör, beş olası etiketi gösterebilir ve dördüncü boyut, dördüncü etiketi temsil etmek üzere etkinleştirilir. Sigmoid nöron tabanlı bir çıktı katmanı bu tür bir çıktıyı potansiyel olarak üretebilse de pratikte sorunlar vardır.

İlk sorun, sigmoid katmanının çoklu etiketler için nispeten büyük değerler çıkarabilmesi ve bu da tahminin yorumlanmasını zorlaştırmasıdır. İdeal olarak, çıktı katmanının sıfırlar ve birler veya farklı olası etiketlere olan güveni yansıtan bir şey üretmesini isteriz. İkinci sorun, sigmoid çıktı katmanının eğitimi sırasında ortaya çıkar. Hedef bir sıcak vektör olduğunda, aktivasyonu doğru etiket için bire ve diğer etiketler için sıfıra doğru itmek için gradyan iniş kullanılır. Bununla birlikte, sigmoid fonksiyonunun doğası gereği, daha büyük hatalara sahip nöronların daha küçük deltaları olabilir, bu da güvenle yanlış tahminleri düzeltmeyi zorlaştırır.

Gizli nöronlar için sigmoid aktivasyonları kullanıldığında, kaybolan gradyan problemi olarak bilinen benzer bir problem de ortaya çıkar. Ancak bu videoda, bu sorunları çözmek için çıkış aktivasyonları ve kayıp fonksiyonunun alternatif bir kombinasyonuna odaklanıyoruz. Sigmoid aktivasyonları yerine, çıktı katmanı için softmax aktivasyonlarını tanıtıyoruz. Softmax aktivasyonları tüm katmanda hesaplanır, girdiler arasındaki farklar büyütülür ve aktivasyonlar bire kadar toplanacak şekilde normalleştirilir. Bu, tahminler olarak daha fazla yorumlanabilen ve ağın olası her bir etikete olan güveni olarak görülebilen çıktılarla sonuçlanır.

Softmax aktivasyonlarını etkili bir şekilde kullanmak için, bunları kategorik çapraz entropi kaybı fonksiyonuyla eşleştiriyoruz. Çapraz entropi kaybı, hedef nöron için aktivasyonun negatif logaritmasını hesaplar ve bu, tek sıcak vektörler kullanıldığında aktivasyonun logaritmasını basitleştirir. Bu kombinasyon, etkili gradyan iniş güncellemelerini mümkün kılar. Çıkış katmanı için deltaları hesaplamak için, aktivasyonlara göre kaybın kısmi türevlerini türetiyoruz. Hedef nöron için türev, -1 bölü aktivasyondur. Diğer nöronlar için türevler sıfırdır. Softmax aktivasyonlarının birbirine bağımlılığı nedeniyle, yalnızca hedef nöronun sıfır olmayan bir türevi olmasına rağmen, tüm girdiler için sıfır olmayan deltalar elde edilir.

Bu formülleri kullanarak hem hedef nöron hem de çıkış katmanındaki diğer nöronlar için deltaları hesaplayabiliriz. Aktivasyon eksi bir olduğu için hedef nöron için deltanın hesaplanması kolaydır. Diğer nöronlar için deltalar, negatif aktivasyonun kendisini basitleştirir.

Softmax aktivasyonlarının ve kategorik çapraz entropi kaybının bu kombinasyonu ile, sınıflandırma problemleri için anlamlı çıktılar elde ediyoruz ve çıktıları verimli bir şekilde doğru tahminlere doğru iten gradyanlar elde ediyoruz. Softmax aktivasyonlarını ve kategorik çapraz entropi kaybını kullanmak, çok sınıflı sınıflandırma için bize güçlü bir çerçeve sağlar. Sinir ağlarının etkili bir şekilde eğitilmesini sağlamak için bu bileşenlerin birlikte nasıl çalıştığını daha derinlemesine inceleyelim.

Çıkış katmanı için deltaları hesapladıktan sonra, bu deltalar, ağırlıkları güncellemek için hata gradyanlarını ağ üzerinden geriye doğru yaydığımız geri yayılım için başlangıç noktası görevi görür. Çıkış katmanını önceki katmana bağlayan ağırlıkları güncellemek için delta değerlerini kullanabilir ve gradyan iniş algoritmasını uygulayabiliriz. Ağırlık güncellemesi, her bir çıkış nöronunun deltasının karşılık gelen ağırlığın giriş aktivasyonu ile çarpılması ve ağırlığın bir öğrenme oranı ile ayarlanmasıyla belirlenir.

Deltaların ağ üzerinden geri yayılmasıyla, gizli katmanlardaki ağırlıkların gradyanları da hesaplanabilir. Bu, gizli katmanlardaki ağırlıkları uygun şekilde güncellememize olanak tanıyarak ağın performansını daha da hassaslaştırır. Softmax aktivasyonlarını ve kategorik çapraz entropi kaybını kullanırken, softmax'ın yalnızca çıktı katmanına uygulandığından emin olmamız gerektiğini unutmamak önemlidir. Gizli katmanlar için ReLU (Rectified Linear Unit) veya tanh gibi aktivasyon fonksiyonlarının kullanılması tavsiye edilir. Softmax aktivasyonları, her sınıf için olasılıklar veya güven puanları olarak yorumlanabilen çıktılar elde etmemizi sağlar. Çıktı vektöründeki değerlerin toplamı 1'dir ve ağın tahminlerine olan güvenini ölçmemize olanak tanır. Daha yüksek bir değer, belirli bir sınıf için daha yüksek güveni gösterir.

Kategorik çapraz entropi kaybı, tahmin edilen olasılıklar ile gerçek etiketler arasındaki tutarsızlığı etkili bir şekilde ölçerek softmax aktivasyonlarını tamamlar. Ağı, tahmin edilen olasılıklar ile tek sıcak kodlanmış hedef vektör arasındaki farkı en aza indirmeye teşvik eder, böylece ağı daha doğru tahminlere doğru iter.

Softmax aktivasyonlarını ve kategorik çapraz entropi kaybını birleştirerek çeşitli faydalar elde ediyoruz. Ağın farklı sınıflar için tahminlerini ve güven düzeylerini anlamamızı sağlayan anlamlı ve yorumlanabilir çıktılar elde ediyoruz. Kategorik çapraz entropi kaybından türetilen gradyanlar, ağırlık güncellemelerini daha etkili öğrenme ve gelişmiş doğruluk sağlayacak şekilde yönlendirir. Her biri farklı türde problemlere uygun başka aktivasyon fonksiyonları ve kayıp fonksiyonları olduğunu belirtmekte fayda var. Bununla birlikte, kategorik çapraz entropi kaybına sahip softmax aktivasyonlarının, hem yorumlanabilirlik hem de etkili eğitim dinamikleri sunan çok sınıflı sınıflandırma görevleri için başarılı bir kombinasyon olduğu kanıtlanmıştır.

Özetle, çok sınıflı sınıflandırma sinir ağlarında softmax aktivasyonlarını ve kategorik çapraz entropi kaybını kullanmak, anlamlı tahminler elde etmemize, güven düzeylerini yorumlamamıza ve verimli gradyan iniş güncellemeleri gerçekleştirmemize olanak tanır. Bu kombinasyon, çeşitli sınıflandırma görevlerinde doğru ve güvenilir sonuçlara ulaşmada çok önemli bir rol oynar.

Better Activation & Loss for Classification: Softmax & Categorical Crossentropy (DL 09)
Better Activation & Loss for Classification: Softmax & Categorical Crossentropy (DL 09)
  • 2022.09.23
  • www.youtube.com
Davidson CSC 381: Deep Learning, Fall 2022
 

Vektörleştirme ile Sinir Ağlarını Hızlandırma (DL 10)



Vektörleştirme ile Sinir Ağlarını Hızlandırma (DL 10)

Bir sinir ağının iç işleyişini anlamak için, tek bir nöronun seviyesini araştırmak ve nöronlar arasındaki bağlantıları düşünmek faydalıdır. Aktivasyonları hesaplayan ileri geçiş ve deltaları hesaplayan geriye geçiş sırasında, düğümler ve kenarlar cinsinden düşünmek sezgi oluşturmaya yardımcı olabilir. Ancak derin öğrenme aslında bu şekilde çalışmıyor. Verimli bir şekilde eğitilebilen büyük ölçekli sinir ağları oluşturmak için daha yüksek bir soyutlama düzeyine geçmemiz ve vektörler, matrisler ve tensörler açısından düşünmemiz gerekiyor.

Bu daha yüksek soyutlama düzeyine yönelik ilk adım, bir katmanın aktivasyonlarını bir vektör olarak temsil etmektir. Sinir ağımız katmanlar halinde organize edilmişse, bir katmanın aktivasyonlarını bir vektörde toplayabiliriz. Örneğin, A^l vektörü, l katmanı için tüm aktivasyonları, o katmandaki düğüm sayısı kadar girişle depolar. Benzer şekilde, geri yayılım sırasında bir katman için deltaları bir vektöre toplayabiliriz. Bir katmanın önyargılarını veya girdilerini temsil etmek için vektörleri de kullanabiliriz.

Hesaplamaları bu vektörleştirilmiş gösterimde ifade etmek için, önce bir düğümün girdilerin ağırlıklı toplamını nasıl hesapladığını ele alalım. Düğüm 5 için aktivasyon fonksiyonuna giren X^5 girişi, önceki katmanın aktivasyonlarının ağırlıklı toplamı artı bir sapma olarak hesaplanır. Önceki katmanın aktivasyonlarını A^K vektöründe toplayarak ve 5. düğüme gelen bir ağırlık vektörüne sahip olarak, girdilerin ağırlıklı toplamı bu iki vektör arasında bir iç çarpım olarak temsil edilebilir. Nokta çarpımını yazmanın başka bir yolu, birinci vektörün devriğini değiştirmek ve satır vektörü ile sütun vektörü arasında matris çarpımı yapmaktır. Bu nedenle, düğüm 5'e girişi, düğüm 5'e gelen (devrilmiş) ağırlık vektörünün önceki katman için aktivasyon vektörü artı düğüm 5'in önyargısı ile çarpımı olarak ifade edebiliriz.

Bu vektörleştirilmiş notasyon daha da ileri gidebilir ve l katmanındaki girdilerin tüm vektörünü bir kerede hesaplamamıza izin verebilir. Düğüm 5 için ağırlıkların satır vektörünü o katmandaki diğer nöronların ağırlıklarının satır vektörleriyle birleştirerek, K katmanından l katmanına kadar tüm ağırlıkları içeren bir matris elde ederiz. Bu ağırlık matrisi l katmanındaki düğüm sayısı kadar satıra sahiptir (her satır l katmanındaki nöronlardan birine ağırlık vektörünü temsil eder) ve önceki K katmanındaki düğüm sayısı kadar sütuna sahiptir (her sütun bir vektörü temsil eder) katman K düğümlerinden birinden çıkan ağırlıklar). Bu ağırlık matrisini K katmanı için aktivasyon vektörü ile çarpmak, her elemanın l katmanı düğümlerinden biri için girdilerin ağırlıklı toplamını temsil ettiği bir vektörle sonuçlanır. Aktivasyon fonksiyonu girişlerini elde etmek için, bir vektörde toplanmış olan sapmaları bu vektöre ekliyoruz.

Şimdi, matris-vektör çarpma, vektör toplama ve element-wise fonksiyonlarını kullanarak, bir katmana tüm girdileri hesaplamak için işlemleri ifade edebiliriz. Önceden, bu hesaplamalar iç içe döngüler gerektiriyordu, ancak şimdi bunları vektörleştirilmiş bir şekilde verimli bir şekilde gerçekleştirebiliyoruz.

İleriye dönük olarak, bu vektörleştirilmiş yaklaşımı geriye doğru geçişe de genişletebiliriz. Her seferinde bir nöronu dikkate almak yerine, K katmanındaki bir düğüm için deltayı, sonraki katmandaki tüm deltaların ağırlıklı toplamı ve o düğümün aktivasyon fonksiyonunun türevi ile çarparak hesaplayabiliriz. Yine bu ağırlıklı toplamı nokta çarpım olarak ifade edebiliriz. 3. düğümden çıkan ağırlıkların satır vektörünü, l katmanı için delta vektörü ile ve ardından aktivasyon türevi ile çarparak, K katmanı için delta vektörünü hesaplayabiliriz. Katman için tüm ağırlıkları toplayan bir ağırlık matrisi kullanarak l nöron ve l katmanı için delta vektörü ile çarparak, boyutları ağırlık matrisiyle eşleşen bir matris elde edebiliriz.

Matris işlemlerinden yararlanarak, ileri beslemeli yoğun bağlı sinir ağlarının bilgi işleminde önemli performans kazanımları elde edebiliriz. Bu özellikle avantajlıdır çünkü matris işlemleri, bu hesaplamaları büyük ölçüde hızlandırabilen grafik işlemciler (GPU'lar) gibi özel donanımlar üzerinde verimli bir şekilde yürütülebilir.

Sinir ağı hesaplamalarımızı matrisler kullanarak temsil ettiğimizde, ileri geçiş, geri geçiş ve ağırlık güncellemelerini oldukça verimli ve paralelleştirilmiş bir şekilde gerçekleştirebiliriz. Önemli adımları özetleyelim:

  1. İleri Geçiş: Matris-vektör çarpması ve eleman bazında aktivasyon fonksiyonu uygulaması gerçekleştirerek tüm veri grubu için her katmanın aktivasyonlarını hesaplayabiliriz. Aktivasyonları, her sütunun farklı bir veri noktası için aktivasyonları temsil ettiği bir matris halinde düzenleyerek, tüm parti için aktivasyonları verimli bir şekilde hesaplayabiliriz.

  2. Geri Geçiş: Benzer şekilde, her katman için deltaları (hata gradyanları) vektörize bir şekilde hesaplayabiliriz. Deltaları, her sütunun belirli bir veri noktası için deltalara karşılık geldiği bir matris olarak temsil ederek, tüm parti için deltaları verimli bir şekilde hesaplamak için matris-vektör çarpımı ve aktivasyon türevleriyle eleman bazında çarpma gerçekleştirebiliriz.

  3. Ağırlık Güncellemeleri: Ağırlıkları ve önyargıları güncellemek için, delta matrisi ile ağırlık matrisinin devriği arasındaki iç çarpımı hesaplamak için matris işlemlerini kullanabiliriz. Bu işlem, her girişin belirli bir ağırlık için güncellemeyi temsil ettiği bir ağırlık güncellemeleri matrisi verir. Nokta ürünleri parti boyutuna bölerek ortalama güncellemeyi elde ederiz ve ardından ortalama güncelleme ile çarpılan öğrenme oranını çıkararak ağırlıkları güncelleyebiliriz. Önyargı güncellemeleri, sütunlar boyunca delta vektörlerinin ortalaması alınarak ve sapmalardan ortalama ile çarpılan öğrenme oranının çıkarılmasıyla hesaplanır.

Bu hesaplamaları vektörleştirerek ve matris işlemlerinden yararlanarak, önemli hesaplama verimliliği elde edebilir ve paralel işleme için donanım ivmesinden faydalanabiliriz. Bu yaklaşım, büyük ölçekli sinir ağlarını verimli bir şekilde eğitmemize olanak tanıyarak, çok çeşitli görevler ve veri kümeleri üzerinde derin öğrenmeyi mümkün kılar.

Metin, vektörleştirme ve matris işlemlerinden yararlanma konusunda üst düzey bir genel bakış sağlarken, gerçek uygulama ayrıntılarının kullanılan programlama diline veya çerçevesine bağlı olarak değişebileceğini belirtmekte fayda var. Farklı diller ve çerçeveler, matris işlemleri için kendi optimize edilmiş işlevlerine ve kitaplıklarına sahip olabilir ve bu da performansı daha da artırır.

Performans avantajlarına ek olarak, derin öğrenmede matris işlemlerinden yararlanmanın başka avantajları da vardır:

  1. Basitlik ve kod okunabilirliği: Matris işlemlerini kullanarak, sinir ağı hesaplamaları için kod daha özlü ve anlaşılması daha kolay hale gelir. Bireysel veri noktaları için açık döngüler yazmak yerine, matris işlemlerini kullanarak hesaplamaları daha derli toplu ve sezgisel bir biçimde ifade edebiliriz.

  2. Yazılım uyumluluğu: TensorFlow ve PyTorch gibi birçok popüler derin öğrenme çerçevesi ve kitaplığı, matris işlemlerinin verimli uygulamalarını sağlar. Bu çerçeveler, CPU'lar veya GPU'lar üzerindeki matris hesaplamalarını hızlandırmak için genellikle BLAS (Temel Doğrusal Cebir Alt Programları) veya cuBLAS (CUDA Temel Doğrusal Cebir Alt Programları) gibi optimize edilmiş doğrusal cebir kitaplıklarını kullanır. Bu çerçevelerden yararlanarak optimize edilmiş uygulamalarından faydalanabilir ve derin öğrenme hattının diğer bileşenleriyle uyumluluk sağlayabiliriz.

  3. Diğer katman türlerine genelleştirme: Matris işlemleri yalnızca yoğun bağlı katmanlara değil, evrişimli katmanlar ve tekrarlayan katmanlar gibi diğer katman türlerine de uygulanabilir. Hesaplamaları bir matris biçiminde ifade ederek, farklı katman türlerinde aynı verimli matris işlemlerini ve optimizasyonları kullanabilir, uygulamayı basitleştirebilir ve genel performansı iyileştirebiliriz.

  4. Donanım hızlandırmalı entegrasyon: GPU'lar veya tensör işleme birimleri (TPU'lar) gibi özel donanımlar, matris hesaplamalarını hızlandırmak için tasarlanmıştır. Bu donanım hızlandırıcılar, büyük ölçekli paralel matris işlemlerini gerçekleştirmekte başarılıdır ve bu da onları derin öğrenme iş yükleri için ideal hale getirir. Matris işlemlerini kullanarak, bu donanım hızlandırıcılarla sorunsuz bir şekilde entegre olabilir ve yeteneklerinden tam olarak yararlanarak eğitim ve çıkarım sürelerinde önemli hızlanmalara yol açabiliriz.

Özetle, derin öğrenmede matris işlemlerinden yararlanmak performans avantajları, kod basitliği, yazılım uyumluluğu ve donanım hızlandırıcılarla entegrasyon sunar. Sinir ağı hesaplamalarını bir matris biçiminde ifade ederek ve optimize edilmiş matris işlemlerini kullanarak, çeşitli görev ve platformlarda derin öğrenme modellerini verimli bir şekilde eğitebilir ve devreye alabiliriz.

Making Neural Networks Fast with Vectorization (DL 10)
Making Neural Networks Fast with Vectorization (DL 10)
  • 2022.09.23
  • www.youtube.com
Davidson CSC 381: Deep Learning, Fall 2022
 

Kaybolan (veya Patlayan) Degradeler (DL 11)



Kaybolan (veya Patlayan) Degradeler (DL 11)

Daha büyük sorunları çözmek için sinir ağlarını ölçeklendirmeye daldıkça, daha fazla katman eklemek gerekli hale geliyor. Ancak, daha derin ağlar eğitim sırasında kaybolan veya patlayan gradyanların neden olduğu sorunlarla karşılaşabilir. Gizli katmanlar için sigmoid aktivasyonları olan derin bir sinir ağı düşünelim. Böyle bir ağı çok sayıda düğüm ve katmanla görselleştirmek pratik olmaz. Bunun yerine, her sütunun bir katmanı temsil ettiği ve aktivasyon fonksiyonlarının her blok içinde gösterildiği bir blok diyagramla gösterebiliriz.

Ağı görselleştirmenin başka bir yolu, her bir veri yığınına uygulanan işlem sırasını gösteren bir hesaplama grafiğidir. Girdi matrislerinden başlayarak, matris çarpımlarını, önyargıların eklenmesini gerçekleştiriyoruz ve her katmanda aktivasyon fonksiyonlarını uyguluyoruz. Bu işlem, aktivasyon fonksiyonunun softmax olarak değiştiği çıkış katmanına ulaşana kadar gizli katmanlar boyunca devam eder. Kayıp, aktivasyonlardan ve hedeflerden hesaplanır.

Hesaplamaları matematiksel olarak ifade ederek, ağırlık matrislerini girdi matrisleriyle çarpar, sapmalar ekler ve aktivasyon fonksiyonlarını uygularız. İfadeler gizli katmanlar boyunca devam eder ve sonunda softmax aktivasyonunun uygulandığı çıkış katmanına ulaşır. Çıkış aktivasyonları ve hedefler, kaybı hesaplamak için kullanılır.

Gradyan iniş güncellemeleri için türevler hesaplanırken, zincir kuralı tekrar tekrar uygulanır. Çıkış katmanından başlayarak, ağırlık matrislerinin devrikliği ile çarparak ve aktivasyon fonksiyonunun türevi ile eleman bazında çarparak deltaları hesaplıyoruz. Bu işlem, deltaları gizli katmanlar boyunca geriye doğru yayar.

Kaybolan gradyan problemi, gizli katmanlar için sigmoid aktivasyon fonksiyonları kullanıldığında ortaya çıkar. Bir sigmoidin türevi, küçük değerlere sahip olma eğilimindedir ve her geriye doğru yayılma ile deltaların azalmasına neden olur. Sonuç olarak, gradyanlar giderek küçülür ve özellikle ilk katmanlarda ağırlıkları etkili bir şekilde güncellemeyi zorlaştırır.

Derin öğrenme, kaybolan gradyan problemi nedeniyle derin sinir ağlarını eğitmede zorluklarla karşılaştı. Ancak, yaklaşık on yıl önce, bu zorluğun üstesinden gelmek için yaklaşımlar geliştirildi. Bir yöntem, sigmoid türevlerinin neden olduğu azalan deltalara karşı koymak için daha büyük ilk rasgele ağırlıklar üreterek ağırlık matrisi başlatmasını değiştirmektir.

En önemli buluş, doğrultucu lineer birimlerin (ReLU) aktivasyon fonksiyonları olarak benimsenmesiyle geldi. Sigmoid türevlerinden farklı olarak, ReLU türevleri deltaları önemli ölçüde azaltma eğilimindedir. Bu özellik, derin sinir ağlarının eğitimini kolaylaştırdıkları için ReLU aktivasyonlarını daha popüler hale getirdi.

Bununla birlikte, ReLU aktivasyonlarını kullanmak, geriye doğru yayıldıkça deltaların büyüyebileceği patlama gradyanları riskini ortaya çıkarır. Bunu azaltmak için, sigmoid aktivasyonlarına kıyasla daha küçük başlangıç ağırlıklarının seçilmesi tavsiye edilir.

ReLU nöronları, eğitim kolaylığı ve hesaplama verimliliği nedeniyle gizli katmanlar için tercih edilir. Ağırlıkların başlatılması, kullanılan aktivasyon işlevine bağlıdır ve derin öğrenme topluluğu, farklı aktivasyon türleri için uygun ağırlık başlatma yöntemlerini belirlemede önemli ilerleme kaydetmiştir. Modern derin öğrenme kitaplıkları, ağırlık başlatmayı genellikle belirtilen aktivasyonlara göre otomatik olarak işler.

Vanishing (or Exploding) Gradients (DL 11)
Vanishing (or Exploding) Gradients (DL 11)
  • 2022.09.30
  • www.youtube.com
Davidson CSC 381: Deep Learning, Fall 2022