このツールについて

散布図上の10個のデータ点に対して、「一番よく当てはまる直線」y = ax + b を、勾配降下法を使って少しずつ調整しながら求めるインタラクティブな教材です。 直線を1本ずつ試すのではなく、傾き a と切片 b を毎回少しずつ更新していく様子と、誤差がどんどん小さくなっていく様子を同時に見ることができます。

ツールを開く →

使い方

  1. データ点を確認・編集する:上のグラフの点はドラッグして自由に動かせます。左側の表で x, y の数値を直接入力することもできます。「データを初期値に戻す」でいつでも元の10点に戻せます。
  2. 初期値 a, b を設定する:「初期 a」「初期 b」のスライダーで、直線の出発点(最初の傾きと切片)を変更できます。ここで設定した値は「リセット」を押したときに使われます。
  3. 1ステップずつ確認する:「1ステップ実行」(または「5ステップ実行」)を押すと、更新式に従って a と b が動き、直線が少しずつデータに近づいていきます。
  4. 自動で収束させる:「自動実行」を押すと、Δa・Δb がほぼ0になる(=これ以上直線を動かしても誤差が減らなくなる)まで自動的に更新を繰り返します。
  5. 誤差の減り方を観察する:下のグラフには、繰り返し回数ごとの誤差2乗和 C の変化が表示されます。学習が進むほど C が小さくなっていく様子を確認できます。

各コントロールの役割

初期 a / 初期 b スライダー 「リセット」時に適用される、傾きと切片の出発値を設定します。
データ点 (x, y) グラフ上でドラッグ、または表で数値入力してデータを編集できます。編集すると学習は自動的に最初からやり直されます。
1ステップ実行 / 5ステップ実行 勾配降下法の更新式を1回(または5回連続で)適用します。
自動実行 / 停止 Δa, Δb が十分小さくなるまで更新を連続で繰り返します。「停止」でいつでも中断できます。
リセット a, b を初期値に戻し、繰り返し回数と誤差の推移グラフをクリアします。
現在の状態パネル 繰り返し回数、現在の a・b・誤差2乗和 C、勾配 ∂C/∂a・∂C/∂b、直前の更新量 Δa・Δb を表示します。

学習できる内容

① 最小二乗法とは何か

データ点にぴったり重なる直線は普通ありません。そこで「各データ点と直線の縦方向のズレ(残差)を2乗して全部足したもの」を誤差として定義し、この誤差が一番小さくなるような直線を「最もよく当てはまる直線」とする考え方が最小二乗法です。

予測値:ŷ = ax + b
誤差2乗和:C = Σ (y − ŷ)² = Σ (y − (ax+b))²

下の概念図は、5個の点と1本の直線、そして各点から直線までの縦方向の距離(点線)を示しています。この点線の長さを2乗して合計したものが C です。

② 勾配(偏微分)の意味

∂C/∂a = Σ −2x・(y−(ax+b))
∂C/∂b = Σ −2・(y−(ax+b))

∂C/∂a は「a を少しだけ増やしたとき、誤差 C がどれくらい・どちら向きに変化するか」を表します。b についても同様です。 この2つの勾配が、a と b をそれぞれどちら向きに、どれくらい動かせば誤差が減るかを教えてくれます。

③ 更新式とステップ幅の正規化

ηa = 1 ÷ max( |∂C/∂a| , 500 )  ηb = 1 ÷ max( |∂C/∂b| , 50 )
Δa = −∂C/∂a × ηa  Δb = −∂C/∂b × ηb
新しい a = 現在の a + Δa  新しい b = 現在の b + Δb

a と b はそれぞれ、勾配と逆方向(誤差が減る方向)に更新されます。

ηa・ηb の役割: 学習の初期は勾配 ∂C/∂a や ∂C/∂b が非常に大きくなることがあります。もし単純に「勾配 × 一定の学習率」で更新すると、直線が暴れて発散してしまう危険があります。 ηa = 1/max(|∂C/∂a|, 500) という式は、勾配が500より小さいときは通常の学習率(1/500)として働き、勾配が500を超えるほど大きいときは更新量の大きさを1に制限するように自動調整されます(b 側は基準値が50)。 gradient_descent.html の「移動量を最大2に制限する」仕組みと同じ発想を、割り算の形で実現しています。

④ データ点を動かすとどうなるか

グラフ上の点をドラッグして大きく動かす(=外れ値を作る)と、直線がその点に引っ張られて傾きが変化する様子を確認できます。これは「2乗誤差」が、遠く離れた点のズレを特に大きく評価してしまう(誤差を2乗するため)という最小二乗法の性質を体験的に理解するのに役立ちます。

⑤ 4次関数の例との違い:唯一の最適解に収束する

勾配降下法基礎 で扱った4次関数には、出発点によって行き着く先が変わる「極小値が複数ある」ケースがありました。 一方、この誤差関数 C = Σ(y−(ax+b))² は a, b についてお椀のような単純な形(凸関数)をしているため、初期値をどこに設定しても、勾配降下法は必ず同じ唯一の最小値(最も当てはまりの良い直線)にたどり着きます。初期値スライダーをいろいろ変えて「自動実行」を試し、最終的な a, b が毎回同じ値に収束することを確認してみてください。

このページは regression_line.html の解説用ガイドです。実際の操作はツール本体で行えます。