Künstliche neuronale Netze als Möglichkeit, Maschinen das Lesen beizubringen Anja Bachmann Seminar „Virtuelles Labor“ 11.12.2008 1 / 11 Abstract In dieser Arbeit soll gezeigt werden, inwieweit künstliche neuronale Netze eingesetzt werden, um mittels eines Rechners Informationen aus einem Bild herauszulesen. Zu Beginn werden Grundlagen vermittelt, welche biologische Hintergründe aufzeigen und den groben Aufbau von künstlichen neuronalen Netzen erläutern. Nachdem ein Überblick über deren Anwendungsgebiete gegeben wurde, wird in dieser Ausarbeitung explizit auf die Schrifterkennung eingegangen, welche unter anderem durch das Programm wxOCR repräsentiert wird. Die Arbeitsweise des Programms und die Möglichkeiten der Texterkennung mit Hilfe von künstlichen neuronalen Netzen soll aufgezeigt werden. Abschließend sollen Überlegungen angestellt werden, wie das menschliche Leben zukünftig durch diese Netze erleichtert werden kann. 1. Einleitung Obwohl die Forschung schon weit fortgeschritten ist, so ist es doch noch nicht möglich, alle menschlichen Prozesse maschinell umzusetzen. Bisher ist es gelungen, Roboter zu erschaffen, die selbstständig laufen, auf akustische Signale und auf bestimmte Grafiken zu reagieren und sogar sprechen können. Damit werden einige der Tätigkeiten nachgebildet, die Mensch und Tier ausmachen. Was den Homo Sapiens von anderen Lebewesen unterscheidet, ist die Fähigkeit zu denken. Die Frage, die sich hier stellt, ist, ob man dies einem Computer beibringen kann. Seit Jahrzehnten versuchen viele Wissenschaftler, eine Antwort hierfür zu finden und mit dem Lauf der Zeit kommt man der Lösung auch immer näher. Moderne Rechner sind dazu in der Lage, in Millisekunden mehrere Tausende Nachkommastellen von Pi zu berechnen oder mehrere Hundert Zeilen lange Algorithmen auszuführen. Schwierig war es, Maschinen das Reden und Lesen beizubringen. Beides sind Vorgänge, die wir Menschen auf Grund unserer Erfahrung und unseres Wissens ausführen können und die wir im Kleinkind- und Grundschulalter erlernt haben. Mit den heutigen Mitteln der Technik ist es möglich, einem Rechner eine künstliche Intelligenz zu geben und ihm verschiedene Fähigkeiten beizubringen. Das Wissenszentrum der Maschine wird hierbei durch künstliche neuronale Netze erzeugt. Beide Lernprozesse, Lesen und Sprechen, sind sehr komplex, daher wird diese Ausarbeitung nur die Schrifterkennung und -verarbeitung beleuchten. In dieser Arbeit sollen Grundkenntnisse über neuronale Netze und ihre technische Umsetzung vermittelt werden. Darüber hinaus soll gezeigt werden, welche Bedeutung die Schrifterkennung hat, wie sie durch künstliche neuronale Netze realisiert wird und welche Erfolge durch ihren Einsatz verbucht werden konnten. Als Beispielprogramm für das Trainieren eines Netzes und zur darauffolgenden Bildverarbeitung sollen hier die Studentenprogramme netTrainer und wxOCR dienen. 2 / 11 2. Grundlagen Bisher wurden Texte eingescannt, um auf einen Computer transferiert zu werden, was jedoch den Nachteil hatte, dass er nun nur noch als Bilddatei vorlag. Infolgedessen bestand bis dato die einzige Möglichkeit darin, ihn abzutippen und dann als Dokument abzuspeichern. Künstliche neuronale Netze setzen hier an und bieten die Möglichkeit, das eingelesene Bild so zu verarbeiten, dass der Text aus ihm herausgelesen und danach wiedergegeben werden kann. 2.1 biologischer Hintergrund Um sich darüber klar zu werden, wie neuronale Netze arbeiten, muss man vorerst ihren Aufbau und ihre Beschaffenheit verstehen. Das menschliche Gehirn, welches als neuronales Netz verstanden werden kann, besteht aus Millionen kleiner Nervenzellen, welche wie winzige Berechnungseinheiten oder elementare Mini-Prozessoren funktionieren und als Neuronen bezeichnet werden. Der biologische Aufbau dieser Zellen ist in Abbildung 1 zu betrachten. Abbildung 1: Biologisches Neuron (neuron) mit Dendriten (dendrites), Axonen (axons), Synapsen (synapse) und elektrischen Impulsen (signals) [1] Neuronen besitzen Dendriten, welche Signale aus anderen Zellen empfangen, und Axone, welche Informationen weiterleiten. Das Axon mündet in mehrere Synapsen, eine Verzweigungen von Ausgangsleitungen, wodurch es einem Neuron möglich ist, mit mehreren anderen Nervenzellen zu kommunizieren. Das Signal, das weitergeleitet wird, bezeichnet man als einen elektrischen Impuls. Es ist anzumerken, dass der Informationsaustausch der in dieser Arbeit behandelten Netze immer nur in eine Richtung abläuft, sodass ein Dendrit stets als Eingang, ein Axon als Ausgang und eine Synapse als Übergang von Ausgang zu Eingang verstanden werden kann. 3 / 11 2.2 Künstliche neuronale Netze Aber selbst in der heutigen Zeit ist es sehr schwierig, die Gehirnzellen zu analysieren. Hierfür müsste man ins Gehirn eines Menschen oder Tieres eindringen, was nicht ohne weiteres und nicht risikofrei möglich ist. Zu diesem Zwecke werden künstliche Modelle erstellt, an denen geforscht werden kann. Ein solches künstliches neuronales Netz ist im Allgemeinen ein mögliches System, an Probleme heranzugehen, welche zu ihrer Lösung eine Anpassung bestimmter Faktoren benötigen. Darüber hinaus repräsentieren sie einen massiv parallelen Verbund von Neuronen zu Netzwerken aus einfachen, üblicherweise adaptiven Elementen in hierarchischer Anordnung, die ebenso interagieren wie ihre biologische Urbilder. [3] Im Zusammenhang mit künstlichen neuronalen Netzen unterscheidet man zwischen der Aufbauphase (Topologie), der Trainingsphase (das Lernen) und der Arbeitsphase (Propagation). Wie der Begriff Netz schon vermuten lässt, wird ein künstliches neuronales Netz als Graph mit Knoten und (gewichteten) Kanten dargestellt. Da die Kanten gewichtet sind, können durch sukzessive Veränderung dieses Gewichtes andere, eventuell vorher unbekannte Lösungen erreicht werden. Auf die Gewichtung der Kannten werde ich später noch einmal kurz eingehen. Abbildung 2: Topologie eines künstlichen neuronalen Netzes [1] In die künstlichen neuronalen Netze werden über die Dendriten Trainingsinformationen eingegeben (Eingabeschicht), welche von der Zelle verarbeitet (verborgene Schicht) und dann über die Axone ausgegeben werden (Ausgabeschicht). Hierbei ist anzumerken, dass sich die Eingabeinformationen aus Trainings- und Testphase unterscheiden sollten. Nur so können später exakte Aussagen über die Korrektheit des Netzes getroffen werden. Zu Beachten ist auch, dass es keine festgelegten Regeln und Algorithmen gibt, nach denen sich ein Programmierer beim Trainieren eines Netzes zu richten hat. 4 / 11 Abbildung 3: Ein künstliches Neuron beim Verarbeiten von Eingangswerten [6] Das Verarbeiten von Eingangsvariablen läuft überwiegend mathematisch ab. Betrachten wir das Senden von Signalen von den Knoten x1 bis xn (n ∈ N) zum Knoten xj. Jedes Neuron besitzt eine Übergangsfunktion Σ. Diese summiert die Eingangswerte wnj, also die Wichtungen der Kanten von xn zu xj, auf. Diese Summe wird in eine Aktivierungsfunktion φ eingesetzt, welche einen Aktivierungswert ermittelt. Der dann angegebene Schwellwert θj bestimmt dann, welcher Ausgangswert zugeordnet wird. Wird der Schwellwert vom Aktivierungswert überschritten, so feuert das Neuron, das heißt, dass es den Wert weiter gibt. Wird der Schwellwert unterschritten, so passiert nichts, das Neuron wird nicht weiter betrachtet und es wird kein Signal weitergeschickt. Die ausgegebenen Werte können dann auf ihre Richtigkeit überprüft werden. Sollten in der Testphase nicht die erwarteten Ergebnisse geliefert werden, muss das nicht bedeuten, dass ein künstliches neuronales Netz zur Modellierung und Lösung des Problems nicht geeignet ist. Stattdessen sollten die Wahl der Parameter und der Gewichte, die Anzahl oder Auswahl der Eingangsvariablen überdacht werden. Dieser Gedanke impliziert, dass das Arbeiten mit solch einem Netz keine einfache Angelegenheit ist und sehr viel Geduld und Mut zum Probieren benötigt. Es sollte ein gutes Grundwissen und Klarheit über das Problem und die gewünschte Lösung vorhanden sein. 5 / 11 3. Anwendung von KNN Wurde ein Netz ausreichend trainiert, so kann es gemäß seiner Aufgabe eingesetzt werden. Künstliche neuronale Netze finden vor allem in der Medizin (Modellierung und Simulation biologischer neuronaler Netze), der Informatik und dem Maschinenbau (Prozesssteuerung, Robotersteuerung, Sprach- oder Schrifterkennung), der Wirtschaft (Risikomanagement) und Mathematik (Funktionsapproximation) Verwendung. Bisher wurden künstliche neuronale Netze nur in der Forschung genutzt. Fortschritte der Computertechnologie machen es jedoch möglich, sie auch auf Desktopcomputern unter Nutzung objektorientierter Softwaretechnologien zu benutzen und große Datensätze zu trainieren. Vor allem die Schrifterkennung wird zunehmend privat gebraucht. [4] 3.1 Schrifterkennung Künstliche Neuronale Netze sind eine Möglichkeit der automatischen Texterkennung, oft auch als OCR (optische Zeichenerkennung, englisch: optical character recognition) bezeichnet. Der Vorgang dieser Mustererkennung beginnt mit einer globalen Strukturerkennung, wobei zuerst die Grafiken separiert, daraufhin die Textseiten, dann die Zeilen und letzten Endes die einzelnen Zeichen betrachtet werden. Anfangs gab es speziell für diesen Zweck entwickelte Schriftarten, vor allem zum einheitlichen Bedrucken von Scheckkarten, welche dann nicht mehr durch einen Menschen gelesen werden mussten, sondern von einer Maschine eingelesen werden konnten. Diese Schriftarten waren so gestaltet, dass die einzelnen Zeichen von einem OCR-Lesegerät schnell und ohne großen Rechenaufwand unterschieden werden konnten. Heutzutage ist es aber möglich, nahezu alle handelsüblichen Schriftarten und teilweise auch sehr leserliche Handschriften zu erkennen, letzteres ist vor allem in der Postbranche von Bedeutung. Inzwischen ist die Technik soweit fortgeschritten, dass nicht nur Zeichen, sondern auch Zusammenhänge erkannt werden können. Diese Technik, auch als IRC (intelligente Zeichenerkennung, englisch: intelligent character recognition) bekannt, betrachtet nicht nur das einzelne Symbol, sondern auch den Kontext um es herum. So kann es, falls „8aum“ eingelesen wird, die „8“ in ein „B“ korrigieren. Diese Fähigkeit ist einer der Gründe, warum OCR/ICR-Systeme eine derart hohe Bedeutung haben. Als eine Weiterentwicklung von OCR/ICR wird IWR (intelligente Worterkennung, englisch: intelligent word recognition) angesehen, welche dazu in der Lage ist, Probleme bei der Erkennung von Fließhandschriften zu lösen, bei der einzelne Zeichen nicht mehr separat erkannt werden oder mit herkömmlichen OCR-Methoden nicht mehr gelesen werden können. Leider gelingt es auch durch diese Methode nicht, sämtliche Texte einlesen. Beim Gebrauch von IWR muss im Vorfeld ein enger inhaltlicher Rahmen definiert werden, in dem sich die Worte befinden. Je kleiner dieser Bereich ist, desto genauer können die Sätze korrekt gelesen werden. In der Wirtschaft wird Mustererkennung auch dafür verwendet, dass eine Maschine nur anhand eines Firmenlogos den Absender erkennt oder aufgrund der Art und Weise, wie ein Text verfasst wurde, Aussagen dazu treffen kann, ob dieser formell oder informell ist. Über all diese Anwendungen hinaus hat die Schrifterkennung auch einen privaten Nutzen: Beispielsweise können Blinde Texte vom Computer einlesen und dann mit Hilfe von VorleseSoftware vortragen lassen und einige erfahrene Internetnutzer können Programme entwickeln, die Zeichencodeabfragen zur Sicherheitsmaßnahme, sogenannte Captchas, selbst erkennen, entschlüsseln und eingeben. 6 / 11 4. Wie eine Maschine das Lesen lernt Auch wenn hier die Lernfähigkeit einer Maschine im Vordergrund steht, so muss doch angemerkt werden, dass dies nicht gänzlich ohne menschliche Hilfe geschieht. Ein Programm, dass einen Text lesen soll, muss vorerst darauf trainiert werden. Dies ist mit der ersten und zweiten Klasse der Grundschule vergleichbar, in denen Kinder durch langes, gezieltes Üben lernen, korrekt zu lesen und zu schreiben. Lernverfahren dienen dazu, ein neuronales Netz dazu zu bringen, für bestimmte Eingangsmuster zugehörige Ausgabemuster zu erzeugen. Dies bedeutet, dass das Netz ein bestimmtes Bild erkennen und dann den dazugehörigen Buchstaben ausgeben soll. Darauf muss es trainiert werden. Theoretisch kann ein Netz durch die Entwicklung neuer Verbindungen, Löschen bestehender Verbindungen, Anpassen der Schwellwerte der Neuronen oder dem Hinzufügen oder Löschen von Neuronen lernen. Außerdem verändert sich das Lernverhalten bei Veränderung der Aktivierungsfunktion der Neuronen oder der Lernrate des Netzes. Praktisch gesehen lernt ein Netz jedoch hauptsächlich durch Modifikation der Gewichte der Neuronen. Künstliche neuronale Netze sind in der Lage, komplizierte nichtlineare Funktionen über einen Lernalgorithmus zu erlernen, der durch iterative oder rekursive Vorgehensweise aus vorhandenen Eingangs- und gewünschten Ausgangswerten alle Parameter der Funktion zu bestimmen versucht. Es gibt mehrere Programme, die sich mit dieser Art der Texterkennung auseinandersetzen. Zu ihnen gehört auch ein vom Studenten Matthias Jauernig entwickeltes, plattformunabhängiges Programm, bei dem mit Hilfe eines künstlichen neuronalen Netzes eine Texterkennung aus einem Bild heraus realisiert wird. Dazu ist das Projekt in zwei Teilapplikationen aufgesplittet, zum einen den netTrainer zum Anlernen des Netzes, zum anderen das Hauptprogramm, welches dem Endbenutzer zur Verfügung stehen soll. 4.1 netTrainer Die Qualität des Trainings ist entscheidend für die korrekte Arbeitsweise eines Netzes. Daher sollte es mit Sorgfalt trainiert und getestet werden. Abbildung 4: Der netTrainer zum Anlernen des Netzes [2] 7 / 11 Abbildung 4 zeigt diesen Trainer. Im obigen Beispiel wird der Buchstabe „A“ in der Schriftart Verdana und der Schriftgröße 72 eingelesen. Das Netz erhält dieses Zeichen und soll versuchen, es zu erkennen. Umso öfter das Netz mit einem Symbol konfrontiert wird, umso besser erkennt es es auch. Zu diesem Zweck kann dem netTrainer gesagt werden, wie oft der einzelne Lerndurchgang wiederholt werden soll (Anzahl der zu lernenden Epochen). Die Lernart, die hier angewandt wird, nennt sich „überwachtes Lernen“. Hierbei wird dem neuronalen Netz ein Eingangsmuster gegeben und die Ausgabe, die das Neuronale Netz in seinem aktuellen Zustand produziert, mit dem Wert verglichen, den es im Normalfall ausgeben soll. Durch Vergleich von Soll- und Ist-Werten kann auf die vorzunehmenden Änderungen der Netzkonfiguration geschlossen werden. Ein gut trainiertes künstliches neuronales Netz soll möglichst oft auch für ähnliche, verzerrte, verrauschte oder unvollständige Inputs den richtigen Soll-Output liefern. Dies entspricht den Anforderungen betriebswirtschaftlicher Entscheidungsprozesse, die oft nur unvollständige, ungenaue oder unsichere Informationen enthalten. Man kann diesen Lernvorgang mit jeder beliebigen Schriftgröße und –art und jedem Symbol wiederholen und das Netz auf diese Weise so lang trainieren, bis es alle Vorkommensweisen eines Zeichens beherrscht und korrekt erkennen kann. Da dieses Vorhaben allerdings sehr lang dauern würde, beschränkt man sich darauf, nur die gängigsten Arten zu lehren. Sollte das Programm darauf ausgelegt sein, eine individuelle Handschrift zu erkennen, so kann eine Privatperson das Netz auch darauf trainieren, die eigene Schrift zu erlernen. Bei einem gleichbleibend leserlichen Schreibstil sollte es nach erfolgreichem Training kein Problem mehr darstellen, selbstverfasste Texte einzulesen. 4.2. wxOCR Das Hauptprogramm zum Erkennen von Texten aus Bildern wird durch wxOCR repräsentiert. Dieses Programm beruht auf einem mit dem netTrainer bearbeiteten Netz und ist dazu in der Lage, Bilddateien einzulesen und diesen Text in einer separaten Datei zu speichern. Das künstliche neuronale Netz hinter diesem Programm analysiert die eingelesenen Daten und versucht anhand seines angeeigneten Wissens die Buchstaben zu lesen. Die Kenntnisse des Netzes variieren je nach Trainingsdauer, -intensität und der angestrebten Nutzung. Abbildung 5: Verarbeitung eines einzulesenden Zeichens 8 / 11 Hinter dem Prozess der Bildverarbeitung steckt ein relativ einfacher Algorithmus. Das Urbild wird in das Programm eingelesen. Zuerst wird der Text von Grafiken oder Verunreinigungen unterschieden, dann werden die Zeilen und daraufhin die Zeichen erkannt. Zu diesem Zeitpunkt wird begonnen, das Symbol von verschiedenen Punkten aus zu analysieren. Jedes der künstlichen Neuronen bekommt den Grauwert eines Pixels des jeweiligen Eingabezeichens übergeben. Mögliche Fragestellungen des Programms an sich selbst sind: Welches Symbol hat auch an diesen Stellen ein Pixel? Sind sie dort auf dieselbe Weise verbunden? Sind die Verbindungslinien zwischen den einzelnen Punkten in anderen Fällen gleichstark gezeichnet? Das Netz vergleicht diese Ergebnisse dann mit seinen eigenen Erfahrungen und versucht, sich daran zu erinnern, bei welchem Zeichen diese Eigenschaften bereits aufgetreten sind. Das Element aus seinem Gedächtnis, das der Eingabe am meisten ähnelt, wird ausgegeben. Dieser Lesevorgang ist mit dem eines Menschen zu vergleichen. Hierbei wird ein Bild vom Auge eingelesen, diese Informationen werden dann an das Gehirn weitergeleitet und auf ähnliche Weise analysiert. Abbildung 6: das Programm wxOCR beim korrekten und fehlerhaften Einlesen Der Bildausschnitt zeigt einen durch das Programm aus einem Bild gelesenen Text. Nachdem der Einlesevorgang abgeschlossen wurde, kann der Text noch variiert und in einer Textdatei abgespeichert werden. Anhand der Ergebnisse, die das Programm an dieser Stelle liefert, kann festgestellt werden, ob es korrekt arbeitet. Sollte dies nicht der Fall sein, so muss es erneut trainiert werden. Das Einlesen des Wortes „Hallo“ funktionierte, das Einlesen des längeren Textes jedoch nicht. Dies bedeutet, dass das Netz erneut trainiert werden muss. 9 / 11 5. Zusammenfassung In dieser Arbeit wurde gezeigt, dass künstliche neuronale Netze ein großes Einsatzgebiet haben. Die Texterkennung wurde durch sie revolutioniert und hat neue Möglichkeiten geschaffen, den Alltag zu erleichtern und in einigen Firmen Zeiteinsparungen vorzunehmen. Durch ihren Einsatz in der Forschung gelang es, einige Gehirnprozesse nachzuvollziehen und zu simulieren. Allerdings haben sie auch viele Nachteile: Ihr Wissenserwerb ist nur durch Lernen möglich, welches oft sehr langsam abläuft und stark von Trainingsdaten und Netz- und Lernparametern abhängt. Doch es gibt noch medizinische und wirtschaftliche Rätsel, die mit Hilfe dieser Netze geklärt werden könnten. Es wird allerdings noch mehrere Jahre und viele Experimente und Untersuchungen benötigen, um weiter in die Materie einzudringen und die Unwissenheit nach und nach zu beseitigen. Mit Hilfe der künstlichen Neuronalen Netze ist es theoretisch möglich, sehr viel mehr menschliche Gedankengänge zu verstehen und eventuell sogar, Gefühle zu erzeugen. Es könnte sogar möglich sein, die Schrifterkennung so sehr zu Erweitern, dass man jede Handschrift einlesen und verifizieren kann, was erheblich zur Verbesserung von Sicherheitsmaßnahmen vor allem in der Banken-Branche beitragen wird, da Unterschriften eindeutig identifizierbar sein würden. Zukünftig werden künstliche neuronale Netze noch einen großen Nutzen haben. Zum Abschluss hierzu ein Zitat des Users Jokin aus einem Forum[8]: „Heute verarbeiten Rechner Daten mit Einsen und Nullen. Teilweise kann man schon eine "2" verarbeiten, aber das ist nicht die Lösung. Interessanter wird es, wenn der Zustand "beliebig" und "statisch" sein kann, also jede beliebige Zahl zwischen 0 und 1 sein kann - Graustufen also. Dieser Durchbruch wird auch bald geschafft. Dadurch erhalten wir das Tor zu bisher ungeahnter Rechnerleistung, für uns heute nur als neuronales Netz vorstellbar. In Zukunft wird die Datenverarbeitung auf anderem Niveau stattfinden.“ 10 / 11 6. Quellen Links: [1] http://www.linux-related.de/index.html?/knn_ki/knn_einf.htm [2] http://www.linux-related.de/index.html?/src/wxgraphics_main.htm [3] www.dkfz-heidelberg.de/tbi/people/koenig/teaching/Lifescience/14_10_02/Neur_Netze_ Kai_141002.ppt [4] http://www.sandro.de/downloads/seminararbeit_ki.pdf [5] http://de.wikipedia.org/wiki/Texterkennung [6] http://de.wikipedia.org/wiki/Künstliches_neuronales_Netz [7] http://www-home.fh-konstanz.de/~bittel/nnfl/NeuroNetze_1.pdf [8] http://www.lpgforum.de/stammtisch/3486-die-zukunft-des-auto.html Bücher: [9] „Künstliche neuronale Netze – Grundprinzipien, Hintergründe, Anwendungen“, Patrick Hamilton. VDE-Verlag GmbH Berlin und Offenbach, Berlin, 1993. 11 / 11