一覧へ

「ニューラルネットワークとは何か - ダイヤルとスイッチで構成されたパターン認識マシン」

「病理スライドの読み取りシナリオを使用して、ニューラルネットワークのニューロン、重み、バイアス、活性化関数を理解します。階層的特徴検出がどのようにピクセルから腫瘍検出につながるか、そしてパート1のLLMがこの構造の上にどのように構築されているかを説明します。」

入門
|
17
|
検証済み (2026-07)
進捗0/15 (0%)

ニューラルネットワーク:パターン認識を行う機械、それはダイヤルとスイッチで構成される

このトピックを修了すると、以下のことが理解できるようになります。

ニューラルネットワークが、単なる「脳の模倣」ではなく、高度な数学的関数である理由を理解します。 ニューロン、重み、バイアス、活性化関数という 4 つの要素がどのように連携して、ピクセルなどの低レベルのデータを、腫瘍検出などの高レベルの意思決定に変換するかを理解します。これは、パート 1 で学んだ LLM が、この構造の拡張であることにもつながります。

このセクションは、次のセクション(パート 3:勾配降下法、パート 4:バックプロパゲーション、パート 5:トランスフォーマー)の基礎となります。


単一の病理スライドの問題

病院の病理部門に一時的に派遣された研究者であるとしましょう。今日のあなたの仕事は、研究所から送られてきた 500 枚の組織スライドを分析することです。各スライドは、H&E で染色された組織切片の画像であり、「この組織に腫瘍細胞が含まれているかどうか、そして含まれている場合、良性か悪性か」を判断する必要があります。

500 枚のスライドです。各スライドを 5 分間注意深く調べても、40 時間かかります。さらに、専門の病理医であっても、解釈が難しい場合があり、意見が一致しないことがあります。個々のピクセルに特別な意味があるわけではなく、むしろ、ピクセルが形成する配置、形状、および密度パターンが判断の根拠となります。

しかし、もし魔法のような機械があったらどうでしょうか。その機械は、画像のすべてのピクセルの値を入力として受け取り、3 つの可能な分類(正常、良性、悪性)の確率を出力します。この機械を使えば、500 枚のスライドを数秒で処理でき、確率が不確かな曖昧なケースのみ注意深く確認すれば済みます。

この機械は、ニューラルネットワークです。そして、パート 1 で学んだ LLM は、このニューラルネットワークの非常に高度で大規模な特殊な形式に過ぎません。このセクションでは、この機械がどのような要素で構成され、ピクセルなどの低レベルのデータが、腫瘍検出などの高レベルの意思決定につながるのかを考察します。


ニューラルネットワークは「脳の模倣」ではない

まず、一般的な誤解を解消しましょう。名前が「人工ニューラルネットワーク」であるため、人々は、それが高度な脳の模倣、あるいは人工脳であると想像することがあります。しかし、それは事実ではありません。

人工ニューラルネットワークは、高度に洗練された多変量数学関数です。名前の中に「ニューラル」という言葉が含まれているのは、初期の開発者が生物学的ニューロンの発火構造からインスピレーションを得たためですが、現代のニューラルネットワークは、構造と機能の両方において、実際の脳のニューロンとは大きく異なります。生物学的ニューロンは、スパイクタイミング、化学的シグナル伝達、および数千のイオンチャネルの協調を通じて情報を処理しますが、人工ニューラルネットワークのニューロンは、単に入力値の加重和を取り、バイアスを加え、非線形関数に通す計算ユニットです。

この視点を念頭に置いておくことが重要です。なぜなら、今後学ぶ概念は、数学的関数の形式を理解することであり、脳の謎を理解することではないからです。

まず、正確な定義から始めましょう。

人工ニューラルネットワークは、多変量数学関数であり、高次元の入力データ(例:画像のピクセル値)を、望ましい答えの空間(例:正常、良性、悪性の確率)に、階層的な特徴抽出というプロセスを通じてマッピングします。

ここで重要な 2 つのキーワードは、階層的マッピングです。これら 2 つの言葉は、ニューラルネットワークが行うことすべてを包含しています。


ニューロンの現実:単一の数値と活性化状態

ニューラルネットワークを構成する最小の要素は、ニューロン、またはノードです。単一のニューロンの現実は、驚くほど単純です。

