Blog DE

Zusatzinformationen für ATA59-Vortrag – An Introduction to Neural Machine Translation

Ich werde wieder einen Vortrag auf der Konferenz der American Translators Association (ATA), ATA59, dieses Mal in New Orleans, halten. Der Vortrag mit einer Einführung über neuronale Maschinenübersetzung ist vorerst für Samstag im letzten Zeitfenster vor der abschließenden Keynote-Präsentation gemeinsam in den Schienen Wissenschaft und Technik sowie Sprachtechnologie angesetzt. Ich hoffe trotz der späten Stunde auf ein waches Publikum!

Zusammenfassung (auf Englisch)

“The end of the human translator,” “nearly indistinguishable from human translation” – these and similar headlines have been used to describe neural machine translation (NMT). Most language specialists have probably asked themselves: How much of that is hype? How far can this approach to machine translation really go? How does it work? The presentation will examine one of the available open source NMT toolkits as an illustrative example to explain the underlying concepts of NMT and sequence-to-sequence models. It will follow in the same spirit as last year’s general introduction to neural networks, which is summarized in the accompanying handouts.

Zusatzmaterial (auf Englisch)

Ich habe soeben das Zusatzmaterial für den Vortrag auf den ATA-Server hochgeladen. Das Material enthält eine leicht aktualisierte Version meines Blogbeitrags mit einer Einführung in neuronale Netze (auf Deutsch und Englisch), der meine Präsentation auf der ATA58 zusammenfasst. Sie können das Zusatzmaterial hier herunterladen (auf Englisch).

Prüfung der Sicherheit, Quellen und Cookies einer Website — Teil II der Vorbereitung auf die DSGVO

Vor einer Woche habe ich die Installation eines SSL-Zertifikats im Rahmen der Vorbereitung auf die DSGVO, die neue Datenschutz-Grundverordnung der EU, besprochen, die ab Mai 2018 zwingend zu befolgen ist. Heute werde ich den Vorgang zur Prüfung der Sicherheit und Quellen einer Website sowie zur Prüfung, ob die Website Cookies setzt, besprechen. Dies ist bei der Verfassung einer DGSVO-konformen Datenschutzerklärung wichtig, die auf jeder Website aufscheinen muss, die Daten von Bürgern der Europäischen Union verarbeitet, egal, ob diese Website in der EU gehostet wird oder nicht.

Am einfachsten ist diese Prüfung auf Sicherheit, Quellen und Cookies mithilfe von Google Chrome. Aktivieren Sie nach dem Herunterladen die Entwicklertools, wie im Screenshot unten gezeigt (auf Englisch).

Entwicklertools von Google Chrome

Entwicklertools von Google Chrome

Nach der Aktivierung wird das Fenster in zwei Teile aufgeteilt, der erste Teil zeigt weiterhin das übliche Browserfenster an, der andere Teil zeigt eine Reihe von Optionen an. Besuchen Sie Ihre Website, die nach der Installation des SSL-Zertifikats über https:// erreichbar sein sollte, und prüfen Sie insbesondere die Registerkarte „Sicherheit“, die eventuell ungesicherte Elemente anzeigt, die Ihre Website lädt, die Sie beim ersten Schritt der Anpassung auf das SSL-Zertifikat möglicherweise übersehen haben. Prüfen Sie außerdem die Registerkarte „Quellen“, die alle Datenquellen anzeigt, die Ihre Website lädt, und die Registerkarte „Cookies“, die die von Ihrer Website gesetzten direkten Cookies und die Cookies Dritter anzeigt. Wie Sie aus den Screenshots unten entnehmen können, lädt meine Website abgesehen von den Standard-Fonts keine Objekte Dritter und setzt auch keine Cookies. Zumindest tut dies die Startseite nicht.

Prüfung der Website-Quellen

Prüfung der Website-Quellen

Prüfung der Website-Cookies

Prüfung der Website-Cookies

Besuchen Sie nun jede einzelne Seite Ihrer Website und prüfen Sie diese drei Registerkarten. In meinem Fall fand ich ein unsicher geladenes Element auf einer Seite, das ich bei der SSL-Anpassung übersehen hatte, aber keine meiner Seiten setzt irgendwelche Cookies. Was bedeutet, dass meine DGSVO-konforme Cookie-Erklärung ziemlich einfach ausfallen wird, da es keine Cookies gibt.

