- Matematiksel derin öğrenmeye giriş niteliğindeki bu kitap, arka plan bilgisi olmayan öğrenci ve bilim insanlarının, ayrıca daha titiz bir anlayış isteyen uygulayıcıların derin öğrenme algoritmalarının temellerini edinmesi için hazırlanmıştır
- Yapay sinir ağları, aktivasyon fonksiyonları ile afin fonksiyonların tekrarlı bileşimi olarak tanımlanır; bileşim derinliği arttıkça deep ANN kapsamında ele alınan fonksiyon sınıfı oluşur
- Genel yapı, ANN yapıları ve hesaplamadan başlayıp yaklaştırma teorisi, optimizasyon, genelleme hatası, toplam hata analizi ve PDE çözümüne kadar uzanır
- Optimizasyon bölümü, gradient flow ODE, GD, SGD, geri yayılım (backpropagation), Kurdyka–Łojasiewicz yaklaşımı, batch normalization ve rastgele başlatmayı birlikte ele alır
- Python kaynak kodları açık GitHub deposundan ve arXiv sayfasından indirilebilir; her listing başlığındaki dosya adı sayesinde kitap içeriği ile kod eşleştirilebilir
Derin öğrenmeyi matematiksel olarak tanımlama biçimi
- Bu kitap, derin öğrenme algoritmalarını deep ANN'ler ve verileri tekrar tekrar kullanarak belirli ilişkileri, fonksiyonları ve nicelikleri yaklaştıran hesaplama yöntemi olarak ele alır
- ANN, belirli doğrusal olmayan aktivasyon fonksiyonları ile afin fonksiyonların çoklu bileşiminden oluşan bir fonksiyon sınıfıdır
- ANN derinliği, bileşimin kaç kez tekrarlandığına karşılık gelir; doğrusal olmayan fonksiyon ile afin fonksiyonun bileşimi 2'den fazla olduğunda buna deep ANN denmeye başlanır
- Hedef kitle, derin öğrenme geçmişi hiç olmayan ama sağlam bir temel isteyen öğrenci ve bilim insanları ile derin öğrenmenin nesnelerini ve yöntemlerini daha net anlamak isteyen uygulayıcılardır
Part I–II: Sinir ağı yapıları ve yaklaştırma teorisi
- Kısa bir girişten sonra ana metin Part I–VI olmak üzere 6 bölüme ayrılır
-
Part I: Yapay sinir ağları
- Chapter 1, çeşitli ANN türlerini matematiksel olarak tanıtır
- fully-connected feedforward ANN
- convolutional ANN (CNN)
- recurrent ANN (RNN)
- residual ANN (ResNet)
- Chapter 2, fully-connected feedforward ANN için hesaplama (calculus) konusunu ele alır
- Chapter 1, çeşitli ANN türlerini matematiksel olarak tanıtır
-
Part II: Yaklaştırma
- ANN'lerin verilen bir fonksiyonu ne kadar iyi yaklaştırabildiğini inceleyen çeşitli matematiksel sonuçları ele alır
- Chapter 3, erişilebilirlik için önce reel sayılardan reel sayılara giden tek değişkenli fonksiyonlara odaklanır
- Chapter 4, kapsamı çok değişkenli fonksiyonlar için ANN yaklaştırma sonuçlarına genişletir
Part III: Optimizasyon ve öğrenme algoritmaları
- Derin öğrenme algoritmalarının özü, problemi deep ANN içeren uygun bir optimizasyon problemine modellemek ya da yeniden formüle etmektir
- Bu bölüm, optimizasyon problemlerini ve bunları yaklaşık olarak çözen algoritmaları ele alır; genellikle minimizasyon problemleri gradient tabanlı optimizasyon yöntemleri ile çözülür
- Gradient tabanlı yöntemler, optimize edilmek istenen fonksiyonun negatif gradient yönüne dayalı ardışık adımlarla problemi çözen hesaplama yaklaşımıdır
- Chapter 5, GD tipi ve SGD tipi yöntemleri anlamak için gradient flow (GF) ODE'yi ve kullanımını ele alır
- Chapter 6, gradient descent (GD) gibi deterministik gradient tabanlı optimizasyon yöntemlerini inceler ve analiz eder
- Chapter 7, stochastic gradient descent (SGD) gibi olasılıksal gradient tabanlı optimizasyon yöntemlerini inceler ve analiz eder
- Chapter 8, ANN eğitiminde gradient'i açıkça hesaplamak için yaygın olarak kullanılan yöntem olan geri yayılımı türetir ve ayrıntılı biçimde ele alır
- Chapter 5–7'deki analiz çoğu durumda ANN eğitiminin optimizasyon problemlerini ele almak için sınırlı kalsa da, Chapter 9'daki Kurdyka–Łojasiewicz (KL) yaklaşımı bu tür problemleri ele alabilir
- Chapter 10, veri tabanlı öğrenme problemlerinde ANN eğitim sürecini hızlandırmayı amaçlayan bir yöntem olan batch normalization'ı (BN) titizlikle inceler
- Chapter 11, amaç fonksiyonunu farklı rastgele başlatmalar ile optimize etme yaklaşımını inceler
Part IV–VI: Hata analizi ve PDE uygulamaları
-
Part IV: Genelleme hatası
- Derin öğrenmenin matematiksel analizi, yalnızca ANN yaklaştırma gücü ile optimizasyon yöntemlerinin hata tahminleriyle sınırlı değildir
- Öğrenme probleminin olasılık dağılımına açıkça erişilemediğinde ve sonlu sayıda gerçekleşme/veri ile yaklaştırma yapıldığında genelleme hatası tahmini gerekir
- Chapter 12, olasılıksal genelleme hatası tahminlerini inceler
- Chapter 13, strong Lp tipi genelleme hatası tahminlerini ele alır
-
Part V: Toplam hata analizi
- Part II'deki yaklaştırma hatası, Part III'teki optimizasyon hatası ve Part IV'teki genelleme hatası tahminlerinin nasıl birleştirileceğini örneklerle gösterir
- Örnek, çok sayıda bağımsız rastgele başlatma kullanan SGD tipi optimizasyon yöntemine dayalı ANN eğitimidir
- Chapter 14, denetimli öğrenme problemleri için uygun bir toplam hata ayrıştırması sunar
- Chapter 15, Part II, III ve IV'teki bazı sonuçları birlikte kullanarak örnek niteliğinde bir toplam hata analizi kurar
-
Part VI: PDE için derin öğrenme
- Derin öğrenme yöntemleri yalnızca veri tabanlı öğrenme problemlerinde değil, kısmi diferansiyel denklemleri (PDE) yaklaşık olarak çözmek için de kullanılır
- Part VI, PDE için popüler olan 3 derin öğrenme yöntemini inceler ve uygular
- Chapter 16, physics-informed neural networks (PINNs) ve deep Galerkin methods'ı (DGMs) ele alır
- Chapter 17, deep Kolmogorov methods'ı (DKMs) ele alır
Koda ve materyallere erişim yöntemi
- Kitapta çeşitli Python kaynak kodları yer alır
- Kaynak kodlar açık GitHub deposu introdeeplearning/book üzerinden indirilebilir
- arXiv sayfasında da “Other formats” seçeneğine tıklayıp ardından “Download source” seçilerek kaynak kodlara ulaşılabilir
- Her source listing'in başlığında ilgili kaynak dosya adı yer aldığı için kitaptaki formüller, örnekler ve kod birlikte kolayca takip edilebilir
1 yorum
Hacker News yorumları
Standart makine öğrenmesi tekniklerini oldukça birleşik bir matematiksel gösterimle ve çok sayıda kanıtla tanıtan iyi bir derleme gibi görünüyor, ama 600 sayfalık olduğu için gerçekten büyük bir iş
Yine de anlaşılınca ilginç olacak kısımlardan çok biçimselleştirmesi kolay kısımlara daha fazla ağırlık verilmiş gibi hissettiriyor
Örneğin SGD bölümü, optimizasyonun matematikçilerin makine öğrenmesine gerçekten etkili katkı yapabileceği bir alan olduğu için seçilmiş; ancak kanıtların çoğu yanlılık-varyans ayrıştırması ya da Jensen eşitsizliği gibi temel şeyler, yakınsamayla ilgili ilginç teoremler ise sadece literatüre atıf yapıyor, önceki lemmalarla bağlanmıyor ve ADAM gibi pratikte ilginç yöntemlerin neredeyse hiç kanıtı ya da teorisi yok
Bu bölümü okuduktan sonra modern SGD yöntemlerini ve bunların gelişim sürecini iyi anlayacak olsanız da, bu yöntemlerin neden çalıştığını sayısal deneylerle doğrulanmış sezgilerin ötesinde anlamak zor görünüyor
O hâlde bağımsız rassal değişkenler için E(XY)=E(X)E(Y) gibi temel içerikleri bolca kanıtlamak yerine, zaten mevcut olan ADAM yakınsama kanıtlarına yer ayırmak daha faydalı olurdu gibi geliyor
ANN bölümü de temel ve daha az ilginç içerikleri uzun uzun kanıtlayan çok kısım içeriyordu; physics-informed neural networks makalesi de iyi olsa da biraz benzer bir soruna sahip
Makine öğrenmesi yöntemlerini daha titiz ve birleşik biçimde açıklamaya çalışma yönelimi başlı başına iyi, fakat neyin dahil edilip neyin dışarıda bırakılacağı konusunda çizilen sınır bende soru işaretleri doğuruyor
ADAM’in yakınsama kanıtı da ADAM’in neden başka yöntemlerden daha iyi çalışma eğiliminde olduğunu açıklamıyor
Şu anda kimsenin anlamadığı bir şeyi açıklamadığı için suçlamak zor, ama teori pratikte önemli olan şeyleri öngöremiyorsa teori merkezli eğitim fikrinin kendisi zayıflıyor
Derin öğrenmeye matematiksel açıdan daha derin bakmak isteyenler Francois Fleuret’nin https://fleuret.org/francois/lbdl.html adresindeki kitabına da bakabilir
PDF ücretsiz, basılı kopyası da epey sevimli
Her denediğimde çift taraflı yazıcıda iki sayfadan biri yukarıdan aşağı ters basılıyor ve sorun oluyor
İnsanların bu tür kitapları gerçekten baştan sona okuyup okumadığını merak ediyorum
Bishop’ın PRML kitabına bakıyorum; kitabı doğru dürüst bitirmek ve tüm alıştırmaları çözmek muazzam zaman alıyor
Aynı şeyi yapan birinin blogda yazdığını gördüm, 1500 saatten fazla sürmüş diyordu
Benim yüksek lisans programımda böyle bir kitabı bitiren tek kişi yoktu; sadece dersleri alıp geri kalan gerekli şeyleri Google’da arıyorduk
Programlama bilgisi matematikten daha derin olan biri olarak buradaki matematiksel gösterimi anlamak koddan daha zor geliyor
Hatta bilmediğim bir programlama dilinde yazılmış koddan bile daha zor hissettiriyor
Matematik altyapısı daha güçlü olanlara bu tür matematiksel ifadeler kaynak koddan daha kolay anlaşılır geliyor mu merak ediyorum
Kavramları mümkün olduğunca doğru biçimde matematiksel olarak sunmaya çalıştım, ama sonunda bu kitaptakine benzer ağır gösterimden kaçındım; öğrencilerin sektörde kullanabilmesi için matematiğin çoğunu azalttım ve gerçek derslerde formüllerden çok daha fazla kod vardı
Her şeyi çok kesin yazmaya çalışınca işler hızla çirkinleşiyor
Matematikte yeni bir kavram için iyi gösterim bulmak çok zor; Einstein gösterimi, Feynman diyagramları veya matris gösterimi gibi sonradan herkesin açık olduğunu kabul ettiği gösterimler bile çoğu zaman başta çok yetenekli insanlar tarafından ortaya konmuştu
A alanını B alanının gösterimiyle yeniden yazmak onu otomatik olarak faydalı kılmaz; kuantum mekaniğini C* cebirleri gibi matematiğe çevirmek de büyük bir işti ve bugün bile bir ölçüde açık bir araştırma alanı
Bu yüzden bu kitabı ortaya koymak için harcanan emek muazzam olsa da pratik faydasının düşük olma ihtimalinin yüksek olduğunu düşünüyorum
Bu tür denklemleri rahatça okuyabilen insanlar genelde zaten o denklemlere ihtiyaç duymaz; örneğin afin dönüşümü bilen birinin 4 boyutlu tensörün ijkl indislerinin tamamını açıkça görmesine pek gerek yoktur
Tersine, böyle olmayanların gözünün korkup geri çekilme ihtimali yüksek
Bunun bir nedeni el yazısına göre optimize edilmiş olmasıdır
Program kodunu elle yazmak çok sıkıcıdır; bu yüzden matematiksel gösterimin neden böyle göründüğünü anlayabilirsiniz
Üstelik matematiksel gösterime karşılık gelen “o kod” diye bir şey de yoktur
Matematiksel gösterim matematiksel olguları ya da önermeleri ifade etmek içindir; derin öğrenme algoritmalarını uygulayan kodun amacıyla aynı değildir
Bu yüzden konular ve anlatım biçimi bu tür insanlara eğilimli
Örneğin gerçek derin öğrenmede gradyan tabanlı optimizasyon algoritmalarının varlık ve teklik koşullarıyla ilgilenildiğini neredeyse hiç görmedim, ama bu tür sonuçlar bu insanların ilgilendiği ve makale yazdığı konulardır
Başlıktan itibaren bu alanın teorik temellerini ele alan bir kitap olduğu söylendiği için bu yaklaşım başlı başına şaşırtıcı değil
Böyle kitaplar genelde baştan sona okunmaktan ziyade, kişinin kendi araştırmasıyla ilgili tekniklerin bulunduğu birkaç bölümde derinlemesine çalışılır
Ben de araştırma yaparken benzer şekilde uzun uzadıya bir makale derlemesi kullanmıştım, ama ilgilendiğim öz kısım 20-30 sayfa kadardı
Titizlik ve içerik miktarı açısından benim zevkime göre fazla lafı uzatıyor
Örneğin Gronwall eşitsizliğini lemma olarak koyup kanıtlıyor; kullandığı sürüm normalde gördüğümden biraz daha genel olsa da Gronwall eşitsizliği adi diferansiyel denklemler analizinde çok standart bir araçtır, elimdeki titiz kontrol teorisi kitapları bile karmaşıklıktan kaçınmak için kanıt vermeden sadece referans gösterir
Kanıt standardı yükseldikçe ve varsayımlar azaltılmaya çalışıldıkça bu tür uzunluk ortaya çıkıyor
“Öğrenciler ve bilim insanları” denilen hedef okurun tam olarak kim olduğunu merak ediyorum
İlerledikçe alt indisler 4 seviye derinliğe kadar iniyor, en az 3 yeni infix operatör icat ediliyor ve üç farklı alfabeden 30 yeni sembol tanımlanıyor; üstelik 600 sayfanın daha 100 sayfası bile bitmemiş oluyor
Bunu takip edip sindirsin diye kimin için hazırladıklarını bilmiyorum
Derin öğrenmeyi matematik açısından açıklamaya çalışan epey kitap gördüm ama yine de hep şaşırıyorum.
Günümüzde derin öğrenme açıkça deneysel bir bilim ve kitaplara girecek kadar büyük etki yaratmış teorik çalışmaların çok fazla olmadığını düşünüyorum.
Bu tür kitaplar arasında da bu kitap aktif biçimde en kötülerine yakın görünüyor.
Ek bir anlayış neredeyse hiç sağlamayan ve derin öğrenmeyle de yalnızca gevşek biçimde ilişkili lemmaları kanıtlamaya ciddi yer ayırıyor; kodun önemli bir kısmı da neden konduğunu anlamadığım grafik çizim kodları.
Bu kitabın büyük bir bölümünü okuyacak çok az kişi olacağını düşünüyorum.
Bence en iyi ders kitapları hâlâ Goodfellow ve diğerlerinin Deep Learning’i ile daha modern olan Understanding Deep Learning (https://udlbook.github.io/udlbook/).
Derin öğrenmenin en ileri noktası çok deneysel olsa da, yalnızca hangi tekniklerin iyi çalıştığını değil, neden çalıştığını anlamaya çalışan ilginç araştırmalar var.
Kanıtların anlayış kazanmak için iyi bir yol olmadığını söylemek mantıklı değil.
Herkes için iyi bir yöntem değildir; ama başlığında “x’e matematiksel giriş” olan bir kitap doğal olarak bir ölçüde matematik eğitimi almış kişilere yöneliktir ve böyle okurlar için lemmalar ile kanıtları anlayış inşa etmenin doğal bir yoludur.
Matematik yalnızca kanıtlardan ibaret değil, aynı zamanda bir iletişim biçimi.
Sinir ağlarının nasıl çalıştığını açıklamanın yolları arasında şekiller, kod, sözcükler ve epey yoğun matematiksel gösterimlerin hepsi var.
Teoriden sezgi oluşturmaktansa, önce sezgi edinip sonra teknik kısımları anlamak genellikle daha kolaydır.
Bu, kesin bilimlerde, özellikle de matematikte genel olarak doğrudur; örneklerin işe yaramasının nedeni de budur.
Derin öğrenmenin deneysel bir bilim olmasının nedeni herkesin matematikten korkması mı, merak ediyorum.
Modern fizik kadar zengin bir alan ama garip biçimde pratisyenlerin çoğu hâlâ Vahşi Batı dönemindeymiş gibi düşünmek istiyor sanki.
Matematik eğilimi çok güçlü olan pek çok derin öğrenme araştırmacısı da var.
Derin öğrenmenin deneysel bir bilim olmasının nedeni, elimizdeki matematiksel araçların gözlemlenen olguları birleşik tek bir teoriyle açıklayıp öngörmeye yeterli olmaması.
Deneysel bilim olması, alanın “Vahşi Batı” olduğu anlamına gelmez.
Derin öğrenme modelleri tekrarlanabilir kontrollü deneylere konu olabilir ve bunlar sayesinde çoğu durumda ne olacağına dair anlayışımızı geliştirebiliriz.
İyi pratisyenler bunu bilir.
Lineer cebir, kalkülüs ve lisans düzeyi olasılık teorisinin ötesinde çok fazla matematik bilmeden de pek çok iş yapılabilir; o bilgi de esas olarak sezgi sağlamak ve çözmekte olduğunuz problemi biraz biçimselleştirmek için kullanılır.
Neredeyse hiç matematik yapmadan, etkileyici sonuçlar dâhil, başarı elde edilebilir.
Sonuç olarak insanlar yeni problemleri deneysel olarak çok hızlı gösterip çözüyor; bu da neden çalıştığını açıklayan teorik sonuçların ortaya çıkma hızından çok daha hızlı.
Teorinin zor olmasının birçok nedeni var; ama derin öğrenmedeki başarı örneklerinin çoğunun istatistik veya optimal kontrol gibi mevcut çerçevelere iyi oturmaması ve bu yüzden açıklanmasının zor olması da büyük bir etken.
Bu matematiği gerçekten kullanan biri var mı, merak ediyorum.
Tahminim hayıra yakın; en iyi ihtimalle de derin öğrenme araştırmacılarına yapmak istedikleri şeyin imkânsız olmadığı konusunda güven veren bir tür zihinsel destek gibi görünüyor.
Yanılıyorsam bunu memnuniyetle kabul ederim.
İyi bir model yapmak için matematik şart değildir; ama modelin neden yanlış olduğunu bilmek için matematik bilmeniz gerekir.
Bu yüzden matematik gereklidir.
Matematik olmadan yalnızca ölçeği büyütürseniz AGI’ye ulaşabileceğinize kendinizi kandırırsınız.
Herkes kullandığı için her yerde Transformer kullanır, aktivasyon fonksiyonları arasında kafanız karışır.
Çalışan bir model yapabilirsiniz; ama çalışan bir model ile o modelin nerede başarısız olacağını öngörmek ve sınırlarını anlamak arasında büyük fark vardır.
Pek çok kişi yalnızca test seti sonuçlarına bakıp modelin aşırı uyum yapmadığını umuyor gibi.
Test seti sonuçlarıyla hiperparametre ayarlamaktan bahsetmiyorum bile.
Doğruluğu kanıtlanmış ve bilinen özellikleri olan sıralama algoritmaları, arama algoritmaları gibi teorileri olmayan bir bilgisayar bilimini hayal edin.
Bu matematik, bilgisayar bilimi teorisi ile aynı rolü görür.
Keras gibi bir kütüphanede yalnızca model fit ediyorsanız, o matematiği gerçekten “kullanıyor” sayılmazsınız.
Veri kümesi belirli bir boyutun altındaysa, problem belirli bir karmaşıklığın altındaysa ve model yıllardır dağıtımda olup özellikleri iyi incelenmişse, matematiği kabaca bilerek de pek çok iş yapılabilir.
Python veya Java çalışma zamanının derinde nasıl işlediğini bilmeden tamamen işlevsel bir web uygulaması geliştirebilmenize benzer.
Ama gerçekte nasıl çalıştığını bilmiyorsanız, kütüphanede zaten bulunmayan bir durumla karşılaştığınızda oldukça fena tıkanırsınız.
Temel matematiği bilmeyince ne olduğunu görmek için, matematik ve istatistik temellerinden yoksun mevcut nesil “veri bilimi” mezunlarına bakın.
İşe alım tarafında da çok sorun var; ama sonuçta iş bulamamalarının nedeni, bunu öğrenmeye hiç zorlanmamış olmaları ve gerçekte ne yaptıklarını bilmemeleri.
Dolayısıyla bunu kullanan insanlar var.
Bu durumda pratisyenlere farklı yöntemler arasındaki fiziksel tutarlılığı doğrulama yolu sunar.
O hâlde bunlar makine öğrenmesi yapan birinin her gün kullandığı şeyler değil mi?
Özellikle yeni çıkmış bir kitabı hemen ArXiv’e koymak yaygın bir şey mi, merak ediyorum.
En azından matematik ve bilgisayar bilimi ders kitaplarında bunu sık sık görüyorum.