「教師なし」機械翻訳はデータがなくても翻訳できるのか?
ディープラーニングは、日常のさまざまなタスク、特に画像認識など、ある程度の「人間性」が関わる分野で広く使用されています。他の機械学習アルゴリズムとは異なり、ディープ ネットワークの最も顕著な特徴は、より多くのデータが取得されるにつれてパフォーマンスが向上し続けることです。したがって、より多くのデータが利用できる場合、期待されるパフォーマンスは向上します。
ディープネットワークが最も得意とするタスクの 1 つは、機械翻訳です。現在、これはこのタスクを実行できる最も先進的なテクノロジーであり、Google 翻訳でも使用されるほど十分に実現可能です。機械翻訳では、モデルをトレーニングするために文レベルの並列データが必要です。つまり、ソース言語の各文が、ターゲット言語に翻訳された言語である必要があります。なぜこれが問題となるのか想像するのは難しくありません。一部の言語ペアでは、大量のデータを取得するのが難しいためです (したがって、深層学習を使用することができます)。
この記事の構成方法
この記事は、Facebook によって公開された「単一言語コーパスのみを使用した教師なし機械翻訳」という最近の記事に基づいています。この記事は論文の構成に完全に従っているわけではありませんが、記事をより理解しやすくするために独自の解釈をいくつか追加しました。
この記事を読むには、損失関数やオートエンコーダーなど、ニューラル ネットワークに関する基本的な知識が必要です。
機械翻訳の問題
上で述べたように、機械翻訳でニューラル ネットワークを使用する場合の最大の問題は、2 つの言語の文のペアのデータセットが必要であることです。英語やフランス語などの広く話されている言語では機能しますが、他の言語の文のペアでは機能しません。データ上で言語が利用可能な場合、これは教師ありタスクになります。
解決策
この論文の著者は、このタスクを教師なしタスクに変換する方法を考え出しました。このタスクに必要なのは、英語の小説とスペイン語の小説など、2 つの言語それぞれの 2 つのコーパスだけです。注意すべきことは、この 2 つの小説は必ずしも同じではないということです。
最も直感的な観点から、著者は 2 つの言語間の潜在的な空間を学習する方法を発見しました。
オートエンコーダーの概要
オートエンコーダーは、教師なしタスクに使用されるニューラル ネットワークの広範なクラスです。これは、元の入力と同一の入力を再作成することによって機能します。これを実現する鍵となるのが、ボトルネック層と呼ばれるネットワークの途中にあるネットワーク層です。このネットワーク層は、入力に関するすべての有用な情報を取得し、不要な情報を破棄するために使用されます。
概念的なオートエンコーダ、中間モジュールは圧縮表現を保存するボトルネック層です
つまり、ボトルネック層では、ボトルネック層の入力(エンコーダによって変換された)が配置される空間は、と呼ばれます潜在空間(潜在空間)。
オートエンコーダーのノイズ除去
オートエンコーダーが入力を入力時とまったく同じように再構築するようにトレーニングされている場合、何もできない可能性があります。この場合、出力は完全に再構築されますが、ボトルネック層には有用な機能はありません。この問題を解決するために、ノイズ除去オートエンコーダーを使用します。まず、実際の入力はノイズの追加によりわずかに乱れます。次に、ネットワークを使用して元のイメージ (ノイズのあるバージョンではない) が再構築されます。このようにして、ノイズとは何か (そしてその本当に有用な特徴は何か) を学習することで、ネットワークは画像の有用な特徴を学習できます。
ノイズ除去オートエンコーダーの概念的な例。ニューラル ネットワークを使用して、左の画像を再構築し、右の画像を生成します。この場合、緑色のニューロンが一緒になってボトルネック層を形成します
なぜ共通の潜在空間を学習するのでしょうか?
潜在空間はデータの特徴を捉えることができます (この例では、データは文です)。したがって、言語 A への入力時に言語 B への入力と同じ特徴を生成する空間を取得することができれば、それらの間で翻訳することが可能です。モデルはすでに正しい「特徴」を備えているため、言語 A のエンコーダーによってエンコードされ、言語 B のデコーダーによってデコードされ、この 2 つが効率的な翻訳作業を行うことができます。
おそらくご想像のとおり、著者はノイズ除去オートエンコーダーを使用して特徴空間を学習しています。彼らはまた、自動エンコーダーに共通の潜在空間 (彼らはこれを整列潜在空間と呼んでいます) を学習させて教師なし機械翻訳を実行する方法も発見しました。
言語におけるノイズ除去オートエンコーダー
著者はノイズ除去エンコーダーを使用して、教師なしの方法で特徴を学習します。彼らが定義した損失関数は次のとおりです:
式 1.0 自動ノイズ除去エンコーダ損失関数
式 1.0 の解釈
I は言語です (この設定では 2 つの言語が存在する可能性があります)。 X は入力、C(x) は x にノイズを追加した後の結果です。ノイズによって作成された関数 C をすぐに取得します。 e() はエンコーダ、d() はデコーダです。最後の項 Δ(x hat,x) は、トークン レベルでのクロス エントロピー エラー値の合計です。入力シーケンスがあり、出力シーケンスが得られるので、各トークンが正しい順序であることを確認したいと思います。したがって、この損失関数が使用されます。これは、i 番目の入力ラベルと i 番目の出力ラベルが比較されるマルチラベル分類と考えることができます。このうち、トークンはそれ以上破壊できない基本単位です。この例では、トークンは単語です。式 1.0 は、ネットワークが出力 (ノイズの多い入力が与えられた場合) と元の影響を受けていない文の間の差を最小限に抑える損失関数です。
□ と ~
□ の記号表現は、私たちが期待する表現です。この場合、入力の分布は言語 l に依存し、損失の平均がとられることを意味します。これは単なる数学的形式であり、操作中の実際の損失 (クロスエントロピーの合計) は通常どおりになります。
この特別な記号 ~ は「確率分布から」を意味します。
この記事ではこの詳細については説明しません。このシンボルについて詳しくは、ディープ ラーニング ブックの記事の第 8.1 章をご覧ください。
ノイズの追加方法
画像の場合はピクセルに浮動小数点数を加算するだけでノイズを追加できますが、言語の場合は他の方法を使用する必要があります。そこで、著者らはノイズを発生させる独自のシステムを開発しました。これらはノイズ関数を C() として示します。文を入力として受け取り、その文のノイズを含むバージョンを出力します。
ノイズを追加するには 2 つの異なる方法があります。
まず、確率 P_wd で入力から単語を単純に削除できます。
次に、次の制約を使用して、各単語を元の位置からシフトできます。
σ は、i 番目のマークのシフトされた位置を表します。したがって、方程式 2.0 は、「トークンは左または右に最大 k 個のトークン位置を移動できる」ことを意味します
著者は、K 値を 3 に、P_wd 値を 1 に設定します。
クロスドメイントレーニング
2 つの言語間の翻訳を学習するには、入力文 (言語 A) を何らかの処理を通じて出力文 (言語 B) にマッピングする必要があります。著者はこのプロセスをクロスドメイントレーニングと呼んでいます。まず、入力文(x)をサンプリングする。次に、前の反復のモデル (M()) を使用して、変換された出力 (y) が生成されます。それらを組み合わせると、y=M(x) が得られます。続いて、上記と同じノイズ関数 C() を使用して y に干渉し、C(y) が得られます。言語 A のエンコーダはこの摂動バージョンをエンコードし、言語 B のデコーダは言語 A のエンコーダの出力をデコードして、C(y) のクリーン バージョンを再構築します。モデルは、式 1.0 と同じクロス エントロピー誤差値の合計を使用してトレーニングされます。
敵対的トレーニングを使用した共通潜在空間の学習
これまでのところ、共通潜在空間を学習する方法については言及されていません。前述のクロスドメイン トレーニングは、同様の空間を学習するのに役立ちますが、モデルに同様の潜在空間を学習させるには、より強力な制約が必要です。
著者は敵対的トレーニングを使用しています。彼らは、各エンコーダーの出力を取得し、エンコードされた文がどの言語に属しているかを予測する別のモデル (ディスクリミネーターと呼ばれる) を使用しました。次に、弁別器から勾配が抽出され、弁別器をだますようにエンコーダがトレーニングされます。これは概念的には標準の GAN (敵対的生成ネットワーク) と何ら変わりません。弁別器は各タイム ステップで特徴ベクトルを受け取り (RNN が使用されるため)、それがどの言語から来たものかを予測します。
それらを組み合わせる
上記の 3 つの異なる損失 (自動エンコーダー損失、変換損失、弁別器損失) を追加すると、すべてのモデルの重みが同時に更新されます。
これはシーケンス間の問題であるため、著者は長期短期記憶ネットワーク (LSTM) を使用します。LSTM ベースのオートエンコーダーが 2 つ (言語ごとに 1 つずつ) 存在することに注意してください。
大まかに言うと、このアーキテクチャをトレーニングするには 3 つの主要な手順が必要です。彼らは反復的なトレーニングプロセスに従います。トレーニング ループのプロセスは次のようになります:
1. 言語 A のエンコーダーと言語 B のデコーダーを使用して翻訳を取得します。
2. 破損した文が与えられた場合に、破損していない文を再生成できるように各オートエンコーダーをトレーニングします。
3. 翻訳を改善し、ステップ 1 で取得した翻訳を破棄して再作成します。このステップでは、言語 A のエンコーダが言語 B のデコーダと一緒にトレーニングされます (言語 B のエンコーダは言語 A のデコーダと一緒にトレーニングされます)。
ステップ 2 とステップ 3 が別々にリストされている場合でも、重みは一緒に更新されることに注意してください。
このフレームワークの開始方法
前述したように、モデルは以前の反復からの独自の翻訳を使用して、翻訳機能を向上させます。したがって、リサイクルプロセスを開始する前に、ある程度の翻訳スキルを身につけておくことが重要です。著者は、FastText を使用して単語レベルの二か国語辞書を学習しています。この方法は非常に簡単で、必要なのはモデルに開始点を与えることだけであることに注意してください。
フレームワーク全体を以下のフローチャートに示します
翻訳フレームワーク全体の高度な作業
この記事では、教師なし機械翻訳タスクを実行できる新しいテクノロジーについて説明します。複数の異なる損失を使用して単一のタスクを改善すると同時に、敵対的トレーニングを使用してアーキテクチャの動作に制約を適用します。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック








