Cognitive Toolkit (CNTK) チュートリアル解説 | AI 導入コンサルティング/研修サービス

TensorFlow    Keras    PyTorch    

Cognitive Toolkit (CNTK) : ONNX 1.0 の発表 – AI のためのオープン・エコシステム (翻訳)

深層学習フレームワーク間のポータビリティを実現する ONNX が 12月5日に v1.0 として正式に製品リリースされました。
Microsoft 社も Cognitive Toolkit の ONNX のサポートを併せて発表していますので、ご参考まで翻訳しておきました。簡単なチュートリアルも用意されています。

[詳細] (12/05/2017)

 

CNTK 2.2 Python API 解説 (7) – 強化学習の基礎: DQN, Policy Gradient / CNTK v2.3 リリース

◆ CNTK (Microsoft Cognitive Toolkit) 2.2 の Python API 解説第7弾です。今回は強化学習がテーマで OpenAI gym の CartPole を題材にして DQN と Policy Gradient アプローチで CNTK で実装します。これはカートにポールのバランスを取ることを教えるタスクです。

◆ CNTK v2.3 リリースノートのハイライトにも言及致しました。

◆ 強化学習は行動主義心理学により触発された機械学習の領域です。ソフトウェア・エージェントが報酬を最大化するために、与えられた環境においてどのように行動を取るべきかに関心を寄せます。ある種の機械学習の設定では正解ラベルへのアクセスを持ちませんので、教師あり学習のテクニックに頼ることはできませんが、相互作用可能な何かがありそしてそれが教えてくれる何某かのフィードバックを得られる場合には、動作をどのように改良するかを学習するために強化学習が利用できます。

[詳細] (11/25/2017)

 

CNTK 2.2 Python API 解説 (6) – 画像分類タスクのための転移学習 (ResNet 18 モデル)

CNTK (Microsoft Cognitive Toolkit) 2.2 の Python API 解説第6弾です。
今回は、画像分類タスクのための転移学習を CNTK で遂行します。

ImageNet で訓練済みの既存のモデルがあるとき、それを (類似した) 別の分野のデータセットに適合させるために、CNTK で転移学習をどのように活用するかを示します。

転移学習は有用なテクニックです。例えば、新規の画像を異なるカテゴリーに分類する必要がありながら、しかし深層ニューラルネットワークをスクラッチからトレーニングするための十分なデータを持たない場合に利用可能なテクニックです。

また、本記事では、ImageNet 画像 (犬、猫、鳥 etc.) で訓練されたネットワークを花、そして動物 (羊/狼) のデータセットに適合させますが、転移学習は翻訳、音声合成、そして他の多くの分野のために既存のニューラルモデルを成功的に適合させてきました。

[詳細] (11/22/2017)

 

CNTK 2.2 Python API 解説 (5) – Seq2Seq Attention モデルによる、音声合成のための書記素-音素変換

CNTK (Microsoft Cognitive Toolkit) 2.2 の Python API 解説第5弾です。
Sequence-to-Sequence Attention モデルによる、北米英語の書記素-音素変換を扱います。(RNN の) Attention メカニズムについての解説記事としても参考になるかと思います。

書記素-音素変換は、入力シークエンスとして単語の文字群を取り、相当する音素を出力する翻訳タスクです。システムは与えられた入力単語をどのように発音するかの明確な表現を生成することを目的とし、音声合成の基礎技術の一つにもなっています。

Sequence-to-Sequence の基礎から Attention モデルの基礎理論を説明した上で、CNTK Python API で Attention モデルを実装してトレーニングします。更に、対話的に入力シークエンスを音素に変換して評価し、attention のヒートマップへの可視化まで遂行します。

[詳細] (11/20/2017)

 

CNTK 2.2 Python API 解説 (4) – GAN, DCGAN 画像生成モデルの実装