SSL-Installation auf WordPress in Vorbereitung auf die DSGVO

In letzter Zeit wird die unmittelbar bevorstehende Geltendmachung der EU-Datenschutz-Grundverordnung (DSGVO) im Internet heiß diskutiert. Die DSGVO trat bereits vor zwei Jahren in Kraft, ab dem 25. Mai 2018 ist sie jedoch zwingend zu befolgen. Das bedeutet, dass alle Unternehmen, die Daten von EU-Bürgern verarbeiten (im weitesten Sinne des Wortes), ab diesem Zeitpunkt die DSGVO einhalten müssen, egal ob die Unternehmen einen Sitz in der EU haben oder nicht. Das bedeutet auch, dass jede(r) von der DSGVO betroffen ist, die bzw. der eine Website betreibt, die von EU-Bürgern besucht wird und Cookies speichert und/oder über ein Kontaktformular verfügt und/oder Mittel verfügt, über die Besucher Kommentare oder „Likes“ abgeben kann (d.h. im Grunde jedes Blog). Laut DSGVO müssen „… geeignete technische und organisatorische Maßnahmen, die sicherstellen, dass durch Voreinstellung grundsätzlich nur personenbezogene Daten, deren Verarbeitung für den jeweiligen bestimmten Verarbeitungszweck erforderlich ist, verarbeitet werden …“ getroffen werden.

In der Praxis bedeutet das meiner Ansicht nach (ich bin keine Rechtsanwältin!) unter anderem für die meisten Websites:

  • Die Website sollte über ein SSL-Zertifikat verfügen, um sicherzustellen, dass der Internetverkehr verschlüsselt erfolgt.
  • Die Website sollte eine Cookie- und Datenschutzerklärung beinhalten.

Idealerweise würde man nun das SSL-Zertifikat zuerst installieren und dann die Website aufsetzen, aber ich habe diese Reihenfolge leider beim Aufsetzen meiner Website auf WordPress-Basis nicht befolgt. Deshalb musste ich einige zusätzliche Schritte durchführen, um das SSL-Zertifikat erfolgreich zu installieren.

1. Schritt: Installation des SSL-Zertifikats

Dieser Schritt war kinderleicht, da ich nur das SSL-Zertifikat von meinem Hosting-Anbieter kaufen musste, die Installation des eigentlichen Zertifikats erfolgte durch den Anbieter. Danach musste ich jedoch noch einige weitere Schritte durchführen, damit das SSL-Zertifikat auf meiner Website auch richtig eingesetzt wurde.

2. Schritt: Änderung der Einstellungen der WordPress-Installation

Dieser Schritt ist notwendig, damit alle Permalinks auf https:// anstatt auf http:// zeigen. Die Einstellungen können auf der Seite Einstellungen > Allgemeine Einstellungen geändert werden, sodass die WordPress- und Site-Adressen wie im Screenshot unten auf https zeigen.

https-Einstellungen in WordPress

https-Einstellunge in WordPress

Leider war dies jedoch nicht das Ende der Geschichte, da meine Website nicht wenige Seiten und Blogbeiträge enthält, die wiederum viele Dateien und Bilder enthalten, die intern alle noch auf http:// anstatt auf https:// verwiesen. Das wiederum führte dazu, dass diverse Browser bei einem Besuch der gesicherten Site (https://www.cfbtranslations.com anstatt https://www.cfbtranslations.com) Fehlermeldungen bzw. Warnmeldungen über teilweise ungesicherte Elemente auf der Webseite abgaben.

Sperrschloss zeigt sichere Seite an

Sperrschloss zeigt sichere Seite an

Ein aufgebrochenes Sperrschloss in der Adresszeile des Browsers wie unten im Screenshot bedeutet, dass Teile der Seite (Bilder usw.) nicht sicher geladene Elemente enthalten, d.h., Bilder sind beispielsweise über http:// anstatt https:// geladen.

Aufgebrochenes Sperrschloss weist auf unsichere Elemente in der Seite hin

Aufgebrochenes Sperrschloss weist auf unsichere Elemente in der Seite hin

3. Schritt: Änderung aller internen Links auf https

