TensorFlow Foldについて

Googleが、TensorFlow Foldというライブラリーを発表しました。
"Announcing TensorFlow Fold: Deep Learning With Dynamic Computation Graphs"
(論文は、こちら)

この図の意味について簡単に説明したいと思います、



"computer scientists love "という文は、文字列あるいはwordのSepquence として見ることができます。普通のRNNやLSTMでは、こうしたSequenceとして入力を受け付けます。

ただ、先のSequenceは、文法的な構造を持っています。"computer scientists"が主語(節)で、"love"が動詞、"putting data in trees"が目的語(節)です。

構文の構造は、((Cpmputer scientists) (love ((putting data) (in tree)))) こんな感じですね。
ただ、先の文字列をSequenceとして入力すると、そうした文法構造の情報は、皆、失われます。それでは、文の持つ情報を正しく引き出すことはできません。

と言って、一つの文ごとに、その文法構造に対応したニューラルネットを構築していたのでは、沢山の文を解析するには、沢山のニューラルネットを構築しないといけなくなります。

一つのモデルで、SGDのバッチを回すというやり方だと、個々にモデルが違うような場合には、うまく、バッチの処理ができません。

この図では、次のようなプログラムが中心的な役割を果たしています。キャプチャーのタイミングが悪くて、図が書けていますが、本当は、単純なループです。


先の図と、この図を足したものが、本当のプログラムに近いかな。


先のデータ((Cpmputer scientists) (love ((putting data) (in tree)))) ですが、データの結合がわかりやすいように、色をつけます。(オレンジ (青 Cpmputer scientists) (紫 love ((赤 putting data) (青 in tree)))) 

この構文を解析すると、(青 in tree)が一番深く、次が(赤 putting data)、次が (紫 love ...)、次が (青 Cpmputer scientists)、最上位がオレンジであることが簡単にわかります。

そこで、先のループするプログラムに、一番深いところから順番にデータを置いて、青->赤->紫->オレンジ とループを回すたびに、フルコネクトのネットワークを積み上げていきます。

そうしてできたフルコネクトのネットワークがこれです。



このフルコネクトネットワークは、先の文の文法構造を正確に反映したネットワークになります。多様な構造を持つ文に対して、同じプログラムで、内部にその文に対応するネットワークを動的に生成するということができるということです。

ただ、この例は、単純なループでしたが、このライブラリーの本当の力は、Map, Fold, Reduce といった関数型の手法の導入ですね。これは、とてもスマートです。

ニューラル・ネットワークにFunctional Programmingの手法を導入しようというアイデアは、Colahが出していましね。"Neural Networks, Types, and Functional Programming" "Data.List Recursion Illustrated"

Deep Learningでの自然言語処理のモデルについては、やはり、Colahの次のblogがとても参考になります。"Deep Learning, NLP, and Representations" 是非、ご覧ください。

----------------------------------------------------------------------------------
この間、blogに書いた情報のインデックスをまとめておきました。
----------------------------------------------------------------------------------

「2/28 マルレク「RNNの基礎」参考資料まとめ」http://maruyama097.blogspot.com/2017/02/228-rnn.html
ご利用ください。

2/28 マルレク「RNNの基礎」

第一部 「RNN」

第二部 「LSTM」

 これからです。乞うご期待。

コメント

このブログの人気の投稿

TPU論文の翻訳(1)

可微分ニューラルコンピュータとは何か(1) 概論