トップ 10 のディープラーニング フレームワークの比較分析

トップ 10 のディープラーニング フレームワークの比較分析

2016 年が過ぎ、BEEVA Labs のデータ アナリスト Ricardo Guerrero Gomez-Ol 氏が最近 Medium に記事を公開し、最も人気のあるディープラーニング フレームワークをリストアップしました。なぜこのようなインベントリを行うのでしょうか。彼は次のように書いています。「ディープラーニングについて話しているのをよく耳にしますが、どこから始めればよいのでしょうか。今は TensorFlow が最も人気ですよね。Caffe がよく使われていると聞きましたが、難しすぎますか。BEEVA Labs では、さまざまなディープラーニング ライブラリを扱うことが多いので、ディープラーニングの美しい世界に足を踏み入れたばかりの人たちのお役に立てるよう、私たちの調査結果や考えを共有したいと思っています。」

1. テンソルフロー

ディープラーニングについて聞いたことはあっても、あまり深く理解していない人にとって、TensorFlow はお気に入りのディープラーニング フレームワークですが、ここでいくつかの事実を明らかにしておきましょう。 TensorFlow の公式サイトでは、「機械学習のためのオープンソースソフトウェアライブラリ」と定義されていますが、次のように定義するべきだと思います。TensorFlow は、数値計算にデータフローグラフを使用するオープンソースソフトウェアライブラリです。ここでは、TensorFlow を「ディープラーニング フレームワーク」の範囲に含めるのではなく、Theano とともに「グラフ コンパイラ」のカテゴリに含めます。 Udacity のディープラーニング コース (https://www.udacity.com/course/deep-learning–ud730) を修了した後、TensorFlow は非常に優れたフレームワークですが、非常に低レベルであると感じました。 TensorFlow を使用するには、大量のコードを記述する必要があり、何度も車輪の再発明をしなければなりません。そう思っているのは私だけではありません。 Andrej Karpathy 氏は、Twitter でこのことについて何度も不満を述べています。ツイート: TensorFlow でコードを標準化してほしいのですが、低レベルなので、その上のレイヤーに分割しています: Slim、PrettyTensor、Keras、TFLearn... たとえば、OpenAI では TensorFlow を使用していますが、全員が他のフレームワークを好んでいるようで、カスタム コードを書く人もいます。数か月前、私は「Google Experts Summit: TensorFlow、すべての人のための機械学習、Sergio Guadarrama 氏と」に参加しました。 Sergio は TensorFlow を開発したエンジニアですが、カンファレンスでは TensorFlow のデモンストレーションは行いませんでした。代わりに、TensorFlow で動作する高レベル ライブラリ tf.contrib のデモンストレーションを行いました: https://www.tensorflow.org/tutorials/tflearn/。私の見解では、TensorFlow をもっと多くの人に使ってもらいたいのであれば、TensorFlow の使用を簡素化するために、その上にさらに高い抽象化レベルでいくつかのレイヤーを作成する必要があることに社内で気付いたようです。 TensorFlow は Python と C++ をサポートし、CPU と GPU での計算の分散も可能にし、gRPC を使用した水平スケーリングもサポートします。 要約: TensorFlow は素晴らしいですが、なぜ素晴らしいのかを理解する必要があります。すべてを手動で実行して車輪の再発明をしたくない場合は、よりシンプルなライブラリ (たとえば、Keras) を使用できます。

2. テアノ

Theano は最も古く、最も安定したライブラリの 1 つです。私の知る限り、ディープラーニング ライブラリの始まりは Caffe か Theano のどちらかです。 TensorFlow と同様に、Theano は比較的低レベルのライブラリです。そのため、ディープラーニングには適していませんが、数値計算の最適化に適しています。自動関数勾配計算をサポートし、Python インターフェースを持ち、Numpy を統合しているため、一般的なディープラーニングの分野では最初から最もよく使用されるライブラリの 1 つとなっています。 現在でも Theano は問題なく動作しますが、マルチ GPU と水平スケーラビリティをサポートしていないため、TensorFlow の流行の中で忘れ去られ始めています (両者は同じ分野をターゲットにしています)。

3. ケラス

「あなたはケラスを見つけました。」

上記の文は、ドキュメント ページを開いたときに最初に表示される文です。 Keras を初めて発見したときのことを今でも覚えています。当時、私はベルリンのデータサイエンス リトリートで最終プロジェクトに取り組んでおり、そのためにディープラーニング ライブラリの世界に足を踏み入れようと努力していました。始めるのに十分なディープラーニングの知識はありましたが、関数を自分で手動でコーディングしたり、新しいライブラリを調べて学習したりする時間がありませんでした (期限は 2 か月未満で、受講する授業もありました)。それから私はKerasを発見しました。 Keras は構文が非常に明確で、ドキュメントも非常に充実しており (比較的新しいですが)、私がすでに知っている言語である Python をサポートしているため、とても気に入っています。非常にシンプルで使いやすく、指示、機能、各モジュールのリンク方法を直感的に理解できます。 Keras は、Theano および TensorFlow (構成可能) 上で動作する非常に高レベルのライブラリです。さらに、Keras はミニマリズムを重視しており、わずか数行のコードでニューラル ネットワークを構築できます。ここでは、Keras と TensorFlow で同じ機能を実装するために必要なコードを比較できます。

4. ラザニア

Lasagne は Theano 上で動作するライブラリです。その使命は、ディープラーニング アルゴリズムによる複雑な計算を簡素化するとともに、より使いやすいインターフェース (Python でも) を提供することです。これは古いライブラリであり、長い間非常に拡張性の高いツールでしたが、私の意見では、Keras ほど速く開発されていません。どちらも同様の領域をカバーしていますが、Keras の方がドキュメントが充実しており、より完全です。

5. カフェ

Caffe は単に最も古いフレームワークの 1 つというだけでなく、最も古いフレームワークの中でも最も古いものです。 私の意見では、Caffe には非常に優れた機能がありますが、小さな欠点もいくつかあります。もともと汎用的なフレームワークではなく、コンピュータービジョンのみに焦点を当てていましたが、汎用性が非常に優れています。私たちの研究室での実験では、Caffe での CaffeNet アーキテクチャのトレーニング時間は、Keras (Theano バックエンドを使用) よりも 5 倍短くなりました。 Caffe の欠点は、柔軟性が十分ではないことです。工夫したい場合は、C++ と CUDA でプログラミングする必要がありますが、若干の変更を加えることで Python または Matlab インターフェイスを使用することもできます。 Caffe のドキュメントは非常に貧弱です。コードを理解するには、多くの時間を費やして調べる必要があります (Xavier 初期化の用途は何ですか? Glorot とは何ですか?)。Caffe の最大の欠点の 1 つは、そのインストールです。対処すべき依存関係が山ほどあります... Caffe を 2 回インストールしましたが、本当に面倒でした。 しかし、はっきり言って、Caffe はまったく役に立たないわけではありません。 Caffe は、生産準備が整ったコンピューター ビジョン システム向けのツールの分野では誰もが認めるリーダーです。非常に堅牢で、非常に高速です。私のアドバイスは、実験とテストには Keras を使用し、本番環境では Caffe に移行することです。

6. DSSTNE

DSSTNE は Destiny と同じように発音されますが、見過ごされがちな非常に優れたフレームワークです。なぜでしょうか? 他の要因とは別に、このフレームワークは汎用的ではなく、一般的な共通タスク向けに設計されていないことが理由です。 DSSTNE フレームワークは推奨システムという 1 つの機能だけを実行しますが、それを完璧に実行します。 DSSTNE フレームワークは、研究やアイデアのテスト (公式 Web サイトのスローガンより) のためではなく、大量生産のために設計されています。 私たちは BEEVA でいくつかの実験を行いましたが、これは非常に高速なツールであり、非常に優れた結果 (高い平均精度 - mAP) が得られると感じています。この速度を実現するために、DSSTNE フレームワークは GPU 上で実行されますが、これも欠点の 1 つです。この記事で分析した他のフレームワークやライブラリとは異なり、このフレームワークはユーザーが CPU と GPU を自由に切り替えることをサポートしていません。これは一部の試行では役立つかもしれませんが、DSSTNE でそのような試行を行うと、フレームワークによって許可されません。 他には、DSSTNE はまだ十分に成熟したプロジェクトではなく、パッケージ化が厳しすぎる (「ブラック ボックス」) という意見もあります。このフレームワークがどのように機能するかを深く理解したい場合は、ソース コードを見るしかありません。また、ソース コードを見る前に、多くの必要な設定 (「TODO」) を完了する必要があります。同時に、このフレームワークに関するオンラインチュートリアルは多くなく、開発者が独自の操作を試すためのガイドはさらに少ないです。私のアドバイスは、DSSTNE の最新バージョンを確認するには、さらに 4 か月待つことです。 DSSTEN は確かに非常に興味深いプロジェクトですが、まだ成長の余地があると言えます。 また、このフレームワークにはプログラミングスキルは必要ないことも指摘しておきます。 DSSTNE フレームワークは、端末のコマンド ラインを通じて関連する操作を実行します。 これまでのところ、人気があるとわかっているフレームワークやライブラリをあまり使用していないため、より具体的な詳細を説明することはできません。

7. トーチ

この世には毎日多くの戦争が起こっていますが、優れた「戦士」(スペイン語で「ゲレーロ」)は、どの戦争で戦う必要があるのか​​、どの戦争には参加しないことを選択できるのかを知らなければなりません。 Torchは非常に有名なフレームワークです。なぜなら、巨大企業Facebookの人工知能研究で使われているフレームワークがTorchであり、DeepMindもGoogleに買収される前はTorchを使用していたからです(買収後、DeepMindはTensorFlowに切り替えました)。 Torch のプログラミング言語は Lua です。これが先ほど私が「戦争」について述べたことです。ほとんどのディープラーニングプログラミング言語が Python で実装されている現在の傾向では、プログラミング言語として Lua を使用するフレームワークの最大の欠点はこれです。私はこの言語を使ったことがないので、Torch ツールを使いたいのであれば、まず Lua 言語を学んでから Torch を使う必要があることは間違いありません。これは確かに合理的なプロセスですが、個人的には、Python、Matlab、または C++ での実装を好みます。

8. MXネット

mxnet は、Python、R、C++、Julia など、ほとんどのプログラミング言語をサポートするフレームワークの 1 つです。しかし、R 言語を使用する開発者は特に mxnet を好むと思います。なぜなら、Python は依然としてディープラーニング言語の紛れもないリーダーだからです (Python 対 R、私はどちらの側に立つと思いますか? :-p) 正直なところ、これまで mxnet にはあまり注意を払っていませんでした。しかし、Amazon AWS がディープラーニング AMI のライブラリとして mxnet を選択したと発表したことがきっかけで、私は mxnet に注目し始めました。調べなければなりません。その後、Amazon が mxnet をディープラーニングのリファレンス ライブラリとして挙げており、その巨大な水平スケーラビリティを主張していることを知りました。何か新しいことが起こっているような気がして、それをもっとよく知る必要があると思いました。これが、mnxet が 2017 BEEVA 技術テスト リストに含まれている理由です。 複数の GPU へのスケーリングについては少し懐疑的であり、そのような実験の詳細をもっと知りたいのですが、現時点では mxnet についてはまだ懐疑的です。

9. DL4J

私はドキュメントのおかげでこのライブラリを見つけました。当時、私は制限付きボルツマン マシンとオートエンコーダを探していて、DL4J でこれら 2 つのドキュメントを見つけました。ドキュメントは非常に明確で、理論とコード例の両方が含まれています。 DL4J のドキュメントは芸術作品であると言わざるを得ません。他のライブラリは、コードをドキュメント化する際に、そこから学ぶ必要があります。 DL4J の開発元である Skymind 社は、ディープラーニング コミュニティでは Python がリーダーであるものの、ほとんどのプログラマーは Java からスタートしているため、解決策を見つける必要があることに気付きました。 DL4J は JVM と互換性があり、Java、Clojure、Scala にも適しています。Scala の浮き沈みにより、多くの潜在的なスタートアップでも使用されているため、このライブラリを引き続きフォローしていきます。 さらに、Skymind の Twitter アカウントは非常に活発で、最新の科学論文、事例、チュートリアルを常に公開しており、すべての人にフォローを推奨しています。

10. 認知ツールキット

Cognitive Toolkit は以前は CNTK という略称で知られていましたが、最近、Microsoft Cognitive Services の最新版を活用するため、再び Cognitive Toolkit に名前が変更されました。公開ベンチマークでのパフォーマンスから判断すると、このツールは非常に強力で、垂直スクロールと水平スクロールの両方をサポートしているようです。 今のところ、Cognitive Toolkit はあまり人気がないようです。このライブラリの使用に関するブログ投稿、オンラインラボの例、Kaggle のレビューはあまり見かけません。しかし、私にとっては、Microsoft Research が支援するフレームワークがその前進力を強調するのは少し奇妙に思えます。結局のところ、Microsoft Research チームは音声認識の世界記録を破り、人間のレベルに近づいたのです。 プロジェクトの wiki の例を見ると、Python の Cognitive Toolkit の構文が Keras と非常に似ている (Cognitive Toolkit は C++ もサポートしている) ことがわかり、Keras が正しい方法であると考えました (確認したわけではありません)。 結論は

要約する

私の結論は、この分野に参入したいのであれば、まず Python を学ぶべきだということです。この分野では他にも多くの言語がサポートされていますが、最も広く使用されており、最もシンプルなのは Python です。しかし、なぜ Python を選択するのでしょうか。結局のところ、Python は非常に遅いのです。ほとんどのライブラリが命令型言語アプローチではなく、シンボリック言語アプローチを使用しているためです。説明すると、指示を 1 つずつ実行するのではなく、指定したすべての指示に基づいて計算グラフが作成されます。このグラフは内部的に最適化され、実行可能な C++ コードにコンパイルされます。こうすることで、Python による開発速度と C++ による実行速度という両方の長所を活かすことができます。 ディープラーニングへの関心は高まっていますが、アルゴリズムのトレーニングに必要な膨大な計算時間を待つことを望んでいる人はいません (ここでは GPU について話しているのです。CPU のみを使用することは考えないでください)。このため、複数の GPU、複数のマシンにわたる水平スケーリング、さらにはカスタム ハードウェアのサポートが最近勢いを増しています。 ディープラーニングの分野は非常に動的かつ流動的です。私が今言っていることは、2017 年半ばまでに変わる可能性が非常に高いです。

提案

私の提案としては、初心者であれば Keras を使用し、初心者でなくても Keras を使用できるということです。 Kaggle のコンペに参加したことがあるなら、Kaggle の 2 つのスーパースターである Keras と XGBoost に気づいたはずです。

<<:  ビッグデータの発展は、ソフトウェアエンジニアの漸進的な衰退とアルゴリズムエンジニアの台頭を伴うことになる。

>>:  実用的なヒント | 機械学習における不均衡な分類問題にどう対処するか?

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

...

「手を自由にする」は夢ではありません! AI がソフトウェア テストの未来を形作る 5 つの方法...

人工知能は今日最も注目されている流行語であり、その発展により企業や業界は情報に基づいた意思決定を行い...

初心者向けガイド: Numpy、Keras、PyTorch を使用した単純な線形回帰

[[433966]]図 1 に示すように、さまざまな種類の機械学習技術は、さまざまなカテゴリに分類で...

人工知能で最も人気のあるアルゴリズムトップ10をわかりやすく解説

機械学習は業界にとって革新的で重要な分野です。機械学習プログラムに選択するアルゴリズムの種類は、達成...

貢献度が最も高い GitHub コレクションとディープラーニング フレームワーク 16 選

ビッグデータ概要編纂者:Jingzhe、Shijintian、Jiang Baoshangディープラ...

Dynatrace のフルスタック AI モニタリングは、企業が AWS クラウドで飛躍するのを助けます

2018 年 10 月 31 日、上海 - 世界有数のソフトウェア インテリジェンス企業である Dy...

人間と機械のインターフェースは一貫性があり、音声と触覚によるフィードバックを提供する必要がある。

[[187855]]仮想環境を体験し、対話する機能は、仮想現実 (VR) メディアの独自の機能です...

なぜディープラーニングには局所最小値がないのでしょうか?

この記事では主に定量的な質問に答えます。定量的な問題には主に次のような状況が含まれます。 「私の知る...

...

Androidスマートフォンを開くと、画面全体に「Big Model」という3つの単語が表示されます。

最近では、Android メーカーは大きなモデルなしで携帯電話の発表会を開催しようとはしません。 O...

2021年に機械学習を学ぶには?この詳細なガイドがあなたをカバーします!

「すべての人にAI」の時代を迎え、多くの人が機械学習(ML)に何らかの形で触れるようになりました。...

...