CNTK (Microsoft Cognitive Toolkit) 2.2 の Python API 解説第4弾です。
GAN, DCGAN 画像生成モデルを CNTK で実装します。題材は MNIST と Fashion-MNIST を利用します。

生成モデルは深層学習コミュニティにおいて多くの注意を引いてきました。現実世界の観測を模倣する現実的なコンテンツ (画像、音 etc.) を生成可能なモデルを作成することは挑戦的な課題ですが、Generative Adversarial Network (GAN) – 敵対的生成ネットワーク – は有望なアプローチの一つです。Yann LeCun からの Quora の引用 では GAN とそのバリエーションを最近 10 年で最も重要なアイデアとしてサマライズされています。
オリジナルのアイデアが発表された後、様々なバリエーションが公開されてきましたが、特に Deep Convolutional Generative Adversarial Network (DCGAN) が推奨される開始点ともなっています。

本記事ではこれらのオリジナルの GAN と DCGAN モデルを CNTK で忠実に実装しています。

[詳細] (11/14/2017)

 

CNTK 2.2 Python API 解説 (3) – <言語理解> 双方向リカレント・ネットワークでスロットタギング

CNTK (Microsoft Cognitive Toolkit) 2.2 の Python API 解説第3弾です。
言語理解 (スロットタギング) をテーマに、埋め込みを利用した標準的な LSTM モデルをベースに双方向リカレント・ネットワーク (Bidirectional RNN) を CNTK で実装します。

スロットタギング ( = slot tagging) は自然言語処理の課題の一つです。顧客からのクエリ (問い合わせ) 文を分解して得られた、単語群の個々の単語をそれぞれクラスにタグ付けします。クラスはラベルとして提供されます。シンプルですが様々な応用が考えられる課題です。
また、CNTK の RNN モデルにおいてシークエンス処理の理解は必須ですので、(シークエンスも含む) CNTK CTF フォーマットの完全な仕様についても解説しておきました。

[詳細] (11/11/2017)

 

CNTK 2.2 Python API 解説 (2) – マルチノード分散トレーニングの実装と実行 / ベンチマーク

CNTK (Microsoft Cognitive Toolkit) 2.2 の Python API 解説第2弾です。
今回は CNTK の分散トレーニング、特にマルチノード構成における分散トレーニングの解説とベンチマークの結果報告です。CIFAR-10 データセットのための BN Inception, ResNet-110 モデル等を CNTK で分散トレーニングすることによってテスト精度 94.04 % を達成できました。
そして検証の結果、CNTK 分散トレーニングについて幾つかの優位点が確認できました : (1) 実装が非常に簡単で、分散トレーニングへの対応に必要なプログラムの改変は最小限で済みます ; (2) 少なくとも 4 ノードあれば明確にパフォーマンス改善が得られます ; (3) ジョブの投入は MPI をベースにしているのでスムースで手軽です ; (4) 複数のデータ並列アルゴリズムから選択できますので、モデルやデータセットについて最適化できます。

[詳細] (11/06/2017)

 

CNTK 2.2 Python API 解説 (1) – CIFAR-10 CNN モデルの改良 / VGG, ResNet の実装

CNTK (Microsoft Cognitive Toolkit) 2.2 Python API 入門シリーズの続編となります、「解説シリーズ」の第1回の記事です。
畳み込みニューラルネットワークの中級レベルの内容を CNTK で実装してみました。CIFAR-10 を題材に、基本的な CNN モデルを実装した後、ドロップアウト層やバッチ正規化層の追加で改良していきます。更に、VGG スタイルのモデルや ResNet モデルも作成してみます。VGG / ResNet については簡単ですが直感的に分かりやすく説明しておきました。
「解説シリーズ」はチュートリアルの中級 (200 番台) を参考にしていますが、深層学習の基礎知識があり、CNTK 2.2 入門シリーズに多少なりとも目を通していれば問題なく読み通せるかと思います。

[詳細] (10/30/2017)

 

