2017年2月6日月曜日

自然言語理解でのRNNの能力について

画像認識の分野でディープラーニングの手法が、これまでにない大きな成功を収めていることは、現在では、多くの人が知っている。

そこで利用されているのは、基本的には、CNN(Convolutional Neural Network)というモデルである。マルレクでもCNNについては、大きな柱として取り上げてきた。

IT技術者を対象に、ディープラーニングの講座をやろうと思ったとき、僕は、「IT技術者は、当面は、Full ConnectとCNNまで理解すれば充分」だと考えてきた。

これまでのマルレクでは、RNNについては、Ilya SutskeverのWikipedia風やNewyork Times風の文章の生成や、Andrei Karpathy の数学論文「もどき」やCコード「もどき」の生成を紹介をしてきた。

そこでは、RNNが構文規則を理解する驚くべき能力を持っていることを紹介しながら、むしろ、「意味」を理解する能力の無さを強調してきた。

次は、RNNが生成したWikipedia風文章。https://goo.gl/cxKzTd から。


次は、RNNが生成した数学論文「もどき」とCのソースである。 https://goo.gl/FodLp5 から。



英語が得意な人、数学が得意な人、C言語が得意な人、よく見て欲しいのだが、これらに意味はない。というか、意味をなさないのだ。支離滅裂な、全くのfakeである。

ただ、どうも、それだけでは済まないようだ。
大事なことは、自然言語の分野でのRNNの利用は、文法的には正しいが、意味のない文章・記号列を生成するだけでないのだということ。

そのことを鮮やかに示したのは、何と言っても、去年の暮れにGoogleが発表した、「ニューラル機械翻訳システム(Neural Machine Translation System)」である。これは、素晴らしい!

今回のマルレクでは、改めて、RNNを取り上げようと思う。

注意すべきなのは、Googleの「ニューラル機械翻訳」で、RNNが、突然、言語の意味理解の能力を獲得したわけではないだろうということ。(もっとも、これは、僕の考えなのだが。)

ある言語Aを母語とするある人が、ある「意味」を込めた文S_Aを発話したとする。もちろんこの文は、A言語の文法にかなっている。機械翻訳システムは、このS_Aを他の言語Bの文S_Bに変換する。もしこの文S_Bが、B言語の文法にかなっていれば、B言語を母語とする人は、この文S_Bに「意味」を見い出す。

翻訳システムは、S_Aの意味をS_Bの意味に翻訳したように見えるのだが、そう見えるのは、送り手と受け手の双方の「人間」が、それぞれの文の意味の解釈を、行なっているからだと思う。

翻訳システムが行なっているのは、A言語の文法的な文字列S_Aを、「対応する」B言語の文法的な文字列S_Bに、書き換えているだけである。そこには、「意味」の介在は必要ではない。(多分)

問題は、「対応」の中身だが。一番、自然な解釈は、A言語の文法とB言語の文法の「対応」である。

更に言えば、もしも、このシステムが、基本的には同一の構成のままで、A言語、B言語だけでなく、多言語間の翻訳が可能であるなら、このシステムは、多くの言語の文法の対応付けを可能とする、より深い共通の文法構造を理解していると考えることができる。これは、興味深いことだ、

ここでは、文の構成と文の担う意味を分離して考えているのだが、ただ、これも相対的な区別だ、文の意味は、文そのものと切り離しては考えられないのだから。

文法の定式化は難しくはない。多くの形式的理論が存在する。「意味」の定式化、あるいは、「意味の形式的理論」が必要なのだと思う。

0 件のコメント:

コメントを投稿