2017年8月6日日曜日

Kerasサンプルを実行して動きを眺めてみる。


1.とりあえずサンプルをダウンロードする。

$ wget https://github.com/fchollet/keras/archive/master.zip
$ mv master.zip keras.zip
$ unzip keras.zip
$ cd keras/example

2.サンプルの内容を確認する。

Google翻訳をそのままコピペ。

数えてみると31個もサンプルがあるので、意味はわからないけどまずは機械学習を触ってみてサンプルをいじって遊ぶ程度なら沢山あればなんでもOKですね。
中身なんも分かってないですけど片っ端から動かしてみます。



 Implementation of sequence to sequence learning for performing addition of two numbers (as strings).
 2つの数値の加算を行うためのシーケンス学習へのシーケンスの実装(文字列として)。
 →実行すると、Q,T,赤い□の右隣に数字が出てくる。
  Qが足し算、Tが計算結果、赤い□はなんだろうか。
  正解率は52%あたりで中止した。

 Demonstrates how to write custom layers for Keras.
 Kerasのカスタムレイヤーを作成する方法を示します。
 →6万サンプル、1万テスト、エポック40、正解率は96%
  カスタムレイヤーの作成例らしいのであとで中身を見ようと思います。  

 Trains a memory network on the bAbI dataset for reading comprehension.
 読解のために、bAbIデータセット上のメモリネットワークを訓練する。
 →サンプルデータをダウンロードしてきて何やら解析を始める。
  エポック120あるけどかなり高速で1万サンプルをやっつけていく。
  ラズパイ3だとエポック1つ処理するのに30秒、つまり1時間かかるので中止。

 Trains a two-branch recurrent network on the bAbI dataset for reading comprehension.
 読解のために、bAbIデータセット上の2つの分岐の反復的なネットワークを育成する。
 →サンプルデータをダウンロードしてきて解析を始める。
  エピック40あってラズパイ3ではつらいので中止。
  認識率は20%くらいと低いようだ。

 Trains a simple deep CNN on the CIFAR10 small images dataset.
 CIFAR10の小さな画像データセットでシンプルな深いCNNを学習します。
 →サンプルデータをダウンロードして解析を始める。
  Using real-time argumantation.というのが表示される。
  中止もすんなり受け付けてくらないので他と何か違うらしい。

 Visualization of the filters of VGG16, via gradient ascent in input space.
 VGG16のフィルタのビジュアライゼーション。
 →レイヤーの数がかなりある。進行状況の表示も他のと異なっていてCurrent Loss valueが逐一表示されて、Processingを200回繰り返しやるみたいです。1つくらい最後までやってみようと

 Demonstrates the use of a convolutional LSTM network.
 畳み込みLSTMネットワークの使用を示します。

 Deep Dreams in Keras.
 ケラスの深い夢。

 Trains a convolutional stack followed by a recurrent stack and a CTC logloss function to perform optical character recognition (OCR).
 畳み込みスタックとそれに続く反復スタックとCTCログ損失機能をトレーニングし、光学式文字認識(OCR)を実行します。

 Trains a Bidirectional LSTM on the IMDB sentiment classification task.
 IMDBセンチメント分類タスクで双方向LSTMを訓練する。

 Demonstrates the use of Convolution1D for text classification.
 テキスト分類のためのConvolution1Dの使用を示す。

 Trains a convolutional stack followed by a recurrent stack network on the IMDB sentiment classification task.
 IMDBセンチメント分類タスクで反復スタックネットワークが後に続く畳み込みスタックを訓練する。

 Trains a FastText model on the IMDB sentiment classification task.
 IMDBセンチメント分類タスクでFastTextモデルをトレーニングします。

 Trains a LSTM on the IMDB sentiment classification task.
 IMDBセンチメント分類タスクでLSTMを訓練する。

 Compares different LSTM implementations on the IMDB sentiment classification task.
 異なるLSTM実装をIMDBセンチメント分類タスクで比較します。

 Generates text from Nietzsche's writings.
 ニーチェの著作からテキストを生成する。

 Implementation of AC-GAN ( Auxiliary Classifier GAN ) on the MNIST dataset
 MNISTデータセットにおけるAC-GAN(Auxiliary Classifier GAN)の実装

 Trains a simple convnet on the MNIST dataset.
 MNISTデータセットで単純なconvnetを学習します。

 Trains a Hierarchical RNN (HRNN) to classify MNIST digits.
 階層型RNN(HRNN)をトレーニングして、MNISTディジットを分類します。

 Reproduction of the IRNN experiment with pixel-by-pixel sequential MNIST in "A Simple Way to Initialize Recurrent Networks of Rectified Linear Units" by Le et al.
 Leらによる "整流された線形単位の再帰的ネットワークを初期化する簡単な方法"における画素単位の連続的なMNISTによるIRNN実験の再現

 Trains a simple deep multi-layer perceptron on the MNIST dataset.
 MNISTデータセットで単純な深層マルチレイヤパーセプトロンを学習します。

 Reproduction of the Net2Net experiment with MNIST in "Net2Net: Accelerating Learning via Knowledge Transfer".