In meinem Fall war es einigermaßen umständlich, die Website so umzustellen, dass alle Elemente nur über SSL geladen werden. Es gibt zwar eine Vielzahl an guten WordPress-Plug-ins, die dies mit nur einem Mausklick bewerkstelligen, aber leider stellte sich heraus, dass mein WordPress-Theme oder eines der vielen Plug-ins mit diesen SSL-Plug-ins inkompatibel ist. Ich würde empfehlen, eines dieser Plug-ins zu verwenden, indem Sie einfach nach „SSL“ suchen und das Plug-in Ihrer Wahl installieren. Auf jeden Fall sollten Sie vorher eine Sicherungskopie Ihrer WordPress-Site machen, falls etwas schief läuft.

In meinem Fall war jedoch eine Inkompatibilität zwischen den SSL-Plug-ins und meiner bestehenden WordPress-Installation gegeben, was bedeutete, dass ich diesen Schritt auf andere Weise durchführen musste. Zu diesem Zweck installierte ich das Plug-in „Better Search Replace“ und suchte nach „https://www.cfbtranslations.com“ (ersetzen Sie die URL durch Ihre eigene) und ersetzte alle Vorkommnisse in allen SQL-Datenbanken durch „https://www.cfbtranslations.com“. Danach zeigte ein Besuch der Website via https:// ein schönes (grünes) Sperrschloss ohne Sicherheitswarnmeldungen.

4. Schritt: Umleitung von http:// auf https:// in der .htaccess-Datei

Dieser letzte Schritt ist notwendig, damit alle Besucher, die www.website.com oder website.com ohne Präfixe eingeben, automatisch auf die sichere Version der Site unter https://www.website.com umgeleitet werden. Hierbei muss die .htaccess-Datei im Startverzeichnis bearbeitet werden, wobei die Details der Bearbeitung vom jeweiligen Hosting-Anbieter abhängen. Ich empfehle, sich für die empfohlenen Syntax der neuen Einträge zur https-Umleitung an Ihren Hosting-Anbieter zu wenden.

In meinem Fall musste ich die folgenden Zeile ganz oben in die .htaccess-Datei einfügen:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Somit werden nun die Besucher meiner Website automatisch auf die sichere Site umgeleitet. Nun fehlt noch eine umfassende Prüfung meiner Website auf Cookies (direkt oder von Dritten) und eine Anpassung der entsprechenden existierenden Seite mit der Cookie- und Datenschutzerklärung, um diese Website DSGVO-konform zu machen. Das ist jedoch das Thema eines zukünftigen Blogbeitrags.

Der seltsame Fall des „Pfeils nach oben mit Spitze nach rechts“ in Trados Studio

Nach langem Hin und Her konnte ich mithilfe einer tollen inoffiziellen Trados-Gruppe auf Facebook endlich das Rätsel des mysteriösen „Pfeils nach oben mit Spitze nach rechts“ lösen. Die Frage beschäftigte einige Power-User ziemlich lange.

Es war einmal ein unschuldig aussehendes Patent in Form eines Word-Dokuments, das ich aus dem Englischen ins Deutsche übersetzen sollte. Nach dem Import dieses Dokuments in Trados Studio 2017 begannen die Ärgernisse. Denn Trados zeigte überall im Text seltsame Pfeile an, siehe die folgenden Screenshots.

arrow

Seltsame Pfeile, die von Trados überall im Dokument angezeigt wurden.


text with arrows

Beispielsegment im Ausgangstext mit den seltsamen Pfeilen in Trados Studio, aus Geheimhaltungsgründen geschwärzt.

Natürlich suchte ich sofort nach diesen seltsamen Symbolen im Quelldokument in Word. Aber dort wurden sie nicht angezeigt und konnten daher auch nicht entfernt werden. Nach langer Diskussion in der obengenannten Benutzergruppe konnte ich ermitteln, dass Studio diese Zeichen als Zwischenraumzeichen, nicht jedoch als Tags oder Formatierung behandelt. Laut diesem Wikipedia-Eintrag ist das Symbol selbst ein sogenannter „Pfeil nach oben mit Spitze nach rechts“ mit der Unicode-Hexnummer U+21b1. Auch eine Suche nach dieser Unicodenummer in Word brachte nur Fehlermeldungen (Mac-Version) bzw. Nicht-gefunden-Meldungen (Windows-Version). Verschiedene akrobatische Transformationen in Word und Speicheraktionen in anderen Formaten ergaben ebenfalls nur negative Ergebnisse. Eine Speicherung als unformatierter Klartext kam nicht in Frage, da das Dokument auch komplizierte Gleichungen und andere wichtige Formatierungen enthält.

