Künstliche neuronale Netze als Möglichkeit, Maschinen das Lesen

Werbung
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
Herunterladen