![[Python NLTK] 機械翻訳、言語間の簡単な変換](https://img.php.cn/upload/article/000/465/014/170882684444147.jpg?x-oss-process=image/resize,m_fill,h_207,w_330)
pythonNLTK は、機械翻訳を含むさまざまな言語処理機能を提供する強力な自然言語処理ツールキットです。機械翻訳とは、コンピューターを使用して、ある言語のテキストを別の言語のテキストに翻訳することを指します。機械翻訳に PythonNLTK を使用するには、まず NLTK をインストールする必要があります。 NLTK は、次のコマンドを使用してインストールできます。 fromnltk.translate.apiimportNLTKTranslatortranslator=NLTKTranslator() これにより、機械翻訳に translation メソッドを使用できるようになります。 translation メソッドは 2 つのパラメーターを受け取り、最初のパラメーターが変換されます。

Baidu AI インターフェイスが Java プロジェクトにおける機械翻訳の効率を最適化し、改善する方法 はじめに: 人工知能テクノロジーの継続的な発展に伴い、機械翻訳は言語を越えたコミュニケーションの効率を向上させる重要なツールの 1 つになりました。 Baidu AI インターフェイスは、さまざまなアプリケーション シナリオで使用できる便利で効率的な機械翻訳サービスを提供します。この記事では、Java プロジェクトで Baidu AI インターフェイスの機械翻訳効果を最適化および改善する方法を紹介し、対応するコード例を示します。 1. Baidu AI インターフェース機械翻訳の概要最初に機械翻訳を最適化および改善します。

Pythonの機械翻訳技術とは何ですか?グローバル化が加速するにつれ、言語間のコミュニケーションがますます重要になっています。機械翻訳は、ある言語のテキストを別の言語に自動的に変換できる自動テキスト翻訳テクノロジーです。深層学習と自然言語処理技術の継続的な開発により、機械翻訳技術は近年アプリケーションの改善において大きな進歩を遂げています。 Python は効率的なインタープリター言語として、機械翻訳の開発を強力にサポートします。この記事ではPythonでの機械翻訳について紹介します。

PHP は、Web 開発の分野で広く使用されている非常に人気のある開発言語です。機械翻訳は、テキストをある言語から別の言語に自動的に翻訳する新しいテクノロジーです。この記事では、PHP の機械翻訳について紹介し、その基本原理と、機械翻訳を使用して翻訳機能を実装する方法を理解できるようにします。機械翻訳の原理 機械翻訳は人工知能技術であり、その主な原理は、コンピュータを使用してソース言語のテキストを分析および処理し、ターゲット言語の同等のテキストを生成することです。機械翻訳

C++ は常にソフトウェア開発のための強力なツールであり、システム ソフトウェアの開発に限定されず、人工知能の開発にも広く使用されています。機械翻訳は重要なアプリケーションの 1 つです。この記事では、C++ における機械翻訳技術の基本原理、実装方法、現状と将来の展望について詳しく説明します。 1. 基本原則 機械翻訳の基本原則は、コンピュータ プログラムを使用してソース言語 (通常は英語) の文をターゲット言語 (中国語など) の文に変換し、言語を超えたコミュニケーションを実現することです。機械翻訳の基礎は言語学とコンピュータサイエンスです

テクノロジーの進歩は、多くの場合、業界の進化が新しい方向性を見出したことを意味します。翻訳業界も例外ではありません。グローバル化が加速する中、海外と関わる活動を行う際には、言語を超えたコミュニケーションが欠かせません。機械翻訳の出現により、翻訳の応用シナリオは大幅に拡大し、完璧には程遠いものの、人類のバベルの塔への挑戦に向けて確かな一歩を踏み出しました。 51CTOは、ByteDance AILabの機械翻訳責任者であるWang Mingxuanを特別に招待し、長年にわたる機械翻訳の開発について話しました。ルールベースから統計モデルベース、そしてニューラルネットワークベースの機械翻訳に至る機械翻訳の開発は、コンピュータ技術、情報理論、言語学、その他の分野の発展と密接に関連しています。 21世紀に入り、ハードウェアの性能向上やアルゴリズムの最適化により、機械翻訳技術は

中国全土で中国語を話しますが、地域によって方言が少し異なります。たとえば、「胡同」も路地という意味です。「胡同」と言えば昔の北京ですが、南に行くと「胡同」というと昔の北京のことだとわかります。 、それは「ノン」と呼ばれます。このような微妙な地域差が「機械翻訳」のタスクに反映されると、翻訳結果は「本物」として不十分であるように見えますが、現在のほとんどすべての機械翻訳システムは、地域言語(つまり方言)の影響を考慮していません。この現象は世界各地でも同様で、例えばブラジルの公用語はポルトガル語ですが、ヨーロッパのポルトガル語とは地域によって多少の違いがあります。最近、Google は、主に方言翻訳を解決する、少数ショットの地域認識型機械翻訳に使用できる新しいデータセットと評価ベンチマークFRMTをリリースしました。

Java は現在最も人気のあるプログラミング言語であり、その強力なクロスプラットフォーム機能と豊富なクラス ライブラリにより、開発者はさまざまなアプリケーションを簡単に実装できます。機械翻訳技術は人工知能分野の重要な分野であり、その応用はウェブページ翻訳や機械翻訳ソフトウェアなどの分野に浸透し、現代社会に欠かせない翻訳ツールの一つとなっています。この記事では主にJavaで実装されている機械翻訳技術とその応用について紹介します。 1. 機械翻訳技術 機械翻訳技術とは、コンピュータ プログラムを使用して自然言語テキストを自動的に翻訳することを指します。