Nach weiterer längerer Diskussion mit den sehr hilfreichen und kompetenten Kolleginnen und Kollegen in der Gruppe konnten wir gemeinsam ermitteln, dass in Studio bidirektionale Steuerzeichen durch diese mysteriösen Pfeile dargestellt werden. Bidirektionale Steuerzeichen schalten zwischen Schriften von links nach rechts und von rechts nach links (z. B. für Arabisch und Hebräisch) um. Das überreichliche Vorkommen dieser Steuerzeichen alle paar Wörter in meinem durchgängig englischen Text ist mir noch immer ein Rätsel und auf jeden Fall vollkommen überflüssig. Aber nach Identifikation der kryptischen Zeichen konne ich in Word für Windows dann nach „^h“ suchen und die gefundenen, nicht sichtbaren Zeichen durch buchstäblich nichts ersetzen und sie so entfernen. (Nebenbei bemerkt gibt Word für Mac bei einer solchen Suche die Fehlermeldung aus, die Suche sei keine gültige Suche.) Nach erfolgreicher Entfernung der unsichtbaren, aber nun auffindbaren Zeichen speicherte ich das Dokument ab.

Und wenn ich nicht gestorben bin, dann übersetze ich nun fröhlich weiter.

Neuronale Netze — eine Einführung

Manche Leser werden sich schon gefragt haben, ob ich Fortschritte bei meinem neuronalen Maschinenübersetzungsprojekt gemacht habe. Die habe ich tatsächlich. Ich habe wie in der Anleitung beschrieben OpenNMT mit den Standardeinstellungen installiert und erfolgreich ausgeführt. Die Ergebnisse waren allerdings nicht ideal. Dies ist jedoch nicht unerwartet, da sehr viel Finetuning und außerdem umfangreiche, hochwertige Trainingskorpora notwendig sind, um eine Übersetzungsengine mit einigermaßen brauchbarer Qualität zu erhalten. Als Machbarkeitsstudie bin ich jedoch mit den bisherigen Ergebnissen sehr zufrieden. Im nächsten Schritt plane ich, die einzelnen Komponenten der Engine besser abzustimmen und außerdem das Trainingskorpus zu verbessern. Bevor ich im nächsten Blogbeitrag jedoch damit beginne, die NMÜ-Engine in ihre Komponenten zu zerlegen, muss ich wohl zuerst das Grundprinzip der neuronalen Netze erklären. Ich habe dieses Beispiel auch auf der 58. ATA-Konferenz vorgestellt, die Folien zum Vortrag können Sie hier herunterladen.

Neuronen und neuronale Einheiten

Im Folgenden bezeichnet der Begriff „neuronales Netzwerk“ ein künstliches neuronales Netz (KNN), im Gegensatz zu biologischen neuronalen Netzen.

Die Idee der KNN sind nicht neu, sondern wurde in den 1940ern konzipiert, als Forscher versuchten, Modelle des menschlichen Gehirns zu erstellen. Damals war allerdings die Leistung der besten Computer noch viel zu schwach, um die Ideen auch in die Tat umzusetzen. Die Leistung herkömmlicher Computer ist erst im letzten Jahrzehnt ausreichend, um neuronale Netze auf dem Computer sinnvoll zu modellieren.

Wie biologische Gehirne, die aus Neuronen bestehen, bestehen auch KNN aus einzelnen künstlichen Neuronen, deren Funktion der von biologischen Neuronen mehr oder weniger ähnlich ist, wie in den Abbildungen unten illustriert. Abb. 1 zeigt ein biologisches Neuron, dessen genaue Funktionsweise sehr kompliziert, aber hier im Detail unwichtig ist. Grob ausgedrückt besteht ein Neuron aus einem Zellkörper, Dendriten und einem Axon. Das Neuron empfängt über die Dendriten Eingangssignale. Wenn diese Signale einen bestimmten Schwellenwert überschreiten, findet im Nukleus ein elektrochemischer Prozess statt und das Neuron gibt über das Axon ein Ausgangssignal ab.

