ホーム›Part 2 機械学習の基礎›2.4

Part 2 · 機械学習の基礎

2.4 ロジスティック回帰

確率で分類する

読了目安 10分前提:2.2 線形回帰と損失関数、2.3 勾配降下法▶ 動画(約5分)

この回で分かること

  • 分類の答えを確率で出す ロジスティック回帰 のしくみ(シグモイド関数)を説明できる
  • 分類の損失関数 交差エントロピー を計算し、2乗誤差を使わない理由を説明できる
  • 確率を判定に変える しきい値 が、見逃しと誤警報のバランスを決めることを説明できる

直感で理解する

高速道路で、隣の車線の車がこちらの車線に割り込んでくるかどうかを予測したいとします。手がかりは、その車がこちらへ寄ってくる横方向の速度です。18回の場面を記録すると、速く寄ってくる車ほど割り込むことが多いものの、はっきり線が引けるわけではありません。0.35 m/s で割り込んだ車もいれば、0.7 m/s で割り込まなかった車もいます。

答えは「割り込む(1)」か「割り込まない(0)」の2つです。2.2 のように直線を当てはめると、予測が1を超えたりマイナスになったりして、意味をなしません。そこで、どんな値も0と1の間の 確率 に押し込むS字の曲線を使います。これが ロジスティック回帰 です。

割り込む確率 p 0 0.5 1 0 0.2 0.4 0.6 0.8 1.0 1.2 隣の車線の車の横方向の速度(こちらへ寄る向き、m/s) 割り込んだ(1) 割り込まなかった(0) しきい値 0.5 境界 0.56 m/s
18件の場面(赤:割り込んだ、黒:割り込まなかった)と、学習したS字の曲線(割り込む確率)。確率がしきい値0.5を超える所(横方向の速度 0.56 m/s)より右を「割り込む」と判定する。数値は説明用の例。

学習した曲線では、横方向の速度が 0.2 m/s なら割り込む確率は約5%、0.6 m/s で約57%、1.0 m/s なら約97% です。確率が0.5を超える所(0.56 m/s)より右を「割り込む」と判定すれば、分類になります。この「0.5」を しきい値 と呼びます。あとで見るように、しきい値は安全のために動かすことがあります。

数式で確かめる

① シグモイド関数で確率にする

$$p = \sigma(z) = \frac{1}{1 + e^{-z}}, \qquad z = w x + b$$

z は 2.2 と同じ直線の式です(入力が複数なら、重み付きの和)。シグモイド関数 σ(z) は、z がどんな値でも結果を0〜1に収めます。z = 0 なら 0.5、z が大きいほど1に、小さいほど0に近づきます。今回の学習結果は w ≈ 7.96、b ≈ −4.49 でした。横方向の速度 0.6 m/s なら z = 7.96 × 0.6 − 4.49 ≈ 0.29 で、\(p = 1/(1 + e^{-0.29}) \approx 0.57\) です。

② 重みの意味(オッズ)

シグモイド関数を逆にたどると、次の関係になります。

$$\ln\frac{p}{1-p} = w x + b$$

\(p/(1-p)\) を オッズ(起きる確率が、起きない確率の何倍か)と呼びます。オッズの対数が x の直線になっている、というのがロジスティック回帰の正体です。w ≈ 7.96 は、「横方向の速度が 0.1 m/s 増えるごとに、割り込みのオッズが \(e^{0.796} \approx 2.2\) 倍になる」と読めます。線形回帰と同じく、学んだ重みの意味を人が確かめられます。

③ 損失関数:交差エントロピー

$$L = -\big[\,y \ln p + (1 - y)\ln(1 - p)\,\big]$$

これを 交差エントロピー と呼びます。正解が y = 1 のときは −ln p だけが残り、p = 0.9 なら 0.11、p = 0.6 なら 0.51、p = 0.1 なら 2.30 です。自信を持って外すほど、罰が急に大きくなる のが特徴です。今回の18場面の平均は約0.37でした。

交差エントロピーの合計を最小にすることは、データ全体がこのとおりに観測される確率(尤度)

$$\prod_{i=1}^{n} p_i^{\,y_i}\,(1 - p_i)^{1 - y_i}$$

