Heim > Schlagzeilen > Hauptteil

„Unüberwachte' maschinelle Übersetzung? Kann sie auch ohne Daten übersetzt werden?

-
Freigeben: 2018-02-28 18:40:51
Original
2627 Leute haben es durchsucht

Deep Learning wird häufig bei verschiedenen täglichen Aufgaben eingesetzt, insbesondere in Bereichen, die ein gewisses Maß an „Menschlichkeit“ erfordern, wie etwa der Bilderkennung. Im Gegensatz zu anderen Algorithmen für maschinelles Lernen besteht das hervorstechendste Merkmal tiefer Netzwerke darin, dass ihre Leistung mit zunehmender Datengewinnung weiter verbessert werden kann. Je mehr Daten verfügbar sind, desto besser ist daher die erwartete Leistung.

Eine der Aufgaben, die tiefe Netzwerke am besten beherrschen, ist die maschinelle Übersetzung. Derzeit handelt es sich um die fortschrittlichste Technologie, die diese Aufgabe bewältigen kann, und sie ist so machbar, dass sogar Google Translate sie verwendet. Bei der maschinellen Übersetzung werden parallele Daten auf Satzebene benötigt, um das Modell zu trainieren, d. h. für jeden Satz in der Ausgangssprache muss es sich um die übersetzte Sprache in der Zielsprache handeln. Es ist nicht schwer, sich vorzustellen, warum dies ein Problem sein sollte. Denn für einige Sprachpaare ist es schwierig, große Datenmengen zu erhalten (daher die Möglichkeit, Deep Learning zu nutzen).

Wie dieser Artikel aufgebaut ist

Dieser Artikel basiert auf einem kürzlich von Facebook veröffentlichten Artikel mit dem Titel „Unüberwachte maschinelle Übersetzung, die nur einsprachige Korpora verwendet“. Dieser Artikel folgt nicht vollständig der Struktur des Artikels. Ich habe einige meiner eigenen Interpretationen hinzugefügt, um den Artikel verständlicher zu machen.

Das Lesen dieses Artikels erfordert einige Grundkenntnisse über neuronale Netze, wie Verlustfunktionen, Autoencoder usw.

Probleme mit maschineller Übersetzung

Wie oben erwähnt besteht das größte Problem bei der Verwendung neuronaler Netze in der maschinellen Übersetzung darin, dass ein Datensatz von Satzpaaren in zwei Sprachen erforderlich ist. Es funktioniert für weit verbreitete Sprachen wie Englisch und Französisch, jedoch nicht für Satzpaare in anderen Sprachen. Wenn die Sprache in den Daten verfügbar ist, wird dies zu einer überwachten Aufgabe.

Lösung

Die Autoren dieses Artikels haben herausgefunden, wie diese Aufgabe in eine unbeaufsichtigte Aufgabe umgewandelt werden kann. Für diese Aufgabe sind lediglich zwei Korpora in jeder der beiden Sprachen erforderlich, beispielsweise ein Roman auf Englisch und ein Roman auf Spanisch. Zu beachten ist, dass die beiden Romane nicht unbedingt identisch sind.

Aus der intuitivsten Perspektive entdeckte der Autor, wie man einen latenten Raum zwischen zwei Sprachen lernt.

Übersicht über Autoencoder

Autoencoder sind eine breite Klasse neuronaler Netze, die für unbeaufsichtigte Aufgaben verwendet werden. Es funktioniert durch die Neuerstellung einer Eingabe, die mit der ursprünglichen Eingabe identisch ist. Der Schlüssel dazu ist eine Netzwerkschicht in der Mitte des Netzwerks, die sogenannte Engpassschicht. Diese Netzwerkschicht wird verwendet, um alle nützlichen Informationen über die Eingabe zu erfassen und nutzlose Informationen zu verwerfen.

„Unüberwachte maschinelle Übersetzung? Kann sie auch ohne Daten übersetzt werden?

Konzeptioneller Autoencoder, das Zwischenmodul ist die Engpassschicht, die die komprimierte Darstellung speichert

Kurz gesagt, in der Engpassschicht die Eingabe in der Engpassschicht (Der nun vom Encoder transformierte Raum) wird latenter Raum genannt.

Autoencoder entrauschen

Wenn ein Autoencoder darauf trainiert ist, die Eingabe genau so zu rekonstruieren, wie sie eingegeben wurde, kann er möglicherweise nichts tun. In diesem Fall wird die Ausgabe perfekt rekonstruiert, jedoch ohne nützliche Funktionen in der Engpassschicht. Um dieses Problem zu lösen, verwenden wir einen Entrauschungs-Autoencoder. Erstens wird die eigentliche Eingabe durch das Hinzufügen von etwas Rauschen leicht gestört. Das Netzwerk wird dann verwendet, um das Originalbild (nicht die verrauschte Version) zu rekonstruieren. Auf diese Weise kann das Netzwerk nützliche Merkmale des Bildes lernen, indem es lernt, was Rauschen ist (und welche wirklich nützlichen Merkmale es hat).

