Klasik Çok Katmanlı Algılayıcıları (MLP'ler) olduğu gibi aldık ve onun etrafında pek çok mimari inşa ettik. MLP'ler, chatGPT, LLAMA, DALLE ve CLIP gibi bugün gördüğümüz her bir LLM veya temel modelin bir parçasıdır. Veya YOLO-v* gibi basit tanıma modelleri bile.
Peki ya şimdi size MLP'ler için bir rakibimiz olduğunu söylesem? Kasabada “Kolmogorov-Arnold Ağı”, kısaca KAN adında, MLP'lere meydan okuyan yeni bir gazete var. Önerdikleri çözüm gerçekten ölçeklenirse, yeni nesil sinir ağlarına sahip olabiliriz ve bu da bizi Yapay Genel Zekaya (AGI) bir adım daha yaklaştıracaktır.
MLP'ler ReLU, sigmoid, tanh, GeLU vb. aktivasyon fonksiyonlarını içerirken KAN, bu aktivasyon fonksiyonlarını öğrenmemizi önermektedir. Peki KAN bunu nasıl yapıyor? Bunun arkasındaki matematik nedir? Nasıl uygulanır? Peki KAN'ları nasıl eğitebiliriz?
KAN makalesini burada özetlemek için elimden geleni yaptım. Bu ana fikri okumayı veya 48 sayfa uzunluğundaki makaleyi okumayı seçebilirsiniz!
Eğer siz de benim gibiyseniz ve olayları daha iyi anlamak için görselleştirmek istiyorsanız işte bu makalenin video formu:
Oldukça aşina olduğumuz MLP’lerle başlayalım. MLP'ler düğümlerden ve kenarlardan oluşur. Her düğümde, söz konusu düğüm için çıktı üretmek amacıyla girdiler toplanır ve ReLU, GeLU ve SeLU gibi aktivasyonlar uygulanır.
Bu aktivasyon fonksiyonları eğitim süreci boyunca asla değişmez. Başka bir deyişle herhangi bir parametreye sahip değillerdir. Kendilerini belirli bir eğitim veri setine göre ayarlayacak kadar akıllı değiller. Yani eğitim sırasında eğitilen veya güncellenen şey, bu düğümlerin her birinin ağırlığıdır.
Şimdi aktivasyon fonksiyonunun düzeltilmesi gerektiği varsayımını sorgulayıp eğitilebilir hale getirsek ne olur? İşte KAN ağının çözmeye çalıştığı zorluk da bu. KAN ağının aktivasyon fonksiyonları eğitim süreci sırasında güncellenir. Daha derine inmeden önce polinomlar ve eğri uydurmayla başlayalım.
Dolayısıyla KAN'ların temel fikri, herhangi bir çok değişkenli bileşik fonksiyonun, tek değişkenli çeşitli fonksiyonların toplamına bölünebilmesidir.
Örneğin, yukarıdaki sarı eğriyle gösterildiği gibi y=x³ olan 3. derece bir denklemimiz olduğunu varsayalım. Ve yukarıdaki animasyonda mavi eğri ile gösterildiği gibi 2. derecenin başka bir denklemi, y=x². Bu görselleştirmede x² kullanmanın asla x³ ile elde edilen eğriliğe ulaşamayacağını görebiliriz.
Aşağıdaki kırmızı ve mavi noktalarla temsil edilen verilerin bize verildiğini ve iki sınıf arasındaki ikili sınıflandırma sınırını bulmak istediğimizi varsayalım.
İkinci dereceden bir polinom olan x²'yi kullanarak, x² eğrisi “U” şeklinde ancak veriler “S” şeklinde olduğundan ikisi arasındaki sınırı bulamayız. Her ne kadar x³ kullanmak bu veriler için uygun olsa da, ekstra bir hesaplama maliyetiyle birlikte gelir. Farklı bir çözüm, x girişi negatif olduğunda x² kullanmak, x pozitif olduğunda - x² kullanmak olabilir (yukarıdaki şekilde elle çizilmiş mavi eğri).
Yaptığımız tek şey, daha yüksek serbestlik derecesine sahip bir eğri elde etmek için iki düşük dereceli polinom eklemek. KAN ağlarının arkasındaki fikir tam olarak budur.
Şimdi verilerin basit bir denklemle oluşturulduğunu bildiğimiz, biraz daha karmaşık bir oyuncak problemini ele alalım: y=exp(sin(x1² + x2²) + sin(x3² + x4²)) . Yani 4 giriş değişkenimiz var ve üç işlemimiz var: üs, sinüs ve kare. Böylece aşağıda gösterildiği gibi her biri üç farklı işleme ayrılmış üç katmana sahip dört giriş düğümü seçebiliriz.
Hesaplamalar için dört girişli ve üç temel işlevli (üs, sinüzoid ve kare) bir oyuncak problemi için KAN ağı
Eğitimden sonra düğümler, verilere uyacak şekilde kare, sinüzoidal ve üslü işlevlere yakınlaşacaktır.
Bu oyuncak bir problem olduğu için verilerin geldiği denklemi biliyoruz. Ancak pratikte gerçek dünya verilerinin dağılımını bilmiyoruz. Bu sorunu çözmenin bir yolu B-spline'ları kullanmaktır.
B-spline'ların temel fikri, herhangi bir fonksiyonun veya eğrinin daha basit fonksiyon veya eğrilerin bir kombinasyonu olarak temsil edilebilmesidir. Bu daha basit fonksiyonlara temel fonksiyonlar denir. Örneğin aşağıdaki şekildeki kırmızı eğriyi ele alalım. Basitlik adına bunu sadece iki temel fonksiyonla temsil etmeye çalışalım.
İki temel fonksiyonun toplamı ile temsil edeceğimiz için bunu 3 noktaya ayırabiliriz. Bu noktalara düğüm denir. Herhangi bir sayıda n tane temel fonksiyon olabilir. Bu temel fonksiyon kombinasyonlarının nasıl çalıştığını kontrol eden parametre c'dir. İki eğriyi birleştirdiğimizde düğümlerde süreksizlikler olabiliyor. Çözüm, düzgün bir eğri elde etmek için düğümlerdeki eğrilerin eğriliğini sınırlamaktır. Örneğin, aşağıdaki şekilde yeşil okla gösterildiği gibi, iki eğrinin eğimini düğümlerde aynı olacak şekilde sınırlayabiliriz.
Sinir ağına böyle bir kısıtlama getiremeyeceğimiz için, makaleye Artık Aktivasyon Fonksiyonlarını dahil ettiler. Bu daha çok bir düzenleme gibi davranır. Pratik olarak bu, aşağıdaki makalede görüldüğü gibi standart spline fonksiyonuna eklenen SeLU aktivasyonudur.
KAN'lar ince taneli eğitim adı verilen yeni bir eğitim yöntemi sunar. Hepimizin aşina olduğu şey, modele daha fazla parametre eklediğimiz ince ayardır. Ancak ince taneli olması durumunda spline ızgaralarının yoğunluğunu arttırabiliriz. Buna ızgara uzantısı diyorlar.
Yukarıdaki şekilde kağıttan görebildiğimiz gibi, ince tanelileştirme, B-spline'ların ızgaralarını daha temsili ve dolayısıyla daha güçlü hale getirecek şekilde yoğunlaştırmaktır.
Spline'ların dezavantajlarından biri özyinelemeli olmaları ve dolayısıyla hesaplama açısından pahalı olmalarıdır. Hesaplama karmaşıklıkları O(N²LG)'dir ve bu, MLP'ler için olağan O(N²L) karmaşıklığından daha yüksektir. Ek karmaşıklık G ızgara aralıklarından kaynaklanmaktadır.
Yazarlar bu doğal sorunu şunu göstererek savunuyorlar:
Bu savunmaların grafiklerini sonuçlar bölümünde göreceğiz. Şimdilik KAN'ların başka bir uzmanlığına daha yakından bakalım.
KAN'lar işlevleri öğrenirken, MLP'ler gibi, belirli bir veri veya sorun için MLP'nin derinliğini ve genişliğini seçerek onları basitçe tasarlayabildiğimiz basit bir kara kutu değildir. Bu nedenle, KAN'ları daha yorumlanabilir hale getirmek ve iyi bir KAN ağı tasarlamak için aşağıdaki adımları izlememiz gerekir:
fix_symbolic(l,i,j,f)
adı verilen bir arayüz işlevi sağlayarak bunu yapmamızı sağlar; burada l, i, j, düğüm katmanı ve konumlardır ve f sine, cosine, log, etc
olabilen fonksiyondur, sine, cosine, log, etc
Eğitimli bir KAN ağına ulaşmak için makalede önerilen farklı adımların özeti
Yukarıdaki şekilde farklı adımlar özetlenmiştir. Büyük bir ağla başlıyoruz ve seyrekleştiriyoruz (adım 1), ortaya çıkan ağı budaıyoruz (adım 2), bazı sembolleştirmeler belirliyoruz (adım 3), ağı eğitiyoruz (adım 4) ve son olarak eğitilmiş modele ulaşıyoruz.
Yukarıda belirtilen adımları kullanarak, KAN ağlarını beş farklı oyuncak problemi için eğiterek bunların etkinliğini gösterdiler ve bunları MLP'lerle karşılaştırdılar. Karşılaştırmadan elde edilen temel çıkarımlar şunlardır:
İlk nokta, 5 oyuncak problemi için yukarıdaki üst grafikteki beş parseldeki kalın mavi çizgiyle gösterilmiştir. Son iki nokta, herhangi bir problemi çözmek için kayıp eğrilerini ve parametre sayımlarını gösteren alttaki grafikle gösterilmektedir.
Bir sonraki çıkarım, yıkıcı unutma probleminde KAN'ların MLP'lerden çok daha iyi olduğudur. Sürekli öğrenme için dizi verilerini beslersek, KAN'lar MLP'lere kıyasla geçmiş verileri çok daha iyi hatırlıyor gibi görünüyor. Bu, KAN'ın verilerdeki 5 aşamayı yeniden ürettiği ancak MLP'nin zorlandığı aşağıdaki şekilde gösterilmektedir.
Ayrıca KAN'ın kısmi diferansiyeller ve Fizik denklemlerini içeren problemlerde kullanılabileceğini göstermek için kapsamlı deneyler yaptılar. Bu ayrıntılara girmek yerine, ne zaman KAN'ları ve MLP'leri seçeceğimize bakalım.
MLP'ler yerine KAN'ları ne zaman seçeceğimiz konusunda bize rehberlik etmesi için aşağıdaki şekli verdiler. Öyleyse, aşağıdaki durumlarda KAN'ları seçin:
Aksi takdirde MLP'ler yine de kazanır.
Bu makaleyi beğendiyseniz neden beni takip etmiyorsunuz?
Ayrıca lütfen bana abone olun
Bana göre KAN'lar, transformatörlerin NLP manzarasını nasıl temiz bir şekilde taradığı konusunda MLP'lerin yerini almak için burada değil. Aksine, KAN'lar matematik ve fizikteki özel problemler için kullanışlı olacaktır. O zaman bile, daha birçok iyileştirmeye ihtiyacımız olduğunu hissediyorum. Ancak temel modellerle çözülen büyük veri sorunları için KAN'ların, en azından mevcut durumlarıyla, kat etmesi gereken uzun bir yol var.
Ayrıca, eğitim yaklaşımı ve KAN mimarisinin tasarlanması, günümüzün sinir ağlarının tasarlanması ve eğitiminin standart yolundan sapma eğilimindedir. Yine de GitHub sayfasında halihazırda 13 bin yıldız ve 1,2 bin çatal var, bu da bir şeylerin yolunda gittiğini gösteriyor. Bekleyelim ve bu alanı izleyelim.