Welche Art von Netz (mit wie vielen Schichten) und Vernetzung (Feedforward, rekurrent oder vollständig vernetzt) letztendlich für die Lösung eines Problems verwendet werden kann, hängt in der Regel vom Problem selber ab. Mittlerweile gibt es für viele Problemarten best practise-Erfahrungen (ich suche immer noch nach einer vernünftigen deutschen Übersetzung dafür – Vorschläge?), die angewendet werden können. Leider trifft das natürlich nicht auf sämtliche Probleme zu – die Suche nach dem richtigen Netz ist also bereits ein kleines Problem für sich und kann etwa durch ein trial-and-error-Verfahren oder aber auch durch evolutionäre Algorithmen (oder andere Optimierungsalgorithmen) gelöst werden.
Neben der passenden Netzstruktur muss übrigens auch dafür gesorgt werden, dass die möglichen Eingaben auf eine Art und Weise codiert werden, dass sie möglichst günstig in das Netz gefüttert werden können. Oftmals ist diese Aufgabe nicht trivial, da die Codierung der Daten erheblichen Einfluss auf die Effektivität des Netzes hat. Leider können automatisierte Algorithmen dies kaum übernehmen, so dass es in der Regel dem Entwickler eines Netzes überlassen bleibt, eine geeignete Codierung zu finden. Um es noch schwieriger zu machen, muss natürlich auch die Ausgabe des Netzes entsprechend interpretiert werden. Hier gibt es zwei Möglichkeiten: entweder wird versucht, die Ausgaben so zu interpretieren, dass sie einen Sinn ergeben (nichts anderes tun wir im täglichen Leben mit den teils haarsträubenden verbalen Auswürfen diverser Personen des öffentlichen Interesses [die Bissigkeit musste jetzt einmal sein – bitte nicht zu ernst nehmen]), oder das Netz wird dazu gebracht, seine Ausgaben so zu formulieren, wie es der Programmierer erwartet.
Die Findung der richtigen Netzstruktur und die korrekte Codierung der Eingaben reichen allerdings noch nicht aus, um ein KNN auch erfolgreich zur Problemlösung zu verwenden; mindestens ebenso wichtig ist es natürlich, das Netz entsprechend zu konfigurieren, sprich, die Gewichte der Verbindungen zwischen den Neuronen sowie die Schwellwerte und die Aktivierungsfunktionen der einzelnen Neuronen korrekt einzustellen. Hier durch raten, probieren oder “errechnen” auf Anhieb die richtige Konfiguration zu finden, ist sehr schwierig und wird umso schwerer, je größer das Netz ist – es wird also auch hierfür ein Algorithmus benötigt, welcher die richtigen Einstellungen bestimmt. Evolutionäre Algorithmen können auch hier helfen, öfter jedoch wird sich wieder einmal am echten Gehirn orientiert und ein anderes Verfahren verwendet: das Lernen. Ziel dabei ist es, dem KNN durch verschiedene Methoden ein bestimmtes Verhalten anzuerziehen, ganz so, wie Lebewesen im Laufe ihrer Entwicklung neue Dinge lernen können; es soll also dazu gebracht werden, die Ausgaben zu generieren, die erwartet werden. Doch dazu beim nächsten mal ein wenig mehr (und als kleine Vorwarnung: es könnte etwas mathematischer werden).
Kommentare (9)