グラフ描きが嫌になる

2/28 マルレク「RNNの基礎」の準備を始めているのだが、いろいろとつまづいている。
発端は、ニューラルネットの図を、キレイに描こうと思ったこと。いつもは、パワポで図形を描いているのだが、あまりキレイに書けない。何か他のツールを使ってみようと思った。

で、illustratorの代わりにと、Inkscapeを使おうと思った。ところが、Mac Port経由でのInkscapeをビルドしようとしたのだが、うまくいかない。何時間か無駄にする。

しょうがないので、古いInkscapeバイナリーをインストール。立ち上がるのだが、これがなかなかいうことを聞かない。ファイルに名前をつけて保存すると、必ず落ちる。でも、不幸中の幸いで、ファイルに保存してから落ちているようなので、何度も立ち上げ直して使う。

Inkscapeで書いたのが、最初の図。全然、キレイじゃない。(多分、何本か線が抜けている)パワポで根性入れれば、これくらいはできるかも。手動で訂正しようとしたのだが、線が混みすぎて、動かしたい線が選択できない。これじゃ、パワポと変わらないじゃないか。半日が、不毛にすぎる。

しょうがないので、別の手段を探す。結局、Jupyterで、Matplotlibを使うことに。使い方がわからず、泣きながら作業する。なんとかできたのが、二つ目の図。線の抜けはないはずだが。引数の型がよくわからず、試行錯誤とコピペと根性で作ったので、ループを使っていない。バカなプログラム。これなら、Latexで図を書いても、同じ手間でできたかもしれない。これで、半日。

RNNの解説には、このグラフを最低でも3つは横に並べて、隣り合う隠れ層のノードを結んだグラフが必要なのだが。直線だと、みんな重なっちゃうから、アークで結ぶしかないのだ。これは、僕のスキルだと、手書きになるだろうな。なんか嫌になって来た。

グラフを抽象化したグラフや、ノテーションの工夫や、何よりも、アクティベータをφとした時のφ(WX+b)という式(Wは重み、Xは入力、bはバイアス)の形が大事なのだが、そのことを理解してもらう為には、あとでは必要なくなるのだが、中間のステップが必要だと思う。

いくつか、やりたいことが残っている。

一つは、CNNの働きのビジュアル化。以前、パラパラ漫画を作ったのだが、コンボリューションの一つの層で、500以上もフィルターを、取っ替え引っ替え使うやつのパラパラ漫画を作りたい。大きな直方体の中を、小さな直方体の形をしたフルターが、走り回るやつ。

もう一つは、Back Propargationの可視化。これは、少し難しい。何か、いい方法があればいいと思っている。

1/28マルレクについては、次のblogを参照ください。http://maruyama097.blogspot.jp/2017/01/blog-post_19.html

コメント

このブログの人気の投稿

TensorFlow Foldについて

TPU論文の翻訳(1)

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