重みとバイアス——ネットワークが学ぶ「設定値」
ニューラルネットワークの「ツマミ」
ニューラルネットワークには数千〜数十億個の「ツマミ」があります。このツマミこそが重み(weight) とバイアス(bias) です。学習とは、このツマミをぐるぐる回して「正解に近い予測が出る位置」を探す作業です。
重みとは何か
重みは「その入力がどれだけ重要か」を表す数値です。
身近な例で考えましょう。「今日の昼ごはんを何にするか」という判断を数式で表すとします。
満足度 = (空腹度) × w1 + (予算) × w2 + (時間) × w3
- w1(空腹度の重み)が大きい → お腹が空いているかどうかを重視する
- w2(予算の重み)が大きい → 値段を重視する
- w3(時間の重み)が大きい → 早く食べられるかを重視する
人によってこの重みは違います。AIも同様に、学習データを通じて「どの入力をどれだけ重視すべきか」を重みとして学んでいきます。
バイアスとは何か
バイアス(b)は「重みに関係なく、どれだけ出力を押し上げるか(または押し下げるか)」を調整する値です。
数式で書くと:
y = w × x + b
これは中学校で習った一次関数(y = ax + b)と同じ形です。
- w(重み) は直線の傾き——xが1増えたときyがどれだけ増えるか
- b(バイアス) は切片——xが0でもyがどこから始まるか
yの値
↑
│ /(w=2, b=1)
│ /
│ ───── (w=0, b=2)
│ /(w=2, b=-1)
└──────────→ xの値
要するに、バイアスは「ニューロンの発火のしやすさ」を調整する値です。バイアスが大きいと、入力が小さくてもニューロンが反応しやすくなります。
具体的な数値で見てみる
「気温からアイスの売上を予測する」シンプルな例で確認しましょう。
売上予測 = 気温 × w + b
パターンA: w=10, b=-100
- 気温15℃のとき: 15×10 + (-100) = 50(個)
- 気温30℃のとき: 30×10 + (-100) = 200(個)
パターンB: w=5, b=0
- 気温15℃のとき: 15×5 + 0 = 75(個)
- 気温30℃のとき: 30×5 + 0 = 150(個)
どちらが実際の売上データに近いかは、データを見るまでわかりません。学習とは、データに最もよく当てはまるw(重み)とb(バイアス)の値を見つけることです。
ニューラルネットワーク全体の重み
1層のネットワークが単純なのに対し、多層ネットワークでは各ニューロン間の接続すべてに重みがあります。
入力層(2つ) → 隠れ層(3つ) → 出力層(1つ)
接続数:
入力→隠れ: 2×3 = 6本 → 重み6個
隠れ→出力: 3×1 = 3本 → 重み3個
バイアス: 隠れ3個 + 出力1個 = 4個
合計: 6+3+4 = 13個のパラメータ
実際のモデル(例えばGPT-4)は数千億個のパラメータ(重みとバイアスの総称)を持ちます。「学習済みモデル」とは「良いパラメータが詰まったファイル」と言い換えられます。
良い重みをどうやって見つけるのか
最初、重みはランダムな値に設定されます。当然、予測はでたらめです。
初期状態: ランダムな重み → でたらめな予測
↓
学習データで予測 → 答えと比較 → 「どれだけ外れたか」を計算
↓
「外れた方向と逆向き」に重みを少しだけ修正
↓
これを何千・何万回繰り返す
↓
良い予測ができる重みに収束
「外れた量を計算する」のが損失関数(第6回)、「重みをどう修正するか」が誤差逆伝播(第7回)のテーマです。今は「学習 = 良い重みを探す旅」とだけ覚えておけば十分です。
まとめ
- 重み(w)は「各入力をどれだけ重視するか」を表す数値
- バイアス(b)は「入力に関係なくどれだけ出力を調整するか」を表す値
- y = w×x + b という一次関数が基本形
- ニューラルネットワークの「学習」とは、良い重みとバイアスの値を探し出すこと
- モデルのサイズ(パラメータ数)が大きいほど、より複雑なパターンを学べる
次回は、ニューラルネットワークに欠かせない活性化関数について学びます。