1 つのニューロン = 1 つの数値。 通常、0 から 1 の間の実数です。

この数値は、活性化状態と呼ばれます。「このニューロンはあまり活性化していない」という状態は 0 に近く、「このニューロンは強く活性化している」という状態は 1 に近くなります。個々のニューロンの活性化状態は、物理的な実体ではなく、単に特定の計算の結果です。

病理スライドの例に戻りましょう。スライドの画像が 256x256 ピクセルである場合、65,536 ピクセルがあります。各ピクセルの明るさの値を 1 つのニューロンとして扱うと、入力層には 65,536 個のニューロンがあります。各ピクセルの明るさの値(0 から 1 の値に正規化)は、そのニューロンの活性化状態です。

もちろん、最終的な出力は、正常、良性、悪性の 3 つの確率です。したがって、出力層には 3 つのニューロンがあり、各ニューロンの活性化状態は、各クラスの確率を表します。

入力層と出力層の間には、隠れ層と呼ばれる中間層があります。これらが「隠れ」と呼ばれるのは、それらが私たちが直接見ることができない中間計算の結果であるためです。隠れ層のニューロンの活性化状態は、直接解釈されるものではなく、次の層に渡されます。

全体の構造は次のようになります。

text
入力層 (65,536 個のニューロン、ピクセルの明るさ)
   ↓ [接続]
隠れ層 1 (例:512 個のニューロン、何を表すかは学習によって決定される)
   ↓ [接続]
隠れ層 2 (例:128 個のニューロン、より抽象的な特徴)
   ↓ [接続]
隠れ層 3 (例:32 個のニューロン、さらに抽象的な特徴)
   ↓ [接続]
出力層 (3 個のニューロン、正常、良性、悪性の確率)

この構造は、多層パーセプトロンまたはフィードフォワードニューラルネットワークと呼ばれます。情報が一方向に、入力から出力へと流れるため、「フィードフォワード」と呼ばれます。


階層的な特徴検出:低レベルから高レベルへ

ここで、ニューラルネットワークの真の魔法が起こります。なぜ、これほど多くの層に積み重ねるのでしょうか?それは、各層で異なるレベルの抽象化が発生するためです。

病理スライドで実際に何が起こっているのかを想像してみましょう。

隠れ層1のニューロンは、各ピクセルの周囲の非常に局所的な特徴を検出します。例えば、一部のニューロンは、「ここに明るさの急激な変化がある」という信号に反応し、細胞境界検出器として機能します。他のニューロンは、「この領域は特に暗い」という信号に反応し、細胞核検出器として機能します。

隠れ層2のニューロンは、隠れ層1からの複数の信号を組み合わせて、わずかに大きなパターンを検出します。「いくつかの細胞境界が円形に配置されている」→個々の細胞検出器。「核が大きく、いくつかクラスター状に集まっている」→核の異常検出器

隠れ層3のニューロンは、隠れ層2からの信号を組み合わせて、さらに大きなパターンを検出します。「細胞が整理されていない状態で絡み合っている」→組織構造の崩壊検出器。「通常の組織配列が維持されている」→通常の組織配列検出器

出力層の3つのニューロンは、隠れ層3からのこれらの特徴を合成して、最終的な判断を行います。組織構造の崩壊信号と核の異常信号が強い場合、→悪性確率が上昇します。通常の配列信号が強い場合、→正常確率が上昇します。

この階層的な特徴検出こそが、深層学習における「深さ」の意味です。深層に積み重ねる理由は、低レベルから高レベルへの抽象化を自然に実行できるようにするためです。ピクセル→境界→細胞→組織配列→腫瘍検出。この流れが、ニューラルネットワークが画像、言語、音声などの複雑なデータを処理できる理由の鍵となります。

興味深い事実: 隠れ層のニューロンに対して、「あなたは細胞境界を検出してください」と事前に指示するわけではありません。単に、訓練データ(例えば、正解が付けられた数千枚の病理スライド)を与えて訓練し、ニューラルネットワークは、各隠れ層にどのような特徴を配置するかを自分で判断します。ニューロンが細胞境界検出器になるか、核検出器になるかは、訓練によって決まります。 これは、第3部(勾配降下法)および第4部(逆伝播法)でさらに詳しく説明します。

