2020年12月7日月曜日

Attentionを用いたニューラル日英翻訳の実験

【what is this】Deep Learningでの重要度が高まっているAttention機能の仕組みを理解するため、独自作成の和英対訳コーパスを用いて、簡単な翻訳実験を行った。「はやぶさ2」の地球帰還ほどではないにしても、感動的な結果が得られた。極く限られた語彙だけを使う8,000件の日英対訳データの学習後には、例えば「盛夏に大きい赤い花が徐々に咲く」は、「large red flowers bloom gradually in midsummer」と自動翻訳された。

何をしたいのか
 機械翻訳において、Deep LearningでのAttetion機能を理解しようとしていました。なかなか、コードレベルで実験しながら理解できるような情報が見つからなかったのですが、実は、2年前に購入した「ゼロから作る...自然言語処理編」[参考文献1]全412頁の最後の方(P.325〜)に、素晴らしい解説があることに気づきました。これだ!ということです。

日英対訳コーパスを独自に用意する
 しかし、文献1には対訳コーパスを使った例はありませんでした。ならばと、極く簡単なものですが、図1に示すように、「花」に関して、開花時期、大きさ、形、色、密集の度合いなどを組み合わせて(語順も変えて)、約1万件の和英データを自作しました。なお、英訳の方は、図2に示すように、多様な日本語語順に対して、英文では語順は固定的にしてあります。(もちろん、日本語の単語が一つでも違えば、違う英文にしてあります。)


日英対訳コーパスを使った学習の実験
 詳細は省きますが、さっそく、文献1にあったRNN-AttentionのPythonコードを利用させていただき、上記の対訳コーパスで学習させました。図3に示すとおり、最初は検査データに対する正解率が上がりませんでしたが、epoch = 20を越えるあたりから、急速に上昇し、epoch = 27 では、検査データ2,000件(学習用データは8,000件)に対する英訳がすべて正解となりました!これには感動を覚えました。


 一例として、和文「早春に 大きい 白い 花が 密集して 咲く」に対する翻訳状況を図4に示します。例えば、epoch = 5くらいまでは、僅かに、幾つかの単語が英訳されているに過ぎませんが、epoch = 27では、期待どおりの正解「large white flowers bloom densely in early spring」に達しています。



Attention機能のビジュアル化で素晴らしさを実感
 このAttentionの美しさと能力は、以下の図5からも感じとることができます。学習が済んだ状態で、以下の和文を翻訳させた状況です。もちろん、正解が得られています。

 和文:紫の楕円の花が早春に一気に咲く
 正解:oval purple flowers bloom at once in early spring

 ここでは、何ら英語辞書は使っていません。上記のとおり、自前の対訳コーパスだけを使っています。それにも拘わらず、「紫の」「楕円の」「早春に」「一気に」等に対する英単語を自ら発見していることがわかります。驚異的です!



【参考文献】
斉藤康毅:ゼロから作るDeep Learning (2) 自然言語処理編、オライリージャパン、2018年7月

0 件のコメント:

コメントを投稿