3 puan yazan GN⁺ 2023-08-27 | 1 yorum | WhatsApp'ta paylaş
  • Makale, sinir ağı eğitiminin temel bileşenlerinden biri olan otomatik türevleme adlı önemli kavramı Python kullanarak açıklıyor.
  • Yazar bir makine öğrenimi mühendisi ve Tensorflow ile Pytorch gibi kütüphaneleri kullanıyor; amacı otomatik türevleme yapan en basit kodu yazmak.
  • Yazar, iki değişken x ve y arasındaki toplamı hesaplayıp sonucu z değişkenine atayan Python koduyla başlıyor. Ancak z, kullanılan değişkenleri izlemediği için x veya y değiştiğinde z değerini otomatik olarak güncellemek mümkün olmuyor.
  • Bunu çözmek için yazar, değişkenler üzerinde sembolik hesaplamaya izin veren bir Tensor sınıfı tanıtıyor. Bu sınıfta toplama işleci yeniden tanımlanıyor.
  • Tensor sınıfı daha sonra ikili ağaç kullanılarak geliştiriliyor. Her tensör, onu oluşturan işlemle birlikte iki başka tensörü içerebiliyor. Bu, Children demeti eklenerek yapılıyor.
  • Yazar, hesaplama grafiğini çalıştırmak ve tensörün gerçek değerini hesaplamak için Tensor sınıfına forward metodunu ekliyor.
  • Yazar, Tensor sınıfının desteklediği temel işlemler için türev ekleyerek hesaplama grafiğine otomatik türevlemeyi dahil ediyor. grad fonksiyonuna yapılan özyinelemeli çağrılar, hesaplama grafiğini dolaşıyor ve karmaşık fonksiyonları basit fonksiyonların birleşimine ayırıyor.
  • Tensor sınıfı; çıkarma, bölme, üs alma ve negatifleme gibi ek işlemler eklenerek daha karmaşık formülleri işleyebilecek şekilde genişletiliyor.
  • Yazar, karmaşık formüller üretip bunların türevini alarak Tensor sınıfının kullanımını gösteriyor.
  • Yazar, Tensor sınıfı için olası iyileştirme ve optimizasyonlarla bitiriyor: keyfi boyuttaki diziler için işlemler eklemek, x tensörüne bağlı olmayan düğümlerde dolaşmayı durdurmak ve hesaplamayı tekrar etmemek için önbellekleme kullanmak.
  • Bu makale, otomatik türevlemenin sinir ağlarının optimizasyonu ve eğitimi için nasıl gerçekleştirildiğini okuyucuların anlamasına yardımcı olmayı amaçlıyor.

1 yorum

 
GN⁺ 2023-08-27
Hacker News görüşleri
  • Okurlar, karmaşık kavramları anlamaya yardımcı olan kısa ve zarif kod gösterimlerini takdir ediyor.
  • Metindeki otomatik türev açıklaması yalnızca grafik bir ağaç olduğunda geçerli olduğundan fazla basitleştirilmiş görünüyor; daha karmaşık yönlendirilmiş döngüsüz grafikleri ele almıyor.
  • Bazı okurlar otomatik türevi oldukça ilgi çekici buluyor ve bu kavrama dair kendi giriş yazılarını yazmış.
  • Bir okur, Python ile 26 satırda yazdığı kendi autodiff uygulamasını paylaştı.
  • Tartışılan teknikler, "bağımlılık takibi"ne ve büyük ölçekli parametrik 3D modellerde hesaplamayı azaltan Knowledge Based Engineering sistemlerinde kullanılanlara benzetildi.
  • Andrej Karpathy'nin bir autograd motoru oluşturduğu video, içgörü sağladığı için tavsiye edildi.
  • Bazı okurlar, otomatik türevin mutlaka bir işlem grafiği kurmadığını, bunun yerine ilgili değeri anında hesapladığını öne sürdü.
  • autodiff'i sayısal zincir kuralı olarak açıklamanın daha açık olduğu yönünde bir öneri var.
  • Sınıfa neden tensör dendiğine ilişkin bir soru gündeme getirildi.
  • Uygulamanın sadeliği bazı okurları şaşırttı; bu da kavramı ilk düşündüklerinden daha erişilebilir hale getirdi.
  • Uygulama, Haskell'deki free monad ile karşılaştırıldı; bu da makalenin diller arası ilgisini gösteriyor.