TensorFlow のための深層学習ライブラリ Kerasを始めよう(翻訳)

TensorFlow のための深層学習ライブラリ Kerasを始めよう(翻訳) AI 人工知能

本記事は、Kerasのドキュメンテーションのトップページを翻訳(適宜意訳)したものです。誤り等あればご指摘いただけたら幸いです。

Kerasとは

Kerasは、Pythonで書かれた、TensorFlowCNTKTheanoの上で実行可能な高水準のニューラルネットワークライブラリです。これは、迅速な実験を可能にすることに重点を置いて開発されました。アイデアから結果へできる限り早く到達することができることは、良い研究をする上で重要です。

次のような深層学習ライブラリを必要とするならば、是非Kerasを使ってみてください。

  • 簡単で素早いプロトタイプを作成可能(ユーザーフレンドリー、モジュール性、拡張性)
  • 畳み込みネットワークと再帰ネットワークの両方、およびこれら2つの組み合わせをサポート
  • CPUとGPU上でシームレスに実行可能

詳細はKeras.ioのドキュメントを参照してください。

KerasはPython 2.7-3.5と互換性があります。

ガイダンスの原則

ユーザーフレンドリー

Kerasは、人間ではなく機械向けに設計されたAPIです。ユーザーエクスペリエンスをフロントとセンターに置きます。Kerasは、負荷を軽減するためのベストプラクティスに従っています。一貫性のあるシンプルなAPIを提供し、一般的な利用事例に必要なアクションの数を最小限に抑え、エラー時に明確で実用的なフィードバックを提供します。

モジュール性

モデルとは、できるだけ制限をかけずにプラグインできる、完全に構成可能なスタンドアロンのモジュールのシーケンス(またはグラフ)として理解されます。特に、ニューラル層、コスト関数、オプティマイザ、初期化スキーム、活性化関数、正規化スキームはすべて、新しいモデルを作成するために結合できるスタンドアロン・モジュールです。

容易な拡張性

新しいモジュールは(新しいクラスや関数として)簡単に追加することができます。また、既存のモジュールは十分な例を提供します。新しいモジュールを簡単に作成できるので、表現力を最大限に発揮させ、高度な研究に適しています。

Pythonで作業する

宣言形式の別個のモデル構成ファイルはありません。モデルはPythonコードで記述されており、コンパクトでデバッグや拡張を容易にします。

30秒でKerasを始めよう!

Kerasのコアとなるデータ構造はモデルであり、層(レイヤー)をまとめる方法です。最も単純なモデルのタイプは、一連のレイヤーであるSequentialモデルです。もっと複雑なアーキテクチャの場合は、Keras functional APIを使用する必要があります。これにより、レイヤの任意のグラフを作成することができます。

これは Sequential モデルです。

from keras.models import Sequential

model = Sequential()

層を重ねるのは .add() のように簡単です。

from keras.layers import Dense, Activation

model.add(Dense(units=64, input_dim=100))
model.add(Activation('relu'))
model.add(Dense(units=10))
model.add(Activation('softmax'))

モデルが良さそうならば、.compile()を使用して学習プロセスを設定します。

model.compile(loss='categorical_crossentropy',
              optimizer='sgd',
              metrics=['accuracy'])

必要に応じて、オプティマイザをさらに構成することができます。Kerasの核となる原則は、ものごとを合理的にシンプルにすることですが、ユーザーが必要なときに完全にコントロールできるようにすることが可能です。(究極の制御はソースコードの容易な拡張性です)

model.compile(loss=keras.losses.categorical_crossentropy,
              optimizer=keras.optimizers.SGD(lr=0.01, momentum=0.9, nesterov=True))

トレーニングデータをバッチで繰り返し処理可能です。

# x_train and y_train are Numpy arrays --just like in the Scikit-Learn API.
model.fit(x_train, y_train, epochs=5, batch_size=32)

また、モデルに手動でバッチを提することもできます。

model.train_on_batch(x_batch, y_batch)

一行でパフォーマンスを評価します。

loss_and_metrics = model.evaluate(x_test, y_test, batch_size=128)

または、新しいデータに対して予測を生成します。

classes = model.predict(x_test, batch_size=128)

質問応答システム、画像分類モデル、神経チューリングマシン、またはその他のモデルを構築するのは高速です。深層学習の背後にあるアイデアは単純です。実装に苦労するはずはありません。

Kerasに関する詳細なチュートリアルについては、次を参照してください。

リポジトリのexamplesフォルダには、より高度なモデルがありますので参考にしてみてください。(メモリネットワークでの質問応答、スタックされたLSTMによるテキスト生成など)