この視点は、生物学の研究者にとっては特に馴染み深いかもしれません。私たちの体内のシグナル伝達経路は、まさにこの構造です。細胞表面受容体(数百)→二次メッセンジャー(数十)→転写因子(数)→遺伝子発現の変化。低レベルの信号が、高レベルの細胞応答につながる階層的な構造です。ニューラルネットワークの隠れ層の流れは、まさに同じ概念です。


ダイヤルと閾値:重みとバイアス

それでは、ニューロンとニューロンがどのように接続されているかを見てみましょう。隠れ層1の特定のニューロンを選びます。このニューロンの活性状態はどのように決定されるのでしょうか?

入力層の65,536個のニューロンはそれぞれ、この隠れ層のニューロンに接続線で接続されており、これらの接続線のそれぞれには数値が割り当てられています。この数値は重みと呼ばれます。

大きな重み(例えば、+2.0)は、「この入力ニューロンの信号に強く注意を払う」という意味です。重みが0の場合は、「この入力ニューロンの信号を無視する」という意味です。負の重み(例えば、-1.5)は、「この入力ニューロンがオンの場合、私は逆方向に反応する」という意味です。

隠れ層のニューロンの活性状態は、次のように決定されます。

  1. 接続されている各入力ニューロンの活性状態に、その接続の重みを掛けて、すべてを合計します。これは重み付き和と呼ばれます。
  2. 次に、バイアスと呼ばれる単一の数値を加えます。
  3. 結果を活性化関数に渡し、これは非線形の関数であり、入力値を0と1の間(または別の指定された範囲)に押し込みます。

これを式で表すと(付録A.1に正確に整理されていますが、ここでは概念のみを説明します):

text
活性状態 = 活性化関数(重み付き和 + バイアス)

重みはダイヤルであり、バイアスは閾値です。 ダイヤルは、「このニューロンがどの程度この入力に注意を払うか」を調整し、閾値は、「このニューロンがどの程度簡単に反応するか」を調整します。バイアスが大きな正の数である場合、ニューロンはわずかな刺激でもオンになり、大きな負の数である場合、強い刺激でのみオンになります。

なぜ活性化関数が必要なのでしょうか? 単に重み付き和を計算してそのまま渡すだけでは、ニューラルネットワーク全体は単一の大きな線形関数になってしまいます。線形関数をいくら組み合わせても、それは単一の線形関数にしかなりません。これにより、階層的な特徴検出は不可能になります。各層で異なる種類の計算を可能にするためには、各層に非線形の活性化関数が存在する必要があります。

最も一般的に使用される2つの活性化関数:

シグモイド: 入力をスムーズに0と1の間の値に圧縮します。これは、昔から使用されており、確率として解釈しやすいため、出力層でも使用されます。

ReLU(整流線形ユニット): max(0, x)。負の値は0に設定し、正の値はそのまま通過させます。これははるかに単純ですが、隠れ層で非常にうまく機能します。ほとんどの最新のニューラルネットワークでは、これが隠れ層の活性化関数として使用されています。

各関数の正確な式とグラフ形式については、付録A.3で説明します。

スケールが重要 — どれくらいの数のパラメータが必要なのか?

まずは簡単な例から始め、スケール感を掴みましょう。

病理スライドの解析に使用する、非常に小さなニューラルネットワークを構築するとしましょう。アーキテクチャは次のとおりです:入力 65,536 → 隠れ層 512 → 隠れ層 128 → 隠れ層 32 → 出力 3。

各層間の接続は完全に接続されていると仮定します。つまり、前の層のすべてのニューロンが、次の層のすべてのニューロンに接続されます。

  • 入力層 → 隠れ層 1:65,536 × 512 = 33,554,432 個の重み
  • 隠れ層 1 → 隠れ層 2:512 × 128 = 65,536 個の重み
  • 隠れ層 2 → 隠れ層 3:128 × 32 = 4,096 個の重み
  • 隠れ層 3 → 出力層:32 × 3 = 96 個の重み

合計すると、およそ3362万個の重みになります。さらに、各ニューロンにはバイアスがあり、675個のバイアスが追加されます。これらの重みとバイアスは、トレーニング中に調整される値です。

人間がこれらの3362万個の値を手動で調整できるでしょうか? 1日に1つのパラメータを調整し続けたとしても、100年かかるでしょう。したがって、自動調整アルゴリズムが必要です。これが、パート3で説明する学習アルゴリズム(勾配降下法)の理由です。

