Algorithmen der Künstlichen Intelligenz

von Patrick Sabrowski,
assono GmbH, Standort Kiel,

Nachdem wir bereits in einem vorangehenden Blogartikel zu KI zusammenfassend beschrieben haben, wie KI im Allgemeinen funktioniert, werden im Folgenden die technischen Details im Rahmen von künstlicher Intelligenz näher beschrieben. Dafür werden die drei gängigsten Algorithmen zur Implementierung von künstlicher Intelligenz vorgestellt.

Neuronale Netze

Neuronale Netze sind in ihrer Programmarchitektur sehr eng an das menschliche Gehirn angelehnt.Im menschlichen Gehirn gibt es etwa 100 Milliarden Neuronen. Diese Nervenzellen sind über verschieden starke Synapsen miteinander verbunden. Jedes Neuron errechnet aus den Eingangssignalen vieler anderer Neuronen mit einer einfachen Formel ein Ausgangssignal, das es wieder an viele andere Neuronen weitergibt. Auf ein Neuron betrachtet ist dieser Prozess sehr simpel und leicht vorhersehbar. Doch durch die geschickte Verkettung der Neuronen entsteht ein Gehirn, das abstrakt, konkret, kreativ, systematisch, emotional und rational Ideen entwickelt und Entscheidungen fällt. Um sich diesen Ansatz zunutze zu machen, braucht es zunächst einmal eine technische Umsetzung für diese Neuronen. Dadurch, dass die Neuronen für sich gesehen sehr einfach sind, ist es jedoch leicht, ein Programm zu Schreiben, das ein Neuron simuliert. Dieses Neuron lässt sich auch ohne großen Aufwand vervielfältigen, sodass man sehr leicht sehr große neuronale Netze bauen kann.

Der große Schritt beim Entwickeln neuronaler Netze ist es nun, heraus zu finden, welche Verbindungen zwischen den Neuronen wie stark sein müssen, damit das Programm die richtige Lösung findet. Rein theoretisch könnte sich nun ein Informatiker ein System überlegen, nach dem er die Synapsen anlegt, damit die Aufgabe gelöst wird. Aber damit für all die Neuronen jeweils die Synapsen festzulegen, würde selbst den besten Mathematiker hinsichtlich Zeitaufwand und Übersicht weit überfordern. Daher trainiert man die neuronalen Netze mittels Reinforcement Learning oder Deep Learning, statt sie im klassischen Sinne zu programmieren.

Oftmals sind neuronale Netze in Ebenen von Neuronen in Ebenen unterteilt, sodass jedes Neuron nur Daten von Neuronen der Vorhergehenden und Gleichen Ebene verwendet, und seine Daten nur an Neuronen der gleiche Ebene oder einer späteren weitergibt. In diesem Fall unterscheidet man drei Arten von Ebenen. Das Input-Layer beinhaltet alle Neuronen, die ihre Daten nicht aus anderen Neuronen, sondern direkt aus den Daten der Aufgabe ziehen. Das Output-Layer beinhaltet dagegen alle Neuronen, die das Endergebnis ausgeben. Alle anderen Neuronen werden in sogenannte Hidden-Layers unterteilt. Fast alle Neuronen-Netze haben mehrere Hidden-Layers. Es ist üblich, dass die ersten Ebenen noch sehr viele Neuronen beinhalten und es zum Ende hin immer kleinere Ebenen werden. Dies liegt daran, dass das Ziel Künstlicher Intelligenz meist darin besteht, große Datenmengen in kleine, aber gut strukturierte und dadurch aussagekräftige Daten zu verwandeln.

Neuronale Netze sind insbesondere für den Umgang mit unstrukturierten Daten geeignet, also für natürliche Sprache oder Bilderkennung.

Reinforcement Learning

Reinforcement Learning ist eine Methode, mit der hauptsächlich neuronale Netze, aber auch andere KI-Algorithmen trainiert werden. Zugrunde liegt ein Prinzip, das auch beim menschlichen Lernen wichtig ist: Versuch und Irrtum. Das Programm bekommt viele Beispielaufgaben, zu denen die Lösung bekannt ist. Nehmen wir zu Beispiel eine Künstliche Intelligenz zur Bilderkennung. Dann werden sehr viele Bilder gebraucht, die so aussehen, wie die Bilder, welche die KI später klassifizieren soll, sowie zu jedem Bild die Angabe, was darauf gezeigt ist. Das Programm wird nun verwendet, um diese Aufgaben zu lösen.

Und nach jeder Aufgabe wird das Programm ein wenig angepasst. Je weiter die Antwort von der richtigen Antwort ist, desto größere Anpassungen werden vorgenommen, sodass das Programm den gleichen Fehler wahrscheinlich nicht nochmal macht. Dieser Prozess wird so lange wiederholt, bis die Künstliche Intelligenz alle Trainingsdaten zuverlässig löst.

