Kategorie Neuronale maschinelle Übersetzung

Wie funktioniert die neuronale maschinelle Übersetzung? Wird die neuronale MÜ menschliche Übersetzer überflüssig machen? Sind wir der Roboter-Apokalypse nahe?

neural networks

Diese Fragen zur neuronalen maschinellen Übersetzung (NMÜ)stellen sich heutzutage viele Übersetzerinnen und Übersetzer. Diese Fragen sind nicht einfach zu beantworten. Wenn Sie n Experten fragen, bekommen Sie ca. n+1 unterschiedliche Antworten. Hier einige dieser Expertenmeinungen:

Weiterlesen

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).

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.)

Folien zum Vortrag auf der ATA58, ST-7, “An Introduction to Artificial Intelligence, Machine Learning, and Neural Networks”

Die Folien zum Vortrag (auf Englisch) auf der ATA58 können hier heruntergeladen werden.
(© Alle Rechte vorbehalten. Natürlich sende ich auf Anfrage gerne eine Version mit höherer Auflösung oder genehmige gegebenenfalls die weitere Verwendung.)

Zusammenfassung:

From spam filters to stock trading bots, the applications of artificial intelligence are already omnipresent. This poses important questions such as: Will my autonomous vacuum cleaner go on a rampage and eat the hamster? Do neural networks think like brains? What are the chances of a robot uprising? The presentation will address these questions and give an introduction to artificial intelligence, which is impacting all our lives, perhaps more than most people are aware of. However, the talk will not discuss machine translation and related topics. No knowledge of computer science or advanced mathematics is required to attend.

Mein neuronales Maschinenübersetzungsprojekt – Überblick über Open-Source-Toolkits — Aktualisierung Dez. 2017

Im Dez. 2017 aktualisiert.

Um eines der Open-Source-Toolkits für neuronale Maschinenübersetzung auszuwählen, die derzeit (September 2017) verfügbar sind, musste ich mir zuerst einen Überblick verschaffen. Im Folgenden fasse ich die einzelnen Funktionen der Toolkits aus meiner Sicht kurz zusammen. Diese Übersicht enthält keine der Toolkits, wie zum Beispiel Moses, die auf einem statistischen Ansatz basieren. Die folgenden Eindrücke sind hauptsächlich aus einigen Wochen in verschiedenen Supportforen und Online-Diskussionsgruppen entstanden.

Der dicke Fisch – TensorFlow

Von: Google (TensorFlow, das TensorFlow-Logo und alle damit verbundenen Marken sind Eigentum von Google Inc.)
Website: https://www.tensorflow.org
Sprache: Python (Haupt-API), mit APIs für C, Java und Go, letztere haben jedoch weniger Funktionalität als die Haupt-API.
Architektur: Da TensorFlow ein vollständiges Framework ist, stehen sowohl rekurrente als auch convolutional neuronale Netze zur Verfügung.
Whitepaper: Large-Scale Machine Learning on Heterogeneous Distributed Systems, M. Abadi et al., 9. November 2015
Support: Stack Overflow für technische Fragen; eine Google-Gruppe (was sonst?) für Diskussionen über Funktionen usw. auf höherer Ebene, obwohl auch einige technische Fragen in dieser Gruppe diskutiert werden; und ein Blog mit neuen Funktionen und Anleitungen
Zusammenfassung: TensorFlow ist ein großes Universal-Open-Source-Toolkit, nicht nur für Maschinenübersetzung, aber es gibt einige detaillierte Anleitungen zu Vektordarstellungen von Wörtern, rekurrente neuronale Netze und Sequenz-auf-Sequenz-Abbildungsmodelle, die die grundlegenden Bausteine für neuronale Maschinenübersetzungssysteme bilden. TensorFlow stellt auch verschiedene andere neuronale Netzwerkarchitekturen zur Verfügung und sehr viele Funktionen und Features, die man auch für die Maschinenübersetzung verwenden könnte. Aber es ist definitiv kein System für Anfänger.

Die benutzerfreundlichere Option – OpenNMT

