CNTKバージョン2.1
CNTKもバージョンが2.1となりました。2.1に関して機能強化のうち特徴的なのは強化学習のフレームワークとしてdeeprlが提供されています。以下のリンクでリファレンスがあります。一部ですが、Deep Q-Learning以外にもいくつかのロジックが実装されているようです。
•cntk.contrib.deeprl.agent.agent module
•cntk.contrib.deeprl.agent.agent_factory module
•cntk.contrib.deeprl.agent.policy_gradient module
•cntk.contrib.deeprl.agent.qlearning module
•cntk.contrib.deeprl.agent.random_agent module
•cntk.contrib.deeprl.agent.tabular_qlearning module
また、2.0からサポートされていますが、Kerasのバックエンドとして使用できるようになったことで用途が広がっている状況です。
Kerasの例
Kerasの例として【Using Keras and Deep Q-Network to Play FlappyBird】を紹介したいと思います。もともとKerasで作成された、強化学習のサンプルですが、CNTKに移植されています。cntk/Examples/ReinforcementLearning/FlappingBirdWithKerasにコードが公開されています。サンプルを動かしてみます。CNTKのインストールセットアップはRCの時代と変わらないため、こちらの記事を参照ください。
kerasはcntkをactivateしたコマンドラインで下記でインストールできます(最新版にアップグレードしておいた方がよいですので、すでにインストールされている場合は、-Uオプションを付けた方がよいでしょう)
pip install keras
さらに設定ファイル~/.keras/keras.jsonを作成します。Windowsの場合はC:\Users<ユーザ名>.keras.jsonになります。ファイルの内容は以下です。
{
"epsilon": 1e-07,
"image_data_format": "channels_last",
"backend": "cntk",
"floatx": "float32"
}
上記で、kerasの動作が可能になります。下記で動作確認可能です。
・GPU動作の場合(GPUがないと恐ろしく時間がかかります)
https://github.com/fchollet/keras/blob/master/examples/mnist_cnn.py
・GPUが入っていない場合
https://github.com/fchollet/keras/blob/master/examples/mnist_mlp.py
がよいと思います。
次に、FlappingBirdの依存関係をインストールします
pip install pygame
conda install scikit-learn
conda install scikit-image
この状態で、WindowsでもLinuxでも動作可能です。また、GPUで動作しますので、高速な動作も期待できます。
Ubuntu 16.04 LTSで実行
CNTKも2.1になり色々な部分が強化されています。これからの強化学習分野の進化がかなり期待されます。