„Unüberwachte maschinelle Übersetzung? Kann sie auch ohne Daten übersetzt werden?

Ein konzeptionelles Beispiel eines rauschunterdrückenden Autoencoders. Verwenden Sie ein neuronales Netzwerk, um das linke Bild zu rekonstruieren und das rechte Bild zu generieren. In diesem Fall bilden die grünen Neuronen zusammen die Engpassschicht

Warum einen gemeinsamen latenten Raum lernen?

Latenter Raum kann die Eigenschaften der Daten erfassen (in unserem Beispiel sind die Daten Sätze). Wenn es also möglich ist, einen Raum zu erhalten, der bei Eingabe in Sprache A dieselben Merkmale erzeugt wie bei Eingabe in Sprache B, dann ist es uns möglich, zwischen ihnen zu übersetzen. Da das Modell bereits über die richtigen „Merkmale“ verfügt, wird es vom Encoder der Sprache A codiert und vom Decoder der Sprache B decodiert, wodurch beide eine effiziente Übersetzungsarbeit leisten können.

Vielleicht, wie Sie vielleicht denken, verwendet der Autor einen Autoencoder zur Rauschunterdrückung, um einen Feature-Space zu lernen. Sie fanden auch heraus, wie man den Autoencoder dazu bringen kann, einen gemeinsamen latenten Raum (den sie einen ausgerichteten latenten Raum nennen) zu lernen, um eine unbeaufsichtigte maschinelle Übersetzung durchzuführen.

Entrauschen von Autoencodern in der Sprache

Die Autoren verwenden Entrauschen von Encodern, um Funktionen auf unbeaufsichtigte Weise zu erlernen. Die von ihnen definierte Verlustfunktion ist:

„Unüberwachte maschinelle Übersetzung? Kann sie auch ohne Daten übersetzt werden?

Gleichung 1.0 Automatische Entrauschungs-Encoder-Verlustfunktion

Interpretation von Gleichung 1.0

I ist die Sprache (für diese Einstellung kann es zwei Sprachen geben). X ist die Eingabe und C(x) ist das Ergebnis nach dem Hinzufügen von Rauschen zu x. Wir werden bald die durch das Rauschen erzeugte Funktion C erhalten. e() ist der Encoder und d() ist der Decoder. Der letzte Term Δ(x hat,x) ist die Summe der Kreuzentropiefehlerwerte auf Token-Ebene. Da wir eine Eingabesequenz haben und eine Ausgabesequenz erhalten, möchten wir sicherstellen, dass jedes Token in der richtigen Reihenfolge ist. Daher wird diese Verlustfunktion verwendet. Wir können es uns als Multi-Label-Klassifizierung vorstellen, bei der das Label des i-ten Inputs mit dem i-ten Output-Label verglichen wird. Unter ihnen ist der Token eine Grundeinheit, die nicht weiter zerstört werden kann. In unserem Beispiel ist das Token ein Wort. Gleichung 1.0 ist eine Verlustfunktion, die das Netzwerk dazu veranlasst, die Differenz zwischen der Ausgabe (bei einer verrauschten Eingabe) und dem ursprünglichen, unbeeinflussten Satz zu minimieren. Die symbolische Darstellung von

□ mit ~

□ ist die Darstellung, die wir erwarten, was in diesem Fall bedeutet, dass die Verteilung der Eingabe von der Sprache l abhängt und der Mittelwert des Verlusts ist genommen. Dies ist nur eine mathematische Form, der tatsächliche Verlust während der Operation (Summe der Kreuzentropie) wird wie üblich sein.

Dieses Sonderzeichen ~ bedeutet „aus einer Wahrscheinlichkeitsverteilung“.

Auf dieses Detail gehen wir in diesem Artikel nicht ein. Mehr über dieses Symbol erfahren Sie in Kapitel 8.1 des Artikels „Deep Learning Book“.

So fügen Sie Rauschen hinzu

Bei Bildern können Sie Rauschen hinzufügen, indem Sie den Pixeln einfach Gleitkommazahlen hinzufügen. Für Sprachen müssen Sie jedoch andere Methoden verwenden. Daher entwickelten die Autoren ein eigenes System zur Geräuscherzeugung. Sie bezeichnen ihre Rauschfunktion als C(). Es nimmt einen Satz als Eingabe und gibt eine verrauschte Version des Satzes aus.

Es gibt zwei verschiedene Möglichkeiten, Rauschen hinzuzufügen.

Erstens kann man einfach ein Wort mit der Wahrscheinlichkeit P_wd aus der Eingabe entfernen.

Zweitens kann jedes Wort mit der folgenden Einschränkung von seiner ursprünglichen Position verschoben werden:

„Unüberwachte maschinelle Übersetzung? Kann sie auch ohne Daten übersetzt werden?

σ stellt das i-te dar verschobene Position des Markers. Daher bedeutet Gleichung 2.0: „Ein Token kann sich bis zu k Token-Positionen nach links oder rechts bewegen“