Von: Harvard University und Systran
Website: http://opennmt.net
Sprache: Lua, aufgebaut auf dem Torch-Framework für maschinelles Lernen; es gibt auch zwei „leichtgewichtige“ Optionen für Python/PyTorch und C++.
Update: Seit Dezember 2017 gibt es neben der Lua-Hauptversion zwei weitere, voll funktionsfähige Versionen, eine Python-Version, die auf dem PyTorch-Framework aufbaut, und eine Tensorflow-Version.
Architektur: Rekurrentes neuronales Netz
Whitepaper: OpenNMT: Open-Source Toolkit for Neural Machine Translation, G. Klein et al., 10. Januar 2017
Support: ein sehr aktives Diskussionsforum (in dem unter anderem Systran’s CTO sehr aktiv ist)
Zusammenfassung: Eher ein System für Anfänger, obwohl die Wahl der Programmiersprache Lua, die nicht so verbreitet ist wie Python, ein Hindernis darstellen kann. Update Dezember 2017: Da es nun zwei neue Versionen gibt, die auf PyTorch und Tensorflow aufbauen, sollte die Sprache kein Hindernis mehr sein. Ende der Aktualisierung. Einige der Fragen, die im Forum besprochen werden, scheinen tatsächlich relativ trivial zu sein (und ich bin bei Weitem keine Expertin!). Wenn man sich also auf die Eingabe (das heißt, gut aufbereitete Korpora!) und auf verschiedene Metriken und Kostenfunktionen für die Ausgabe konzentrieren will, scheint dieses Toolkit die beste Wahl zu sein. Denn beim maschinellen Lernen sind Ein- und Ausgaben genauso wichtig wie die Architektur selbst — wie es so schön heißt „Garbage in – garbage out“. Deshalb ist es vielleicht für Sprachmittler und Sprachwissenschaftler sinnvoller, sich der Maschinenübersetzung von diesem Gesichtspunkt aus anzunähern, das heißt, sich auf die Eingabe (Korpora) und die Ausgabe („Übersetzungsqualitätsmetriken“) zu konzentrieren, anstatt sich über die Netzwerkarchitektur und den Code den Kopf zu zerbrechen.

Der neue Stern am Toolkit-Himmel – Nematus

Von: Universität Edinburgh
Website: keine eigene Website; das Projekt plus Anleitung ist auf Github zu finden.
Sprache: Python, aufgebaut auf dem Theano-Framework für maschinelles Lernen
Architektur: Rekurrentes neuronales Netz
Whitepaper: Nematus: a Toolkit for Neural Machine Translation, R. Sennrich et al., 13. März 2017
Support: eine Google-Gruppe
Zusammenfassung: Dies ist das neueste System auf dem Open-Source-Markt, jedoch nicht so aktiv wie die anderen zwei. Wie OpenNMT ist es ein Toolkit nur für Maschinenübersetzung, im Gegensatz zum Universal-Toolkit TensorFlow. Es verwendet Python im Gegensatz zur weniger bekannten Sprache Lua. Das wäre zumindest für mich ein Vorteil gegenüber OpenNMT. Der Nutzerstamm ist jedoch bei Weitem nicht so umfangreich oder aktiv wie der von OpenNMT. Deshalb scheint Nematus zumindest zum derzeitigen Zeitpunkt eine Option zu sein, die man im Auge behalten sollte, die aber nicht unbedingt die erste Wahl ist.

Brandneu – Sockeye

Von: Amazon
Website: Die Haupt-Website ist hier: http://sockeye.readthedocs.io/en/latest/. Das Projekt und eine Anleitung wurden auf Amazons AWS (Amazon Web Services) KI-Blog vorgestellt — https://aws.amazon.com/fr/blogs/ai/train-neural-machine-translation-models-with-sockeye/.
Sprache: Python, aufgebaut auf dem Apache-MXNet-Framework für maschinelles Lernen
Architektur: Rekurrentes neuronales Netz
Whitepaper: SOCKEYE: A Toolkit for Neural Machine Translation, F. Hieber et al., 15. Dez. 2017
Support: Abgesehen von der Website mit einer ausführlichen Dokumentation gibt es das allgemeine AWS-Diskussionsforum.
Zusammenfassung: Das neueste Open-Source-Toolkit für maschinelle Übersetzung ist für fortgeschrittene Anwender gedacht, die außerdem mit dem AWS-Setup und dem MXNet-Framework vertraut sind. Andererseits sind viele verschiedene Netzarchitekturen und erweiterte Optionen verfügbar, was den fortgeschrittenen Anwendern viel mehr Freiheit beim Experimentieren erlaubt.

Ein weiterer dicker Fisch – Fairseq

Von: Facebook
Website: Das Github-Projektarchiv ist hier zu finden: https://github.com/facebookresearch/fairseq. Eine Anleitung zur Verwendung von Fairseq wurde auf Facebooks Code-Blog veröffentlicht — https://code.facebook.com/posts/1978007565818999/a-novel-approach-to-neural-machine-translation/.
Sprache: Lua, aufbauend auf dem Torch-Framework für maschinelles Lernen
Architektur: Convolutional neuronales Netz
Whitepaper: Convolutional Sequence to Sequence Learning, J. Gehring et al., 8. Mai 2017
Support: eine Facebook-Gruppe (was sonst?) und eine Google-Gruppe.
Zusammenfassung: Dieses Toolkit ist ebenfalls für fortgeschrittene Anwender gedacht, erstens, weil es ebenfalls in der (im Vergleich zu Python) esoterischeren Sprache Lua geschrieben ist, und zweitens, weil die Zielgruppe anscheinend Forschungsexperten statt neugierige Endanwender sind. Außerdem ist das Toolkit ebenfalls relativ neu.