トップ 10 の機械学習フレームワーク

公開: 2017-03-11
目次を見る
1.テンソルフロー
2. カフェ
3. アマゾン機械学習
4.アパッチシンガ
5.マイクロソフトCNTK
6.トーチ
7.アコードネット
8.アパッチ・マハウト
9.テアノ
10.ブレインストーミング

機械学習 (ML) の世界に足を踏み入れるとき、多くの代替案から 1 つのフレームワークを選択することは、威圧的な作業になる可能性があります。 すでに名前に精通しているかもしれませんが、意思決定プロセス中にオプションを評価すると便利です。 機械学習の世界にはさまざまなフレームワーク、ライブラリ、アプリケーション、ツールキット、およびデータセットがあり、特に初心者にとっては非常に混乱する可能性があります。 アプリケーションを構築するために ML フレームワークを選択する際には、一般的な ML フレームワークに慣れている必要があります。 これが、トップ 10 の機械学習フレームワークのリストをまとめた理由です。

1.テンソルフロー

Tensorflow は、さまざまな言語理解と知覚タスクのために Google Brain チームによって開発されました。 このオープンソース フレームワークは、ディープ ニューラル ネットワークと機械学習に関する広範な研究に使用されています。 Google Brain による 2 番目の機械学習フレームワークであり、ほとんどの新しい CPU および GPU と互換性があります。 Gmail、音声認識、Google フォト、さらには Google 検索など、私たちが日常的に使用している人気のある Google サービスの多くには、Tensorflow が搭載されています。

Tensorflow は、データ フロー グラフを使用して複雑な数値タスクを実行します。 数学的計算は、エッジとノードを含む有向グラフを使用して精緻化されます。 これらのノードは、操作を実装するために使用され、データが供給されるエンドポイントとしても機能します。 エッジは、異なるノード間の入力/出力の関連付けも表します。

2. カフェ

Caffe は、より優れた表現、速度、モジュール性を重視して設計された機械学習フレームワークです。 畳み込みニューラル ネットワーク (CNN) を活用して、コンピューター ビジョン/画像分類用に開発されました。 Caffe は、Model Zoo で人気があります。これは、実装にコーディングを必要としない事前トレーニング済みモデルのセットです。

研究開発に適した Tensorflow とは対照的に、アプリケーションの構築に適しています。 テキスト、サウンド、または時系列データを扱うアプリケーションを扱っている場合、Caffe はコンピューター ビジョン以外を対象としていないことに注意してください。 ただし、ハードウェアのホスト上で動的に実行でき、フラグを 1 つだけ使用して CPU と GPU を適切に切り替えることができます。

3. アマゾン機械学習

Amazon は、AML と呼ばれる開発者向けの独自の機械学習サービスを開発しました。 これは、実際にコードをいじることなく、洗練されたハイエンドのインテリジェントな学習モデルを開発するために使用できるツールとウィザードのコレクションです。 AML を使用すると、アプリケーションに必要な予測を、使いやすい API 経由で導き出すことができます。 AML の背後にあるテクノロジーは、Amazon 社内のデータ サイエンティストが Amazon クラウド サービスを強化するために使用しており、拡張性、動的性、柔軟性に優れています。 AML は、Amazon S3、RDS、または Redshift に保存されているデータに接続し、バイナリ分類、回帰、またはマルチクラス分類などの操作を実行して、新しいモデルを作成できます。

4.アパッチシンガ

Apache Singa は主に、モデルの分割とトレーニング プロセスの並列化を使用した分散ディープ ラーニングに重点を置いています。 これは、ノードのクラスター全体で機能するシンプルで堅牢なプログラミング モデルを提供します。 主なアプリケーションは、画像認識と自然言語処理 (NLP) です。

Singa は、直感的なレイヤー抽象化ベースのプログラミング モデルを使用して開発され、一連のディープ ラーニング モデルをサポートしています。 非常に柔軟なアーキテクチャに基づいているため、同期と非同期の両方、さらにはハイブリッド トレーニング メソッドを実行できます。 Singa の技術スタックは、IO、モデル、コアの 3 つの重要なコンポーネントで構成されています。 IO コンポーネントには、ネットワークとディスクへのデータの読み取り/書き込みに使用されるクラスが含まれています。 コア コンポーネントは、テンソル操作とメモリ管理機能を処理します。 モデルには、機械学習モデルに使用されるアルゴリズムとデータ構造が格納されています。

