Künstliche Intelligenz

Einführung in die Künstliche Intelligenz

Die meisten Menschen erkennen diese Ziffern mühelos als 123456. Diese Leichtigkeit ist trügerisch. In jeder Hemisphäre unseres Gehirns hat der Mensch einen primären visuellen Kortex, auch bekannt als V1, der 140 Millionen Neuronen enthält, mit Dutzenden von Milliarden von Verbindungen zwischen ihnen. Und doch umfasst das menschliche Sehen nicht nur V1, sondern eine ganze Reihe visueller Areale – V2, V3, V4 und V5 –, die zunehmend komplexere Bildverarbeitung betreiben. Wir tragen in unseren Köpfen einen Supercomputer, der durch die Evolution über hunderte von Millionen von Jahren hinweg abgestimmt und hervorragend angepasst ist, um die visuelle Welt zu verstehen. Das Erkennen von handschriftlichen Ziffern ist nicht einfach. Vielmehr sind wir Menschen erstaunlich, erstaunlich gut darin, das zu verstehen, was unsere Augen uns zeigen. Aber fast alle diese Arbeiten werden unbewusst ausgeführt. Und so wissen wir in der Regel nicht zu schätzen, wie schwierig ein Problem ist, das unsere visuellen Systeme lösen.

Mit Neuralen Netzwerken Handschrift erkennen

Die Schwierigkeit der visuellen Mustererkennung wird offensichtlich, wenn wir versuchen, ein Computerprogramm zu schreiben, um Ziffern wie die oben genannten zu erkennen. Was einfach erscheint, wenn wir es selbst machen, wird plötzlich extrem schwierig. Einfache Intuitionen darüber, wie wir Formen erkennen – „eine 9 hat oben eine Schleife und unten rechts einen senkrechten Strich“ – erweisen sich als nicht so einfach, algorithmisch auszudrücken. Wenn man versucht, solche Regeln präzise zu machen, verliert man sich schnell in einem Sumpf von Ausnahmen, Vorbehalten und Sonderfällen. Es scheint hoffnungslos.

Neuronale Netze gehen das Problem anders an. Die Idee ist, eine große Anzahl von handgeschriebenen Ziffern, so genannte Trainingsbeispiele, zu nehmen und dann ein System zu entwickeln, das aus diesen Trainingsbeispielen lernen kann. Mit anderen Worten, das neuronale Netz verwendet die Beispiele, um automatisch Regeln für die Erkennung handgeschriebener Ziffern abzuleiten. Darüber hinaus kann das Netzwerk durch die Erhöhung der Anzahl der Trainingsbeispiele mehr über die Handschrift lernen und so seine Genauigkeit verbessern. Während wir also oben nur 100 Trainingsziffern haben, könnten wir vielleicht einen besseren Handschrifterkenner bauen, indem wir Tausende oder gar Millionen oder Milliarden von Trainingsbeispielen verwenden.

MNIST Trainingszahlen

MNIST Trainingszahlen

In diesem Kapitel schreiben wir ein Computerprogramm, das ein neuronales Netzwerk implementiert, das lernt, handgeschriebene Ziffern zu erkennen. Das Programm ist nur 74 Zeilen lang und verwendet keine speziellen neuronalen Netzwerkbibliotheken. Aber dieses kurze Programm kann Ziffern mit einer Genauigkeit von über 96 Prozent erkennen, ohne dass der Mensch eingreifen muss. Darüber hinaus werden wir in späteren Kapiteln Ideen entwickeln, die die Genauigkeit auf über 99 Prozent steigern können. Tatsächlich sind die besten kommerziellen neuronalen Netze inzwischen so gut, dass sie von Banken für die Verarbeitung von Schecks und von Postämtern für die Erkennung von Adressen verwendet werden.

Wir konzentrieren uns auf die Handschrifterkennung, da es sich um ein hervorragendes Prototyp-Problem für das Lernen von neuronalen Netzen im Allgemeinen handelt. Als Prototyp trifft es auf einen guten Punkt: Es ist herausfordernd – es ist keine leichte Aufgabe – aber es ist nicht so schwierig, eine extrem komplizierte Lösung oder enorme Rechenleistung zu benötigen. Darüber hinaus ist es eine großartige Möglichkeit, fortgeschrittenere Techniken zu entwickeln, wie z.B. Deep Learning. Und so werden wir im Laufe immer wieder auf das Problem der Handschrifterkennung zurückkommen. Später im Buch werden wir darüber diskutieren, wie diese Ideen auf andere Probleme in der Computer-Vision, aber auch in der Sprache, der Verarbeitung natürlicher Sprache und anderen Bereichen angewendet werden können.

Natürlich, wenn der Sinn dieses Tutorials nur darin bestand, ein Computerprogramm zu schreiben, um handgeschriebene Ziffern zu erkennen, dann wäre das Kapitel viel kürzer! Aber auf dem Weg dorthin werden wir viele Schlüsselideen über neuronale Netze entwickeln, darunter zwei wichtige Typen von künstlichen Neuronen (das Perzeptron und das sigmoide Neuron) und den Standard-Lernalgorithmus für neuronale Netze, den sogenannten Stochastic Gradient Descent (SGD). Während der ganzen Zeit konzentrieren wir uns darauf, zu erklären, warum Dinge so gemacht werden, wie sie sind, und darauf, eine Intuition für neuronale Netze aufzubauen.