オープンソースAIエンジン
1. 序章
ほぼ毎週ニュースでAI関連のトピックを見つけることができます。 人気だけでなく、利用できる技術も増えています。 現在、展開とテスト用に、さまざまなフレームワーク、ライブラリ、プラットフォームから選択できます。 これらすべてのオプションを使用すると、ニーズに合ったものを選択するのが難しい場合があります。
2. ケラス
このライブラリは、「機械ではなく人間向けに設計された」ものであり、高度な抽象化を提供します。 TensorFlow2の上に設計されました。 その主な目標は、少なくとも最も一般的なシナリオやケースでは、ユーザーの負荷を軽減するため、最速の実装を提供することです。 また、TheanoやCNTKなどの他のバックエンドフレームワークのラッパーとしても使用できます。
このライブラリの柔軟性により、実世界で強力な範囲のアプリケーションが提供されます。 たとえば、比較的小さなコードでCTスキャンから3D画像分類を実装できます。 YoutubeやNASAなどの大企業は、GPUまたはTPUで低レベルの操作を使用する場合に達成できるスケーラビリティと効率を考慮して、ワークフローのある時点でKerasを使用します。
Kerasには、画像、時系列、およびテキストデータの前処理機能もあります。 さらに、すでにベクトル化されており、簡単なコード例をテストするために使用できる小さなデータセットが組み込まれています。
Kerasは、Pythonの経験があり、ML分野の知識がほとんどない開発者に適しています。 実際のデータセットと実際の問題を使用してニューラルネットワークアーキテクチャを構造化、トレーニング、および改良する方法を簡単に確認できます。
3. OpenNN
Open Neural Networkは、C++で記述された機械学習用のオープンソースライブラリです。 私たちが取り組んでいるプロジェクトに厳しい高性能要件がある場合は、それを使用することを検討する必要があります。
このライブラリは、いくつかのシナリオで使用できます。
- 回帰:年齢に基づいて従業員の給与を見積もる
- 分類:電子メールがスパムであるかどうかを定義する
- 予測:会社の株価を予測する
- 関連付け:特定の製品を購入したために顧客が購入する他の製品を定義する
ライブラリは、高度な分析のためのソフトウェアソリューションとしての地位を示しています。 モデルの構築とテストに使用できる5つの主要なクラスがあります。データセット、ニューラルネットワーク、トレーニング戦略、モデル選択、テスト分析です。 これらの各クラスを開始するためのチュートリアルを簡単に見つけることができます。
このライブラリは、C++コードとMLの基本的な知識に精通している開発者に推奨されます。
4. DL4J
Javaが依然として世界で最も使用されているプログラミング言語の1つであることを考えると、Javaでライブラリを作成することは理にかなっています。
Deep Learning for Javaは、JVM用のオープンソースの分散型ディープラーニングライブラリです。 内部的には、計算はC、C ++、およびCudaで実行されます。 これに加えて、 ApacheSparkやHadoopなどの分散コンピューティングフレームワークを使用できるため、CPUとGPUの両方でトレーニングを加速できます。
APIを使用すると、必要なだけ柔軟にディープニューラルネットワークを構築できます。 畳み込みネット、リカレントネット、変分オートエンコーダーなどを使用して、各レイヤーを構造化できます。 このライブラリには、転送学習のテストと最適化、以前にトレーニングしたモデルの読み込み、一部のレイヤーのフリーズ、モデル内のすべてのパラメーターの微調整を行うためのツールも用意されています。
DL4Jの最大の利点の1つは、視覚化UIインターフェイスです。これをSparkで使用して、Webブラウザーでのトレーニングの進行状況をリアルタイムで確認できます。
各API関数の詳細な説明、初心者向けのチュートリアル、視覚化の例は、ドキュメントページにあります。
5. アマゾン機械学習
Amazon MLは、機械学習サービスの最も幅広いセットであると主張しています。 Amazon MLを使用して、機械学習モデルを構築、トレーニング、デプロイできます。
このツールはオープンソースではありませんが、その機能へのアクセスは制限されています。 不正防止、ビジネス予測、画像分析など、幅広い可能性を提供します。
実際のコードの開発を担当していない、このような高レベルの抽象化を備えたプラットフォームを使用すると、1つの欠点が生じます。 機能を使用するにはAPIを使用する必要がありますが、新しい機械学習アルゴリズムや損失関数など、特定のパラメーターや学習戦略を定義することはできません。
6. Azure Machine Learning Studio
エンドツーエンドのプラットフォームでドラッグアンドドロップインターフェイスを使用する場合は、 AzureMLを使用できます。 この時点で、モデルを構築する際の最大の課題の1つは、関連する機能と、データをどのように表現するかを定義することであることは明らかです。
このプラットフォームには、アルゴリズムの選択とハイパーパラメータの調整とともに特徴エンジニアリングがすでに実装されている自動機械学習戦略が付属しています。これらのリソースはすべて、組み込みのDevOpsと組み合わせることで、高速なプロトタイピングが可能になります。と展開。
また、ONNX、TensorFlow、Pytorchなどのオープンソースフレームワークと統合したり、IDEのJupyter Notebookを使用したりすることで、プロジェクトの柔軟性を高めて、より低いレベルの抽象化で作業することもできます。 さらに、PythonまたはRでツールを設定して、AzureMLStudioで動作するようにすることができます。
Amazon MLと同様に、このサービスは無料バージョンで使用できるリソースの数を制限します。
7. GoogleMLキット
Googleは、ニューラルネットワークをAndroidおよびIOSアプリケーションに簡単に統合するためのツールを提供するMLキットを開発しました。
重要なのは、クラウドベースのAPIを使用する場合、GoogleCloudの強力で信頼性の高い機械学習テクノロジーも使用できることです。 さらに、ソフトウェア全体がデバイスのメモリとプロセッサを使用するため、インターネットに接続しなくても動作するオフラインのオンデバイスアプリを開発できます。
2つの主要なAPIがあります。 Vision APIは、画像ラベリング、テキスト認識、オブジェクト検出、およびその他の視覚関連アプリケーション用です。 自然言語APIは、翻訳と返信の提案用です。
モバイルアプリケーションを開発するので、ニューラルネットワークの専門家である必要はありませんが、この分野の知識が必要です。
8. 結論
この記事では、これまでの経験と好みのプログラミング言語がMLテクノロジーの選択に大きく影響することを学びました。 これは、モデルの開発プロセスにおける望ましい柔軟性とともに、正しく選択することを可能にします。
背景に上記の言語が含まれていない場合は、コードの特異性を処理せずにソフトウェアに統合できる高レベルのツールを使用することもできます。
最後に、人工知能の基本を知ることで、フレームワークとツールの範囲が広がります。ハイパーパラメータを調整して、より速く、しかも正確なトレーニングを取得する方法がわかるからです。