Der Autor setzt den K-Wert auf 3 und den P_wd-Wert auf 1 .

Domänenübergreifendes Training

Um die Übersetzung zwischen zwei Sprachen zu lernen, sollte der Eingabesatz (Sprache A) durch eine Verarbeitung dem Ausgabesatz (Sprache B) zugeordnet werden. Der Autor nennt diesen Prozess domänenübergreifendes Training. Zunächst wird der Eingabesatz (x) abgetastet. Anschließend wird das Modell aus der vorherigen Iteration (M()) verwendet, um die übersetzte Ausgabe (y) zu generieren. Wenn wir sie zusammenfügen, erhalten wir y=M(x). Anschließend wird dieselbe Rauschfunktion C() wie oben verwendet, um mit y zu interferieren, und C(y) wird erhalten. Der Encoder für Sprache A codiert diese gestörte Version, und der Decoder für Sprache B decodiert die Ausgabe des Encoders für Sprache A und rekonstruiert eine saubere Version von C(y). Das Modell wird mit der gleichen Summe der Kreuzentropiefehlerwerte wie in Gleichung 1.0 trainiert.

Erlernen eines gemeinsamen latenten Raums durch kontradiktorisches Training

Bisher wird nicht erwähnt, wie ein gemeinsamer latenter Raum erlernt werden kann. Das oben erwähnte domänenübergreifende Training hilft dabei, einen ähnlichen Raum zu lernen, es sind jedoch stärkere Einschränkungen erforderlich, um das Modell dazu zu bringen, einen ähnlichen latenten Raum zu lernen.

Der Autor nutzt kontradiktorisches Training. Sie verwendeten ein anderes Modell (Diskriminator genannt), das die Ausgabe jedes Encoders nahm und vorhersagte, zu welcher Sprache die codierten Sätze gehörten. Dann werden die Gradienten aus dem Diskriminator extrahiert und der Encoder wird darauf trainiert, den Diskriminator zu täuschen. Dies unterscheidet sich konzeptionell nicht von einem Standard-GAN (Generative Adversarial Network). Der Diskriminator empfängt den Merkmalsvektor bei jedem Zeitschritt (da ein RNN verwendet wird) und sagt voraus, aus welcher Sprache er stammt.

Kombiniert man sie

Addiert man die oben genannten drei verschiedenen Verluste (Autoencoder-Verlust, Übersetzungsverlust und Diskriminatorverlust), werden die Gewichte aller Modelle gleichzeitig aktualisiert.

Da es sich um ein Sequenz-zu-Sequenz-Problem handelt, verwendet der Autor ein langes Kurzzeitgedächtnisnetzwerk (LSTM). Es ist zu beachten, dass es zwei LSTM-basierte Autoencoder gibt, einen für jede Sprache .

Auf hohem Niveau erfordert das Training dieser Architektur drei Hauptschritte. Sie folgen einem iterativen Trainingsprozess. Der Trainingsschleifenprozess sieht in etwa so aus:

1. Holen Sie sich die Übersetzung mit einem Encoder für Sprache A und einem Decoder für Sprache B.

2. Trainieren Sie jeden Autoencoder so, dass er in der Lage ist, einen unbeschädigten Satz neu zu generieren, wenn ihm ein beschädigter Satz gegeben wird.

3. Verbessern Sie die Übersetzung und erstellen Sie sie neu, indem Sie die in Schritt 1 erhaltene Übersetzung zerstören. Für diesen Schritt wird der Encoder für Sprache A zusammen mit dem Decoder für Sprache B trainiert (der Encoder für Sprache B wird zusammen mit dem Decoder für Sprache A trainiert).

Es ist zu beachten, dass die Gewichte auch dann zusammen aktualisiert werden, wenn Schritt 2 und Schritt 3 separat aufgeführt werden.

So starten Sie dieses Framework

Wie oben erwähnt, verwendet das Modell seine eigenen Übersetzungen aus früheren Iterationen, um seine Übersetzungsfähigkeiten zu verbessern. Daher ist es wichtig, über einige Übersetzungskenntnisse zu verfügen, bevor der Recyclingprozess beginnt. Der Autor verwendet FastText, um zweisprachige Wörterbücher auf Wortebene zu lernen. Beachten Sie, dass diese Methode sehr einfach ist und dem Modell lediglich einen Ausgangspunkt geben muss.

Das gesamte Framework ist im Flussdiagramm unten dargestellt

„Unüberwachte maschinelle Übersetzung? Kann sie auch ohne Daten übersetzt werden?

Die allgemeine Arbeit des gesamten Übersetzungsframeworks

Dieser Artikel erklärt eine Methode, die neue Techniken zur Durchführung unbeaufsichtigter maschineller Übersetzungsaufgaben ermöglichen kann. Es nutzt mehrere unterschiedliche Verluste, um eine einzelne Aufgabe zu verbessern, und nutzt gleichzeitig gegnerisches Training, um Einschränkungen für das Verhalten der Architektur durchzusetzen.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage