Drücke „Enter”, um zum Inhalt zu springen.

Künstliche Intelligenz – Ein Auftakt

Christoph Hirte 0

Was ist künstliche Intelligenz aus Programmierersicht? Die Antwort ist: Lineare Algebra und Statistik!

Wenn man glaubt ein Neuronales Netz könnte alle Probleme lösen in Null-Komma-Nichts, man müsse nur einen Konstruktor aufrufen und gibt als Parameter sämtlichen Input mit, und das Netz findet dann selbstständig die Lösung – das ist weit gefehlt und reine Utopi!

Mit Tensorflow kann man relativ elegant Bäume (oder eben Netze) aufbauen. Sie haben dafür bei Google Knoten modelliert und sprachliche gute Factory Methoden gefunden. Der Baum (das Netz) wird zusammengesteckt, auf der einen Seite kommt dann Input, der Baum wird Post- oder Pre-Order durchlaufen und ausgewertete, und auf der anderen Seite steht das Ergebnis . Soweit bekannt und jeder Informatiker kennt diese Art der Verarbeitung. Selbst Gamma et.al. kannten schon den Interpret und das Visitor Pattern, welche hervorragend für die Verarbeitung von Bäume nutzbar sind – soweit nichts Neues.

Aber ein Baum (ein Netz) ist nicht sonderlich intelligent. Da bei hilft es auch nicht, dass jeder Knoten bei der künstlichen Intelligenz einem menschlichen Neuron nachempfunden ist. Den Input wird es immer geben, das Bias ist nichts anderes als ein Vergleich, den man mit jeder If-Then-Else Anweisung hinbekommt. Das einzig Interessante – das sind die Gewichtungsfaktoren. Sie wollen ausdrücken, wie viel des Inputs zum Output dazugehören. Und wenn man das runterkocht, landet man eben doch bei der Korrelation von Bravais-Person und/oder Spearman.

Am Beispiel der Handschrifterkennung: Man stelle sich das Schachbrett vor, 8×8, legt Steine auf die Felder um z.B. die Zahl 1 darzustellen. Jedes Feld wo ein Stein liegt bekommt einen sehr hohen Gewichtungsfaktor. Angrenzende Felder ohne Stein bekommen einen niedrigeren Gewichtungsfaktor. Und Felder weiter weg von einem Feld mit Stein, bekommen den Faktor 0. Das macht man für alle Zahlen 0-9 und hat dann 10 Gewichtungsvektoren mit jeweils 64 Gewichtungsfaktoren.

Jetzt schreibt jemand mit der Hand eine Zahl. Sie wird eingescannt. Es wird ein Raster von 8×8 Felder darüber gelegt. Jedes Feld, dass der Stift „berührt“ erhält den Wert 1, Felder ohne Berührung erhalten den Wert 0. Es entsteht wieder ein Vektor mit 64 Zahlen aus 0 und 1 – der Inputvektor. Jetzt wird 10 Mal das Skalarprodukt aus dem Inputvektor und allen (10) Gewichtungsvektoren gebildetet. Die höchste Zahl gewinnt. Voilá – Zahl erkannt. Das ist doch nicht intelligent!?

Man hätte auch Fragen können: Welche Form korreliert am stärksten mit einer der 10 Zahlen.

Das einzige Intelligente hier ist Mensch, der sich den Algorithmus überlegt hat, wie man wohl am besten elekronisch bestimmen kann, welche Zahl geschrieben wurde.

Eine dennoch bemerkenswerte Eigenschaft der Neuronalen Netzwerkes ist, die Erlernbarkeit der Gewichtungsfaktoren. Und hier liegt deren große Stärke. Aber man darf sich nicht blenden lassen. Das mathematische Modell hinter der Handschriftenerkennung stammt von einem Menschen und nicht von einer Maschine. Und wieder ist mit neuronalen Netzwerken nur eine andere Form der Darstellung von Algorithmen gelungen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.