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

Part 2 · 機械学習の基礎

2.8 データの分け方と分布シフト

訓練時と本番の「ずれ」

読了目安 10分前提:2.6 過学習と正則化、2.7 評価指標▶ 動画(約5分)

この回で分かること

  • 評価を甘くする データの漏れ の原因と、まとまりごとにデータを分ける防ぎ方を説明できる
  • 分布シフト の3つの型(入力の分布・対象の割合・入力と答えの関係が変わる)を、例を挙げて説明できる
  • 場面ごとの性能と場面の割合から全体の性能を計算し、ODD や運用後の監視との関係を説明できる

直感で理解する

2.6 では、学習に使っていないテストデータで性能を測ることを学びました。ところが、テストで高い成績だったモデルが、実際の道路では思ったほど働かないことがあります。原因は大きく2つです。1つは、テストデータの分け方が甘く、テストが本当の意味での「初見」になっていないこと。もう1つは、テストデータと実際の走行環境とで、データの性質がずれていること。これを 分布シフト と呼びます。

たとえば、ある歩行者検出器の再現率(2.7)は、昼・晴れでは96%ですが、夜・雨では62%でした。テストデータの7割が昼・晴れなら、全体の再現率は92%です。ところが夜や雨の多い地域で走らせると、場面ごとの性能はまったく同じなのに、全体の再現率は86%に下がります。

場面の割合 訓練・試験データでの割合 実際に走る地域での割合 0% 25% 50% 75% 70% 40% 15% 25% 12% 20% 3% 15% 昼・晴れ 昼・雨 夜・晴れ 夜・雨 再現率 96% 再現率 90% 再現率 80% 再現率 62%
場面ごとの割合を、訓練・試験データ(薄い色)と、実際に走る地域(濃い色)で比べたもの。検出器の再現率は場面ごとに違う(下の数字)。場面ごとの性能が同じでも、苦手な場面の割合が増えると、全体の性能は下がる。数値は説明用の例。

数式で確かめる

① 全体の性能は「場面ごとの性能 × 場面の割合」の和

場面 k の割合を \(w_k\)、その場面での再現率を \(R_k\) とすると、全体の再現率は次の式で決まります。

$$R_{\text{all}} = \sum_{k} w_k\,R_k$$

試験データの割合なら 0.70 × 0.96 + 0.15 × 0.90 + 0.12 × 0.80 + 0.03 × 0.62 ≈ 0.92、実際に走る地域の割合なら 0.40 × 0.96 + 0.25 × 0.90 + 0.20 × 0.80 + 0.15 × 0.62 ≈ 0.86 です。モデルは何も変わっていません。変わったのは、場面の割合だけです。

さらに、苦手な場面ほどデータが少ないという問題もあります。試験データが1,000枚でも、夜・雨は3%の30枚だけです。30枚で測った再現率62%には、95%信頼区間でおよそ ±18ポイントの幅があります(1.6)。

② データの分け方と「データの漏れ」

画像を1枚ずつランダムに訓練データとテストデータに分けると、同じ走行・同じ日・同じ場所で撮った、ほとんど同じ画像が両方に入ります。するとテストは「見たことのある問題」になり、成績が実力より高く出ます。これが データの漏れ です。

分け方ねらい例
まとまりごとに分ける似たデータが両方に入るのを防ぐ走行ごと・日ごと・地域ごと・車両ごとに、まとめて訓練かテストに入れる
時間で分ける「将来のデータ」での性能を見る古い期間のデータで学び、新しい期間のデータでテストする
場面の割合をそろえる珍しい場面がテストから抜けるのを防ぐ夜間・雨・子どもなどが、どの分け方にも一定数入るようにする

③ 分布シフトの3つの型