CNTK 2.2 Python API ガイド: 深層学習フレームワーク経験者のために ~ 関数オブジェクト, 分散, TensorBoard ~

CNTK ( Microsoft Cognitive Toolkit ) 2.2 の少しだけ高度な Python API ガイドです。タイトルにもありますように、他の深層学習フレームワークを経験されている方を対象読者の中心として想定しています。
本記事では、CNTK Python API 全体を俯瞰した後、CNTK のデータモデル/プログラミングモデルを紹介します。CNTK のネットワークは関数オブジェクトですが、この関数オブジェクトを上手く利用すれば簡潔で柔軟な実装が可能です。
そして CNTK における深層学習モデリングから配備までの全体の流れをつかむことも一つの主眼としています。また、効率的な組み込みリーダーや分散トレーニングの方法のような CNTK の多くの進んだ特徴も紹介します。TensorBoard も簡単に利用できます。

[詳細] (10/24/2017)

 

CNTK 2.2 Python API 入門 (6) – <総集編> Fashion-MNIST データセットの活用

CNTK (Microsoft Cognitive Toolkit) 2.2 Python API 入門の第6弾 (最終回) です。今回は入門シリーズの総集編という位置づけで、Fashion-MNIST という MNIST 完全互換の新しいデータセットを利用して (復習として) ここまでに CNTK 実装で学んだコンピュータビジョン関連タスクを総ざらいします。
具体的には、Fashion-MNIST データセットを利用して次のコンピュータビジョン関連タスク: 前処理 (CTF フォーマット)、MLP による分類タスク、CNN による分類タスク、そして深層オートエンコーダをおさらいします。
次回からは少しだけレベルアップして、CNTK 2.2 Tutorials (中級~, 200 番台) への橋渡しとなるような CNTK 2.2 Python API の記事を作成していきます。

[詳細] (10/20/2017)

 

CNTK 2.2 Python API 入門 (5) – Autoencoder 基本実装

CNTK ( Microsoft Cognitive Toolkit ) 2.2 Python API 入門の第5弾です。今回の記事で CNTK 2.2 Tutorials の初級編を概ねカバーしたことになります。
今回はオートエンコーダを CNTK で実装します。オートエンコーダは次元削減とノイズ除去の領域で威力を発揮します。基本的な概念を単相のオートエンコーダで学習した後、より本格的な深層オートエンコーダを CNTK で実装します。
前回までの記事で CNTK 2.2 について、Python プログラムで深層学習モデルが構築できること、データとしてテンソルとシークエンスを扱うこと、ビルディング・ブロックが多数用意されていて CNN や LSTM モデルが簡単に構築できること、更に Python ライクな記法で簡潔にモデル定義ができること等々がお分かり頂けたかと思います。
次回からは、CNTK 2.2 Tutorials 中級編への橋渡しとなるような CNTK 2.2 Python API の記事を作成していきます。

[詳細] (10/19/2017)

 

CNTK 2.2 Python API 入門 (4) – LSTM で時系列予測: IoT データによる太陽光発電出力予測

CNTK ( Microsoft Cognitive Toolkit ) 2.2 Python API 入門の第4弾です。今回は LSTM モデルを CNTK で実装して時系列予測問題を扱います。最初に CNTK におけるシークエンスのコンセプトを説明した後、シミュレーションデータによる時系列予測問題を LSTM ネットワークモデルで解いてみます。そして Internet-of-Things (IoT) データ上で LSTM モデルを活用する例として、ソーラーパネルの日々の発電力量を予測してみます。
前回までの記事で CNTK 2.2 について、Python プログラムで深層学習モデルが構築できること、お馴染みのビルディング・ブロックが多数用意されていて畳み込みネットワークが簡単に構築できること、更に Python ライクな記法で簡潔にモデル定義ができること等々がお分かり頂けたかと思います。引き続き、CNTK 2.2 Tutorials への橋渡しとなるような CNTK 2.2 Python API の入門記事を作成していきます。

