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

線形分類器

各クラスに重みの行とバイアスを持たせ、s_k = w_k·x + b_k を計算し、最大スコアを返します。まとめると s = Wx + b と argmax。三クラスなら三回の内積です。

この形は領域を制限します。非退化な場合、二スコアの同点位置は直線です。各クラスの勝つ領域は半平面の共通部分なので凸集合になり、空、非有界、退化した領域もあり得ます。同一クラスの離れた島や穴は作れません。

スコアから判定へ

w_A の方向に進むほど A のスコアが上がり、逆へ進むと下がります。b_A は全入力の A スコアに同じ定数を加えます。argmax は大小を比べるだけで、クラスタまでの距離、学習例との類似、未知入力の拒否は扱いません。

遠い点にもクラスを返し、大きなスコア差を付けることがあります。その差は学習の証拠でも確率でもありません。「該当なし」が必要なら拒否規則を別に設けます。

境界が直線になる理由

クラス i が j に勝つ条件を引き算すると:

w_i·x + b_i > w_j·x + b_j
(w_i − w_j)·x + (b_i − b_j) > 0

等号で、w_i−w_j ≠ 0 なら法線 w_i−w_j の直線です。保存するのは重みとバイアスで、境界は比較から導きます。

三クラスでは同点線の全体が最終境界とは限りません。その二クラスが第三クラスに負けていない部分だけが判定を変えます。画面は「下位二クラスの同点」を切り落とします。K クラスには最大 K(K−1)/2 対の候補境界があり、有効部分は線分、半直線、直線になり得ます。

一行の重みを変えると、そのクラスに接する法線が変わり、境界が回転し得ます。b_i だけなら法線を保ち平行移動します。初期の三クラスのくさびは角度を保ちますが、多クラスでは辺が現れたり消えたりして形状も変わります。全バイアスに同じ定数を足してもスコア差と判定は変わりません。

凸性と島

クラス k の領域は {x : 全ての j に対して s_k ≥ s_j}、すなわち半平面の共通部分です。凸集合は内部の二点を結ぶ線分全体を含みます。

C の二つの集まりの間に A の点が並ぶなら、C が両端を取ると通路も取らざるを得ず、A を誤分類します。どんな W,b でも避けられません。学習率や学習時間では表現力は変わりません。追加特徴、カーネル、非線形の隠れ層なら表現を変えられますが、適切な表現の学習が自動的に保証されるわけではありません。

重みの由来

本課の W,b は手作業の入力で、C 行を編集して幾何を観察します。実際の学習は損失と勾配で重みを調整します。Softmax と交差エントロピーは一般的な組合せですが、ヒンジ損失のように確率を必要としない方法もあります。更新は勾配降下法、逆伝播、学習ループの課で扱い、ここでは固定パラメータの動作を調べます。

ステップごとの例

九つのラベル付き点、問い合わせ x=(−1,−4) と次の設定を使います。

w_A = (1,−1), b_A = 0
w_B = (0,2),  b_B = 0
w_C = (−2,0), b_C = 0
  1. 配置、拍 1–2。 A は右下、B は上、C は左。問い合わせは白抜きで、重みの矢印は原点から描きます。
  2. 採点、拍 3–5。 s_A=1×(−1)+(−1)×(−4)=3、s_B=0×(−1)+2×(−4)=−8、s_C=(−2)×(−1)+0×(−4)=2。射影と符号付きの棒が各値を示します。
  3. 判定、拍 6。 (3,−8,2) の最大は A。C との差は 1、B との差は 11 です。
  4. A/C 境界、拍 7。 (3,−1)·x=0、つまり x₂=3x₁。問い合わせは A 側です。スコア差 1 を幾何距離にするには法線の長さで割ります。
  5. C 領域、拍 8。 s_C≥s_A と s_C≥s_B を順に塗ります。後者の境界は x₁+x₂=0。重なりだけが C の領域です。制約線は全体を描き、最終境界は有効部分だけを描きます。
  6. 全体図、拍 9。 A/B は x₁−3x₂=0。バイアスが全てゼロなので三線は原点で交わります。下位の同点部分を除くと九点とも正しく、誤りは 0/9 です。
  7. 凸性、拍 10。 C 内の二点を結ぶ線分も全て C です。この重みの偶然ではなく、半平面の交差が要求します。
  8. 方向だけ、拍 11–12。 C 行を (−2,0)→(0,−2) と回します。長さとバイアスは固定です。C の一点が B、A の二点が C となり、誤りは 3/9。問い合わせも A→C です。
  9. バイアスだけ、拍 13–14。 重みを戻して b_C を 0→3。境界は平行移動し、九点は正しいままですが問い合わせは A→C になります。二つの変化は別の仕組みです。
  10. 終了、拍 15。 初期設定と誤りゼロの地図へ戻します。

「二つの島」では C が対角の二隅、A が通路を占めます。初期地図は 3 誤り、C の回転後は 4、バイアス変更後は 5。追加の第 15 拍で島を結ぶ線分を描き、両端を含む凸領域は通路上の A の点も含むと示します。締めくくりは第 16 拍に移ります。

計算量

K クラス、d 特徴の採点は O(Kd)、argmax は O(K)。重みの保存は O(Kd)、K スコアの保存を除く最大値探索の追加空間は O(1) です。深い分類ネットワークでも、抽出済み特徴にこの出力層を適用します。1000 クラスの分類ヘッドも同じ形です。

境界ケース

  • 同点。 境界プリセット x=(−1,−3) では A と C が 2。scores.index(max(scores)) は順番で A を返しますが、幾何的には境界点です。
  • 遠い隅。 (5,5) は (0,10,−10) で B が 10 点上回ります。近くに B の学習群があることは意味しません。
  • 分離不能。 二島では入力欄の C の整数行を全て試しても誤りが残ります。凸性はさらに一般的な不可能性の根拠です。
  • 零行。 w_k=(0,0) のスコアは定数 b_k。競合のスコアがそれより低い一部の領域だけで勝つこともあります。本課の入力は零行を拒否します。
  • 重複行。 重みもバイアスも同じなら全点で同点になり、一本の境界線では表せません。A/B と完全に同じ C は拒否します。同じ重みでバイアスだけ違えば、低い方は常に負け、領域が空になり得ます。

よくある間違い

  • クラスごとに境界を保存していると思う。保存は一行の重みで、境界は二行の差から求めます。
  • w_A·x+b_A=0 を多クラス境界とする。これは A のスコアがゼロの線で、交代には二スコアの比較が必要です。
  • スコアを確率と読む。3 と −8 は順序を示します。Softmax は同じスコア列の argmax を保ち、境界を曲げません。
  • バイアスで境界を回すと思う。法線は固定ですが、多クラスでは有効な辺の組合せが変わり得ます。
  • 凸性の失敗を最適化のせいにする。特徴や関数族の変更が必要です。
  • argmax の答えを分離可能性の証明とする。学習例のない場所にも答えを返します。