Biologisches Neuron

Abb. 1: Biologisches Neuron. Quelle: Bruce Blaus, https://commons.wikimedia.org/wiki/File:Blausen_0657_MultipolarNeuron.png


Künstliches Neuron

Abb. 2: Künstliches Neuron

Abb. 2 zeigt ein Modell eines sehr einfachen künstlichen Neurons. Es erhält ebenfalls Eingaben (mit x1 und x2 gekennzeichnet), und je nach den Eingangssignalen überträgt das Neuron über eine Aktivierungsfunktion (der weiße Kreis in Abb. 2) ein Ausgangssignal. Die Aktivierungsfunktion kann eine einfache Schwellenwertfunktion sein, wobei das Neuron ausgeschaltet ist und erst dann eine Ausgabe ausgibt, wenn die Summe der Eingaben einen Schwellenwert erreicht oder überschreitet. Die Aktivierungsfunktion kann aber auch viel komplexer sein. Das bis jetzt beschriebene künstliche Neuron führt jedoch keine besonders interessante Funktion aus. Die Sache wird erst dann interessant, wenn die Eingangssignale je nach ihrer Bedeutung unterschiedlich gewichtet werden. Ein künstliches neuronales Netz „lernt“, indem die Gewichte der einzelnen Eingangssignale (in Abb. 2 mit w1 und w2 gekennzeichnet) in das jeweilige Neuron angepasst werden. In Abb. 2 ist also Eingabe x1 doppelt so wichtig wie Eingabe x2, wie durch die relative Dicke der Pfeile angedeutet.

Schichten und Netzwerke

Ähnlich wie biologische Gehirne werden diese Neuronen in ein neuronales Netz zusammengefügt, wie in Abb. 3 illustriert. Genauer stellt Abb. 3 ein sogenanntes Feedforward-Netz oder vorwärtsgerichtetes Netz dar.

künstliches neuronales Netz

Abb. 3: Künstliches neuronales Netz. Adaptiert von: Cburnett, https://commons.wikimedia.org/wiki/File:Artificial_neural_network.svg

Im Allgemeinen bestehen KNN aus einer Eingabeschicht, einer oder mehreren verdeckten oder verborgenen Schichten und einer Ausgabeschicht. Jede Schicht setzt sich aus einem oder mehreren der oben beschriebenen künstlichen Neuronen zusammen. Neuronale Netze mit mehr als einer verdeckten Schicht werden als „deep“ bezeichnet. Jedes Neuron ist mit einem oder mehreren anderen Neuronen verbunden (in Abb. 3 durch die Pfeile illustriert), und jede Verbindung ist je nach Bedeutung unterschiedlich gewichtet. In einem Feedforward-Netz, wie in Abb. 3, ist jedes Neuron nur mit Einheiten in der zeitlich gesehen nächsten Schicht verbunden, nicht mit Neuronen der gleichen Schicht oder zeitlich vorangehender Schichten. In Abb. 3 ist der Zeitablauf von links nach rechts durch den roten Pfeil gekennzeichnet. Es gibt auch sogenannte rekurrente und convolutional Netze, bei denen die Verbindungen komplexer sind. Die Grundidee bleibt jedoch die gleiche. Die mittlere Schicht in Abb. 3 wird als verdeckt bezeichnet, da sie im Gegensatz zu den Eingabe- und Ausgabeschichten keine direkte Verbindung zur Außenwelt aufweist.

Training und Lernen

Das so zusammengesetzte neuronale Netzwerk „lernt“, indem die einzelnen Gewichte angepasst werden, die zum Beispiel Ziffern zwischen -1,0 und +1,0 sind, wobei natürlich andere Werte möglich sind. Die Gewichte werden anhand eines bestimmten Trainingsalgorithmus angepasst.

Das Training eines neuronalen Netzwerk erfolgt üblicherweise folgendermaßen: Ein Satz von Eingabedaten wird in die Eingabeschicht des neuronalen Netzes gespeist. Danach fließen diese Eingaben je nach den Gewichten (Verbindungen) und Aktivierungsfunktionen durch das Netz zur Ausgabeschicht. Die Ausgabe der Ausgabeschicht wird dann anhand einer vorbestimmten Metrik mit der gewünschten Ausgabe verglichen. Je nach Differenz zwischen der tatsächlichen Ausgabe und der gewünschten Ausgabe werden dann die Gewichte im gesamten Netzwerk nach einem Algorithmus angepasst. Danach wird der gesamte Prozess wiederholt, üblicherweise mehrere Tausend bis Millionen Mal, bis die Ausgabe den Erwartungen entspricht. Es gibt zahlreiche Algorithmen zur Anpassung der Gewichte, auf deren Beschreibung hier jedoch verzichtet wird.

