役立つメンタルモデル

ニューラルネットワークを、調整可能なフィルターを積み重ねたものだと考えてみてください。

各フィルターは、前の層から数値を受け取ります。そして各数値に異なる影響度を与え、オフセットを加え、結果を変換します。層は、変換した数値を次の層へ送ります。このような変換を何度か行った後、出力層が予測、スコア、または生成された値を出力します。

通常の図が網状に見えるのは、値がユニット間を流れるためです。

input values          hidden layer             output

x₁ ───────────────┐   h₁ ───────────────┐
                  ├──>                  ├──> score
x₂ ───────────────┘   h₂ ───────────────┘

        weighted sums      weighted sum
        + activation

1つのユニットは、人工ニューロンと呼ばれることがよくあります。この名称は歴史的なものです。実際には、ニューロンは小さな数値関数です。生物学的ニューロンとの類似性は限定的です。

この単純な図は、情報が入力から出力へ移動し、各ユニットが次の層のすべてのユニットに接続する、全結合のフィードフォワードネットワークを示しています。ただし、すべてのニューラルネットワークがこの配線を正確に使うわけではありません。画像全体で同じ小さなフィルターを再利用するもの、系列を通じて状態を保持するもの、アテンションによって入力の一部同士を相互作用させるものもあります。それでも、接続された演算から学習可能な計算を構成するため、ニューラルネットワークです。

ニューラルネットワークの仕組み

典型的な1つのニューロンでは、計算は次のようになります。

output = activation(w₁x₁ + w₂x₂ + ... + wₙxₙ + b)

x」の値は入力です。各wは、その入力がこのニューロンにどの程度強く影響するかを制御する重みです。バイアスbは結果をずらします。その後、活性化関数が結果を変換してから、ネットワーク内を先へ進みます。

一般的な活性化関数の1つが、正規化線形ユニット(ReLU)です。

ReLU(x) = max(0, x)

ReLUは負の入力に対してゼロを返し、正の入力はそのまま返します。ほかの活性化関数は、別の方法で値を変換します。

活性化関数は、見た目を整えるだけの追加要素ではありません。すべての層が乗算と加算だけを行うとします。そのような層を2つ重ねても、常に1回の乗算と加算に書き換えられます。層を増やしても、ネットワークが非線形な関係を表現できるようにはなりません。層の間に非線形活性化関数を加えることで、この単純化を防ぎ、ネットワークは単純な部品からより多様な形状を構築できるようになります。

ネットワークが入力を受け取ると、順伝播を実行します。

  1. 入力が数値として表現されます。
  2. 各層が、前の層から新しい数値を計算します。
  3. 出力層がネットワークの結果を出力します。

学習」では、誤差を測定する損失関数を使って結果と望ましい結果を比較します。誤差逆伝播法は、各重みやバイアスを少し変えたときにその損失がどう変化するかを効率的に計算します。次にオプティマイザーがそれらの値を調整し、この処理を多数の例に対して繰り返します。

「学習」とは、これらの調整可能な数値を変更することです。開発者は大まかなアーキテクチャと学習プロセスを選び、学習アルゴリズムがパラメータの値を見つけます。

手計算で行う順伝播

カード取引について正規化された2つの信号を受け取る、おもちゃのネットワークを考えてみましょう。

  • x₁ = 0.8(金額がどの程度異常か)
  • x₂ = 0.3(デバイスがどの程度なじみのないものか)

これらの値は説明用であり、実際の不正利用検出モデルのものではありません。このネットワークには、ReLU活性化関数を持つ2つの隠れユニットがあります。

1つ目の隠れユニットは次のように計算します。

h₁ = ReLU(1.0 × 0.8 − 1.0 × 0.3 − 0.2)
   = ReLU(0.3)
   = 0.3

2つ目は次のように計算します。

h₂ = ReLU(−0.5 × 0.8 + 0.5 × 0.3 + 0.1)
   = ReLU(−0.15)
   = 0

出力ユニットは、隠れユニットの値を組み合わせます。

score = 1.5 × h₁ + 0.5 × h₂ − 0.4
      = 1.5 × 0.3 + 0.5 × 0 − 0.4
      = 0.05

これで、1回の完全な順伝播が完了します。実際の分類器では、生のスコアを確率に変換するために別の関数を適用したり、スコアを判定しきい値と比較したりする場合があります。

これらの重みが表す具体的なルールを、プログラマーが記述する必要はありませんでした。学習によって、重みはデータから調整されます。重みを1つ変えるだけでも、どの隠れユニットが活性化するかや、それらが結果に与える影響の強さが変わる可能性があります。

