2 puan yazan GN⁺ 2024-01-02 | 1 yorum | WhatsApp'ta paylaş
  • 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
  • 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

 
GN⁺ 2024-01-02
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

    • “Bu yöntemlerin neden çalıştığını” bilmememiz aslında tüm alanın mevcut durumu değil mi diye düşünüyorum
      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

    • Fleuret’nin kitabını A4 kâğıda düzgün basmanın yolunu bulan var mı merak ediyorum
      Her denediğimde çift taraflı yazıcıda iki sayfadan biri yukarıdan aşağı ters basılıyor ve sorun oluyor
    • Orijinal gönderideki kitapla karşılaştırınca neyin daha öne çıktığını merak ediyorum
  • İ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

    • Matematik doktoram ve doktora sonrası araştırmacılık deneyimim var; sonrasında derin öğrenme uygulayıcılığına geçtim ve bu yıl matematik/istatistik yüksek lisans öğrencilerine derin öğrenme anlattım
      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
    • Matematiksel gösterim daha sıkıştırılmıştır, bu yüzden alışmak zaman alabilir
      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 kitap uygulamalı matematikçiler tarafından uygulamalı matematik için yazılmış; önsözde bilim insanları için olduğu söylense de bazı teorik bilimciler ve mühendisler fiilen uygulamalı matematikçilere yakındır
      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
    • Üç yazarın da matematik doktorası var ya da doktora öğrencisi oldukları için gösterim aşırı yoğun
      “Öğrenciler ve bilim insanları” denilen hedef okurun tam olarak kim olduğunu merak ediyorum
    • Matematik altyapım güçlü olmasına rağmen gösterimin tamamen anlamsız geldiğini hissettim
      1. bölümün başlarından itibaren alt indis içinde alt indisler var, üst indis içinde alt indisli toplamlar çıkıyor ve devasa bir fonksiyon bileşimi zincirine giriliyor
        İ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/).

    • Bu kitap pratisyenleri hedefleyen bir kitap değil; ama bu, ona “aktif biçimde en kötü” demek için bir neden değil bence.
      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.
    • UDL’de de oldukça yoğun matematiksel gösterim var.
      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.
    • Matematiksel arka plan, konuyu bir ölçüde iyi anladıktan sonra anlam kazanmaya başlıyor; bu yüzden insanlar matematiği anlarsanız tüm konuyu öğrenmeye yardımcı olacağını yanlış varsayıyor gibi.
      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.

    • Hayır.
      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.
    • İkisinden de biraz var.
      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.

    • Öğrencilerime hep söylediğim bir şey var:
      İ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.
    • “Zihinsel destek” demek bunu fazlasıyla küçümsemek olur.
      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.
    • Bazı insanlar yoğun matematiksel gösterimlerle düşünmeyi ve iletişim kurmayı sever.
      Dolayısıyla bunu kullanan insanlar var.
    • Kitabın ikinci yarısında PINN ve diğer kısmi diferansiyel denklem yöntemlerini ele alan bölümlerde, bunlara geleneksel nümerik analiz yöntemlerini geliştirirken kullanılan fonksiyonel analiz gibi bir çerçeveden bakmaya yardımcı oluyor.
      Bu durumda pratisyenlere farklı yöntemler arasındaki fiziksel tutarlılığı doğrulama yolu sunar.
    • Özete göre çeşitli ANN mimarilerini, optimizasyon algoritmalarını ve muhtemelen backpropagation’ı da ele alıyor gibi.
      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.

    • Resmî yerinden çevrimiçi sunulan kitaplar çok nadir değil.
      En azından matematik ve bilgisayar bilimi ders kitaplarında bunu sık sık görüyorum.