型何が変わるか自動運転での例起きること
入力の分布が変わる
(共変量シフト)
見る景色やセンサの状態雪国、夜間の多い地域、新しいカメラへの交換、フロントガラスの汚れ苦手な場面が増える。見たことのない入力が来る
対象の割合が変わる
(事前確率シフト)
答えの割合歩行者の多い繁華街と、少ない郊外適合率などが変わる(2.7)
入力と答えの関係が変わる
(コンセプトシフト)
正解の決まり方そのもの電動キックボードのような新しい乗り物、交通ルールの変更学んだ規則そのものが古くなる

④ ずれに気づく

  • 入力の統計を見張る:明るさ、写る物の大きさ、天候などの分布を運用中に集め、学習データと比べる
  • 見慣れない入力を見つける:モデルの確信度の変化や、学習データから遠い入力を検出する方法(分布外検出)を使う
  • 範囲の外に出たら安全側に:決めた範囲(ODD)の外に出たと分かったら、機能を制限したり、運転を引き継いだりする

自動運転との接点

  • ODD は「データの範囲」の約束:学習データや試験データでカバーした天候・道路・時間帯の範囲が、機能を使ってよい範囲(ODD)の根拠になります。ODD の外に出たことに気づき、安全側に振る舞うしくみが必要です。→ 4.1 自動運転レベルとODD
  • 試験データの割合を「実際に走る場所」に合わせる:全体の数字は、場面の割合で変わります。想定する地域や季節の割合で重みを付け直して評価し、場面ごとの性能も必ず示します。→ 5.5 受入れ基準と妥当性確認目標
  • ずれは SOTIF の手がかり:性能が落ちる場面(夜間・雨・逆光など)は、SOTIF でいうトリガー条件の候補です。データの偏りや抜けを探すことが、未知の危険を減らすことにつながります。→ 5.3 機能不十分とトリガー条件、5.8 未知の危険を探す
  • 出したあとも見張る:走る環境は時間とともに変わります(新しい車種、道路工事、季節)。運用中のデータを監視し、ずれを見つけたら学習し直して、もう一度評価します。→ 5.11 市場投入後の監視

まとめ

  • テストが本当に「初見」になるよう、データは走行・日・場所などのまとまりごとに分ける(データの漏れを防ぐ)。珍しい場面は、どの分け方にも入るようにする
  • 分布シフトには、入力の分布・対象の割合・入力と答えの関係が変わる3つの型がある。全体の性能は「場面ごとの性能 × 場面の割合」の和で決まる
  • ODD でデータの範囲をはっきりさせ、場面ごとに性能を評価し、運用が始まってからもずれを見張る

確認クイズ

Q1. 場面Aでの再現率は95%、場面Bでは80%です。試験データは A と B が 9 : 1、実際の運用では 1 : 1 でした。それぞれの全体の再現率は?

試験データでは 0.9 × 0.95 + 0.1 × 0.80 = 0.935(93.5%)、実際の運用では 0.5 × 0.95 + 0.5 × 0.80 = 0.875(87.5%)です。

Q2. 同じ日に同じ道で撮った画像を、1枚ずつランダムに訓練データとテストデータに分けました。何が起きやすい?

ほとんど同じ画像が両方に入り、テストの成績が実力より高く出ます(データの漏れ)。走行や日ごとにまとめて分けます。

Q3. 電動キックボードが急に増え、それが歩行者か自転車かの判定がばらつくようになりました。主にどの型の分布シフト?

主に「入力と答えの関係が変わる」型(コンセプトシフト)です。新しい種類の乗り物で、どう分類すべきかという正解の決まり方そのものが、学習したときにはありませんでした。見たことのない入力が来るという意味では、入力の分布の変化でもあります。

Q4. 試験データ1,000枚のうち、夜・雨は30枚で、その再現率は62%でした。この数字をどう扱う?

30枚では、95%信頼区間でおよそ ±18ポイントの幅があり、本当の再現率は44%〜80%のどこかにあってもおかしくありません。夜・雨のデータを増やして測り直し、それまでは区間の下側で判断します。

もっと知りたい人へ