

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon Neptune ML でのモデルとモデルトレーニング
<a name="machine-learning-models-and-training"></a>

Neptune ML は、グラフニューラルネットワーク (GNN) を使用して、さまざまな機械学習タスクのモデルを作成します。グラフニューラルネットワークは、グラフ機械学習タスクに関する最先端の結果を得るため、グラフ構造化データから情報パターンを抽出するのに優れています。

## Neptune ML のグラフニューラルネットワーク (GNN)
<a name="machine-learning-gnns"></a>

グラフニューラルネットワーク (GNN) は、近傍のノードの構造と特徴を考慮してノード表現を計算するニューラルネットワークのファミリーに属します。GNN は、グラフデータには適していない他の従来の機械学習とニューラルネットワーク手法を補完します。

GNN は、ノード分類とリグレッション (ノードの特性の予測)、エッジ分類とリグレッション (エッジの特性の予測) やリンク予測 (グラフ内の 2 つのノードを接続すべきかどうかを予測) などの機械学習タスクを実行するために使用されます。

一般に、GNN を機械学習タスクに使用するには、次の 2 つの段階があります。
+ 符号化段階。GNN がグラフ内の各ノードの d 次元ベクトルを計算します。これらのベクトルは、*表現*または*埋め込み*です。
+ 符号化された表現に基づいて予測を行う復号化ステージ。

ノードの分類とリグレッションでは、ノード表現が分類およびリグレッションタスクに直接使用されます。エッジ分類とリグレッションでは、エッジ上のインシデントノードのノード表現が分類またはリグレッションの入力として使用されます。リンク予測の場合、エッジ尤度スコアは、ノード表現とエッジタイプ表現のペアを使用して計算されます。