[詳細] (10/16/2017)

 

CNTK 2.2 Python API 入門 (3) – MNIST 総集編 (CTF / 多項 LR, MLP & CNN)

CNTK (Microsoft Cognitive Toolkit) 2.2 の Python API 入門第3弾です。今回は MNIST 総集編として、CNTK 独自フォーマットでセーブした MNIST データセットを題材にして3種類のモデルを CNTK Python API で実装して多クラス分類問題を解いてみます。
前回までの記事で CNTK 2.2 について、他の深層学習フレームワークと同様に Python プログラムで深層学習モデルが構築できること、深層学習フレームワークでお馴染みのビルディング・ブロックが多数用意されていること、更に Python ライクな記法で簡潔にモデル定義ができること等々がお分かり頂けたかと思います。
引き続き、CNTK 2.2 Tutorials への橋渡しとなるような CNTK 2.2 Python API の入門記事を作成していきます。

[詳細] (10/10/2017)

 

CNTK 2.2 Python API 入門 (2) – 2 クラス分類問題 / Jupyter Notebook の活用

CNTK (Microsoft Cognitive Toolkit) 2.2 の Python API 入門第2弾です。2 クラス分類問題を CNTK Python API で実装したロジスティック回帰と順伝播ネットワーク・モデルで解いてみます。Jupyter Notebook (特に Azure NC 仮想マシン上での Jupyter Notebook) の利用方法についても詳述しました。
先の記事 で CNTK 2.2 では Python API が公開されていて、他の深層学習フレームワークと同様に Python プログラムを作成することで深層学習モデルが構築できることがお分かり頂けたかと思います。
次のステップとして、引き続き、CNTK 2.2 Tutorials への橋渡しとなるような CNTK 2.2 Python API の入門記事を作成していきます。
※ Python と機械学習の基本的な知識を持つ読者を想定していますが、他の深層学習フレームワークの経験があれば問題なく読み通せます。

[詳細] (10/02/2017)

 

CNTK 2.2 Python API 入門 – パッケージ構成、基本演算 & 順伝播型 NN 分類器

CNTK (Microsoft Cognitive Toolkit) 2.2 の Python API 入門記事を作成しました。
CNTK は、現在では普通に Python API が公開されています。つまり、他の深層学習フレームワークと同様に CNTK でも Python プログラムを作成することで深層学習モデルが構築できます。(書きやすいという評判のフレームワークの多くと同様に) CNTK のニューラルネットワークは Python の関数オブジェクトで表現されます。他のフレームワークよりも straightforward にコーディングできますし、ネットワーク定義もトレーニング・ループも非常に簡潔に書くことができます。
しかしながら CNTK の進化の経緯もあり、Python プログラミングに関する情報が少ないように思われますので、CNTK 2.2 Python API の入門記事を作成してみました。CNTK 2.2 Tutorials への橋渡しになることを心掛けて作成しました。

[詳細] (09/25/2017)

 

Cognitive Toolkit (CNTK) 2.2 を Azure Linux GPU 仮想マシンにインストール

Microsoft Cognitive Toolkit (CNTK) 最新版 2.2 が9月15日にリリースされましたので、Azure GPU 仮想マシン (N シリーズ NC 仮想マシン) にインストールして試してみましたので、具体的な手順を掲載しておきました。
Azure では深層学習用に GPU が有効な仮想マシンとして N シリーズの NC 仮想マシンが用意されています。この仮想マシン上にNVIDIA GPU 環境を構築して GPU 対応 CNTK のインストールを行ないます。
Azure も CNTK も初めての方でもインストール可能なように説明しましたので、慣れれば 30 分程度で Python による動作確認までできます。

[詳細] (09/21/2017)

 

※ ClassCat は株式会社クラスキャットの登録商標です。
※ その他、記載されている会社名・製品名は各社の登録商標または商標です。