この3362万個は、まだ非常に小さなニューラルネットワークです。実際の病理AI(例:PathAI、Paige)では、数千万個、あるいは数十億個のパラメータを使用します。パート1で見たように、GPT-3は1750億個のパラメータを持ち、最新の最先端モデルはさらに多くのパラメータを持っています。パラメータのスケールは、モデルの複雑さと能力を直接決定します

これを、生物学の研究者が理解しやすいスケールに換算してみましょう。人間のゲノムには約2万個の遺伝子があり、各遺伝子は、およそ数十個から数百個の転写因子(TF結合部位、エンハンサー、サイレンサー)と相互作用します。全体的なゲノム制御ネットワークにおける「接続数」は、およそ数百万個から数千万個です。つまり、ニューラルネットワークのパラメータのスケールは、このゲノム制御ネットワークと同程度か、それよりも大きいことになります。ゲノム制御システムは、このレベルの複雑さで、体内の発達、恒常性、および疾患を制御するため、このスケールのニューラルネットワークが複雑なパターン認識を実行できるのは当然のことです。


順伝播 — 計算が一方方向に流れる

次に、ニューラルネットワークが実際にどのように判断を下すのか、そのプロセスを説明します。このプロセスは、順伝播またはフィードフォワードと呼ばれます。

  1. 入力: 入力層のニューロンの活性状態を、スライド画像の65,536個のピクセルの明るさの値に設定します。
  2. 隠れ層1の計算: 隠れ層1の各ニューロンについて、(重み付きの合計 + バイアス)を計算し、活性化関数に通して活性状態を決定します。
  3. 隠れ層2の計算: 隠れ層1の活性状態を入力として使用し、同じ計算を繰り返します。
  4. 隠れ層3の計算: 隠れ層2の活性状態を入力として使用します。
  5. 出力層の計算: 隠れ層3の活性状態を入力として使用して、最後の計算を行います。出力層では、通常、ソフトマックス関数を活性化関数として使用し、3つのニューロンの値を確率分布(合計が1)にします。
  6. 決定: 入力を最も高い確率を持つクラスに分類します。または、確率そのものをリスクスコアとして使用します。

これは、擬似コードで表すと次のようになります。

python
def neural_network_prediction(pixel_values):
a = pixel_values # 入力ベクトル、サイズ 65,536
for each layer (重み行列 W、バイアスベクトル b) in network_layers:
weighted_sum = W · a + b
a = activation_function(weighted_sum) # ReLU または Sigmoid
return Softmax(a) # 最終的な確率分布

これだけです。乗算と加算を行い、非線形関数に通します。トレーニングが完了すると、ニューラルネットワークは、スライド画像1枚あたりミリ秒でこの計算を実行します。

トレーニングは、全く別のプロセスです。トレーニング中、ニューラルネットワークは実際には、重みとバイアスをわずかに調整して、より正確な予測を行います。この調整アルゴリズムは、パート3で説明する勾配降下法であり、パート4ではバックプロパゲーションについて説明します。


これは、パート1のLLMとどのように関連しているのか?

簡単にパート1に戻りましょう。パート1で学んだLLMも、ニューラルネットワークです。ただし、いくつかの重要な違いがあります。

1. 入力の種類。病理ニューラルネットワークは、画像ピクセル(連続的な実数)を入力として受け取ります。LLMは、テキストトークン(離散的な記号)を入力として受け取ります。テキストトークンを、ニューラルネットワークが処理できるベクトルに変換するプロセスは、埋め込みと呼ばれ、パート5でより詳しく説明します。

2. アーキテクチャの違い。このパートで説明したフィードフォワードニューラルネットワークは、完全に接続された層を持っています。LLMは、Transformerと呼ばれる異なるアーキテクチャを使用します。Transformerもフィードフォワード層を含んでいますが、アテンションと呼ばれる特殊な操作も含まれています。これは、パート5とパート6で説明します。

3. スケール。病理ニューラルネットワークが数千万個のパラメータを持つ場合、最新のLLMは、その100倍から1000倍のパラメータを持っています。より大きなスケールは、パート1で見たような創発的な能力につながります。