[ディープグラフライブラリ (DGL)](https://www.dgl.ai/) は、これらのタスクの GNN の効率的な定義とトレーニングを容易にします。

メッセージパッシングの定式化の下で異なる GNN モデルが統一されます。このビューでは、グラフ内のノードの表現は、ノードの近傍の表現 (メッセージ) とノードの初期表現を使用して計算されます。NeptuneML では、ノードの初期表現は、ノードのプロパティから抽出された特徴から導出されるか、または学習可能であり、ノードのアイデンティティに依存します。

Neptune ML には、ノード特徴と学習可能なノード表現を連結して、元のノード表現として機能するオプションも用意されています。

ノードプロパティを持つグラフを含む Neptune ML のさまざまなタスクについては、[リレーショナルグラフ畳み込みネットワーク](https://arxiv.org/abs/1703.06103) (R-GCN)) で符号化段階を行います。R-GCN は、複数のノードタイプとエッジタイプを持つグラフに適した GNN アーキテクチャです (これらは異種グラフと呼ばれます)。

R-GCN ネットワークは固定数のレイヤーで構成され、次々に積み重ねられます。R-GCN の各レイヤーは、学習可能なモデルパラメータを使用して、ノードの直近 1 ホップ近傍からの情報を集約します。後続のレイヤーは前のレイヤーの出力表現を入力として使用するため、ノードの最終的な埋め込みに影響するグラフ近傍の半径は、R-GCN ネットワークのレイヤーの数 (`num-layer`) によって異なります。

たとえば、これは、2 層ネットワークが 2 ホップ離れたノードからの情報を使用することを意味します。

GNN の詳細については、[グラフニューラルネットワークに関する包括的な調査](https://arxiv.org/abs/1901.00596)を参照してください。Deep Graph Library (DGL) の詳細については、DGL [ウェブページ](https://www.dgl.ai/)を参照してください。DGL での GNN の使用に関する実践的なチュートリアルについては、[ディープグラフライブラリを使用したグラフニューラルネットワークの学習](https://www.amazon.science/videos-webinars/learning-graph-neural-networks-with-deep-graph-library)を参照してください。

## トレーニンググラフニューラルネットワーク
<a name="machine-learning-gnn-training"></a>

機械学習では、タスクに対して適切な予測を行う方法を学ぶためにモデルを取得するプロセスをモデルトレーニングと呼びます。これは、通常、最適化する具体的な目的と、この最適化を実行するために使用するアルゴリズムを指定することによって実行されます。

このプロセスは、下流のタスクに対する適切な表現を学ぶための GNN のトレーニングにも使用されます。モデルトレーニング中に最小化される、そのタスクの目的関数を作成します。たとえば、ノード分類の場合、[CrossentropyLoss](https://pytorch.org/docs/stable/generated/torch.nn.CrossEntropyLoss.html) を目標とし、誤分類にペナルティを科し、ノードリグレッションでは [SquareError](https://pytorch.org/docs/stable/generated/torch.nn.MSELoss.html) を最小限に抑えます。

目的は通常、特定のデータポイントのモデル予測を取得し、そのデータポイントのグラウンドトゥルース値と比較する損失関数です。これは、モデルの予測がどれくらい離れているかを示す損失値を返します。トレーニングプロセスの目標は、損失を最小限に抑え、モデルの予測がグラウンドトゥルースに近いことを確認することです。

トレーニングプロセスのディープラーニングで使用される最適化アルゴリズムは、通常、勾配降下の一種です。Neptune MLでは、[Adam](https://arxiv.org/pdf/1412.6980.pdf) を使用します。これは、低次モーメントの適応的推定に基づいて、確率的目的関数を一次勾配に基づいて最適化するアルゴリズムです。

モデルトレーニングプロセスでは、学習したモデルパラメータが目的関数の最小値に近いことを確認しようとしますが、モデルの全体的なパフォーマンスは、モデルの*ハイパーパラメータ*に依存し、これは、トレーニングアルゴリズムで学習されないモデル設定です。たとえば、学習したノード表現、`num-hidden`、の次元性は、モデルのパフォーマンスに影響するハイパーパラメータです。したがって、機械学習では、ハイパーパラメータ最適化 (HPO) を実行して適切なハイパーパラメータを選択することが一般的です。

Neptune ML は SageMaker AI ハイパーパラメータチューニングジョブを使用して、さまざまなハイパーパラメータ構成によりモデルトレーニングの複数のインスタンスを起動し、ハイパーパラメータ設定範囲に最適なモデルを見つけようとします。「[Neptune ML でのモデルのハイパーパラメータ設定のカスタマイズ](machine-learning-customizing-hyperparams.md)」を参照してください。

## Neptune ML にモデルを埋め込むナレッジグラフ
<a name="machine-learning-kg-embedding"></a>

ナレッジグラフ (KG) は、異なるエンティティ (ノード) とその関係 (エッジ) に関する情報をエンコードするグラフです。Neptune ML では、グラフにノードプロパティが含まれず、他のノードとの関係のみが含まれている場合に、リンク予測を実行するためにデフォルトでナレッジグラフ埋め込みモデルが適用されます。ただし、学習可能な埋め込みを持つ R-GCN モデルは、モデル型を `"rgcn"` のように指定することで、これらのグラフにも使用できます。一方、知識グラフ埋め込みモデルはより単純であり、大規模な知識グラフの表現を学ぶのに有効になるように設計されています。

ナレッジグラフ埋め込みモデルは、リンク予測タスクで使用され、`h` が始点ノードであり、`r` がリレーションタイプ、`t` が終点ノードであるトリプル `(h, r, t)` を完了するノードまたはリレーションを予測します。

Neptune MLで実装されたナレッジグラフ埋め込みモデルは `distmult`、`transE` および `rotatE` です。ナレッジグラフの埋め込みモデルの詳細については、[「DGL-KE」](https://github.com/awslabs/dgl-ke)を参照してください。

## Neptune ML のカスタムモデルのトレーニング
<a name="machine-learning-training-custom-models"></a>

Neptune ML では、特定のシナリオに対して、独自のカスタムモデルを定義して実装できます。カスタムモデルの実装方法と、Neptune ML インフラストラクチャを使用してトレーニングする方法については、[Neptune ML のカスタムモデル](machine-learning-custom-models.md) を参照してください。