私の記事ではエンジニアとして勉強したことや仕事を通して得た知識をアウトプットしていくつもりです。いった言葉がちらつきますが、近頃はGoogle産TensorFlowや国産のChainerをはじめライブラリが群雄割拠の様相を呈しています。これらのライブラリを使えば、難解な数式と向き合わなくとも簡単に機械学習の入り口に足を踏み入れることが可能です。今回はその中でもMicrosoft産の機械学習ライブラリ、CNTKの環境構築~簡単な学習サンプルの作成までを3回に分けて解説して行きたいと思います。「やらないこと」については素晴らしい書籍や記事が存在しますので、そちらを参照してください。勉強しましたが、数学が苦手な人も理解できるように丁寧に解説してくれている良書でした。Toolkit」の略だそうです。元々は違う名称だったようですが現在は改められています。MITライセンスでGitHub上に公開されており、誰でも無償で利用できます。Challenge(ILSVRC)という毎年開催されている画像認識コンペティションにおいて、Microsoftの研究チームが開発したResNetは2015年度1位を獲得しています。2017年1月現在もResNetの派生型が多くの成果を残しており、話題になったLINEの女子高生AI「りんな」もMicrosoft製であるなどMicrosoftと機械学習の親和性は高いと言えます。現在の機械学習ライブラリというとPythonかC++のものが多くCNTKも例に漏れないのですが、今後.NET対応も視野に入っていることが個人的にCNTKを選択する動機として大きいです。詳細に知りたい方は下記の記事などを参照してください。LearningフレームワークCNTKの3つの特徴CNTKのインストールそれでは開発環境を構築していきましょう。はじめに断っておくと現段階でCNTKのインストールは少し面倒です。この辺りChainerはシンプルで素晴らしいのでCNTKも改善されていくと嬉しいですね。64bit以降なら可能と思います。CNTKをインストールするとPython3(を内包するAnaconda)の環境も合わせてインストールが行われます。Python3がインストールされている場合、混乱を避けるため一旦アンインストールを行うことを奨めます。この内容はほぼ公式のセットアップページからの抜粋です。可能ならそちらを読んだほうが良いでしょう。インストーラーをダウンロードします。記事を書いている時点では以下のURLよりダウンロード可能です。1bit-SGD順番にCPUのみ使用CPU+GPUCPU+GPU(1bit-SGD)です。最後の1bit-SGD対応版はライセンス形態に制限があるため、使用の際は原文をよく読んでください。ちなみに1bit-SGDとは勾配の量子化を行うことによりGPUとのデータ通信量を削減する技術なのだそうです。(よくわかってない)GPU版を動かすには別途対応ライブラリのインストールと対応GPUが必要ですが今回は解説しません。onlyを選びましょう。accept」を押すとダウンロードが始まります。CPU版で150MBほどの容量があります。ダウンロードが完了したらCNTKをインストールしたいフォルダへzipを展開します。Filesなどは避けたほうが無難でしょう。展開した想定で進めていきます。環境変数Windows環境変数に”MYCNTKPATH”を作成し、CNTKを展開したフォルダを指定します。コマンドプロンプトなら以下のように書きます。MYCNTKPATH=C:\local\CNTK-2-0-beta7-0-Windows-64bit-CPUインストールスクリプトの実行スクリプトの実行権限を与えるため、コマンドプロンプトからPowerShellを起動します。以下のコマンドを実行してください。remotesignedPowerShellが起動したら、以下のコマンドを実行します。-Execute対話型で実行されるので適宜応答していきます。成功するとPython3(Anaconda*)がインストールされると共に、CNTK実行環境への切り替え用のWindowsバッチファイルが用意されます。C:\local\CNTK-2-0-beta7-0-Windows-64bit-CPU\cntk\scripts\cntkpy34.batCNTKのインストールはここまでで完了です。Pythonと学術計算に便利なライブラリやツールをAll-In-Oneで提供しています。現状、WindowsでPython+機械学習の環境を作成する場合、バイナリの互換性などの問題から使用を推奨します。サンプルの実行インストールが成功しているか、動作確認を行っておきましょう。インストールスクリプトで作成されたバッチファイルをコマンドプロンプトで実行します。このバッチファイルは初回に限らずCNTK実行前に必ず実行する必要があります。activate相当の処理が行われていると思えば良いです。簡単な機械学習サンプルのPythonスクリプトを実行します。FeedForwardNet.pyコンソール上に以下のような出力が行われれば、確認完了です。プログラミング用途を目的としてMicrosoftが開発している無償・オープンソースのエディタです。本家VisualStudioのようなIDEほど重量・高機能ではなく、メモ帳などの軽量テキストエディタほど高速ではないですが、ほどほどの機能・軽量さを両立しているクロスプラットフォームなエディタとして人気を集めています。VSCodeはCNTK公式でも使用を推奨されているので開発エディタとして採用しましょう。公式ページからWindows用インストーラをダウンロードします。ダウンロード後、インストーラを実行し流れに沿ってインストールしましょう。(特に難しいことは無いので割愛します)インストールが完了したら、VSCodeを起動します。Pythonの使用設定VSCodeは各言語への対応を拡張機能で実現しており、標準ではPython用の拡張が組み込まれていません。下の画像のようにウインドウ左部のメニューから拡張機能のアイコンをクリックし、「python」と入力します。上に「Python」というそのままの名前の拡張機能が表示されるので、「インストール」ボタンを押してインストールします。インストール後は「再度読み込む」ボタンを押してVSCodeを再起動します。次に、Pythonの実行環境を指定します。明示的に書かないとCNTKの存在しない環境のPythonを実行してしまうので必ず指定します。メニューから「ファイル」>「基本設定」>「ユーザー設定」を選択すると、画像のような表示になります。分割されたウインドウのうち、左側はデフォルトの設定内容です。これは変更することができず、またするべきでありません。右側のウインドウがユーザー設定となっており、こちらを編集することでデフォルト設定を上書きすることができます。ここで以下の設定を加え、保存します。実際の設定内容は、各々の環境でCNTK用のPython環境になるように適宜変更してください。勘の良い方なら気付くかもしれませんがここで指定するPython環境と、コマンドプロンプトで「cntkpy34.bat」実行後のPython環境はほぼ同一です。最後に、VSCode上から直接スクリプトを実行できるように環境変数PATHに値を追加します。コマンドプロンプトでは以下のように書きます。PATH=%MYCNTKPATH%\cntk\cntk;%PATH%これでVSCodeのセットアップは完了です。【補足】linterについてVSCodeのPython拡張にはファイル保存時にlintを実行する機能も含まれているため、VSCode上でPythonソースファイルを保存するとlinterのインストールを行うように要求されるかもしれません。本題から逸れるためここではその設定内容は割愛しますが、Python標準に従ったコードを書きたいなら導入したほうが良いでしょう(*)。Pythonのlintツールは幾つかあり、チェックの内容が異なります。VSCodeのデフォルトで指定されているpylintは標準でかなり厳しめのチェックが行われるので肌に合わなければflake8やpep8なども検討してください。Codeをインストールし、Windowsで機械学習の開発を行う環境を作りました。次回は実際にCNTKを使用して基本的な画像認識の実装を行っていきます。