投稿

RNNでの φ ( WX + b ) の応用

イメージ
前回、次のようなグラフの表記法を導入した。 大きな流れは分かりやすくなるのだが、実際に、どのような処理がなされているのかは、この表記ではわからない。その点では、TensorFlowでのグラフ表記の方が、細かいところまでよくわかった。 このTensorFlowのグラフが表しているのは、フルコネクトのニューラルネットのある層の出力は、 φ ( WX + b ) という形で表せるということである。ここに φ は、その層の活性化関数、 W  はその層の重み、 b  はその層のバイアス、 X  はその層への入力である。 この計算式  φ ( WX + b )  は、とても基本的なものである。 ここでは、復習を兼ねて、三層からなる単純なネットワークの新しいグラフ表記を、この式で表してみよう。それが、次の図である。 内容的には、先の図で、TensorFlowのグラフが表しているものと同じである。ただ、グラフが表しているものを式で表すと、細かなところまではっきりとわかる。これは大事なことで、RNNのような複雑なネットワークでは、グラフだけすますと、肝心のところがわからなくなる。グラフと式を併用するのがいい。もちろん、基本的な情報は、式の方にある。 さて、今日の本題だが、RNNのグラフ表記を式で表してみようと思う。それが、次の図である。 出力層の式は同じだが、隠れ層の式に、ちょっとした変化がある。それは、RNNの隠れ層が、入力層からだけでなく、隣の隠れ層からの入力も受けるので当然のことである。 上の図で、赤い字で書かれた部分が、それである。 RNNでは、隣り合う隠れ層は、フルコネクトでつながっている。隠れ層同士のつながりの重みを W とすれば、隣の隠れ層 h(t-1) から受け取るベクトルは、 W と h(t-1) をかけたものになる。それは、隠れ層が、重み U でフルコネクトでつながっている入力層 x(t) から受け取るベクトルが、 U と x(t) をかけたものになるのと同じことである。 こうして、RNNの隠れ層が外から受け取るベクトルは、入力層からくるベクトルに、隠れ層からくるベクトルを足したものだと考えればいいことになる。

Sequence to Sequence

イメージ
ここでは、RNNがなぜ " Sequence to Sequence " のNeural Network と呼ばれるのかを説明しようと思う。 まず、RNNのグラフを見やすく表現し、以下の議論を分かりやすくするために、グラフの表記を少し変えてみよう。 入力層・隠れ層・出力層の三層からなる単純なネットワークを考えよう(次の図の上)。 これを、TensorFlowのグラフで書けば次のようになる(次の図の中)。ここでは、ニューラル・ネットワークの基本的な計算式 φ( WX + b ) が、明示的に図示されている。 新しい表記は、このグラフの細部を省略したものだ(次の図の下)。 重みのパラメーターの U, V のみを残して、二つのバイアス b も二つの活性化関数 φ も表記上からは消えている。ただ、入力ベクトル x が、パラメーター U の作用を受けて隠れ層のベクトル h を形成し、隠れ層ベクトル h が、パラメーター V の作用を受けて、出力ベクトル o に変換されることは、きちんと表現されている。 こうした表記(ただし、今度は、入力層を下に、出力層を上にしている(次の図の左))を用いると、単純な三層のニューラル・ネットワークを横に並べ、隣り合う隠れ層のノードをフル・コネクトで結んだネットワーク(次の図の右上)は、次の図の右下のように表されることになる。 この図では、パラメーターの U1, U2, U3 も、 V1, V2, V3 も、 W1, W2 も、それぞれ異なっていることに注意しよう。これは、横につなげられたニューラル・ネットワークが、それぞれ異なったパラメーターを持つ、異なったネットワークであることを表している。 ところで、単純なニューラルネットを横につなげたものがRNNではないのだ。 次の図の右の方を見て欲しい。そこには、パラメーターは、 U, V, W の三つしかない。 左の図の U1=U2=U3=U, V1=V2=V3=V, W1=W2=W としたものが、右のグラフである。これが、RNNのグラフになる。 RNNは、同じパラメーターを持つ、同じニューラル・ネットワークを横につなげたものだ。この図では、三つのニューラルネットが横につ