類似点。基本的な構造はすべて、重み、バイアス、および活性化関数で構成される多変数関数で構成されています。層を通過するにつれて、低レベルのデータを高レベルの表現に抽象化するという原理は同じです。このパートで学んだ概念は、後で紹介するすべてのニューラルネットワークベースのモデルの基礎となります。

生物学的応用シナリオ

この理論は、どのように実践に活かせるのでしょうか?

シナリオ1 — シングルセルRNAシーケンスによる細胞タイプ分類

シングルセルRNAシーケンス(scRNA-seq)では、各細胞は数千の遺伝子の発現値のベクトルとして表されます。このベクトルをニューラルネットワークに入力して、細胞タイプ(T細胞、B細胞、マクロファージなど)を自動的に分類することは、このパートで説明した概念の直接的な応用です。

  • 入力層:数千の遺伝子(例:上位2,000の変動遺伝子)
  • 隠れ層1:低次の遺伝子発現パターンの組み合わせ(例:特定のシグナル伝達経路の活性化)
  • 隠れ層2:細胞プログラムの組み合わせ(例:活性状態と静止状態)
  • 出力層:細胞タイプの確率分布

scVIやscanpyなどのライブラリは、このアプローチを標準化しています。

シナリオ2 — 自動病理スライド解析(このパートの冒頭で説明した実際のシナリオ)

病理学における深層学習は、過去5年で急速に臨床現場に導入されています。PathAI、Paige、Aiforiaなどの商用ソリューションは、乳がん、前立腺がん、大腸がんなどのスライドの自動解析に使用されています。韓国では、ソウル大学病院やサムスン医療センターでも、この分野の研究が活発に行われています。

ここで使用されるニューラルネットワークは、このパートで説明した完全結合アーキテクチャよりも高度です。それは**畳み込みニューラルネットワーク(CNN)**です。ただし、基本的な原理(階層的な特徴抽出、重み、バイアス、活性化関数)は同じです。このシリーズではCNNを別途扱いませんが、このパートの概念を理解していれば、CNNも簡単に理解できるはずです。

シナリオ3 — 薬剤応答予測

いくつかの薬剤候補を細胞株でテストした実験データを用いて、ニューラルネットワークをトレーニングし、新しい細胞株における薬剤応答(IC50)を予測するモデルを作成することができます。

  • 入力:細胞株の遺伝子プロファイル + 薬剤の化学的特徴ベクトル
  • 隠れ層:遺伝子と薬剤の特性間の相互作用パターンの抽出
  • 出力:予測IC50値(実数)

これは分類問題ではなく、回帰問題ですが、ニューラルネットワークの構造はほぼ同じです。主な違いは、出力層の活性化関数がSoftmaxから恒等関数に変更されることです。これは、GenentechやNovartisなどの企業が実際に行っている創薬のアプローチです。


主要なポイント

  • 人工ニューラルネットワークは、脳の模倣ではなく、洗練された多変量数学関数です。 名前で惑わされないように。
  • ニューロン = 活性状態(単一の数値)。接続 = 重み(つまみ)。閾値 = バイアス。活性化関数 = 非線形変換。
  • ニューラルネットワークは、階層的な特徴抽出を通じて、低次のデータを高次の意思決定に変換します。ピクセル → エッジ → 細胞 → 組織配置 → 腫瘍分類。
  • 複数の層を積み重ねて「深さ」を作る理由はここにあります。
  • パラメータの数(重みとバイアス)は、数百万から数十億に及びます。人間が手動で調整することはできません。トレーニングアルゴリズムが不可欠です。
  • LLMは、TransformerとAttentionという特殊な構造を追加した、ニューラルネットワークの原理に基づいて構築されています。

📐 付録 — 専門家向け数学的公式

難易度: 非常に難しい 対象読者: 線形代数、微分積分、確率論に関する大学院レベルの知識を持つ読者。

本文では直感的な理解に焦点を当てましたが、ここではニューラルネットワークの厳密な数学的表現をまとめます。初めてこの内容に触れる場合は、読み飛ばしても構いません。

A.1 単一ニューロンにおける活性化の計算

a^{l-1} ∈ R^{n_{l-1}} を前の層の活性化ベクトル、w_j^{l} ∈ R^{n_{l-1}} をこの層の j 番目のニューロンの重みベクトル、そして b_j^{l} ∈ R をバイアスとします。すると、j 番目のニューロンの活性化は次のようになります。

