投稿

Google翻訳のアーキテクチャー(3) Attention Mechanism

イメージ
新しいGoogle翻訳の元になった論文 新しいGoogle翻訳のシステムは、全く新しいアイデアに基づいてスクラッチから作り上げられたものではない。 その基本的なアイデアは、2016年の5月にarXivに投稿された次の論文に多くを負っている。(Google Brainのチームが、新しいシステムを6ヶ月で仕上げたと言っていることと、符合する。) Bahdanau, D., Cho, K., and Bengio, Y.  “Neural machine translation by jointly learning to align and translate”    https://goo.gl/HZxbNH   「近年、ニューラル機械翻訳として提案されたモデルは、多くの場合、Encoder-Decoderのファミリーに属している。そこでは、ソースの文が固定長ベクトルにエンコードされ、そこからデコーダが 翻訳文を生成する。この論文では、固定長ベクトルの使用が、この基本的なEncoder/Decoderアーキテクチャの性能を改善する上でのボトルネックになっていると推論し ... 」 先に見た、Ilya Sutskever らの翻訳システムでは、翻訳されるべき文は、Encoderで、一旦、ある決まった大きさの次元(例えば8000次元)を持つベクトルに変換される。このベクトルからDecoderが翻訳文を生成する。入力された文が、長いものであっても短いものであっても、中間で生成され以降の翻訳プロセスすべての出発点となるこのベクトルの大きさは同じままだ。このシステムでは、長くても短くても入力された文全体が、一つの固定長のベクトルに変換されるのだ。 確かに、そこは翻訳の精度を上げる上でのボトルネックになりうる。事実、Ilya Sutskever らのシステムでは、文の長さが長くなるにつれて、翻訳の精度が低下されるのが観察されるという。 それでは、どうすればいいのか? 「モデルに自動的に、ターゲット・ワードを予測するのに重要なソース・文の一部分について、 (ソフト)検索を可能とすることによって、これを拡張することを提案する。その際、これらの部分を明示的にハードセグメントとして形成する必要はない。」 Attention

Google翻訳のアーキテクチャー(2) Encoder / Decoder

イメージ
Google機械翻訳の基本的な論文 Googleの新しいニューラル機械翻訳システムについては、基本的な論文が二つある。 一つが、去年の10月にarXivに投稿された Yonghui Wuらの" Google’s Neural Machine Translation System: Bridging the Gap between Human and Machine Translation "(「Googleのニューラル機械翻訳システム:人間と機械のギャップを橋渡しするもの」)という論文である。 https://arxiv.org/pdf/1609.08144.pdf もう一つが、同じくarXivに11月に投稿された Melvin Johnsonらの" Google’s Multilingual Neural Machine Translation System: Enabling Zero-Shot Translation " (「Googleの多言語ニューラル機械翻訳システム:ゼロ・ショット翻訳が可能に」) https://arxiv.org/pdf/1611.04558.pdf 前者の論文は、新しいGoogle機械翻訳のニューラル機械翻訳システムの発展形としてのアーキテクチャにフォーカスしたもので、後者の論文は、このGoogle機械翻訳を多言語対応させた時に、翻訳システムとして、どのような特徴を持つかを、述べたものである。 Googleニューラル機械翻訳システムの概観 ここでは、まず前者の論文に依拠して、Googleニューラル機械翻訳システムのアーキテクチャーの概観を見てみようと思う。アーキテクチャーの概念図を下に示す。 左側に、LSTMを8段重ねにした Encoder LSTMがあり、右側には、同じくLSTMを8段重ねにした Decoder LSTMがある。 Googleニューラル機械翻訳 (GNMT : Google Neural Machine Translation )システムは、LSTMを利用したシステムであり、全体としては、Encoder-Decoderのアーキテクチャーを採用していることを確認しよう。 EncoderとDecoderの中間に、Attent

Google翻訳のアーキテクチャー(1) ニューラル機械翻訳モデル

