役立つメンタルモデル
ニューラルネットワークは、空の数値設定を持つ構造として始まると考えるとよいでしょう。その構造は、どの計算をどの順序で行うかを定めます。重みは、それらの計算で使われる多くの数値を提供します。neural network starts as a structure with empty numerical settings. The structure says which calculations happen and in what order. The weights supply many of the numbers used by those calculations.
構造を再利用可能な計算テンプレート、重みをそのテンプレートのスロットを埋める値だと考えてください。同じ構造を使う2つのモデルでも、学習された重みが異なれば動作は異なります。ただし、このたとえには限界があります。操作パネルの名前付き設定とは異なり、個々の重みに通常、「文法」や「猫」といった名前が付いているわけではありません。
一般的な層は、次のように図式化できます。
input signals x
│
▼
multiply and combine with weights W
│
▼
add a learned offset b
│
▼
apply the layer's function
│
▼
output signalsオフセット b はバイアスと呼ばれます。重みとバイアスはどちらもモデルパラメータですが、信号を乗算するのは重みだけです。
モデルの重みの働き
ある層が、1つ前の層から複数の数値を受け取るとします。1つの新しい数値を生成するために、各入力に重みを掛け、その結果を足し合わせます。
出力 = (入力₁ × 重み₁) + (入力₂ × 重み₂) + ... + バイアス
正の重みは、入力と同じ方向に合計値を押し動かします。負の重みは、入力とは反対方向に押し動かします。ゼロに近い重みは、その特定の合計値に対する入力の寄与を小さくします。
実際の層では、多数の出力を一度に計算します。その重みは行列として配置されるため、簡潔に次のように表せます。
y = Wx + b
ここで、xは入力信号のベクトル、Wは重みの行列、bはバイアスのベクトル、yは後続の関数が適用される前の結果です。フレームワークによってはWを転置して保存しますが、基礎となる演算は同じです。
ディープネットワークでは、この演算のさまざまな形が多数の層にわたって繰り返されます。早い段階での変化は後の層が受け取る信号を変えるため、その影響は計算の残りの部分に広がる可能性があります。非線形関数、正規化、パラメータの再利用、他の重みとの相互作用によって、その影響は文脈依存になります。
そのため、1つの重みの符号や大きさだけでは、モデル全体に対する重要性を信頼できる形で測れません。その意味は、その重みがどこに位置するか、入力のスケール、近くにあるパラメータ、そして生成された信号を利用する後続のすべての演算に左右されます。
具体例
2つの入力を持つ層を考えます。
- 1つ目の入力:
3 - 2つ目の入力:
2 - 1つ目の重み:
0.8 - 2つ目の重み:
-0.5 - バイアス:
0.1
この層は次のように計算します。
(3 × 0.8) + (2 × -0.5) + 0.1 = 1.5
ここで、2つ目の重みだけを-0.5から0.5に変更します。
(3 × 0.8) + (2 × 0.5) + 0.1 = 3.5
入力は変わっていません。計算の構造も変わっていません。学習された乗数の1つが変わったため、出力が変わったのです。
この小さな例では、各値を簡単に確認できます。大規模なネットワークでは、このような組み合わせを多数同時に計算し、その結果をさらに多くの層に通します。その状況でも、1つの重みには正確な局所的役割がありますが、最終的な答えへの寄与を単独で意味のある形で捉えることは、ほとんどできません。
重みはどのように学習されるか
学習では、モデルがタスクをより適切に実行できるような重みの値を探索します。一般的な学習ステップは、次の4つの部分から成ります。
- モデルは現在の重みを使って出力を生成します。
- 損失関数が、学習の目的に対する誤差を測定します。
- バックプロパゲーションが各重みの勾配を計算します。勾配は、その重みを少し変えたときに損失がどのように変化するかを表します。
- オプティマイザーがそれらの勾配を使って重みを調整します。
簡略化した更新式は次のとおりです。
新しい重み = 古い重み - 学習率 × 勾配
学習率は、更新のステップ幅を制御します。学習例全体でこの更新を繰り返すことで、目的により適した重みの集合が徐々に得られます。
通常、このプロセスが各数値に人間が理解できる概念を割り当てるわけではありません。学習は分散しています。役立つ動作は多数の重みにまたがるパターンに依存することがあり、1つの重みが多くの動作に関与することもあります。
重みは必ずしもゼロから始まるわけではありません。ニューラルネットワークは、注意深くランダム化された値から始めるのが一般的です。同等のユニットが同じ値で始まると、同一の更新を受けて異なる役割を学習できなくなる可能性があります。
重みが重要な理由
重みは学習の永続的な成果です。学習が終わると、学習された値をチェックポイントに保存し、利用のたびに再学習することなく後から読み込めます。
コードとアーキテクチャが固定されていても、重みを変えるとモデルの動作が変わります。ファインチューニングでは、既存のチェックポイントから学習を続けることで、意図的にこの操作を行います。他の手法では、重みの表現方法を変えることもできます。たとえば、より低い数値精度で保存すればメモリ使用量を削減できますが、出力品質とのトレードオフはモデルと手法によって異なります。
重みは、学習済みモデルの実行に必要なストレージと作業メモリの多くも占めます。値の数が多いほど、また1つの値あたりのバイト数が多いほど、一般に必要なメモリも増えます。この関係は有用ですが、性能を完全に測るものではありません。実行時のオーバーヘッド、一時的な計算、入力長、バッチ処理、ハードウェアも影響します。
最も重要なのは、重みは必要条件ではあっても十分条件ではないということです。重みテンソルは、互換性のあるアーキテクチャの対応する部分に配置されて初めて意味を持ちます。利用可能なモデルパッケージには、設定、入力処理、出力デコード、ランタイムコードも必要になる場合があります。重みは、完全な製品インターフェース、安全ルール、検索システム、モデルを取り巻くツールを規定するものではありません。
よくある誤解
「重みとパラメータは同じものだ」
これらの言葉が同じ意味で使われることもあります。より厳密な定義では、すべての重みはパラメータですが、すべてのパラメータが重みというわけではありません。バイアスや一部のスケーリング値もパラメータです。それでも、フレームワークやモデルの公開元は、学習されたすべてのパラメータを含むファイルを「重みファイル」と呼ぶことがあります。
「大きい重みほど常に重要だ」
重みの大きさは文脈の中でのみ意味を持ちます。スケールの小さい入力に大きな重みを掛けた場合と、スケールの大きい入力に小さな重みを掛けた場合で、局所的な影響が同じになることがあります。後続の層は、その結果を増幅、相殺、方向転換、または無視できます。
「各重みは1つの事実を保存している」
重みは、学習から得られたパターンを集合として符号化します。重みは事実の表の行ではありません。1つの事実や能力に多数の値が関与することもあれば、1つの値が多数の入力に影響することもあります。モデルは学習内容の一部を再現できますが、そのことによって重みがデータセットの直接検索可能なコピーになるわけではありません。
「重みがAIシステム全体だ」
チェックポイントは完全なアプリケーションではありません。そのテンソルを解釈するには、対応するアーキテクチャと設定が必要です。AI製品には、モデルの重みに含まれない指示、検索、ツール、フィルター、インターフェースロジックが追加されることもあります。
「モデルは使うたびに重みを更新する」
通常の推論では、固定された重みを読み取って出力を計算します。直近の会話は、与えられたコンテキストを通じて後続の出力に影響することがありますが、それは重みを再学習することとは異なります。重みが変わるのは、明示的な学習または適応プロセスがシステムに含まれている場合だけです。
より広いシステムにおける重みの位置づけ
アーキテクチャは計算の経路を定義します。パラメータは、その経路に沿った学習済みの値を提供します。重みは信号を乗算し、バイアスやその他のパラメータ型はそれぞれ固有の役割を果たします。学習ではそれらの値を調整し、推論では得られた値を使って新しい入力を処理します。
次に「モデルパラメータとは?」を読んで、重み、バイアス、その他の学習された値を含む、より広いカテゴリを確認しましょう。直接的な違いについては「モデルパラメータとモデルの重み」を使ってください。重み付き層がどのように組み合わさって完全なネットワークになるかについては「ニューラルネットワークとは?」に戻り、それらの値がどのように学習されるかについては「AIにおける学習とは?」へ進んでください。What Are Model Parameters? next for the wider category that includes weights, biases, and other learned values. Use Model Parameters vs. Model Weights for the direct distinction. Return to What Is a Neural Network? for how weighted layers combine into a complete network, or continue to What Is Training in AI? for how those values are learned.