マジセミドライブ
ウェビナー関連のニュースやITサービス&ツールの最新情報を随時配信します。
OSS情報
2020.01.01
【OSS情報アーカイブ】Microsoft Cognitive Toolkit


※当記事に記載されている情報は、古くなっている場合があります。オフィシャルサイトで最新情報をご確認ください。
コンテンツ
「Microsoft Cognitive Toolkit」とは
概要
Microsoft Cognitive Toolkit(CNTK)(マイクロソフトコグニティブツールキット)とは、Microsoftが提供するオープンソースの「統合ディープラーニングツールキット」です。
※CNTKは消極的開発段階に入っており、「ONNX」の利用が推奨されています。
基本説明
「Microsoft Cognitive Toolkit(CNTK)」の有向グラフを介した一連の計算ステップとしてニューラルネットワークを記述することで、「フィードフォワードニューラルネットワーク時系列予測システム」や「畳み込みニューラルネットワーク(CNN)画像分類器」などの一般的な深層学習システムを作成できます。
有向グラフにおいて、リーフノードは「入力値(ネットワークパラメータ)」を表し、他ノードは「行列またはテンソル演算」を表します。
「確率的勾配降下法学習」を実装し、複数GPUとサーバ間で自動微分と並列化を実行します。
CNTKは「消極的」開発段階
■メインリリース終了
2021年8月時点で、CNTKは積極的に開発されていません。
「Ver2.7リリース」が、CNTKの最後のメインリリースになっています。
バグ修正のためのマイナーリリースが提供される可能性はありますが、以降の新機能開発の計画はありません。
→docs.microsoft.com →cognitive-toolkit →releasenotes →CNTK v2.7 Release Notes
■「ONNX」の利用を推奨
「ONNX(Open Neural Network Exchange)」とは「相互運用可能なAIモデルのためのオープンエコシステム」です。
Microsoftが共同開発に参加し、他の多くの開発者がサポートしているプロジェクトです。
「フレームワーク相互運用性および共有最適化のためのオープンソース共有モデル表現」を目指して開発されています。
ONNXを使用すると、開発者は「CNTK」「Caffe2」「MXNet」「PyTorch」などのフレームワーク間でモデルを移動できます。
CNTKモデルを引き続き運用化しようとしている場合は、「ONNXおよびONNXランタイムの利用」が推奨されています。
ユースケース
「Microsoft Cognitive Toolkit」は、複数言語をサポートしクラウドで簡単に使用できるため、さまざまなAIプロジェクトで活用できます。
・ニューラルネットワーク開発
・機械学習
・コグニティブコンピューティング など
オフィシャルサイト情報
■オフィシャルサイト
→docs.microsoft.com →cognitive-toolkit
■GitHub
■ライセンス情報
Microsoft Cognitive Toolkitのライセンスは「MIT License」です。
詳細について、こちらを参照ください。
→github.com →microsoft/CNTK →LICENSE
■動作環境
CNTKは「Linux(64ビット)」「Windows(64ビット)」をサポートしています。
■インストール
→docs.microsoft.com →cognitive-toolkit →Setup CNTK on your machine
同様製品
同様な機能を提供する製品として、次のようなものがあります。
オープンソース製品:「Keras」「TensorFlow」など。
自動計算処理
CNTKでは、計算ネットワークが記述されると、ネットワークパラメータの学習に必要なすべての計算が自動的に処理されます。
「勾配を分析的に導き出す」「バックプロパゲーションのために変数間の相互作用をコーディング」などの作業は必要ありません。
対応言語
CNTKは「Python」「C#」「C++」を利用できます。
また、独自モデル記述言語「BrainScript」を介してスタンドアロンの機械学習ツールとして使用することもできます。
組み込みコンポーネント
・高度に最適化された「多次元の密または疎データ」処理機能
・「CNN」「FNN」「RNN」「バッチ正規化」「Sequence-to-Sequence」の実装機能
・「強化学習」「生成的敵対的ネットワーク(GAN)」「教師あり学習」「教師なし学習」の実装機能
・PythonからGPUに新しいユーザー定義のコアコンポーネントを追加する機能
・自動ハイパーパラメータ調整機能
・大規模データセットに最適化されたリーダー機能 など
リソースの効率的な使用
・高精度並列処理機能—1ビットSGD、複数のGPU(マシン)をサポート
・サイズが大きなモデルをGPUメモリに収めるための「メモリ共有機能」や「組み込みメソッド」
モデル評価API
CNTKは、トレーニングおよび評価を定義するためのAPIを提供しています。
・「Python」「C++」「C#」「BrainScript」でモデルを簡単に評価できる
・評価対象:「独自ネットワーク」「学習者」「リーダー」
・「高レベル」と「低レベル」の両方のAPIを提供
・自動推論形成機能
・「シンボリックリカレントニューラルネットワーク(RNN)ループ」の最適化機能
モデルのパフォーマンス測定機能
CNTKは、構築するニューラルネットワークのパフォーマンスを測定するためのさまざまなコンポーネントを提供します。
・モデルと関連するオプティマイザーからログデータを生成
・トレーニングプロセスを監視
・JavaプログラムからCNTKモデル評価機能を使用可能
「Microsoft Cognitive Toolkit」のパフォーマンス検証機能
概要
機械学習(ML:Machine Learning)モデルのパフォーマンスは、トレーニング時に提供されたものとは異なる「新しいサンプル」をモデルにフィードするときに重要となります。
本番環境ではトレーニング目的でサンプルデータを使用した場合とは異なる入力が得られるため、モデルは新しいサンプルでも適切に機能する必要があります。
そのため、「トレーニング目的で使用したサンプル」とは異なる「新しいサンプルセット」を使用して、機械学習モデルを検証する必要があります。
CNTKでは、以下の検証用データセット作成方法を利用できます。
方法①ホールドアウトデータセット
■概要
「ホールドアウトデータセット」は、ニューラルネットワーク(NN:Neural Network)を検証するためのデータセットを作成するための基本的な方法です。
この方法では、サンプルの1セット(例:20%)を使用してMLモデルのパフォーマンスをテストします。
ホールドアウトデータセットモデルにより、MLモデルをトレーニングするのに十分なデータが確保されると同時に、モデルのパフォーマンスを適切に測定するための適切な数のサンプルを確保できます。
■ポイント
・メインデータセットからランダムなサンプルを選択—トレーニングセットとテストセットの間で均等に分散
・モデルをトレーニングするたびにデータセットの順序がランダム化される必要がある
・深層学習アルゴリズムは乱数ジェネレーターの影響を強く受ける
・トレーニング中にサンプルをNNに提供する順序はパフォーマンスに大きく影響する
■欠点:低信頼性
ホールドアウトデータセット手法を使用することの主な欠点は「低い信頼性」です。
「非常に良い結果が得られることもある」また「悪い結果が得られることもある」など、結果が安定しないケースがあります。
方法②K分割交差検定
■概要
「K分割交差検定」は、「方法①ホールドアウトデータセット」の欠点をカバーするための方法です。
「ホールドアウトデータセット手法」を数回(5〜10回)繰り返すことで、信頼性を高めます。
■実行手順
・[Step1]データセットを「トレーニングセット(80%程度)」と「テストセット(20%程度)」に分割
・[Step2]「トレーニングセット」を使用してモデルをトレーニング
・[Step3]「テストセット」を使用してモデルのパフォーマンスを測定
・[Step4]Step2~3を5〜10回繰り返す
・[Step5]すべてのパフォーマンスメトリックの平均を計算
■メリット
より現実的なトレーニングとテストシナリオを使用しているため、はるかに安定したパフォーマンス測定が可能になります。
■デメリット
深層学習モデルの検証に多くの時間がかかります。
また、CNTKは「K分割交差検定手法」をネイティブサポートしていないため、独自スクリプトを作成する必要があります。
「過適合」と「アンダーフィッティング」
■概要
上記2方法のどちらでも、「トレーニング用データセット」と「検証用データセット」では、メトリックの出力が異なります。
■過剰適合
「過剰適合」とは、「MLモデルがトレーニングデータを良好にモデル化」しますが、「テストデータでは適切に機能せずパフォーマンスが大幅に低下」という現象です。
MLモデルがトレーニングデータから特定のパターンとノイズをある程度学習すると、トレーニングデータから新しいデータに一般化するモデルの能力に悪影響を及ぼします。
■アンダーフィッティング
「アンダーフィッティング」とは、MLモデルがトレーニングデータを適切にモデル化せず、有用な出力を予測できない状況です。
トレーニングを開始直後でモデルの適合度は低くなり、トレーニングが進むにつれてさらに適合度が低くなります。
「Microsoft Cognitive Toolkit」のモデル監視機能
コールバック機能
Microsoft Cognitive Toolkitでは、トレーニング中および検証中に、APIのいくつかの場所でコールバックを指定できます。
トレーナーを作成する際に、監視目的でコールバックを指定できます。
監視ツール
■ProgressPrinter
「ProgressPrinterクラス」は、モデルを監視するための基本的なコンソールベースのロギングを実装します。
・分散トレーニングシナリオでの作業中に特に役立つ
・コンソールにログインしてPythonプログラムの出力を確認できないシナリオでも非常に役立つ
・欠点:時間の経過に伴う「状態確認」や「メトリック進行確認」に不適
■TensorBoard
「TensorBoardProgressWriter」は、上記「ProgressPrinterクラス」の優れた代替手段です。
NNモデルのトレーニングが完了したら、TensorBoardProgressWriterインスタンスでcloseメソッドを呼び出し、「Tensorboard –logdir logs」コマンドで、TensorBoardのログデータを視覚化できます。
参考サイト
→docs.microsoft.com →cognitive-toolkit
→github.com →Microsoft/CNTK
→tutorialspoint.com →microsoft_cognitive_toolkit
この記事のタグ一覧
フリーワード検索
カテゴリー一覧
アクセスランキング
- 🏆ランク1位🏆
【無料で使える】「 プロジェクト管理 」ツールまとめ - 🏆ランク2位🏆
【無料で使える】「 OCR 」ツールまとめ - 🏆ランク3位🏆
【OSS情報アーカイブ】SonarQube - 🏆ランク4位🏆
【無料で使える】「 翻訳 」ツールまとめ - 🏆ランク5位🏆
【無料で使える】「 ドキュメント管理 」ツールまとめ - 🏆ランク6位🏆
【無料で使える】「 RPA 」ツールまとめ - 🏆ランク7位🏆
【ツール紹介】無料で使えるオープンソース「 ヘルプデスク 管理ツール 」まとめ5選 - 🏆ランク8位🏆
【無料で使える】「 マルウェア 」対策ツールまとめ - 🏆ランク9位🏆
【OSS情報アーカイブ】fping - 🏆ランク10位🏆
【ChatGPT使ってみる実験室】 WordPress関数を作って記事リストを出力