RNNとは何か?

イメージ
最初にRNNとは、どのような形のニューラル・ネットワークなのかを説明しておこう。 入力層・隠れ層・出力層の三層からなる単純な、フル・コネクトのネットワークを考えよう(図右上)。これをユニットとして組み合わせて複雑なネットワークを構成することを考える。 一つの方法は、これを縦に並べることである(図左)。 一つ上に積み上げるごとに、上のユニットの入力層のノードの数を、すぐ下のユニットの出力層のノードの数とを同じにして、重ね合わせれば、どんどん縦に積み重ねることができる。しかも、出来上がったグラフは、自然にフル・コネクトのネットワークになる。 これがDNNである。(正式には、Full ConnectのFeed Forward Network である。) もう一つの方法は、ユニットを横に並べることである。 ただ、横に並べただけでは、一つのネットワークにはならない。そこで、隣り合うユニットの隠れ層のノード同士を、フル・コネクトでつなぐこととする(図右下)。 これがRNNである。 と言いたいところだが、RNNには、ユニットを横につなげる時に、大きな条件が課せられている。それは、横につながるユニットは、同じ形のユニット(それぞれの入力層・隠れ層・出力層のノード数が同じ)でなければならないという条件である。 要するに、RNNとは、同じ形のユニットが、横に「繰り返される」形のネットワークなのである。 ただ、それだけではない。RNNには、もっと強い条件がある。横に繰り返されるのは、「同じ形」のユニットではなく、全く「同じ」ユニット(各ノードの重み、バイアスといったパラメーターも同一)であるという条件である。 このことは、先の図だけでは、少しわかりにくいかもしれない。全く「同じ」ユニットだと言いながら、先の図では、横ならびに「別々」に描かれているから。 そのことは、RNNが、"Recurrent" Neural Network であることと関係している。それについては、別のポストで。

自然言語理解での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を発話したとする。もちろんこ

グラフ描きが嫌になる

イメージ
2/28 マルレク「RNNの基礎」の準備を始めているのだが、いろいろとつまづいている。 発端は、ニューラルネットの図を、キレイに描こうと思ったこと。いつもは、パワポで図形を描いているのだが、あまりキレイに書けない。何か他のツールを使ってみようと思った。 で、illustratorの代わりにと、Inkscapeを使おうと思った。ところが、Mac Port経由でのInkscapeをビルドしようとしたのだが、うまくいかない。何時間か無駄にする。 しょうがないので、古いInkscapeバイナリーをインストール。立ち上がるのだが、これがなかなかいうことを聞かない。ファイルに名前をつけて保存すると、必ず落ちる。でも、不幸中の幸いで、ファイルに保存してから落ちているようなので、何度も立ち上げ直して使う。 Inkscapeで書いたのが、最初の図。全然、キレイじゃない。(多分、何本か線が抜けている)パワポで根性入れれば、これくらいはできるかも。手動で訂正しようとしたのだが、線が混みすぎて、動かしたい線が選択できない。これじゃ、パワポと変わらないじゃないか。半日が、不毛にすぎる。 しょうがないので、別の手段を探す。結局、Jupyterで、Matplotlibを使うことに。使い方がわからず、泣きながら作業する。なんとかできたのが、二つ目の図。線の抜けはないはずだが。引数の型がよくわからず、試行錯誤とコピペと根性で作ったので、ループを使っていない。バカなプログラム。これなら、Latexで図を書いても、同じ手間でできたかもしれない。これで、半日。 RNNの解説には、このグラフを最低でも3つは横に並べて、隣り合う隠れ層のノードを結んだグラフが必要なのだが。直線だと、みんな重なっちゃうから、アークで結ぶしかないのだ。これは、僕のスキルだと、手書きになるだろうな。なんか嫌になって来た。 グラフを抽象化したグラフや、ノテーションの工夫や、何よりも、アクティベータをφとした時のφ(WX+b)という式(Wは重み、Xは入力、bはバイアス)の形が大事なのだが、そのことを理解してもらう為には、あとでは必要なくなるのだが、中間のステップが必要だと思う。 いくつか、やりたいことが残っている。 一つは、CNNの働きのビジュアル化。以前、パラパラ漫画を作ったのだが、コンボリ

