Ana içeriğe geç

Kolmogorov-Arnold Ağları (KAN’lar): Uygulamalı Bir Rehber

Geleneksel modellere kıyasla daha yüksek yorumlanabilirlik ve doğruluk sunan yeni bir sinir ağı türü olan Kolmogorov-Arnold Ağları’nı (KAN’lar) öğrenin.
· 8 dk. oku

Yapay Zeka ile Keşfedin

Araştırmacılar yakın zamanda Kolmogorov-Arnold Ağı (KAN) adlı yeni bir sinir ağı mimarisini tanıttı. KAN’lar, özellikle fizik gibi alanlarda çalışan bilim insanlarına, karmaşık problemleri çözmek için daha yorumlanabilir bir model sunmayı amaçlıyor.

Geleneksel sinir ağlarının aksine, KAN’lar sonuçlarına nasıl ulaştıklarına dair daha fazla şeffaflık vaat ederek mevcut modellere yöneltilen en büyük eleştirilerden birini, yani “kara kutu” doğasını ele alır.

KAN’lar, Kolmogorov-Arnold gösterim teoreminden ilham alır ve yaygın olarak kullanılan Çok Katmanlı Algılayıcıya (MLP) yeni bir alternatif sunar. Aktivasyon fonksiyonlarını, nöronların içinde değil, nöronlar arasındaki kenarlar üzerine öğrenilebilir şekilde yerleştirirler. 

Bu yazıda KAN mimarisini ayrıntılı olarak açıklayacak ve uygulamalı kod örnekleri kullanacağım.

Kolmogorov-Arnold Ağları (KAN’lar) Nedir?

Kolmogorov-Arnold Ağları (KAN’lar), matematiksel temellerini oluşturan Kolmogorov-Arnold gösterim teoremine dayanır. Bu teorem, her sürekli çok değişkenli fonksiyonun, daha basit tek değişkenli fonksiyonların toplamına ayrıştırılabileceğini söyler.

Ancak teorem, bu tek değişkenli fonksiyonların varlığını garanti etse de, onları nasıl bulacağımızı söylemez. İşte KAN’lar bu noktada devreye girer.

Diğer çoğu modelin yaptığı gibi doğrudan tüm karmaşık bir fonksiyonu yaklaştırmak yerine, KAN’lar bu daha basit tek değişkenli fonksiyonları öğrenmeye odaklanır. Bu yaklaşım, özellikle verideki doğrusal olmayan ilişkilerle çalışırken, esnek olmasının yanı sıra yüksek düzeyde yorumlanabilir bir modelle sonuçlanır.

Kolmogorov-Arnold Ağları (KAN’lar) ve Çok Katmanlı Algılayıcılar (MLP’ler)

KAN’lar ile geleneksel Çok Katmanlı Algılayıcılar (MLP’ler) arasındaki temel fark, öğrenmenin nasıl gerçekleştiğidir.

MLP’lerde, nöronlar ReLU veya sigmoid gibi sabit fonksiyonlarla etkinleştirilir ve bu aktivasyonlar doğrusal ağırlık matrislerinden geçirilir. Buna karşılık KAN’lar, aktivasyon fonksiyonlarını nöronların üzerinde değil, nöronlar arasındaki kenarlara (bağlantılara) öğrenilebilir şekilde yerleştirir. Özgün uygulamada bu fonksiyonlar B-spline’lar ile parametreleştirilmiştir; ancak yazarlar, probleme bağlı olarak Chebyshev polinomları gibi diğer fonksiyon türlerinin de kullanılabileceğini belirtir.

Hem sığ hem de derin KAN’lar, karmaşık fonksiyonları bir dizi daha basit, tek değişkenli fonksiyona ayrıştırır. Aşağıdaki şekil bu mimari farkı vurgular: MLP’ler nöronların içinde sabit aktivasyonlar kullanırken, KAN’lar kenarlar boyunca öğrenilebilir fonksiyonlar uygular ve bunları düğümlerde toplar. Bu mimari değişim, KAN’ların veriye dinamik olarak uyum sağlamasına olanak tanır ve potansiyel olarak MLP’lerden daha az parametreyle daha yüksek doğruluk elde edebilir. Ayrıca eğitimden sonra, yaklaştırma için tüm kenarlar kullanılmıyorsa model küçültülebilir.

KAN’ların MLP’lerle karşılaştırıldığı şekil.

Kaynak: Liu ve diğ., 2024

Ayrıca, eğitimden sonra KAN’lar öğrenilen tek değişkenli fonksiyonların çıkarılmasına olanak tanır; böylece ortaya çıkan çok değişkenli fonksiyon yeniden inşa edilebilir. Bu özellik, yorumlanabilirliğin kritik olduğu durumlarda özellikle kullanışlıdır. Bunu ileride örnekler bölümünde göstereceğiz.

