大きな画面での利用をおすすめします — アニメーションと操作がより快適になります。
入力

ベクトルと内積

内積は対応する座標を掛けて足します:w·x = w₁x₁ + w₂x₂。同じ値は |w|·|x|·cos θ でも表せます。非零ベクトルでは符号を角度が決め、大きさには長さも関わります。線形分類、ニューラル層、注意機構、ベクトル検索で使う基本の積和演算です。

ループは角度も長さも測らず、total += w[i] * x[i] を実行します。それでも同方向なら正、直交ならゼロ、90° を超えると負になります。パーセプトロンのスコア、活性化前の値、注意の logit、内積を用いる類似度を同じ関係から読めます。

代数と幾何

二次元なら乗算二回と加算一回、d 次元なら同じループを延ばします。

  • v·v = |v|² なので |v| = √(v·v)。
  • 非零ベクトルでは cos θ = (w·x)/(|w||x|) で方向を比較できます。
  • |x| cos θ は w 方向への符号付き射影長です。したがって内積は |w| × 符号付き射影長。逆方向への射影は負です。

角度が 90° 未満なら正、90° ならゼロ、それを超えると負です。非零 w に対する w·x = 0 は原点を通り w と垂直な直線です。バイアスなしの線形分類器はこれを境界にします。b を加えると w·x + b = 0 となり、向きを保って平行移動します。

内積とコサイン類似度

内積は方向と長さを一つの数に含みます。方向の一致が弱くても長い候補は、短い同方向の候補より高得点になり得ます。正の倍率で伸ばすと角度を保ったまま内積が増えます。方向だけを比べたいなら両方の長さの積で割ります。それがコサイン類似度で、コサイン検索では事前の正規化がよく使われます。

長さが学習した評価規則の一部なら内積を保ちます。線形スコアや注意では振幅も使いますが、長いベクトルが校正済みの高い確信度を意味するわけではありません。正規化の要否は比較したい量で決めます。

ステップごとの例

初期値は w = (3,1)、x = (1,2) です。

  1. 代数、拍 1–4。 二つの矢印を出し、補助線で横座標を示して 3 × 1 = 3、縦座標で 1 × 2 = 2 を記録します。和は 5。アルゴリズムはここで終わり、後半はこの値の意味を調べます。
  2. 幾何、拍 5–7。 |w| = √10 ≈ 3.16、|x| = √5 ≈ 2.24。cos θ = 5/√50 = 1/√2 ≈ 0.707、角度は 45° です。x の先端から w の直線へ垂線を下ろすと、射影長は 5/√10 ≈ 1.58。|w| を掛ければ同じ 5 になります。表示の近似値同士の積には丸め誤差があります。
  3. 角度を固定、拍 8。 破線の x を二倍にします。射影は約 1.58 → 3.16、内積は 5 → 10、余弦は 0.707 のままです。二倍では ±5 の描画範囲を超える場合、半分に縮めます。
  4. 長さを固定、拍 9–13。 矢印を回し、w との角度 0°、45°、90°、135°、180° で採点します。値は +7.07、+5、0、−5、−7.07。振幅の上限は |w||x| です。
  5. 判定、拍 14。 初期値は 5 > 0 なので角度は 90° 未満です。正の倍率では符号が変わりません。ゼロ倍は方向を失い、負の倍率は方向を反転させます。
  6. 境界、拍 15。 w·x = 0 と正側の領域を描きます。両側の符号の違いが線形分類の基礎です。バイアスを加えると平行な境界になります。

左の表は代数、平面は幾何を示します。入力を変えたら、角度による符号と長さによる値の変化を分けて見ます。二倍長のプリセットでは長い矢印で全計算をやり直します。両ベクトルを二倍にすると内積は四倍です。

計算量

d 次元では乗算 d 回、加算 d−1 回で、時間 O(d)、追加空間 O(1) です。全体の負担は内積の回数にも依存します。注意機構は query–key の組、検索は多数の候補を採点します。実際の数値計算では np.dot、torch.matmul などの最適化実装を使い、教材のループは構造の理解に使います。

境界ケース

  • 零ベクトル。 内積はゼロですが、方向とコサイン類似度は未定義です。分母がゼロになるため、入力欄は零ベクトルを拒否します。±5 の整数格子の他の組は使えます。
  • 直交。 長さのある二本でも内積はゼロです。その方向の射影がないという意味です。
  • 反対向き。 90° を超えると負になります。境界の反対側を示せます。
  • 共線。 同方向は |w||x|、逆方向は −|w||x|。余弦の範囲が限界を決めます。
  • 伸縮。 方向を保つ倍率に比例して値が変わります。画面の制約は拡大か縮小かを選ぶだけで、この法則を変えません。

よくある間違い

  • 座標を交差させて w₁x₂ + w₂x₁ とする。内積は同じ添字同士です。w₁x₂ − w₂x₁ は二次元の外積に対応する符号付き面積で、絶対値は直交時に最大です。
  • 掛けずに足す。w_i + x_i では w_i が各項の重みになりません。
  • 距離と読む。大きな正の内積は方向と長さを反映し、端点同士が遠くても大きくなります。
  • 長さの違う候補を方向だけのつもりで比べる。必要なら正規化します。
  • 負の値を失敗とみなす。符号は境界のどちら側かという情報です。