h₁を「金額リスク」、h₁を「金額リスク」、h₂を「デバイスリスク」と名付けたくなるかもしれません。しかし、この計算からはそのような名前は正当化できません。隠れユニットは、組み合わせて初めて意味を持つパターンに関与することが多く、その意味を人が明確に解釈できるとは限りません。

ニューラルネットワークが重要な理由

ニューラルネットワークは、人があらかじめ指定した特徴だけに頼るのではなく、有用な中間表現を学習できます。画像システムでは、初期の計算が局所的な視覚パターンに反応し、後の計算がそれらを組み合わせることがあります。言語システムでは、多くの層が文脈に基づいてテキストの表現を変換します。正確な挙動は、名前の付いた1つのニューロンに割り当てられるのではなく、ネットワーク全体で学習されます。

関数の形を柔軟に表現できるため、ニューラルネットワークは画像、言語、音声、予測、制御、生成に役立ちます。ただし、あらゆる問題に対して自動的に最適になるわけではありません。データが限られている場合や関係が単純な場合は、より単純なモデルのほうが安価で、検査しやすく、優れていることがあります。

数学的な結果によれば、十分な数の隠れユニットを与えると、特定のニューラルネットワークは広範な関数のクラスを近似できます。これは、ネットワークが何を表現できるかについての主張です。特定のデータセットと学習実行によって良い関数が見つかること、例を記憶することを避けられること、未知の入力に対して信頼できる挙動をすることを保証するものではありません。

よくある誤解

ニューラルネットワークは脳のように動作する

用語は生物学から着想を得ていますが、人工ニューロンには生物学的ニューロンの構造や挙動のほとんどがありません。「重み付き数値演算」は、「デジタルな脳細胞」よりも信頼できるメンタルモデルです。

すべてのニューロンは発火するかどうかを判断する

初期のモデルにはしきい値を使うものがあり、ReLUは負の値をゼロにします。しかし、現代のユニットは一般に、単純なイエス・ノーの判断ではなく、数値の活性値を出力します。

層が多いほど、ネットワークは常に良くなる

深さを増やすと、ネットワークが表現できるものや、特定のパターンをどれだけ効率的に表現できるかが変わります。一方で、モデルの学習が難しくなったり、コストが高くなったりすることもあります。性能は層の数だけでなく、アーキテクチャ、データ、目的、最適化、評価によって決まります。

隠れ層があれば、モデルは自動的に非線形になる

線形層を積み重ねても、依然として線形です。層の間にある非線形活性化関数が、積み重ねを1つの線形変換に単純化できないようにします。

ネットワークは理解しやすいルールを発見する

ネットワークが発見するのは、学習の目的関数を減少させるパラメータ値です。それらの値は、人が読める短いルールに対応していなくても、有用な挙動を支えることがあります。解釈には別途、根拠が必要です。

ニューラルネットワークとディープラーニングは同じ意味である

ディープラーニングは通常、複数の処理層を持つニューラルネットワークを使った機械学習を指します。「深い」と呼ぶための層数に普遍的な基準はなく、ニューラルネットワークには浅いモデルも含まれます。

ニューラルネットワークとAIの関係

ニューラルネットワークは、機械学習の一つのファミリーです。ニューラルネットワークのアーキテクチャは、計算をどのように配置するかを定めます。学習によって、学習済みのモデル重みが生成されます。重みはモデルのパラメータの一部です。学習済みネットワークを新しい入力に対して実行することを推論と呼びます。

AIモデル」と呼ばれる多くのシステムはニューラルネットワークを使っていますが、これらの用語は置き換え可能ではありません。「AIモデル」のほうが広い概念です。たとえばトランスフォーマーは、アテンション、フィードフォワード演算、正規化、層の周囲に情報を送る接続から構成されるニューラルネットワークアーキテクチャです。

これらの設計に共通する中心的な考え方は変わりません。微分可能な計算を有用な構造に配置し、その後、データから調整可能な値を学習するということです。

次に読むもの

モデルの重みとは?」を読んで、ネットワークが学習した接続の強さとアーキテクチャを区別しましょう。「モデルのパラメータとは?」では、調整可能な値のより広い集合を確認し、「モデルのパラメータとモデルの重みの違い」で用語を直接比較できます。ニューラルネットワークがどのように言語を生成するかを確認するには、続けて「LLMとは?」を読んでください。