Neuronale Netze und praktische Anwendungen

von | Okt 31, 2018 | Softwareentwicklung |

Science Fiction wird mit Neuronalen Netzen in vielen Bereichen – zumindest gefühlt – Realität. „Der aktuelle Hype und die vielfältigen Anwendungsgebiete machen es für Entscheider in Unternehmen schwer, potentielle Anwendungsgebiete und Nutzen aus der Technologie zu sehen“, weiß Christoph Wendl, CEO von Iphos IT Solutions, einem modernen IT Unternehmen aus Wien. Nachfolgend versuchen wir daher Orientierung zu geben, Basiswissen zu vermitteln und mögliche Anwendungsgebiete aufzuzeigen.

Geschichte der künstlichen Intelligenz

Vorläufer der künstlichen Neuronalen Netze

Mit der Erkenntnis, dass wir vieles intuitiv und auch die Benutzung eines jeden Werkzeuges praktisch erlernen können, kam seit dem 16. Jahrhundert die Idee des Menschen als Schöpfer eines Wesens auf, welches mit ihm zumindest rudimentär interagieren konnte. Dazu kam es bereits im 17. Jahrhundert durch eine Rechenmaschine. Diese beherrschte Funktionen wie Addieren, Subtrahieren, sowie Multiplizieren und Dividieren. Das klingt zwar simpel, davor gab es jedoch nichts in vergleichbarer Form. Das Gerät konnte unterschiedliche logische Ergebnisse aufgrund von zuvor implementierten Regelanwendungen ausgeben.

Entwicklung ab dem 20. Jahrhundert

Es dauerte einige Jahrhunderte, bis die Gesellschaft und die Technik so weit waren, einen weiteren Schritt zu wagen. In den 40er Jahren des 19. Jahrhunderts wurde einerseits die Nichtlinearität in der Informationsverarbeitung von Neuronen aufgezeigt. Andererseits wurde auch eine Methode vorgestellt, mit deren Hilfe künstliche neuronale Netze ihre Lernfähigkeit unter Beweis stellen konnten – die sogenannte „Hebbsche Lernregel“. Sie basiert auf der kontinuierlich, wiederholten Änderung der Verbindungsstärke zweier Neuronen, wodurch ab einem bestimmten Schwellenwert, ein „erlerntes“ Ergebnis ausgegeben wird.

Ab 1956 setzten sich trotz definitorischer Schwierigkeiten der Begriff „Artificial Intelligence“ (AI) oder „Künstliche Intelligenz“ (KI) durch. Jedoch waren die Kapazität und die praktische Anwendbarkeit aufgrund damals noch schwacher Hardware sehr begrenzt, was das Interesse an Neuronalen Netzen wieder etwas abflauen ließ. Die zunehmende theoretische und methodische Weiterentwicklung ab den 80igern und die rasante Verbesserung der Hardware- und Software-Leistung brachte weitergehende Erfolge der Technologie nach der Jahrtausendwende, insbesondere auf dem Gebiet der Mustererkennung. Heute werden Neuronale Netze für verschiedene Problemstellungen in der Wissenschaft und in der Wirtschaft verwendet. Das Internet und Open Source Software wie R, Python und frei verfügbare hochdimensionale Libraries wie Keras, TensorFlow, u.v.m., erleichtern die Implementierung und den Umgang mit Neuronalen Netzen, die ihrerseits ordentlich hinsichtlich verschiedener Verwendungszwecke und Modellkonzeptionen ausdifferenziert wurden (z.B.: RNNs, LSTMs, etc.).

Funktionsweise künstlicher neuronaler Netze

Ein kleiner Einblick

Trotz einer Vielzahl unterschiedlicher Modelle, die durchaus komplex werden können, sind Neuronale Netze im Prinzip leicht zu verstehen. Im einfachsten Fall handelt es sich um simple Rechenoperationen in Matrizen. Angelehnt an biologische neuronale Strukturen gibt es in künstlichen Neuronalen Netzen eine Input-Ebene, eine versteckte Ebene mit einer beliebigen Anzahl von Neuronen (mind. 1) zur Informationsverarbeitung und eine Output Ebene, zwischen denen mehrere Verbindungen bestehen. Das einzelne Neuron beinhaltet zumindest jeweils eine Aufsummierung des Inputs, einen Bias und eine Aktivierungsfunktion (z.B. eine Sigmoidale Funktion), die darüber entscheidet, ob das Neuron feuert oder nicht. Zusätzlich stellen die Verbindungen zwischen den Neuronen Gewichtungen dar. Im Lernprozess wird zunächst der Input verarbeitet, indem Information vom Input, über die Neuronen, in den Output fließt (Forward Propagation). Danach werden die Werte der Gewichtungen und des Bias so angepasst, dass der Fehler zwischen erwarteter und tatsächlicher Ausgabe des Neuronalen Netzes minimiert wird. Diesen Vorgang nennt man Backpropagation (Fehlerrückführung). Das Netz modifiziert sich also durch die wiederholte Eingabe von Trainingsmustern und der automatischen Minimierung des Fehlers so lange selbst, bis der Fehlerwert unter einen vorgegebenen Wert sinkt. Neuronale Netze lernen und organisieren Informationen somit selbstständig und bieten als Output eine Generalisierung (z.B. eine Klassifizierung).

Es gibt eine Vielzahl an Modifikationen. So können etwa die Aktivierungsfunktion (z.B. als linear oder nichtlinear), das Lernverfahren (supervised, unsupervised, etc.), die Art und Zahl der Verbindungen zwischen Neuronen, der Lernprozess (z.B. Modifikationen der Verbindungsstärke, Entwicklung oder Löschen existierender Verbindungen, etc.) und die Anzahl der versteckten Ebenen angepasst werden. Zusätzlich können Parameter eingefügt werden, z.B. zum Vergessen von Information in LSTMs (Long-, Short-Term Memory), um weitere Anwendungszwecke abzudecken.