イメージ
ニューラル機械翻訳に先行した機械翻訳モデル 新しいGoogle翻訳は、「ニューラル機械翻訳モデル」に基づいている。それに対して、それ以前のGoogle翻訳は、「統計的機械翻訳モデル」に基づいたものだ。ここでは、まず、新しいGoogle翻訳以前の代表的な機械翻訳モデルを振り返り、ニューラル機械翻訳モデルが、どのような問題意識から生まれたのかを考えてみよう。 ルール・ベース機械翻訳モデル (RBMT) ルール・ベースの機械翻訳モデル(Rule-Based Machine Translation)は、古典的なものだ。日本でも、このモデルに基づく多くの翻訳システムが、かつては作られていた。(こんなリストをネットで見つけた。今から20年以上前のものだ。当時の日本は、AIでも機械翻訳でも、先進国だった。 http://aamt.info/english/mtsys.htm  ) 人間が(ここでは日本人としよう)、英語の文章を日本語の文章に翻訳する場合を考えよう。その時、最低限必要になるのは、次の三つだ。 英語・日本語の辞書 英語の文法の知識 日本語の文法の知識(暗黙の知識を含めて) ただ、これで十分かというと、そうではない。英語の構文を日本語の構文に変換する知識が必要となる。 ルール・ベースの機械翻訳は、基本的には、こうした人間の翻訳作業と同じことを、機械にさせようとする。原理はわかりやすい。機械の翻訳のルールは、人間が手で書くので、誤訳があっても、その原因を突き止めることは容易だ。ただ、電子的に利用可能ないい辞書があるかは分野による。と言って、ゼロから辞書を作るのは手間がかかる。その上、文法構造の解析は、意外と難しい。様々の付加的情報を追加する必要がある。ただ、我々は、母語にせよ外国語にせよ、自分の持つ文法知識を、たいていの場合、ルールとして全て書き下せるわけではないのだ。 統計的機械翻訳モデル (SMT) ルール・ベースの機械翻訳モデルが、その精度を上げるのに伸び悩んでいる中、新しい機械翻訳のモデルに注目が集まる。それが統計的機械翻訳モデル (Statistical Machine Translation)である。 代表的な論文は、次のものだと思う。 1990年 Peter F. Br

初めにことばありき

旧約の「創世記」の「光よあれ」は、ビッグバンを思わせて、物理学者はちょっと萌えるかもしれないのだが、新約の「ヨハネによる福音書」には、言語学者が喜びそうなフレーズがある。 「初めに言があった。言は神と共にあった。言は神であった。」 僕が知っていたのは、「はじめにことばありき」という訳だったのだが。この口語訳での「言」は、英訳だとこうなっている。 "In the beginning was the Word, and the Word was with God, and the Word was God." 「言」= "Word" である。はじめにあったのは、Wordであって、Language ではない。だから、新しい口語訳では、普段、あまり馴染みない「言」という訳語を使ったのかも。「初めに語があった」では、なんかしまらないんだろうな。(僕は、「はじめにことばありき」というフレーズの方が好きだ。) ちなみに、「ヨハネによる福音書」は、英語では、"Gospel of John" という。「ジョンのゴスペル」である。でも、そう日本語に訳してしまうと、ジョン・レノンがバラードではなく、ゴスペルを歌っているようで、まずいんだろうな。 「ことば」・「言」・"Word" と訳されている、元々の言葉を調べてみると面白い。 キリスト教のオーソドックスな原典であるラテン語訳聖書では、この部分は、こうなる。 "In principio erat Verbum, et Verbum erat apud Deum, et Deus erat Verbum" 「イン・プリンキピオー・エラト・ウェルブム」 英訳 Word のラテン語の原語は、Verbum である。この単語、英語に直訳すれば、Verbである。「初めに、動詞があった。」 言語学の「従属性文法 (Dependency Grammar) 」理論の人たち、喜びそう。 もっとも、英語のVerbは、元々は、動詞というより広く言葉全体をさしてたらしい。そのことは、「ノンバーバル・コミュニケーション (Non-Verbal Communication) 」というのが、動詞を使わないコミュニケーション

誕生日

今日で70歳になりました。 あ、間違いました。69歳でした。誕生日、今日じゃなかったかも。 ボケているのでご容赦ください。皆さんには、どっちだっていいことでしょうし。  吾十有五而志乎学、    吾十有五にして学に志す  三十而立、        三十にして立つ  四十而不惑、       四十にして惑わず  五十而知天命、      五十にして天命を知る  六十而耳順、       六十にして耳順う  七十而従心所欲不踰矩。  七十にして心の欲する所に従えども矩を踰えず。 孔子の言葉を自分に照らしてみると、どの年代の「教訓」も、ピンとこないのは困ります。 しょうがないので、年齢を大幅にサバ読んで、最初の「吾、十五にして学に志す。」を、これからのモットーにできればいいなと思っています。  「吾、七十にして学に志す。」 周回遅れですね。 ま、いいか。 それに、70になるまで、まだ一年ありますし。 ちなみに、先の孔子の言葉、最新のGoogle翻訳では、こうなります。陽水のTeenagerみたいです。http://j-lyric.net/artist/a00071f/l0000c0.html  私はほぼ10、5と科学、  三十、  フォーティ、当惑、  フィフティ私は、天の使命を知っていました  60私の耳で  越境のない七十コング気まぐれ。 僕は、どっちかというと、孔子より陽水が好きです。 SeventyとSeventeenは、よく似ています。(どこが!) 山手線の新宿駅もKY-Seventyと呼ばれるようになりました。 (JY-Seventeen だよ!) 「心の欲する所に従って」(それより、空気読めよ!)、「奇跡のSeventy」(Seventeenだって!)を準備できればいいと思います。    

形式的文法のChomsky階層とDeep Learning

イメージ
機械は、「何」を理解できるのか? 機械は、「何」を理解・学習できるのか? 画像認識や自動運転技術のような、生物の感覚・運動系の能力の機械での対応物については、機械の能力の評価は、比較的容易である。 問題は、我々の認識能力が、具体的な感覚・運動系の能力にはとどまらないということ。人工知能研究の大きなターゲットの一つは、人間の言語能力である。この分野で、機械は、「何」を理解・学習できるようになったのだろうか? 機械は、「文法」を理解できるのか? 言語能力の領域には、「意味の理解」をはじめとして、未解明の問題がたくさんある。ここでは、問題を限定して、機械は、自然言語のものであれ、人工的に構成されたものであれ、言語の構文規則である「文法」を、理解できるのかという問題を考えてみよう。 おそらく、我々は、この問いに、肯定的に答えることができると、僕は考えている。 既に1990年代に、Hochreiterは、有限状態オートマトンで記述される構文規則を、 RNNが、理解・学習できることを発見していた。 2011年、 Ilya Sutskever らは、5億文字ものテキストをRNNに学習させ、学習したテキストに近い文体の文章を生成して見せた。文法にはかなっているように見えるが、意味をなさない文章だったが。ただ、意味をなさなかったにせよ、文法的には正しそうに見える文章を生成したことに注目できるということだと思う。 2015年、Andrej Karpathy は、Stack Theoryの膨大なドキュメントをRNNに学習させ、一見すると数学の論文に見える文書を生成してみせる。彼は、また、 Linuxの膨大なソースコードをRNNに学習させ、Cのコード(に見えるもの)を生成して見せた。これは、機械が、文脈自由文法であるLaTexやC言語の構文規則を、理解・学習できることを示すものだ。 2016年の、Googleニューラル機械翻訳は、これらの先行する機械の文法理解の能力に関する仕事を、さらに一歩進めるもののように、僕は考えている。 ここでは、こうした流れを振り返ってみよう。 驚くべきRNNの能力 Hochreiterの90年代の発見 LSTMの提案者であるHo

英語と日本語の差異から見るGoogle翻訳

Google翻訳は、どんな点が改善されたのか? ちょっと使ってみると、新しいGoogle翻訳が、飛躍的に能力を向上させたのは、感覚的には、明らかに見える。ただ、Google翻訳が実現した「飛躍」が、どのようなものかを正確に述べるのは、意外と難しい。翻訳の評価でよく利用されるBLEU等のスコアは、翻訳改善の重要な目安にはなるのだが、それは、あくまで量的なものだ。質的な「飛躍」は、その数字には、間接的にしか反映していない。 ここでは、英語と日本語の文法の差異に注目して、その差異が、Google翻訳では、どのように埋められているかを、いくつかの具体例で見てみよう。それらは、日本語・英語翻訳の中心的課題であるにもかかわらず、以前の機械翻訳技術では、うまく扱えていなかった。 また、日本語特有の言い回しでも、大きな改善が見られる。 日英文法の違いを考える 最初に、ChomskyのPrincipals and Parameters 理論に従って、日英文法の特徴的な違いを三つほど取り上げよう。 Head-directionality parameter 一つは、日本語・英語の語順に関するものだ。Head-directionality parameter といわれるものだ。 head-initial  English eat an apple a person happy about her work I live in Takasu village. any book We saw that Mary did not swim head-final  日本語 リンゴを 食べる 彼女の仕事を喜んでいる 人 僕が、高須村 に 住んでいる どんな本 も マリーが泳がなかった のを みた Null-subject Parameter 二つ目は、Null-subject Parameter といわれるもの。日本語は主語の省略を許すが、英語はそれを許さない。 Null-subject Parameter (+) 日本語 Null-subject Parameter (-) English 私達は買い物をした。後でご飯を食べた。 We went shopping. Afterwa