Ein Beispiel

Sehen wir uns nun als konkretes Beispiel ein relativ einfaches neuronales Netz zur Erkennung von handgeschriebenen Ziffern an. Beispiele möglicher Eingaben sind in Abb. 4 gezeigt. Ich habe dieses einfache Feedforward-Netz für Andrew Ngs Kurs auf Coursera, Machine Learning, programmiert. Ich kann den ausgezeichneten Online-Kurs nur wärmstens empfehlen.

Beispielhafte handschriftliche Eingabe

Abb. 4: Beispielhafte handschriftliche Eingabe

Die Architektur dieses neuronalen Netzes ist genau wie in Abb. 3 gezeigt, mit 400 Eingabeeinheiten, da die Bilddateien jeweils eine Größe von 20 x 20 grauen Pixeln (= 400 Pixel) haben. Die verdeckte Schicht besteht aus 25 Neuronen und die Ausgabeschicht aus 10 Neuronen, eines für jede Ziffer von 0 bis 9. Das bedeutet, dass es 10.000 Verbindungen (Gewichte) zwischen der Eingabeschicht und der verdeckten Schicht gibt (400 x 25) und 250 Verbindungen zwischen der verdeckten Schicht und der Ausgabeschicht gibt (25 x 10). Insgesamt hat das Netz also 10.250 Parameter! Für die technisch Interessierten, die Aktivierungsfunktion ist eine Sigmoidfunktion.

KNN zur Erkennung von handschriftlichen Ziffern

Abb. 5: KNN zur Erkennung von handschriftlichen Ziffern

Das Training erfolgte wie oben beschrieben. Ich gab Batches mit mehreren Tausend grauen 20×20-Bildern ein, wie in Abb. 4 gezeigt, und die Gewichte wurden mittels Backpropagation je nachdem angepasst, wie weit die Ausgabe von der tatsächlichen Ziffer von 0 bis 9 entfernt war. Das Ergebnis nach Abschluss des Lernvorgangs war erstaunlich, insbesondere angesichts der Tatsache, dass das ganze Programm nur aus ein paar Dutzend Codezeilen besteht.

Aber wie funktioniert es wirklich?

Es ist wirklich erstaunlich und auch etwas beängstigend, dass dieses Konzept so gut funktioniert, denn ich hatte nur die Aktivierungsfunktion, die einzelnen Neuronen und die Anzahl der Neuronen in jeder Schicht und deren Verbindungen programmiert und angegeben, dass die Gewichte über Backpropagation angepasst werden sollten. Das Programm tat den Rest. Wie funktioniert das Ganze also wirklich?

Autopsie eines neuronalen Netzes

Autopsie eines neuronalen Netzes

Ehrlich gesagt hatte ich auch nach einigen komplizierten wahrscheinlichkeitstheoretischen und statistischen Ensemble-Berechnungen keine Ahnung, warum diese relativ einfachen Schichten mit relativ einfachen Aktivierungsfunktionen es schafften, handschriftliche Ziffern zu erkennen, die nicht einmal besonders deutlich geschrieben waren. Deshalb habe ich das obige neuronale Netz nach erfolgreichem Training schichtweise „seziert“.

Die erste Menge an Gewichten zwischen der Eingabeschicht und der verdeckten Schicht fungiert quasi als Filter, die im Wesentlichen wichtige Muster oder Strukturen aus der Eingabe herausfiltern. Wenn man nur diese erste Gewichtsmenge grafisch darstellt, erhält man eine Grafik mit 25 „Filtern“, wie in Abb. 6 gezeigt. Diese Filter bilden die Eingabe auf die 25 verdeckten Neuronen in der mittleren, verdeckten Schicht ab. Abb. 7 zeigt das Ergebnis der Abbildung einer bestimmten Eingabe, in diesem Fall eine handschriftliche „0“, auf die verdeckte Schicht.