text
z_j^{l} = Σ_i w_{ji}^{l} · a_i^{l-1} + b_j^{l}       (重み付き和)
a_j^{l} = σ(z_j^{l})                                  (活性化関数を通過)

ここで、σ は活性化関数(シグモイド関数、ReLU 関数など)です。

A.2 ベクトル化された層の計算

層全体をベクトルと行列で表現することで、よりエレガントになります。層 l-1 から層 l への変換は次のようになります。

text
z^{l} = W^{l} · a^{l-1} + b^{l}
a^{l} = σ(z^{l})
  • W^{l} ∈ R^{n_l × n_{l-1}}: 層 l の重み行列。W_{ji}^{l} は、前の層の i 番目のニューロンからこの層の j 番目のニューロンへの重みを表します。
  • a^{l-1} ∈ R^{n_{l-1}}: 前の層の活性化ベクトル。
  • b^{l} ∈ R^{n_l}: この層のバイアスベクトル。
  • a^{l} ∈ R^{n_l}: この層の活性化ベクトル。

このベクトル化は、GPU 並列処理の基礎となります。GPU は、数千個のコアを使用して、大規模な行列-ベクトル乗算を並列で実行します。

A.3 活性化関数のリスト

シグモイド関数 — 滑らかな S 字型の曲線、出力範囲は (0, 1):

text
σ(z) = 1 / (1 + exp(-z))

勾配は σ(z)(1 - σ(z)) です。これは、z が大きい、または小さい場合に勾配が非常に小さくなるため、勾配消失問題 の原因となり、深いニューラルネットワークの隠れ層ではあまり使用されません。

Tanh 関数 — 滑らかな S 字型の曲線、出力範囲は (-1, 1):

text
tanh(z) = (exp(z) - exp(-z)) / (exp(z) + exp(-z))

シグモイド関数の中心をシフトさせたものです。隠れ層では、シグモイド関数よりもわずかに優れています。勾配消失問題は依然として存在します。

ReLU 関数 — 負の値に対しては 0 を、正の値に対しては値をそのまま出力します。

text
ReLU(z) = max(0, z)

2010 年代以降、隠れ層で標準的に使用されています。導関数は、ほぼ 1 (z > 0) または 0 (z < 0) であるため、計算が非常に高速です。ただし、z < 0 の場合に勾配が 0 になり、ニューロンが学習を停止する「dying ReLU」と呼ばれる現象があります。

Leaky ReLU 関数 — 負の値をわずかに反射します。

text
LeakyReLU(z) = max(0.01 · z, z)

dying ReLU 問題を軽減します。係数 0.01 はハイパーパラメータです。

GELU 関数 (Gaussian Error Linear Unit) — Transformer および LLM で標準的に使用されます。

text
GELU(z) = z · Φ(z)

Φ は、標準正規分布の累積分布関数です。滑らかな ReLU に似ていますが、z=0 付近でわずかに異なります。GPT や BERT などで使用されます。

A.4 ソフトマックス関数 — 多クラス出力層の標準

出力が複数のクラスにわたる確率分布となる必要がある場合(例:正常/陽性/悪性の 3 クラス分類)に使用します。K 個のクラスに対するロジット z_1, ..., z_K が与えられた場合:

text
Softmax(z_k) = exp(z_k) / Σ_j exp(z_j)

特徴:

  • すべての出力は (0, 1) の範囲にあります。
  • すべての出力の合計は正確に 1 になります(確率分布を満たします)。
  • 確率が最大のロジットに集中します(ソフト argmax)。

数値的安定性: exp(z_k - max(z)) を計算して、オーバーフローを防ぎます。

A.5 全体的なフォワード伝播の公式

L 個の隠れ層を持つニューラルネットワーク全体は、単一の関数 f_θ として表すことができます。

text
a^{(0)} = x                                    (入力)
z^{(l)} = W^{(l)} · a^{(l-1)} + b^{(l)}        (l = 1, ..., L)
a^{(l)} = σ^{(l)}(z^{(l)})                      (l = 1, ..., L-1)
a^{(L)} = Softmax(z^{(L)})                      (出力、分類の場合)
f_θ(x) = a^{(L)}

