Antwort

2

Wenn Sie über Konvergenz für SOMs sprechen, möchten Sie für eine gegebene Kartengröße (n x m) wissen, ob ausreichende Iterationen des Algorithmus ausgeführt wurden, um sicherzustellen, dass die Karte "stabil" ist. Das bedeutet, dass neue Eingaben (Beobachtungen) in die Karte bei denselben Neuronen/Codebuchvektoren gesetzt werden, wenn die Karte viele Male umgeschult wird (wobei die Tatsache ignoriert wird, dass die Anordnung der Karte umschalten kann, wenn sie sich ändert) wird jedes Mal trainiert, was in Ordnung ist, solange die Cluster noch stabil angeordnet sind).

Um die Frage zu beantworten, ob genügend Iterationen ausgeführt wurden, finden Sie in den unten aufgeführten wissenschaftlichen Arbeiten. Beide Arbeiten beschäftigen sich auch mit der Frage, welche Kartengröße angemessen ist (welche n x m -Werte unterstützen die Konvergenz der SOM?).

Einer der traditionellen Ansätze, die in Papiere populär gewesen ist hier gegeben:

Statistical tools to assess the reliability of self-organizing maps (Bodt, Cottrell, Verleysen)

In jüngerer Zeit ist dieses Verfahren zustande gekommen ist, das sieht ziemlich vielversprechend:

A CONVERGENCE CRITERION FOR SELF-ORGANIZING MAPS , masters thesis, Benjamin h. ott (University of Rhode island)

Diese These, meiner Meinung nach, war wirklich gut geschrieben und eine Freude zu lesen. Es ist auch schön, dass diese Forschung als ein SOM-Konvergenz-Test in einem (eher unbekannten) Paket in R geschrieben wurde, popsom genannt. Überprüfen Sie es heraus:

popsom

5

Ich bin ziemlich sicher, dass Sie Kostenfunktion und nicht Fehlerfunktion meinen.

SOM erfordert keine Fehlerfunktion (noch eine Kostenfunktion).

Auf der obersten Ebene der Taxonomie Machine Learning, ist SOM ein unüberwachten Lerntechnik --no Zielvektor und somit kein „Zielvektor“ minus „value_at_the_current_iteration“ zu minimieren.

Eine andere Möglichkeit, darüber nachzudenken: Die Rolle einer Kostenfunktion besteht darin, einige Kosten zu minimieren; in ML ist es das Delta zwischen Modellrechnung und gelieferten Daten. In SOM werden zu diesem Zweck keine Daten an den Algorithmus geliefert.

(Ich weiß, dass dies etwas verwirrend ist, weil die Eingabedaten, aus denen das Netzwerk erstellt wird, oft als "Trainingsdaten" bezeichnet wird - wahrscheinlich ist dies die Rolle der Eingabedaten in überwachten ML-Techniken, die weit häufiger sind Es ist wahrscheinlich auch verwirrend, weil Teuvo Kohonen, die Person, die SOM erfunden hat, sie ursprünglich als eine Klasse neuronaler Netzwerke bezeichnet hat - und natürlich ist NN eine überwachte Technik und verlässt sich auf eine Kostenfunktion (oft Gradientenabstieg.))

Schließlich, nur um sicher zu gehen, überprüfte ich meinen eigenen SOM-Code sowie den Code aus dem ML-Lehrbuch von Marsland, "Machine Learning: Eine algorithmische Perspektive". Sowohl in meinem Code als auch in seinem, dem einzigen Abbruchkriterium, was auch immer der Wert für "maximale Iterationen" ist, hat der Benutzer beim Aufruf der Hauptfunktion übergeben.

+0

Vielen Dank. Ich frage mich, ob Sie einen guten Hinweis auf Batch-SOM-Implementierung wissen. Ich finde viele serielle SOM-Implementierungen im Netz, aber nicht Batch-One.In meiner Implementierung verringern sich die durchschnittlichen Kosten (Entfernung zwischen Trainingsdaten und Neuronen), aber die Kosten steigen für einige Neuronen ... Der Code muss etwas Stück fehlen ... –

+1

hier ist eins in C++ (habe es nicht angeschaut) : http://www.cis.hut.fi/research/som_lvq_pak.shtml; und hier ist eine Python-Implementierung (http://www-ist.massey.ac.nz/smarsland/MLBook.html); Der Link ist zu Home Page für ein ML-Lehrbuch von Stephen Marsland; Auf dieser Seite stellt er den gesamten im Buch verwendeten Code ein (scrollen Sie zu Kapitel 9, Sie sehen den SOM-Code). – doug

+0

Es gibt auch schön geschriebenen C-Code für SOMs in den R-Open-Source-Paketen 'class' (Grundversion),' kohonen', 'popsom' ... – FXQuantTrader