Die Frage wie man ein Programm anpasst, hängt davon ab, welchen Algorithmus das zu trainierende Programm verwendet. Bei neuronalen Netzen verändert man die Gewichte der Verbindungen zwischen den Neuronen um eine zufällige Variable. Dabei hängt die Varianz der Veränderung von der Güte der gegebenen Antwort ab.

Um die Qualität bei Reinforcement Learning zu optimieren, gibt es zwei verschiedene Ansatzpunkte. Wenn man das Programm mit mehr Daten trainiert, dann werden seine Ergebnisse immer präziser. Wenn man bei gleicher Datensatzgröße das Programm häufiger trainiert, erhöht man die Präzision, aber nimmt auch eine höhere Gefahr de Overfittings in Kauf. Wenn man nur kleine Anpassungen durchführt, dann vermeidet man dadurch, dass sehr spezielle Regeln, die sich das Programm zu Nutze machen könnte, übersehen werden. Dafür braucht man mit großen Anpassungen oft weniger Schritte, bis man ein grundlegend funktionierendes Programm hat.

Reinforcement Learning wird auch als Deep Learning bezeichnet, wenn es an großen neuronalen Netzen angewendet wird.

Clusteralgorithmen

Manchmal stellt sich auch das Problem, dass man große Mengen von strukturierten Daten hat, und diese Daten gruppieren will. Auf strukturierten Daten fällt es im Normalfall einfach, ein Maß für die Unterschiedlichkeit zweier Datenpunkte festzulegen (traditionell nimmt man hier den Euklidischen Abstand, also die Wurzel aus der Summe der quadrierten Differenzen in den einzelnen Werten.). Wenn dies geschehen ist, dann kann man beginnen, die Clusterpunkte in verschiedene Gruppen zu teilen. Hierfür gibt es drei verschiedene Ansätze.

Prototypenbasiertes Clustern

Hier werden zuerst verschiedene Prototypen definiert. Prototypen werden als Repräsentanten der zukünftigen Cluster verwendet. Hierfür kann man zufällige Punkte auswählen, da die Punkte im Verlauf des Clusterns noch weiter angepasst werden.

Danach werden die Punkte einem vorläufigen Cluster zugeordnet. Jeder Punkt wird dem Cluster des Prototypen zugeordnet, dem er am nächsten liegt. Danach werden die Prototypen angepasst. Als neuer Prototyp wird jeweils der Durchschnitt aller Datenpunkte des Clusters festgelegt. Dann wird erneut geprüft, welcher Punkt welchem Prototypen am nächsten ist. Dieser Vorgang wird solange wiederholt, bis sich nichts mehr (oder zumindest fast nichts) mehr ändert.

Durch diesen Prozess ergeben sich am Ende Cluster, die zumeist gut die Struktur in den Daten wiedergeben. Die Methode ist leicht und universell anwendbar, hat jedoch den Nachteil, dass man die Menge der Prototypen richtig schätzen muss, da sie die Menge der Cluster festlegen. Wenn man hier eine ungünstige Zahl wählt, kann es leicht passieren, dass Punkte, die eigentlich in ein Cluster gehören, jetzt in zwei Cluster gleicher Größe unterteilt werden. Dies kann auch bei geeigneter Anzahl passieren, einfach nur dadurch, dass die Prototypen zu Beginn an ungünstigen Orten liegen. Dies kann man zwar nicht immer verhindern, aber man kann die Wahrscheinlichkeit minimieren, indem man für jede Menge an Prototypen anschaut, wie gut die Cluster zusammenpassen. Meist gibt es dann eine Anzahl von Prototypen, bei der die Größe der Abweichung deutlich abnimmt. Diese wird dann meist genommen.

Sie haben Fragen, wie KI auch in Ihrem Unternehmen sinnvoll Arbeitsabläufe optimieren kann? Wir beraten Sie gerne!

Mehr Infos, was künstliche Intelligenz für Ihr Unternehmen leisten kann: KI für Ihr Unternehmen

Nächste Artikel in dieser Reihe:

Das könnte Sie auch interessieren:

Fachbeitrag Künstliche Intelligenz

Sie haben Fragen zu diesem Artikel? Kontaktieren Sie uns gerne: blog@assono.de

Sie wollen eine individuelle Lösung? Kontaktieren Sie uns

Weitere interessante Artikel

Sie haben Fragen? Wir sind für Sie da.

Wenn Sie mehr über unsere Angebote erfahren möchten, können Sie uns jederzeit kontaktieren. Sie können uns auf verschiedene Weisen für eine unverbindliche Erstberatung erreichen:

assono GmbH

Standort Kiel (Zentrale)
assono GmbH
Lise-Meitner-Straße 1–7
24223 Schwentinental

Standort Hamburg
assono GmbH
Bornkampsweg 58
22761 Hamburg

Telefonnummern:
Zentrale: +49 4307 900 407
Techn. Hotline: +49 4307 900 403
Vertrieb: +49 4307 900 402

E-Mail-Adressen:
kontakt@assono.de
bewerbung@assono.de