pip install git+https://github.com/KindXiaoming/pykan.git

Kullanım

pykan kurulduktan sonra gerekli modülleri içe aktarıp basit bir KAN tanımlamaya başlayabiliriz:

from kan import *
model = KAN(width=[2,5,1])

Burada, modelin boyutlarını width parametresinde belirtiyoruz. Bu örnekte 2 girişli, 1 çıkışlı ve 5 gizli nöronlu bir katmandan oluşan bir model oluşturuyoruz.Şimdi deneyimiz için bir veri kümesi oluşturalım. Anlık olarak düşündüğüm rastgele bir 2 değişkenli polinom kullanacağım:

from kan.utils import create_dataset
f = lambda x: 3*x[:,[0]]**3+2*x[:,[0]]+4 + 2 * x[:,[0]] * x[:,[1]] ** 2 + 3 * x[:,[1]] ** 3
dataset = create_dataset(f, n_var=2)

Burada bir lambda fonksiyonuyla bir polinom tanımlıyorum. Kütüphane, perde arkasında numpy kullanıyor gibi görünüyor—bu yüzden söz dizimi böyle. Şimdi veri kümesini modele yükleyip görselleştirebiliriz:

model(dataset['train_input']);
model.plot()

Çıktı şöyle görünüyor:

model.plot() kod çıktısı

Eğitim

Eğitimi çalıştırmak için .fit() metodunu kullanmamız gerekiyor:

model.fit(dataset, steps=1000);

Eğitimden sonra KAN’ımız şöyle görünüyor:

Eğitim sonrası model

Şimdi modeli budayıp yeniden çizdirelim:

model = model.prune()
model.plot()

Modelin şu anki hali şöyle. Gördüğünüz gibi bir aktivasyon fonksiyonunu budadık:

Bu mantıklı, çünkü polinomumuz giriş değişkenlerinin beş farklı kuvvet kombinasyonunu kullanmıyor.

KAN’ların Kullanım Alanları

Kolmogorov-Arnold Ağları (KAN’lar), karmaşık ve doğrusal olmayan ilişkileri, geleneksel sinir ağlarından daha az parametreyle modelleyebilme yetenekleri sayesinde çeşitli alanlarda umut vaat etmektedir. Başlıca kullanım alanları şunlardır:

  • Bilimsel modelleme ve veri uydurma: KAN’lar, karmaşık fonksiyonların doğru biçimde modellenmesini gerektiren bilimsel problemler için özellikle etkilidir. Çok değişkenli fonksiyonları daha basit tek değişkenli fonksiyonları öğrenerek yaklaştırdıkları için, bilimsel verilerdeki girift örüntüleri verimli biçimde yakalayabilirler. Eğri uydurma gibi görevlerde, esnek mimarileri sayesinde KAN’lar çoğu zaman geleneksel MLP’leri geride bırakır.
  • Kısmi diferansiyel denklemlerin (PDE) çözümü: KAN’lar, ısı transferi ve akışkanlar dinamiği gibi süreçleri modellemek için fizik ve mühendislikte yaygın olarak kullanılan PDE’lerin çözümünde güçlü bir potansiyel göstermiştir. Yüksek boyutlu ve doğrusal olmayan problemleri ele alma kapasiteleri, bu alanda MLP’leri doğruluk ve yorumlanabilirlik açısından aşmalarını sağlar.
  • Sembolik regresyon: KAN’lar, bir veri kümesini en iyi tanımlayan matematiksel ifadelerin ortaya çıkarılmasının hedeflendiği sembolik regresyonda başarılıdır. Bileşimsel yapıları öğrenebilme yetenekleri, fiziksel ve matematiksel yasaları doğrudan veriden yeniden keşfetmek için ideal bir araç olmalarını sağlar.

KAN’ların Avantajları ve Dezavantajları

KAN’ların, geleneksel sinir ağlarının sınırlamalarını nasıl aştığına dair bazı noktaları inceleyelim:

  • Yorumlanabilirlik: Geleneksel derin öğrenme modellerinin aksine, KAN’lar daha yorumlanabilir bir yapı sunar. Öğrenilebilir fonksiyonlar görselleştirilebilir ve analiz edilebilir; bu da modelin karar verme sürecine dair içgörüler sağlar. Bu özellik, yüksek doğruluk kadar modelin işleyişini anlamanın da kritik olduğu bilimsel alanlarda özellikle değerlidir.
  • Esneklik: KAN’lar tek bir aktivasyon fonksiyonu türüyle sınırlı değildir. Sıklıkla B-spline’lar kullanılsa da, göreve bağlı olarak Chebyshev polinomları gibi diğer temel fonksiyonlar da uygulanabilir. Bu esneklik, mimariyi çok çeşitli uygulamalara uyarlanabilir kılar.