パラメータセット θ = {W^{(1)}, b^{(1)}, ..., W^{(L)}, b^{(L)}} です。これらのパラメータをトレーニングによって調整することが、次のセクション(勾配降下法)で説明します。

A.6 パラメータ数の計算公式

層のサイズが [n_0, n_1, ..., n_L] の場合、総パラメータ数は次のようになります。

text
総パラメータ数 = Σ_{l=1}^{L} (n_{l-1} · n_l + n_l)
                = Σ_{l=1}^{L} n_l · (n_{l-1} + 1)

例: 構造 [65536, 512, 128, 32, 3]:

  • 層 1: 512 × (65536 + 1) = 33,554,944
  • 層 2: 128 × (512 + 1) = 65,664
  • 層 3: 32 × (128 + 1) = 4,128
  • 層 4: 3 × (32 + 1) = 99
  • 合計: 33,624,835 個のパラメータ

これは、本文で言及されている「約 3362 万」という値と一致します。

A.7 普遍近似定理

理論的背景。隠れ層が 1 つしかない場合でも、ニューラルネットワークは、十分な数のニューロンがあれば、任意の連続関数を任意の精度で近似できる (Cybenko 1989, Hornik 1991) という定理です。

数学的には、f : [0,1]^n → R が連続関数である場合、任意の ε > 0 に対して、隠れ層が 1 つのニューラルネットワーク g が存在し、すべての x ∈ [0,1]^n に対して、|f(x) - g(x)| < ε となります。

この定理は強力ですが、実用的な制限があります。「十分な数」は、実際には指数関数的に大きくなる可能性があり、トレーニングが最適な点を見つけられる保証はありません。深層学習における経験的な知見は、層を深く積み重ねる方が、パラメータ効率が高い ということです。

A.8 初期化

トレーニング前に重みをどのように設定するかが重要です。すべての重みを 0 に初期化すると、対称性の問題が発生するため、ランダムな初期化 が不可欠です。

Xavier / Glorot 初期化 (シグモイド関数、Tanh 関数用):

text
W ~ Uniform(-√(6/(n_in + n_out)), √(6/(n_in + n_out)))

He 初期化 (ReLU 関数用):

text
W ~ Normal(0, √(2/n_in))

バイアスは通常、0 に初期化されます。不適切な初期化は、トレーニングを妨げるか、大幅に遅らせる可能性があります。

参考文献

このセクションのすべてのコンテンツ、シナリオ、アナロジー、および図は、BioPlaygroundによって作成されており、以下に示す外部の参考文献は、これらの概念を学習する上で役立つ可能性があります。

  • 標準的な深層学習教科書: Goodfellow、Bengio、Courville著『Deep Learning』(MIT Press、オンラインで無料)。
  • ニューラルネットワークの可視化に関する教育資料: 3Blue1Brownの「Neural Networks」シリーズ(YouTube)。教育的な参考資料として。
  • 普遍近似定理に関する原論文: Cybenko著「Approximation by Superpositions of a Sigmoidal Function」(1989年)。
  • 初期化手法: He et al.著「Delving Deep into Rectifiers」(ICCV 2015)。
  • 深層学習の臨床応用における病理学的症例: Campanella et al.著「Clinical-grade computational pathology using weakly supervised deep learning on whole slide images」(Nature Medicine 2019)。
  • scRNA-seqの深層学習: Lopez et al.著「Deep generative modeling for single-cell transcriptomics (scVI)」(Nature Methods 2018)。

このセクションは、原則セクションの始まりであると同時に、続くセクションの基礎となります。セクション#3では、このニューラルネットワークがどのように「学習」するのか、つまり、3362万個のパラメータがどのように自動的に調整されるのかについて説明します。

次回の内容

  • 編 #3 how-nn-learns — 3360万個のパラメータをどのように自動的に調整するのか? 勾配降下の直感。
  • 編 #4 backpropagation-intuition — 最終層のエラー信号は、どのようにして先行する層の重みの調整につながるのか?
  • 編 #5 transformer-and-embedding — LLMのニューラルネットワークは、今回のエピソードの構造にどのような拡張を加えたのか?

💬 質問・コメント

0件のコメント

ログインせずに投稿できます。ゲスト投稿は投稿者自身で編集・削除できません。

0/2000

読み込み中...