を最大にすることと同じです(ln をとってマイナスを付けると、交差エントロピーの合計になります)。これを 最尤推定 と呼びます。ロジスティック回帰には 2.2 のような一度で解ける式がないので、2.3 の勾配降下法でパラメータを探します。

④ しきい値の選び方

同じモデルでも、しきい値を変えると判定が変わります(18場面のうち、割り込んだのは8場面)。

しきい値境界の速度割り込みを予測できた見逃し誤警報
0.70.67 m/s5 / 83件1 / 10
0.50.56 m/s6 / 82件2 / 10
0.30.46 m/s7 / 81件2 / 10

しきい値を下げると見逃しは減りますが、一般に誤警報は増えます(今回はデータが少ないため、0.5 から 0.3 に下げても誤警報は2件のままでした)。しきい値をどこに置くかは、見逃しと誤警報のどちらがどれだけ危険かで決める 設計の判断 です。

⑤ 3つ以上に分けるとき(ソフトマックス関数)

歩行者・自転車・車のように3つ以上に分けるときは、分類先 k ごとに点数 \(z_k\) を計算し、次の ソフトマックス関数 で確率に直します。

$$p_k = \frac{e^{z_k}}{\sum_{j} e^{z_j}}$$

すべての確率は0以上で、合計すると1になります(例:歩行者 0.7・自転車 0.2・車 0.1)。画像認識のニューラルネットワークでも、最後の段でこの計算をしています。

自動運転との接点

  • 認識AIの出力は「確率+しきい値」:物体を見つけるAIは、見つけた物ごとに「歩行者である確率」のような数を出し、しきい値を超えたものを検出として次の処理に渡します。
  • しきい値は安全の設計:下げれば見逃しは減りますが、不要な急ブレーキ(誤検知)が増え、それ自体が追突などの危険を生みます。見逃しと誤検知をどこまで許すかを、ハザード分析と合わせて決めます。→ 2.7 評価指標、5.4 ハザード分析
  • 「確率0.9」をうのみにしない:モデルが出す確率が、本当に9割当たるとは限りません(キャリブレーション)。とくに学習データにない場面では、自信を持って間違えることがあります。→ 3.7 不確実性とキャリブレーション
  • 境界が直線という限界:ロジスティック回帰の判定の境界は、入力に対して直線(入力が多ければ平面)です。複雑な形の境界が必要なときは、決定木やニューラルネットワークを使います。→ 2.5 決定木とアンサンブル、3.1 ニューラルネットワーク

まとめ

  • ロジスティック回帰は、直線 z = wx + b をシグモイド関数で0〜1の確率に変えて分類する。重みはオッズの倍率として読める
  • 損失は交差エントロピーで、自信を持って外すほど大きな罰になる。一度で解ける式がないので、勾配降下法で学習する
  • 確率を判定に変えるしきい値は、見逃しと誤警報のバランスを決める安全上の設計。3つ以上に分けるときはソフトマックス関数を使う

確認クイズ

Q1. z = 0 のとき、シグモイド関数 σ(z) の値は?

\(1/(1 + e^{0}) = 1/2 = 0.5\) です。z = 0 の所が、確率0.5の境目になります。

Q2. 正解が「割り込む(y = 1)」の場面で、モデルAは p = 0.9、モデルBは p = 0.6 と予測しました。それぞれの交差エントロピーは?

A は −ln 0.9 ≈ 0.11、B は −ln 0.6 ≈ 0.51 です。正解の側により高い確率を出した A のほうが、損失は小さくなります。

Q3. しきい値を 0.5 から 0.3 に下げると、一般に見逃しと誤警報はどう変わる?

「割り込む」と判定される場面が増えるので、見逃しは減り、誤警報は増えます。どちらを優先するかは、それぞれの危険の大きさで決めます。

Q4. 学習データになかった形の特殊車両に対して、モデルが「割り込まない確率 0.99」と出しました。信じてよい?

そのまま信じるのは危険です。モデルの確率は、学習データと似た場面でしか当てになりません。見慣れない対象では自信を持って間違えることがあるので、別の手段で確かめたり、慎重な側に振る舞ったりする設計が必要です。

もっと知りたい人へ