5.マイクロソフトCNTK

CNTK (Cognitive Toolkit) は、Microsoft のオープンソースの機械学習フレームワークです。 CNTK は音声認識分野でより一般的ですが、テキストや画像のトレーニングにも使用できます。 AS CNN、LSTM、RNN、Sequence-to-Sequence、Feed Forward などのさまざまな機械学習アルゴリズムをサポートしており、最も動的な機械学習フレームワークの 1 つです。 CNTK は、さまざまな CPU や GPU など、複数のハードウェア タイプをサポートしています。

互換性は、CNTK のハイライトの 1 つです。 また、最も表現力が高く、使いやすい機械学習アーキテクチャとしても高く評価されています。 CNTK では、C++ や Python などの言語を使用して、組み込みのトレーニング モデルを使用するか、独自のトレーニング モデルを構築できます。

6.トーチ

特に Ubuntu を使用している場合、Torch は間違いなく最も簡単な機械学習フレームワークであり、セットアップしてすばやく簡単に使用できます。 2002 年に NYU で開発された Torch は、Twitter や Facebook などの大手テクノロジー企業で広く使用されています。 Torch は Lua と呼ばれる言語でコーディングされていますが、これは一般的ではありませんが、読みやすく理解しやすい言語です。 Torch の利点のいくつかは、便利なエラー メッセージ、サンプル コードの巨大なリポジトリ、ガイド、および役立つコミュニティを備えた、この使いやすいプログラミング言語に起因する可能性があります。

7.アコード.NET

Accord.NET は、.NET に基づくオープン ソースの機械学習フレームワークであり、科学計算に最適です。 パターン認識、人工ニューラル ネットワーク、統計データ処理、線形代数、画像処理などのアプリケーションに使用できるさまざまなライブラリで構成されています。フレームワークは、インストーラー、NuGet パッケージ、およびソース コードとして利用できるライブラリで構成されています。 Accord.NET には、コードの再利用性と段階的なアルゴリズムの変更を容易にするマトリックス ライブラリがあります。

8.アパッチ・マハウト

Apache Software Foundation による無料のオープン ソース プロジェクトである Apache Mahout は、クラスタリング、分類、協調フィルタリングなどのアプリケーション向けの無料の分散型またはスケーラブルな ML フレームワークを開発することを目的として構築されました。 Mahout では、さまざまな計算操作用の Java コレクションと Java ライブラリも利用できます。

Apache Mahout は、MapReduce パラダイムを使用して Hadoop の上にデプロイされます。 優れたアプリケーションの 1 つは、データを即座に洞察に変えることです。 Hadoop に保存されたビッグ データが接続されると、Mahout は、データ サイエンス ツールがデータセットから意味のあるパターンを見つけるのに役立ちます。

9.テアノ

Theano は、機械学習アルゴリズムで世界的に有名なモントリオール大学で 2007 年に開発されました。 ローエンドの機械学習フレームワークと見なされていますが、柔軟で非常に高速です。 フレームワークによってスローされるエラー メッセージは、役に立たず不可解であることで有名です。 これらは別として、Theano は研究タスクにより適したプラットフォームであり、その点で非常に役立ちます。

これは主に、API ラッパーを Theano に送信するハイエンドの抽象化システムのベース プラットフォームとして使用されます。 一般的なライブラリの例として、Lasagne、Blocks、および Keras があります。 Theano を使用することの 1 つの欠点は、マルチ GPU をサポートするためにいくつかの回避策をいじる必要があることです。

10.ブレインストーミング

ブレインストームは、そのシンプルさと柔軟性を考慮すると、マスターするのが最も簡単な機械学習フレームワークの 1 つです。 これにより、ニューラル ネットワークの操作がより速く、同時に楽しくなります。 完全に Python で記述されている Brainstorm は、複数のバックエンド システムでスムーズに動作するように構築されています。

Brainstorm は、Python を使用する 2 つの「ハンドラー」またはデータ API を提供します。1 つは Numpy ライブラリによる CPU 用で、もう 1 つは CUDA を使用して GPU を活用するためのものです。 手間のかかる作業のほとんどは Python スクリプトによって行われるため、リッチなフロントエンド UI はほとんど存在しません。