「Net2Net:知識移転による加速学習」におけるMNISTによるNet2Net実験の再現

 Trains a Siamese multi-layer perceptron on pairs of digits from the MNIST dataset.
 MNISTデータセットの数字の対にシャーマンの多層パーセプトロンを訓練する。

 Demonstrates how to use the sklearn wrapper.
 sklearnラッパーの使用方法を示します。

 Trains a Stacked What-Where AutoEncoder built on residual blocks on the MNIST dataset.
 スタックされたWhat-WhereをトレインするAutoEncoderは、MNISTデータセットの残りのブロックに基づいて構築されました。

 Transfer learning toy example.
 転送学習のおもちゃの例。

 Neural doodle.
 神経の落書き。

 Neural style transfer.
 ニューラルスタイルの転送。

 Loads pre-trained word embeddings (GloVe embeddings) into a frozen Keras Embedding layer, and uses it to train a text classification model on the 20 Newsgroup dataset.
 訓練された単語埋め込み(GloVe埋め込み)をフリーズしたKeras埋め込みレイヤーに読み込み、これを使用して20 Newsgroupデータセットのテキスト分類モデルをトレーニングします。

 Trains and evaluate a simple MLP on the Reuters newswire topic classification task.
 ロイターのニュースワイヤトピック分類タスクで簡単なMLPをトレーニングし、評価します。

 Demonstrates how to use stateful RNNs to model long sequences efficiently.
 ステートフルなRNNを使用して長いシーケンスを効率的にモデル化する方法を示します。

 Demonstrates how to build a variational autoencoder.
 バリアントオートエンコーダの構築方法を示します。

 Demonstrates how to build a variational autoencoder with Keras using deconvolution layers.

 デコンボリューションレイヤを使用してKerasを使用してバリアントオートエンコーダを構築する方法を示します。


総論:
 全部のサンプルを動かして率直な印象。
 大量のデータセットがあって、
 学習用途に合わせたレイヤー構成があって、
 学習させるのに大量の処理時間が必要で、
 正解率は学習毎に変わって正解率100%はありえない。

という結論です。
あとディープラーニング自体は画像解析に特化している


詳しく理解してないですが、何を解析するかでどういう解析手法にするか選択するようです。
上記サンプルからわかることは、

 LSTM、GRU :自然言語解析
 CNN    :画像解析
 RNN    :自然言語、画像解析でも利用。亜種が色々。

のようです。

何が効果的か本来は試行錯誤しながら見つけなければいけないと思うのですが、インターネット上で研究成果も色々乗っているわけで、利用者側からすれば詳しいモデル構造を知らなくてもモデルのテンプレを集めておけば、データセット収集で目的の半分は達成できそうな気もする。


参考URL
https://keras.io/ja/



コメントを投稿

Androider