[51CTO.com クイック翻訳]ディープラーニングの愛好家であれば、強力なディープニューラルネットワークの開発を推進してきたいくつかの基本的な数学的プリミティブについてすでにご存知かもしれません。多くの人は、基本的な人工ニューラル ネットワークを、重み付けされた接続を持つノードの集まりとして考えたいのですが、ニューラル ネットワークを行列の乗算として考える方が計算上は効率的です。
パブリックドメインの多層パーセプトロンこのタイプのニューラル ネットワークは、フィードフォワード多層パーセプトロン (MLP) です。このモデルのフォワードパスを計算するようにコンピュータに指示すると、行列の乗算と、隠れ層における何らかの非線形性が使用されます。 フィードフォワード多層パーセプトロン (MLP) は、自然に 1 次元ベクトルを形成できるデータに適しています。フィードフォワード型多層パーセプトロン (MLP) は洗練されていますが、データ サンプルが大きい場合、多数のパラメーターを扱うため、2D 画像や 3D ボリュームなどの高次元データを処理するためのあまり効率的なアプローチではありません。 2D 画像のようなデータは、レイヤー間の各ポイントツーポイント接続に独自の重みを与えるのではなく、画像全体のローカル近傍に重みを適用する畳み込み演算に自然に適合します。このタイプの重み共有には、変換の等価性、正則化、パラメータ効率など、多くの利点があります。 畳み込みを視覚化できます。もちろん、開発者がこれらの操作を今すぐ手動で実行することは不可能です。開発者が求めているのは、コンピューターに適した方法で各画像チャネルの畳み込みを迅速に実行できるアルゴリズムです。 畳み込み演算は、今度は要素ごとに実行されますが、行列乗算として再び実装されます。これは、フーリエ変換の畳み込み定理のおかげであり、フーリエ領域での乗算は空間領域での畳み込みに関連していると述べています。しかし、開発者が関心を持っているデータが 1D ベクトルや 2D/3D 画像として表現するのに特に適しているわけではなく、自然にグラフとして表現される場合はどうなるでしょうか? 開発者にとって、グラフとはエッジで接続されたノードの集合です。エッジには重みや方向性などの独自のプロパティがあり、ノードにはフィードフォワード型多層パーセプトロン (MLP) のノードのアクティベーションのような何らかの状態や特徴があることがよくあります。 グラフ ニューラル ネットワークでは、各「レイヤー」はグラフ ノードの状態のスナップショットにすぎず、各ノードとその隣接ノードに関連する操作 (ノード間のエッジであるニューラル ネットワーク接続など) を通じて更新されます。 畳み込みニューラル ネットワークが画像のディープラーニングで達成したのと同じように、グラフ ニューラル ネットワークを使用してグラフ構造データで印象的な結果を達成したい場合、これらのモデルをコンピューターに実装する効率的な方法が必要です。これは多くの場合、概念的なグラフ ニューラル ネットワーク フレームワークを現代のディープラーニングに適したものに変換する方法が必要であることを意味します。 グラフ畳み込みネットワークでは、グラフ ニューラル ネットワークの複雑な概念を別の形式の行列乗算に変換するにはどうすればよいでしょうか。接続を表す 1 つの方法は、隣接行列を使用することです。名前が示すように、隣接行列はグラフ内のどのノードが互いに隣接しているか (つまり、エッジによって互いに接続されているか) を表します。 ただし、グラフ ニューラル ネットワークは任意の構造のグラフ上で動作する必要があるため、各入力データが同じ隣接行列を持つことは期待できません。また、各隣接行列が同じ次元を持つことも期待できません。開発者は、複数のサンプルの隣接行列を対角方向に結合して、すべての接続を一括して記述する大きな行列を作成することで、これを処理できます。 これにより、開発者は異なる構造を持つ複数のグラフを単一のバッチで処理できるようになり、その式によってノード間で重みが共有されることにも気付くでしょう。さらに詳細がいくつかあります。隣接行列は、特徴スケールが完全に変わらないように正規化する必要があります。また、ここで説明した方法以外にもグラフ畳み込み方法がありますが、これはグラフ畳み込みニューラル ネットワーク (GNN) のフォワード パスを理解するための良い出発点です。 これは、グラフ上でディープラーニングに必要なデータ準備と数学的演算を実装するのに十分です。幸いなことに、グラフ構造化データでのディープラーニングへの関心が高まり、グラフでのディープラーニング用のオープンソースライブラリが数多く開発され、研究者やエンジニアにアーキテクチャ、実験、アプリケーションに集中するための認知空間が広がりました。 以下では、7 つの新興グラフ ディープラーニング オープン ソース コード ライブラリを、人気の低いものから高いものの順に紹介します。 7.ジオメトリックフラックス.jlこのリストのエントリのほとんどは Python を使用しており、TensorFlow、PyTorch、または JAX 上に構築されており、グラフ ディープラーニング言語の優位性を反映しています。しかし、その最初のエントリは、Julia プログラミング言語の Flux ディープラーニング フレームワークに基づくグラフ ニューラル ネットワーク用のオープン ソース ライブラリです。 実践者が比較的少ないため、GeometricFlux.jl を放棄したり、Julia をディープラーニングに使用するという考え自体を放棄したくなるかもしれませんが、Julia は Python に比べて多くの技術的利点を持つ成長中の言語です。数年前に DeepMind が TensorFlow を放棄して JAX を採用し始めることや、ほんの数年後に Julia が標準的な機械学習言語として Python に取って代わるようになることを予測するのは難しかったでしょう。 Julia プログラミング言語は、最初から効率的 (Python のように) かつ高速 (C のようなコンパイル言語のように) になるよう設計されました。 Julia 言語は、ジャストインタイム コンパイルを使用して高速実行速度を実現し、読み取り、実行、印刷ループ (REPL) によって対話型および反復型プログラミングを非常に効率的にします。ユーザーは、特に Python を特にインタラクティブな方法 (Jupyter Notebook など) で使用することに慣れている場合、コードを初めて実行するときに少し遅延があることに気付くでしょうが、時間が経つにつれて、特定のワークフローの速度が大幅に向上します。 Julia は科学的プログラミング言語として設計されており、その自動微分パッケージは過去 5 年間で大幅に進化しました。最終結果は、ニューラル微分方程式パッケージ DiffEqFlux.jl で見られるように、DifferentialEquations.jl パッケージなどの研究に重点を置いたライブラリと機械学習機能を組み合わせることができる機能です。同じことは、グラフ理論研究 JuliaGraphs エコシステムや Flux の他の部分と互換性があるように設計された GeometricFlux.jl にも当てはまります。 仕事でグラフ ディープラーニングを使用する場合は、他のプロジェクトで使用しているディープラーニング用の PyTorch ベースのライブラリまたは標準的な作業フレームワークを使用するのが最も効果的です。ただし、ゼロから始める場合や研究を行っている場合は、GeometricFlux.jl は、Julia を使用したグラフ ディープラーニングと微分可能プログラミングへの魅力的なエントリ ポイントを提供します。このライブラリの使いやすい MIT ライセンスにより、開発者が必要とするツールの構築と貢献が容易になり、プロジェクトの GitHub リポジトリ内の未解決の問題の一部を解決することもできます。 6. PyTorch GNNPyTorch GNN ライブラリは、Microsoft のグラフ ディープラーニング ライブラリであり、2020 年 5 月に 0.9.x バージョンがリリースされて以来、現在も活発に開発が進められています。 PyTorch GNN (PTGNN) は、PyTorch ベースのモデルの構築に慣れているユーザーが torch.nn.Module クラスに慣れ、データ ローダーのワークフロー タスクを簡単に処理できるようにすることを目的としています。そしてグラフを PyTorch 対応のテンソルに変換します。 PTGNN は、抽象ニューラル モデルと呼ばれる興味深いアーキテクチャに基づいています。このクラスは、テンソル化や生データの前処理など、グラフ ニューラル ネットワークのトレーニングの全プロセスをカプセル化し、PyTorch の nn.Module クラスから抽出された実際のニューラル モデルのサブクラス T Neural Module も含みます。ニューラル モジュールは AbstractNeuralModel オブジェクトとは独立して使用でき、必要に応じて他の種類の Pytork モジュール/レイヤーと組み合わせることもできます。 PTGNN は GeometricFlux.jl より少し遅れてリリースされ、サブミッション履歴はそれほどアクティブではありませんが、GitHub でのスターとフォークの数は若干多くなっています。同じ許容度の高いオープンソースの MIT ライセンスを持っていますが、貢献できるプロジェクトを探している場合は、多くの自己指導と学習が必要です。 GitHub の「問題」タブでは、何を修正または実装する必要があるかについての指示がほとんど提供されません。 PTGNN には、その構造上、使用や用途に興味深い設計要素がいくつかありますが、開発者がグラフ ニューラル ネットワークの愛好家であり、PyTorch に基づくグラフ ディープラーニング ライブラリを探している場合は、PyTorch Geometric が最適です。 PyTorch Geometric はより成熟しており、約 4 年間開発されており、成熟した成長を続けるユーザーおよび開発者コミュニティを持っています。 5. ジュラフ2020 年 12 月に DeepMind が公開したブログ記事で、関数型微分可能プログラミング ライブラリ JAX に基づくディープラーニング研究ライブラリの強力なエコシステムを開発および使用するための継続的な取り組みについて説明しているのをご存知の方もいるかもしれません。 JAX はもともと、Python (特に NumPy) のシンプルだがほぼ普遍的な自動微分学術プロジェクト Autograd の概念的な発展として開始されました。 Google は、もともと Autograd の開発を担当していたプログラマー数名を採用した後、JAX を開発しました。 JAX は、主に構成可能な関数型プログラミング パラダイムに重点を置いているため、興味深いパッケージです。また、TensorFlow や PyTorch などのニューラル ネットワークに主に焦点を当てるのではなく、「微分可能プログラミング」の一般的な概念に焦点を当てています。 PyTorch と TensorFlow はどちらもニューラル ネットワークの代わりに微分可能な物理モデルの構築に使用できますが、科学的およびその他のプログラミング タスクのための柔軟な微分可能なプログラミングには、最初から JAX の方が適しています。以前は Sonnet のような TensorFlow ベースのツールの構築に多くの時間を費やしていたにもかかわらず、JAX 製品は DeepMind が積極的に採用して開発を開始するきっかけとなるのに十分でした。 DeepMind は、ディープラーニング研究のための JAX ベースのエコシステムを開発する取り組みの一環として、JRaph と呼ばれるグラフ学習ライブラリを開発しました。 このリストにある他のライブラリとは異なり、JRaph は軽量で最小限のグラフ学習ライブラリであり、通常は特定の使用方法を規定していません。 Jraph は、その前身である Graph Nets からいくつかの設計パターンを継承し、TensorFlow と Sonnet を使用して構築されています。つまり、Jraph は、ノード、エッジ、エッジの方向を記述する情報を含むデータ構造である Graph Nets と同じ Graphs Tuple の概念を使用します。 Jraph 処理のもう 1 つの機能は、マスクとパディングを使用して可変構造グラフを処理する場合に特に便利です。これは、このリストにある他のほとんどの Python ライブラリでは問題になりませんが、JAX ではジャストインタイム コンパイルを使用するため必要です。これにより、JAX でグラフを使用することで、JAX が GPU および CPU ハードウェア上で提供する実行アクセラレーションを放棄することがなくなります。 4.スペクトラルSpektral は Tensorflow 2 と Keras をベースにしたグラフィカル ディープラーニング ライブラリで、そのロゴは明らかにパックマンのゴースト ヴィランからインスピレーションを得ています。開発者がグラフディープラーニングのニーズに TensorFlow ベースのライブラリを使用するつもりなら、Spektral が最適な選択肢かもしれません。使い慣れた Keras API にできるだけ近い使い方を維持しながら、使いやすく柔軟に設計されています。つまり、グラフを定義する TensorFlow 対応のスパース行列の形成を処理するための Spetkral データ ローダーが提供されている限り、開発者は便利な model.fit() メソッドを使用してモデルをトレーニングすることもできます。ただし、Spektral の使いやすさにはトレードオフがあり、他の主要なライブラリである DGL や PyTorchGeometric と比較すると、ほとんどのタスクでトレーニング速度が大幅に遅くなります。 Spektral は広く採用されており、TensorFlow を使用してグラフィカル モデルを構築したい開発者にとって魅力的な選択肢となる可能性があります。おそらく Deepmind の GraphNets ライブラリよりもサポートが充実していますが、JAX ベースの JRaph に取って代わられ、段階的に廃止される予定です。 Spektral は Apache 2.0 オープン ソース ライセンスに基づいてリリースされており、定期的にリクエストをまとめるアクティブな問題掲示板があるため、魅力的なディープラーニング ライブラリとなっています。 3. グラフネットGraph Nets は、Deepmind のもう 1 つのグラフ ディープラーニング ライブラリです。これは TensorFlow と Sonnet (別の DeepMind ライブラリ) 上に構築されており、すぐに前述の JAX ベースの JRaph に置き換えられる可能性があります。 Graph Nets には TensorFlow 1 が必要ですが、これはまだ 3 年ほどしか経っていないため、少し時代遅れの感じがします。 GitHub では 737 回のフォークと 5,000 個近くのスターを獲得しており、Google/DeepMind の他のほとんどのライブラリと同様に、Apache 2.0 ライセンスとなっています。 Graph Nets は、Jraph で使用される Graphs Tuple データ構造から生まれました。 Graph Nets は GitHub でかなり人気があるようですが、開発者が既にライブラリを多用している既存のコードベースで作業していない限り、このリストにある他のライブラリほどの注目を集めない可能性があります。 TensorFlow を使用する新しいプロジェクトの場合、Spektral と DGL は新しいテクノロジーで構築されており、今後数年間はサポートされ続ける可能性が高いため、より良い選択肢となる可能性があります。 2. ディープグラフライブラリ (DGL)DGL は、Microsoft の PTGNN や Google/DeepMind の JRaph や GraphNets などの大手テクノロジー企業とは一切関係ありませんが、「Distributed Deep Machine Learning Community」と呼ばれるディープラーニング愛好家のグループの成果です。 GitHub には 100 人を超える貢献者、1,500 件を超えるコミット、7,000 件を超えるスターがいます。 DGL は、柔軟なバックエンドの選択肢を提供するという点でも、このリストの中でユニークです。このモデルは、PyTorch、TensorFlow、または MXNet を実行でき、実験を運転する場合とほぼ同様のエクスペリエンスを提供します。これは、このリストの中で最も長く存続しているライブラリの 1 つであり、現在も活発に開発が続けられており、最初のコミットは 2018 年 4 月に遡ります。 DGLは最近、回転と平行移動の等価性を備えた強力なグラフトランスフォーマーであるSE(3)トランスフォーマーの構築に使用されました。これは、AlphaFold2の構成要素またはインスピレーションとなる可能性があります。このモデルは、2020 CASP14 タンパク質構造予測チャレンジで DeepMind が見事な勝利を収めた主役である、すでに優れた AlphaFold の後継モデルです。この出来事を受けて、いくつかの報道機関は、AlphaFold2 を大きな科学的課題を解決する初の AI プロジェクトであると宣言しました。 DGL は、2017 年に Gilmer らによって説明されたニューラル メッセージ パッシング パラダイムに基づいて構築されました。グラフ ニューラル ネットワークを構築するためのほとんどの種類のレイヤーをカバーする柔軟なフレームワークを提供します。コード リポジトリとドキュメントを読むと、DGL が大規模なプロジェクトであることがわかります。これは、未解決の問題が多数 (約 200 件) あることも意味しており、グラフ プロジェクトにおける影響力の大きいディープラーニングに貢献したい人にとっては絶好の機会です。 DGL は多くの特殊なアプリケーションで使用されており、その上にいくつかの追加ライブラリが構築されています。 DGL-LifeSci は化学とバイオインフォマティクスに適用されるディープラーニング グラフ用に構築されたライブラリであり、DGL-KE は知識グラフ埋め込みを処理するために構築されています。これら追加ライブラリは両方とも AWS Labs によって開発されました。 1. PyTorch ジオメトリックこのリストのトップにあるライブラリは PyTorch Geometric です。 PyTorch Geometric または PyG は、10,000 を超えるスターと 4,400 のコミットを持つ成熟した幾何学的ディープラーニング ライブラリであり、そのほとんどは才能ある博士課程の学生である Ru Stu1s によって開始されました。 PyG は、実装されたグラフ ニューラル ネットワーク レイヤーのリストを提供します。これにより、ディープ グラフ ネットワークを非常に高速に実行できるだけでなく、ポイント クラウドやメッシュ ベースのモデルなど、他の種類の幾何学的ディープラーニングにも使用できます。 PyG には、例を交えたよく書かれたチュートリアルの紹介があり、2017 年から開発が続けられており、非常に洗練されており、ユーザー コミュニティと 140 人を超える貢献者からの強力なサポートを受けています。 PyG の使用は、以前に PyTorch を使用したことがある人にとっては非常に馴染み深いものになりますが、最も明らかな違いはデータ入力にいくつかの違いがあることです。開発者は、通常の forward(x) プログラミング パターンの代わりに forward(batch) を使用することに慣れています。ここで、「batch」はグラフの特性と接続を記述するすべての情報を含むデータ構造です。 ライブラリを自由に選択できる新しいプロジェクトの場合、PyTorchGeometric に勝るものはありません。 以下は、グラフ上のディープラーニング用のこれらのオープンソース コード ライブラリの比較です。 ディープラーニングライブラリの選び方多くの場合、開発者のディープ グラフ ラーニング ライブラリの選択は、開発者自身、雇用主、またはメンターの以前のディープ ラーニング ライブラリの選択に大きく影響されます。たとえば、Keras API と TensorFlow が気に入っている場合、または既存のコード ベースとの一貫した依存関係が必要な場合は、Spektral が適切なライブラリになる可能性があります。 DeepMind の GraphNet と TensorFlow1 を使用して新しいプロジェクトを開始することは推奨されませんが、ライブラリは引き続き定期的に更新されるため、レガシー プロジェクトをサポートするための合理的な選択肢となる可能性があります。 開発者がゼロから始めたい場合は、魅力的な選択肢がいくつかあるかもしれません。 Julia プログラミングのよく考えられた生産性と実行速度の優先が機械学習と科学的プログラミングの未来であると信じるなら、GeometricFlux.jl は刺激的な展望です。関数型プログラミング パラダイムに興味があり、ジャストインタイム コンパイル (Julia など) の速度上の利点の一部を維持したい場合は、JAX ベースの JRAPH を使用する方が魅力的な選択肢です。最後に、比較的成熟した開発段階にある高速で強力なライブラリが必要な場合は、PyTorchGeometric が理想的な選択肢になります。 原題: ディープラーニンググラフ用の 7 つのオープンソースライブラリ、著者: Kevin Vu [51CTOによる翻訳。パートナーサイトに転載する場合は、元の翻訳者と出典を51CTO.comとして明記してください] |
負荷分散とは負荷分散(英語名は Load Balance)とは、複数のサーバーを対称的に構成したサー...
ドローンはすでに、医療製品の配送、インフラの検査、監視、メンテナンス、人間の労働力へのリスクの軽減、...
テスラと「レース」を敢行する四輪ロボットを見たことがありますか?以下に示すように、かなり高速であるよ...
ニューラル ネットワークでは、活性化関数によって、指定された入力セットからノードの出力が決定されます...
[[274438]]機械学習の分野は数十年にわたって「タンク問題」に悩まされてきました。この話は 1...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
北京時間9日午前1時(米国現地時間5月8日午前10時)、カリフォルニア州マウンテンビューで2018 ...
大規模な AI モデルのトレンドは通信業界にも浸透しています。米国のAIスタートアップ企業Anthr...
2009 年以来、雲奇会議は、最も初期のローカル ウェブサイト サミットから、アリババの年次戦略およ...
[[201999]] 1. 共通アルゴリズムルーチン電子商取引業界では、ユーザーへの商品推奨は常に非...
従業員の定着は、長年にわたり企業経営者にとって深刻な問題となってきました。雇用の安定と従業員の忠誠心...
アリババのダルマ人工知能研究所は最近、深セン衛星テレビと共同で「Show AI Life」という新製...