KAN’lar derin öğrenmeye umut verici bir yaklaşım sunsa da, her teknoloji gibi kendi zayıf yönleri vardır:

  • Hesaplama karmaşıklığı: KAN’larla ilgili zorluklardan biri, eğitim aşamasındaki yoğun hesaplama gereksinimidir. KAN’lar kenarlarda öğrenilebilir aktivasyon fonksiyonları kullandığından, bu fonksiyonların değerlendirilmesinin karmaşıklığı, eğitimi geleneksel MLP’lere kıyasla belirgin biçimde yavaşlatabilir. Bu karmaşıklık, derin KAN mimarileri veya çok ayrıntılı temel fonksiyonlar gerektiren görevlerde daha da artar.
  • Uzmanlık gereksinimi: KAN’ların uygulanması ve ayarlanması, geleneksel MLP’lerle çalışmaktan daha karmaşık olabilir. Uygun temel fonksiyonların seçimi (ör. B-spline’lar, Chebyshev polinomları) ve modelin belirli bir göreve göre yapılandırılması, daha derin bir matematiksel anlayış ve daha fazla insan/model etkileşimi gerektirir. Bu da KAN’ları, özel bilgiye sahip olmayan uygulayıcılar için daha az erişilebilir kılabilir.

İnsan–KAN Etkileşimi

Kolmogorov-Arnold Ağlarının (KAN’lar) özgün yönlerinden biri, model ile insan sezgisi arasında anlamlı etkileşime imkân tanımasıdır. Özgün makale, araştırmacıların modelin öğrenme süreciyle, geleneksel sinir ağlarında mümkün olmayan şekillerde nasıl etkileşime girebileceğini açıklıyor.

Belirli bir problem üzerinde bir KAN’ı eğittikten sonra, araştırmacılar modelin karmaşık çok değişkenli fonksiyonu yaklaştırmak için kullandığı öğrenilmiş tek değişkenli fonksiyonları çıkarabilir. Bu fonksiyonları inceleyerek, verideki temel ilişkiler hakkında içgörü kazanırlar.

Ayrıca, bu etkileşimden elde edilen içgörüler yinelemeli iyileştirmeyi mümkün kılar. Araştırmacılar KAN’ın mimarisini değiştirebilir, temel fonksiyon türlerini (ör. B-spline’lardan Chebyshev polinomlarına geçmek) değiştirebilir ya da çıkarılan fonksiyonlara dayanarak eğitim sürecini ayarlayabilir. Bu, insanın döngüde olduğu yaklaşım sayesinde, KAN’lar farklı bilimsel veya matematiksel problemlere uyarlanabilen, kişiselleştirilmiş bir modelleme süreci sunar.

Bu şekilde KAN’lar çift yönlü bir etkileşimi kolaylaştırır: veriden öğrenerek karmaşık fonksiyonlar oluştururlar ve insanlar bu öğrenmeyi yönlendirip yorumlayarak modeli iyileştirebilir, hatta yeni bilgiler ortaya çıkarabilir. Bu etkileşim, KAN’ları öne çıkarır ve makine öğrenimini daha işbirlikçi ve keşif odaklı bir çabaya dönüştürür.

Sonuç

Genel olarak Kolmogorov-Arnold Ağları (KAN’lar), sinir ağı mimarisinde heyecan verici ve umut verici bir ilerlemeyi temsil eder. Benzersiz tasarımları, MLP’lere esnek ve yorumlanabilir bir alternatif sunar ve çeşitli görevlerde geleneksel modelleri geride bırakma potansiyeline sahiptir.

Topluluk, açık kaynak işbirlikleri ve çeşitli uygulamalarla KAN’ları keşfetmeye devam ettikçe, bu ağlar ve uzantıları güçlü, son teknoloji araçlar hâline gelebilir.

Dimitri Didmanidze

Yazar

Dimitri Didmanidze

Ben Dimitri Didmanidze. Makine Öğrenmesi odaklı Matematik yüksek lisansı yapıyorum. Akademik yolculuğum, dönüştürücü tabanlı modellerin yetenekleri üzerine araştırmaları ve üniversite düzeyinde ders vermeyi de kapsadı; bu deneyimler, karmaşık kuramsal kavrayışımı güçlendirdi. Ayrıca bankacılık sektöründe çalışarak bu ilkeleri gerçek dünyadaki veri sorunlarını çözmek için uyguladım.

Konular

İlgili