ML.NET は、 C#およびF#プログラミング言語用の無料のソフトウェア機械学習ライブラリです。[ 4 ] [ 5 ] [ 6 ]また、NimbusML と併用するとPythonモデルもサポートします。ML.NET のプレビュー リリースには、 n-gram作成などの特徴エンジニアリングの変換、およびバイナリ分類、マルチクラス分類、回帰タスクを処理する学習器が含まれていました。[ 7 ]その後、異常検出や推薦システムなどの追加の ML タスクが追加され、ディープラーニングなどの他のアプローチは将来のバージョンに含まれる予定です。[ 8 ] [ 9 ]
ML.NET は、モデルベースの機械学習分析および予測機能を既存の .NET 開発者に提供します。このフレームワークは .NET Core および .NET Standard をベースに構築されており、Linux、Windows、macOS上でクロスプラットフォームで実行できる機能を継承しています。ML.NET フレームワークは新しいものですが、その起源は 2002 年に Microsoft Research のプロジェクト TMSN ( text mining search and navigation) として始まり、Microsoft 製品の内部で使用されていました。その後、2011 年頃に TLC (the learning code) に改名されました。ML.NET は TLC ライブラリから派生し、親を大幅に上回っていると Microsoft Research の James McCaffrey 博士は述べています。[ 10 ]
開発者は機械学習モデルをトレーニングしたり、サードパーティによって既存のモデルを再利用したりして、オフラインの任意の環境で実行できます。つまり、開発者はフレームワークを使用するためにデータサイエンスのバックグラウンドを持つ必要はありません。オープンソースのOpen Neural Network Exchange ( ONNX )ディープラーニングモデル形式のサポートは、ML.NET のビルド 0.3 から導入されました。このリリースには、Factorization Machines、LightGBM、Ensembles、LightLDA 変換、OVA などのその他の注目すべき機能強化が含まれています。[ 11 ] ML.NET のTensorFlow統合は、0.5 リリースから有効になっています。x86 および x64 アプリケーションのサポートが、行列分解による強化されたレコメンデーション機能を含め、ビルド 0.7 に追加されました。[ 12 ]計画されている機能の完全なロードマップが公式 GitHub リポジトリで公開されています。[ 13 ]
フレームワークの最初の安定版 1.0 リリースは、Build (開発者会議) 2019 で発表されました。これには、モデル ビルダー ツールとAutoML (自動機械学習) 機能の追加が含まれていました。[ 14 ] Build 1.3.1 では、Tensorflow 用の C# バインディング[ 15 ]を使用したディープ ニューラル ネットワーク トレーニングのプレビューと、データベースでのモデル トレーニングを可能にするデータベース ローダーが導入されました。1.4.0 プレビューでは、ARM プロセッサでの ML.NET スコアリングと、Windows および Linux 用の GPU を使用したディープ ニューラル ネットワーク トレーニングが追加されました。[ 16 ]
Microsoft の ML.NET を使用した機械学習に関する論文では、大規模データセットを使用して感情分析モデルをトレーニングし、高い精度を達成できることが実証されました。その結果、Amazon の 9GB のレビューデータセットで 95% の精度が示されました。[ 17 ]
ML.NET CLI は、ML.NET AutoML を使用してモデルのトレーニングを実行し、データに最適なアルゴリズムを選択するコマンドライン インターフェイスです。ML.NET Model Builder preview [ 18 ]は、 Visual Studioの拡張機能で、ML.NET CLI と ML.NET AutoML を使用してGUIを使用して最適な ML.NET モデルを出力します。[ 14 ]
AI の公平性と説明可能性は、近年 AI 倫理学者の間で議論の的となっている。[ 19 ]機械学習アプリケーションにおける大きな問題は、エンドユーザーとアプリケーション開発者がアルゴリズムがどのように決定に至ったのか、あるいはデータセットにバイアスが含まれているのかどうか確信が持てないブラックボックス効果である。[ 20 ]ビルド 0.8 には、マイクロソフト社内で使用されていたモデル説明可能性 API が含まれていた。「全体的な特徴の重要度」と「一般化加法モデル」の追加により、モデルの特徴の重要度を理解する機能が追加された。[ 21 ]
全体スコアに寄与する変数が複数ある場合、各変数の内訳と、最終スコアに最も影響を与えた特徴量を確認できます。公式ドキュメントでは、スコアリング指標をデバッグ目的で出力できることが示されています。モデルのトレーニングとデバッグ中に、開発者はライブのフィルタリングされたデータをプレビューおよび検査できます。これは、Visual Studio DataView ツールを使用すると可能です。[ 22 ]
Microsoft Research は、2008 年以来学術機関の研究に使用されてきた人気の高いモデルベースの機械学習フレームワークである Infer.NET がオープンソースとして公開され、ML.NET フレームワークの一部になったと発表しました。[ 23 ] Infer.NET フレームワークは、確率モデルを記述するために確率的プログラミングを使用しており、解釈可能性という利点があります。Infer.NET 名前空間は、ML.NET 名前空間に合わせて Microsoft.ML.Probabilistic に変更されました。[ 24 ]
Microsoft は、Pythonプログラミング言語がデータサイエンティストに人気があることを認識しており、ML.NET の実験的な Python バインディングである NimbusML を導入しました。これにより、ユーザーは Python で機械学習モデルをトレーニングして使用できるようになります。Infer.NET と同様にオープンソース化されました。[ 12 ]
ML.NET では、学習済みモデルをOpen Neural Network Exchange (ONNX) フォーマットにエクスポートできます。[ 25 ]これにより、ML.NET を使用しないさまざまな環境でモデルを使用する機会が生まれます。ONNX.js は Onnx フォーマットで作成された深層学習モデル用の JavaScript クライアントサイドフレームワークであり、これを使用してブラウザのクライアントサイドでこれらのモデルを実行することが可能です。
ML.NET プレビューの展開と同時に、マイクロソフトは、開発者がフレームワークを扱うために必要な技術を理解できるように、無料の AI チュートリアルとコースを展開しました。[ 26 ] [ 27 ] [ 28 ]
時間の経過とともに、追加されたライブラリの利点を利用して、異常検知、レコメンデーションシステム、ディープラーニングなどの他のアプローチといった他のMLタスクも可能になります。
ML.NET ライブラリは新しいものですが、その起源は何年も前に遡ります。2002 年に Microsoft .NET Framework が導入された直後、Microsoft Research は、ソフトウェア開発者が Microsoft 製品やテクノロジーに ML コードを組み込めるようにするために、TMSN ("text mining search and navigation") と呼ばれるプロジェクトを開始しました。このプロジェクトは非常に成功し、長年にわたって Microsoft 社内で規模と使用が拡大しました。2011 年頃に、このライブラリは TLC ("the learning code") に改名されました。TLC は Microsoft 社内で広く使用されており、現在はバージョン 3.10 です。ML.NET ライブラリは、Microsoft 固有の機能が削除された TLC の子孫です。私は両方のライブラリを使ったことがありますが、多くの点でML.NETの方が親ライブラリを凌駕しています。