AI画像処理を用いた欠陥検出で、欠陥の分類の仕方が下手過ぎる人が多いな。
皆やたらと、見た目が違う欠陥を分類したがるけど、「その分類って意味ありますか?」ってのが多い。
代表的なのが
・色が違う
・形状が違う
・明るさが違う
という理由で欠陥を分類しちゃう。
勿論、
・工程起因が違う
・対策が違う
・統計管理で分ける必要がある
場合は分けた方がいい。
大事なのは、「工程として意味のある分類になっているか」なんよ。「人の見た目の違いによる分類」には何の意味もないんよ。
ここを間違えると、AIモデルの精度は落ちてしまう。
このことをちょい学術寄りに説明する。
決定境界が増える
AIモデルの分類器は「決定境界」を学習する。
・二値分類 → 境界は基本1つ
・三値分類 → 複数境界
・多クラス → 高次元空間の複雑分割
てな具合に、クラスが増えるほど境界は複雑になる。
そして境界が複雑になるほど必要なデータ量は急増する。
まぁ統計学の基本だな。
データ分断(Data Fragmentation)
例えば欠陥画像を600枚集めたとする。
欠陥を1クラスで分類すると600枚のデータを学習に使えるが、欠陥の色が違うからといって白欠陥、黒欠陥てな具合に分けると、
・白欠陥:300枚
・黒欠陥:300枚
と分けて学習することになる。
統計的には推定の安定性は√n に比例して安定するので、
・1欠陥に分類 → 分散小
・2欠陥に分類 → 分散大
になる。
つまりクラスを分けるだけで推定誤差が増える。
モデル複雑性と汎化誤差
理論的には、
汎化誤差 ≈ モデル複雑性 / サンプル数
クラスが増えると
・出力層パラメータ増加
・決定境界複雑化
・実質VC次元増加
になる。
同じデータ量なら汎化誤差は悪化する。
不要な境界を学習してしまう
これ、意外と気にしてない人が多い。
例えば、
・背景
・白欠陥
・黒欠陥
の3クラスにすると、モデルは
・背景 vs 白欠陥
・背景 vs 黒欠陥
・白穴 vs 黒欠陥
の3方向の境界を学習する必要がある。
しかし目的が「欠陥は全てNG」であるなら、「白欠陥 vs 黒欠陥の境界」は不要。学習容量を消費するだけだ。
バイアス・バリアンストレードオフ
クラスをまとめると
・自由度 ↓
・分散 ↓(安定)
になるが、クラスを分けると
・自由度 ↑
・分散 ↑(不安定)
となる。自由度と安定性はトレードオフの関係。
そして、特に製造業での検査は通常
・小〜中規模のデータ量
・不均衡データ
なので、高バリアンス化は危険。
-----
整理すると、
■欠陥種別を分けるべき条件
工程原因が違う
対策が違う
統計管理で区別する
十分なデータがある
■分けない方が良い条件
形状違い、色違いがあっても、欠陥は全て「NG」
データ数が限られている
■重要な誤解
「特徴が違う=クラスを分けるべき」
これは誤り。
分類問題の目的は、「意味のある区別をすること」であって、数学的に分離可能なものを全部分けることではない。