erster Satz von Gewichten

Abb. 6: Erster Satz von Gewichten, der als „Filter“ fungiert.

Abbildung einer 0 auf verdeckte Neuronen

Abb. 7: Abbildung einer 0 auf verdeckte Neuronen.

Die Ausgabe der verdeckten Schicht wird dann durch einen weiteren Filter geleitet, wie in Abb. 8 gezeigt, und schließlich über diesen Gewichtssatz auf die Ausgabeschicht abgebildet. Abb. 8 zeigt, wie die Ziffer „0“ richtig auf das Ausgabeneuron für die „0“ abgebildet wird (unten im Bild, da das Programm die Ziffern vertikal von 1 oben bis 9 und dann 0 unten anzeigt).

Abbildung einer Eingabe auf eine Ausgabe über eine verdeckte Schicht.

Abb. 8: Abbildung einer Eingabe, hier einer 0, auf eine Ausgabe über Faltungen der Gewichte über eine verdeckte Schicht.

Weitere Beispiele dieser Abbildung oder Filterung von Eingaben auf Ausgaben über die internen Gewichte sind in meinen Folien für ATA58 und in Fig. 9 visualisiert.

Mapping of input to output

Abb. 9: Abbildung einer Eingabe, hier einer 2, auf eine Ausgabe.

Nochmals, die internen Gewichte fungieren als eine Art Filter, um die interessierenden Merkmale herauszukristallisieren. Naiverweise hatte ich erwartet, dass diese Merkmale oder Muster bei handschriftlichen Ziffern vertikalen oder horizontalen Linien, zum Beispiel bei den Ziffern 1, 4 oder 7, oder verschiedenen Bögen oder Kreisen für Ziffern wie 3 oder 8 oder 0 entsprechen. Dies ist jedoch offensichtlich nicht der Fall, wie man aus der grafischen Darstellung der ersten Gewichte in Abb. 6 sehen kann. Die Strukturen, die das Netz herausfiltert, sind augenscheinlich viel komplexer als einfache Linien oder Bögen. Dies ist auch der Grund für den „Umweg“ über die verdeckte Schicht. Eine direkte Abbildung von der Eingabe auf die Ausgabe würde auch mit einer internen Faltung nicht ausreichen, alle zur Unterscheidung der einzelnen Ziffern notwendigen Informationen aus der Eingabe herauszuholen. Gleichermaßen sind für kompliziertere Aufgaben mehr als eine verdeckte Schicht notwendig. Die Anzahl der verdeckten Schichten und der Neuronen sowie deren Verbindungen/Gewichte wächst mit der Komplexität der Aufgabe.

Fazit

Ziel dieses Beitrags war, die innere Arbeitsweise eines einfachen neuronalen Netzwerks visuell zu erläutern. Neuronale Netze für andere Anwendungen, auch für die maschinelle Übersetzung, funktionieren im Prinzip sehr ähnlich. Natürlich haben diese Netze meist mehr als eine verdeckte Schicht, samt komplizierter Vor- und Nachbearbeitung von Eingabe- und Ausgabedaten, ausgeklügeltere Aktivierungsfunktionen und eine komplexere Architektur, wie rekurrente oder convolutional Netze. Das Grundprinzip bleibt jedoch gleich: Die zugrundeliegende Funktion eines künstlichen neuronalen Netzes ist ganz einfach die Mustererkennung. Nicht mehr und nicht weniger. Gut trainierte KNN können außerordentliche Leistungen erbringen, die oftmals die von Menschen weit übersteigen, da künstliche neuronale Netze weder ermüden noch die Konzentration verlieren. Allerdings sollte man nicht vergessen, dass sie ebenso außerordentlich schlechte Leistungen erbringen, wenn die gestellte Aufgabe über ihr Training hinausgeht. In diesen Fällen erkennen sie Muster, die eigentlich nicht vorhanden sind, und in anderen Fällen kann die Aufgabe einfach nicht in Form einer Mustererkennung gelöst werden, egal wie komplex die Muster sind. Anders ausgedrückt sind künstliche neuronale Netze sicher weit mehr als die Summe ihrer Programmzeilen, aber nie mehr als die Summe ihres Trainings. (Zumindest bis zur sogenannten technischen Singularität.)