Wir haben die klassischen Multi-Layer Perceptrons (MLPs) als selbstverständlich hingenommen und so viele Architekturen darum herum aufgebaut. MLPs sind fester Bestandteil jedes einzelnen LLM- oder Basismodells, das wir heute sehen, wie etwa chatGPT, LLAMA, DALLE und CLIP. Oder sogar einfacher Erkennungsmodelle wie YOLO-v*.
Was wäre, wenn ich Ihnen jetzt sagen würde, dass wir einen Konkurrenten für die MLPs haben? Es gibt ein neues Papier namens „Kolmogorov-Arnold Network“, kurz KAN, das die MLPs herausfordert. Wenn die von ihnen vorgeschlagene Lösung wirklich skalierbar ist, können wir die nächste Generation neuronaler Netzwerke haben, die uns der künstlichen allgemeinen Intelligenz (AGI) einen weiteren Schritt näher bringen wird.
Während die MLPs Aktivierungsfunktionen wie ReLU, Sigmoid, Tanh, GeLU usw. umfassen, schlägt KAN vor, dass wir diese Aktivierungsfunktionen lernen. Also, wie macht KAN das? Welche Mathematik steckt dahinter? Wie wird es implementiert? Und wie trainieren wir KANs überhaupt?
Ich habe mein Bestes gegeben, um das KAN-Papier hier zusammenzufassen. Sie können entweder die Kernaussage lesen oder das 48 Seiten lange Papier!
Wenn Sie wie ich sind und Dinge visualisieren möchten, um sie besser zu verstehen, finden Sie hier eine Videoversion dieses Artikels:
Beginnen wir mit MLPs, mit denen wir gut vertraut sind. Die MLPs bestehen aus Knoten und Kanten. In jedem Knoten werden die Eingaben summiert und Aktivierungen wie ReLU, GeLU und SeLU angewendet, um die Ausgabe für diesen bestimmten Knoten zu erzeugen.
Diese Aktivierungsfunktionen ändern sich während des Trainingsvorgangs nie. Mit anderen Worten, sie haben keine Parameter. Sie sind nicht intelligent genug, um sich selbst auf einen gegebenen Trainingsdatensatz abzustimmen. Was also während des Trainings trainiert oder aktualisiert wird, sind die Gewichte jedes dieser Knoten.
Was wäre, wenn wir die Annahme, dass die Aktivierungsfunktion festgelegt sein muss, in Frage stellen und sie trainierbar machen würden? Das ist also die Herausforderung, die das KAN-Netzwerk zu bewältigen versuchte. Die Aktivierungsfunktionen des KAN-Netzwerks werden während des Trainings aktualisiert. Bevor wir tiefer eintauchen, beginnen wir mit Polynomen und Kurvenanpassung.
Die grundlegende Idee von KANs besteht darin, dass jede multivariate zusammengesetzte Funktion in die Summe mehrerer Funktionen zerlegt werden kann, die jeweils einzelne Variablen darstellen.
Nehmen wir beispielsweise an, wir haben eine Gleichung dritten Grades, bei der y=x³, wie in der gelben Kurve oben dargestellt. Und eine weitere Gleichung zweiten Grades, y=x², wie in der blauen Kurve in der obigen Animation dargestellt. In dieser Visualisierung können wir sehen, dass mit x² niemals die Krümmung erreicht werden kann, die mit x³ erreicht wird.
Nehmen wir an, uns liegen die Daten vor, die unten durch die roten und blauen Punkte dargestellt werden, und wir möchten die binäre Klassifizierungsgrenze zwischen den beiden Klassen finden.
Mit einem Polynom zweiter Ordnung, x² , können wir die Grenze zwischen den beiden nicht finden, da die x²-Kurve U-förmig ist, die Daten jedoch S-förmig. Obwohl die Verwendung von x³ für diese Daten geeignet ist, ist damit ein zusätzlicher Rechenaufwand verbunden. Eine andere Lösung könnte darin bestehen, x² zu verwenden, wenn der Eingang x negativ ist, aber -x² zu verwenden, wenn x positiv ist (blaue Kurve mit Hand in der obigen Abbildung gezeichnet).
Wir haben lediglich zwei Polynome niedrigeren Grades hinzugefügt, um eine Kurve mit einem höheren Freiheitsgrad zu erhalten. Genau das ist die Idee hinter KAN-Netzwerken.
Betrachten wir nun ein etwas komplexeres Spielzeugproblem, bei dem wir wissen, dass die Daten durch eine einfache Gleichung generiert werden: y=exp(sin(x1² + x2²) + sin(x3² + x4²)) . Wir haben also 4 Eingabevariablen und drei Operationen, nämlich Exponent, Sinus und Quadrat. Wir können also vier Eingabeknoten mit drei Ebenen auswählen, die jeweils den drei verschiedenen Operationen gewidmet sind, wie unten gezeigt.
KAN-Netzwerk für ein Spielzeugproblem mit vier Eingängen und drei Basisfunktionen für Berechnungen – Exponent, Sinus und Quadrat
Nach dem Training konvergieren die Knoten zu Quadrat-, Sinus- und Exponentenfunktionen, um zu den Daten zu passen.
Da es sich um ein Spielzeugproblem handelt, kennen wir die Gleichung, aus der die Daten stammen. In der Praxis kennen wir jedoch die Verteilung realer Daten nicht. Eine Möglichkeit, dieses Problem anzugehen, ist die Verwendung von B-Splines.
Die grundlegende Idee von B-Splines besteht darin, dass jede beliebige Funktion oder Kurve als Kombination einfacherer Funktionen oder Kurven dargestellt werden kann. Diese einfacheren Funktionen werden Basisfunktionen genannt. Nehmen wir beispielsweise die rote Kurve in der folgenden Abbildung. Der Einfachheit halber versuchen wir, diese mit nur zwei Basisfunktionen darzustellen.
Wir können es in drei Punkte aufteilen, da wir es mit der Summe zweier Basisfunktionen darstellen werden. Diese Punkte werden Knoten genannt. Es kann eine beliebige Anzahl n von Basisfunktionen geben. Der Parameter, der steuert, wie diese Basisfunktionen kombiniert werden, ist c. Wenn wir zwei Kurven „verbinden“, kann es an Knoten zu Unstetigkeiten kommen. Die Lösung besteht darin, die Krümmung der Kurven an den Knoten einzuschränken, damit wir eine glatte Kurve erhalten. Beispielsweise können wir die Steigung der beiden Kurven so einschränken, dass sie an den Knoten gleich ist, wie durch den grünen Pfeil in der folgenden Abbildung dargestellt.
Da wir dem neuronalen Netzwerk eine solche Einschränkung nicht auferlegen können, haben sie in dem Dokument Residual Activation Functions eingeführt. Dies wirkt eher wie eine Regularisierung. In der Praxis ist dies die SeLU-Aktivierung, die der Standard-Spline-Funktion hinzugefügt wird, wie im folgenden Dokument zu sehen ist.
KANs führen eine neue Trainingsmethode namens Feinkörnigkeit ein. Wir alle kennen die Feinabstimmung, bei der wir dem Modell weitere Parameter hinzufügen. Bei der Feinkörnigkeit können wir jedoch die Dichte der Spline-Gitter verbessern. Dies nennt man Gittererweiterung.
Wie wir aus der obigen Abbildung ersehen können, bedeutet Feinkörnigkeit einfach, die Gitter der B-Splines zu verdichten, sodass sie repräsentativer und damit leistungsfähiger werden.
Einer der Nachteile von Splines ist, dass sie rekursiv und daher rechenintensiv sind. Ihre Rechenkomplexität beträgt O(N²LG), was höher ist als die übliche Komplexität von O(N²L) für MLPs. Die zusätzliche Komplexität ergibt sich aus den Gitterintervallen G.
Die Autoren bekämpfen dieses inhärente Problem, indem sie zeigen, dass:
Wir werden die Diagramme dieser Verteidigungen im Abschnitt „Ergebnisse“ sehen. Schauen wir uns jetzt zunächst eine andere Spezialität der KANs genauer an.
Da KANs Funktionen lernen, sind sie nicht einfach eine Blackbox wie MLPs, die wir einfach entwerfen können, indem wir die Tiefe und Breite des MLP für bestimmte Daten oder Probleme wählen. Um KANs besser interpretierbar zu machen und ein gutes KAN-Netzwerk zu entwerfen, müssen wir also die folgenden Schritte befolgen:
fix_symbolic(l,i,j,f)
bereitstellt, wobei l, i, j Knotenebenen und -positionen sind und f die Funktion ist, die sine, cosine, log, etc
sein kann. Eine Zusammenfassung der verschiedenen im Dokument vorgeschlagenen Schritte zum Erreichen eines trainierten KAN-Netzwerks
Die verschiedenen Schritte sind in der obigen Abbildung zusammengefasst. Wir beginnen mit einem großen Netzwerk und verdünnen es (Schritt 1), beschneiden das resultierende Netzwerk (Schritt 2), legen eine Symbolisierung fest (Schritt 3), trainieren das Netzwerk (Schritt 4) und gelangen schließlich zum trainierten Modell.
Mithilfe der oben genannten Schritte haben sie KAN-Netzwerke für fünf verschiedene Spielzeugprobleme trainiert, um ihre Wirksamkeit zu veranschaulichen und sie mit MLPs zu vergleichen. Die wichtigsten Erkenntnisse aus dem Vergleich sind:
Der erste Punkt wird durch die dicke blaue Linie in den fünf Diagrammen im oberen Diagramm oben für die 5 Spielzeugprobleme dargestellt. Die letzten beiden Punkte werden durch das Diagramm unten veranschaulicht, das Verlustkurven und die Parameteranzahlen zur Lösung eines bestimmten Problems zeigt.
Die nächste Erkenntnis ist, dass KANs beim Problem des katastrophalen Vergessens weitaus besser sind als MLPs. Wenn wir Sequenzdaten für kontinuierliches Lernen einspeisen, scheinen sich KANs im Vergleich zu MLPs weitaus besser an die vergangenen Daten zu erinnern. Dies wird in der folgenden Abbildung gezeigt, in der KAN die 5 Phasen in den Daten reproduziert, MLP jedoch Schwierigkeiten hat.
Sie haben auch umfangreiche Experimente durchgeführt, um zu zeigen, dass KAN für Probleme mit partiellen Differentialen und physikalischen Gleichungen verwendet werden kann. Anstatt auf diese Details einzugehen, schauen wir uns an, wann man KANs gegenüber MLPs wählen sollte.
Sie haben die folgende Abbildung erstellt, um uns zu zeigen, wann wir KANs gegenüber MLPs bevorzugen sollten. Wählen Sie also KANs, wenn
Ansonsten gewinnen immer noch die MLPs.
Wenn Ihnen dieser Artikel gefallen hat, folgen Sie mir doch auf
Bitte abonnieren Sie auch meinen
Meiner Meinung nach werden KANs MLPs nicht ersetzen, da Transformatoren die NLP-Landschaft erobert haben. KANs werden sich eher für Nischenprobleme in Mathematik und Physik als nützlich erweisen. Aber selbst dann sind meiner Meinung nach noch viele weitere Verbesserungen nötig. Aber bei Big-Data-Problemen, die mit Basismodellen gelöst werden, haben KANs, zumindest in ihrem aktuellen Zustand, noch einen langen Weg vor sich.
Darüber hinaus weichen der Trainingsansatz und die Gestaltung der KAN-Architektur tendenziell von der Standardmethode zum Entwerfen und Trainieren moderner neuronaler Netzwerke ab. Trotzdem hat die GitHub-Seite bereits 13.000 Sterne und 1,2.000 Forks, was darauf hindeutet, dass hier etwas zu erwarten ist. Warten wir also ab und beobachten wir die Entwicklung.