Forscher bei Facebook Angenommen, sie haben ein neues System entwickelt, das als neuronaler Transcompiler bezeichnet wird und Code aus einer höheren Programmiersprache wie Java, Python oder C ++ in einen anderen Code konvertieren kann. Dies geht aus einer Studie hervor, die auf a veröffentlicht wurde. Preprint-Website .
Facebook AI-Forscher erstellen ein Intercode-Übersetzungssystem
Das System ist unbeaufsichtigt, dh es sucht nach zuvor unentdeckten Mustern in Datensätzen ohne Leitetiketten und mit einem minimalen Maß an menschlicher Überwachung. Berichte Venture Beat.
Insbesondere übertrifft es Berichten zufolge regelbasierte Richtlinien, die andere Systeme für die Codeübersetzung verwenden, um einen "signifikanten" Vorsprung.
"TransCoder kann leicht auf jede Programmiersprache verallgemeinert werden, erfordert kein Expertenwissen und übertrifft kommerzielle Lösungen bei weitem", schrieben die Mitautoren der Preprint-StudieDas Modell kann leicht repariert werden, indem dem Decoder einfache Einschränkungen hinzugefügt werden, um sicherzustellen, dass die generierten Funktionen syntaktisch korrekt sind, oder indem dedizierte Architekturen verwendet werden. "
Verschieben einer vorhandenen Codebasis in eine moderne und effizientere Sprache wie C ++ oder Java erfordert ernsthaftes Fachwissen sowohl in der Quell- als auch in der Zielsprache - ein typisch teurer Prozess. Die Commonwealth Bank of Australia hat ungefähr ausgegeben 750 Millionen US-Dollar in einem Zeitraum von fünf Jahren für die Konvertierung der Plattform von COBOL in Java-Skript. Transcompiler sind hier zwar technisch hilfreich - sie müssen jedoch keinen neuen Code von Grund auf neu schreiben - sie sind auch schwierig zu erstellen, da unterschiedliche Sprachen unterschiedlich sindSyntax und Verwendung von unverwechselbaren Plattform-APIs, Variablentypen und Standardbibliotheksfunktionen, berichtet Venture Beat.
Facebooks neues TransCoder-System
TransCoder genannt, das neue System von Facebook kann zwischen Java, C ++ und Python übersetzen und schwierige Aufgaben ohne die Aufsicht erledigen, die solche Projekte normalerweise erfordern. Das neue System wird zunächst mit einem mehrsprachigen Sprachmodell-Pretraining initialisiert - einem Prozess, der Teilcode-Ausdrücke abbildetderen Bedeutungen sich unabhängig von der Programmiersprache mit identischen Darstellungen überschneiden.
Eingabe Quellcode Sequenzen werden zufällig ausgeblendet, und TransCoder hat die Aufgabe, anhand größerer Kontexte vorherzusagen, welche ausgeblendeten Teile welche sind.
Der als Entrauschungs-Auto-Codierung bezeichnete Prozess trainiert TransCoder, gültige Sequenzen zu generieren, selbst wenn verrauschte Eingabedaten bereitgestellt werden. Durch die Rückübersetzung kann TransCoder parallele Daten generieren, die später für zusätzliches Training verwendet werden.
Das mehrsprachige Training von TransCoder basiert darauf, wie viele gemeinsame Token - auch Ankerpunkte genannt - in verschiedenen Programmiersprachen vorhanden sind. Diese stammen aus gängigen Schlüsselwörtern wie "while", "try", "for" und "if"zu Ziffern, englischen Zeichenfolgen und mathematischen Operatoren, die im Quellcode angezeigt werden.
Rückübersetzung hilft dem System, sich zu verbessern Code-Übersetzung Qualität durch Koppeln eines Quelle-zu-Ziel-Modells mit einem "rückwärts" -Ziel-zu-Quelle-Modell, das in der entgegengesetzten Zeichenfolgenrichtung trainiert wurde. Das Ziel-zu-Quelle-Modell wird verwendet, um Zielsequenzen in die Ausgangssprache zu übersetzen, was zu Rauschen führtQuellsequenzen - während das Quelle-Ziel-Modell Zielsequenzen aus verrauschten Quellen rekonstruiert, bis die beiden gegenseitig invertierten Modelle zu einem konvergieren.