宇宙の広さについて

イメージ
地球は広い。いろんな国があり、いろんな人が住んでいる。でも、地球は、広大な太陽系の一部だ。太陽系で地球の隣の惑星の火星にだって、行くのにロケットで半年はかかる。 その太陽系だが、巨大な天の川銀河の隅っこの方に位置している。地球から、銀河の中心にある巨大なブラックホールまで、光のスピードで飛んでいっても、三万年くらいはかかるだろう。隣の銀河であるアンドロメダ銀河に行くには、光速でも250万年はかかる。 宇宙には、こうした銀河が、何十億もある。我々は、この宇宙が、約138億年前に生まれたことは知っているのだが、その大きさをキチンと知っているわけではない。宇宙はもっともっと巨大である。常識的に考えても、我々が目にしている宇宙は、宇宙全体のほんの一部に過ぎない。 ところがだ。常識を超える発見が20世紀になされる。 我々が目にするものは、「物質」である。鳥もヒトも、街も地球も、太陽も銀河系も「物質」からできている。もちろん、宇宙も「物質」で構成されている。と、考えるのは、ある意味自然である。 ところが、そうではないのだ。常識を超える発見というのは、宇宙全体で、こうした「物質」の占める割合は、5%程度に過ぎないという発見である。我々が観測できる銀河全て、いや、我々が想像しうる銀河の全てを合わせても、それは、宇宙の5%以下にしかならないというのだ。 宇宙の残りの95%は、通常の「物質」ではない、「暗黒エネルギー(Dark Energy)」と「暗黒物質(Dark Matter)」からできているらしい。名前は、マガマガしいが、それは、その正体がよくわかっていないからだと思った方がいい。それは、現代の物理学と宇宙論の、現代の科学の最も大きな対象の一つである。 前置きが長くなってしまったのだが、近年、「暗黒エネルギー(Dark Energy)」と「暗黒物質(Dark Matter)」について、興味ふかい理論がいくつか提案されている。以下のポストで、それを紹介したい。

「トランプ政権発足後1週間でアメリカのサイエンスに起きたこと」

「トランプ政権発足後1週間でアメリカのサイエンスに起きたこと」 https://goo.gl/czIdg1   先のポスト「気候データバックアッププロジェクト」に関連して、アメリカ科学界の直近の動きが、よくわかります。 トランプのこうした政策の背景に、トランプ自身のビジネスがあることを指摘した記事がありました。 https://goo.gl/j0EbpS   訳してみました。 ---------- 大統領に当選したトランプは、国内の石炭、石油、ガスの採掘に新たなフロンティアを開く「アメリカ第一」のエネルギー政策を追求することを誓った。同時に、彼は、以前に彼が「悪党」と呼んでいた気候変動と戦う取り組みを、骨抜きにしようとしている。 トランプは個人としてこの分野に投資している。彼の最新の財務情報によると、トランプはShell、Halliburton、Total、Chevronに投資していた。彼の最大のエネルギー投資はBHP Billitonであり、最大1,015百万ドルの株式を保有していることを示す文書がある。 トランプはまた、トランプが完成を望んでいる、問題の多いダコタアクセスパイプラインの資金源であるEnergy Transfer Partners社と Phillips 66社と、利害関係がある。トランプの広報担当者、ジェイソン・ミラー氏は、6月に全株式を売却したと述べているが、これを証明する証拠はない。