投稿

初めにことばありき

旧約の「創世記」の「光よあれ」は、ビッグバンを思わせて、物理学者はちょっと萌えるかもしれないのだが、新約の「ヨハネによる福音書」には、言語学者が喜びそうなフレーズがある。 「初めに言があった。言は神と共にあった。言は神であった。」 僕が知っていたのは、「はじめにことばありき」という訳だったのだが。この口語訳での「言」は、英訳だとこうなっている。 "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

Google機械翻訳に注目!

科学でも技術でも、その発展には、飛躍がある。もちろん、飛躍にも小さいものから大きいものまでいろいろあるのだが。 面白いことに、何かが共鳴するように、いろんな飛躍が、ある時期に集中して起きることがある。 人工知能の分野では、2012年がそうした時期であった。ImageNetの画像認識の国際的コンテストで、CNNを使ったAlexNetが圧勝し、Googleの巨大なシステム DistBeliefが、教師なしでも猫の認識に成功する。それが、2012年だ。 この時から、人工知能ブームが起き、技術的には、ニューラル・ネットワークを用いたDeep Learning技術が花形となる。そして、そうした技術的な達成は、ただちに、ビジネスの世界で応用を見つけ出していく。 現在、各社が取り組んでいる自動運転技術と、Alexa, Google Now, Siri 等のボイス・アシスタント・システムが、コンシューマー向けのAIプロダクトとしては、最も大きなマーケットになるのだが、そこでは、Deep Learning技術のCNNが、中心的な役割を演じている。 ただ、技術の変化は早い。 今また、2012年のブレークスルーに匹敵する目覚ましい飛躍が、AIの世界で起きようとしている。昨年11月にサービスが始まった、Googleの「ニューラル機械翻訳」がそのさきがけである。 そこで使われている技術は、RNN/LSTMと呼ばれるものである。 Googleの新しい機械翻訳のシステムは、LSTMのお化けのような巨大なシステムなのだが、その基本原理を理解することは、誰にでもできる。(今度のマルレクにいらしてください) 2012年に続く、この第二の飛躍が、どのようにビジネスに生かされるかは、まだ未知数だが、必ず、現実の世界で利用されていくようになるだろう。 今の眼で、2012年の「Googleの猫」のDistBeliefを振り返れば、かつては驚嘆して見上げたそのシステムが、ハードワイアーでプログラミングをしていた、かつての「巨大システム」ENIACのようなものに、見える。 Googleの機械翻訳のシステムも、いずれ、スマートフォンに収まるようになるだろう。僕の好きな「翻訳こんにゃく」は、早晩、実現されるだろう。 さらに、変化は加速している。 第三の飛

ダメだこりゃ。LSTMの図を書き直すの巻。

イメージ
マルレクの準備で、図を書いているのだが、文章よりも図の方を先に書いていると、どうも、スライドがパラパラ漫画風になってしまう。ま、それは、楽しいし、そんなに悪いことではないと思っているのだが。 ただ、問題は、書いているうちに、前の図が気に食わなくなることがあること。文章の訂正は簡単だが、図の訂正は手間がかかる。その上、パラパラ漫画になっていると、同じような図が連続してたくさんあって、修正箇所も多くなる。うーん。 今回、でも、どうしても気に食わなくて、というか自分の認識不足があって、図を描き直そうと決心した。 実は、もっと深刻な問題もあって、講演の発表予定順に、スライドを準備しているわけではないので、後からの図の訂正は、実は、すでに完成している大量のスライドの図に影響が出る。自業自得なのだが、さあ、どうするか。 昨日、LSTMの形として、次のものを提示した。 今日になって、この図が、どうしても、気に入らなくなった。真ん中の丸の、「\(C_t\)を生成」の部分が気に入らないのだ。 この丸では、二つの演算が行われている。下から「tanh」の部分と、その上の「+」の部分だ。実際に、「\(C_t\)を生成」しているのは、「+」の部分だけだ。この丸は大きすぎる。 気に入らない、もう一つの理由は、LSTMの内部の演算は、全て、LSTM内部のGateと関連していることがある。図の一番左にあるGateは、この図では、ちょっと仲間外れにされている気がする。そうではなく、このGateは、演算「+」の仲間なのだ、 他にも問題がある。僕が、不都合に気づいたのは、実は、この図はLSTMの展開形なのだが、それをループを含む再帰形で表そうとして、うまくいかなかったからである。 修正版は、こちら。各ユニットが、一つの計算を行い、それぞれがGateに関連づけられているのが、見やすいのがわかると思う。 この展開形を、ループを含む再帰形で表したのが、こちらになる。図中の黒い四角は、データを変えることはないが、変数の添字の時間の部分だけを、一つ進めることを表している。 このように、LSTMの再帰形は、二つのループを含む。それは、LSTMの展開形が、横串二本で貫かれていたことから、想像できること

LSTMの中の三つのGate

イメージ
ここでは、LSTMの中で、Gateがどのようなところに配置されているかを見てみよう。 あらためて、RNNとLSTMの比較をしてみよう。 まずは、RNNから。 隠れ層に、横串が一本通っているが、RNNは単純な三層構造のニューラル・ネットワークが単位であることは、わかると思う。 では、LSTMは、どうであろうか? 横串が、一本増えた。 ただ、この二つの図を見ているだけではわからないことがある。もう少しだけ詳しく、内部の様子を見てみよう。 まずは、RNNから。 基本となるのは、RNNの次のような構成である。この図では、矢印に添えられた文字は、情報の名前ではなく、重みであることに注意されたい。 これまでも、また、これからも繰り返し登場する 重要な式 は、Full Connectなニューラル・ネットワーク一層の出力は、入力をX、重みをW、バイアスをb とした時に、\( \phi ( W \cdot X + b) \) で表されるということである。 RNNでは、隣り合う隠れ層もFull Connectである。ここでは、RNNの隠れ層が受け取る二つの入力 \(h_{t-1}\) と \(x_t\) から、次の式で、出力が計算されている。 $$ h_t = \phi _h ( U \cdot x_t + W \cdot h_{t-1} + b_h $$ ここで、基本式に新たに付け加えられた \(W \cdot h_{t-1}\)が、隣の隠れ層からの入力に対応している。 この関係式を、先のRNNのグラフに書き込んでみよう。次の図が、それである。 出力層では、活性化関数とバイアスが省略されている。 この図に対応するLSTMのグラフは、次のようになる。 似ているようでもあり、似ていないような気もするが。 ただ、先の図には、重要な情報が抜けている。LSTMが、もっともRNNと異なるのは、それが内部にGateを持つということだ。それを図示したのが、次の図である。 LSTMは、内部に三つのGateを持っている。それが、LSTMの振る舞いを、RNNとは大きく変えることになる。