精度100%のAIをつくるには？

#本エントリーの目的は？

ブレインパッドのAI営業部に所属している小澤です。

仕事柄、データ分析やAIの活用についてお客様と会話させて頂く機会が多いのですが、
**特に画像認識を用いたAI構築のご相談**の際によく聞かれるのがタイトルのご質問です。

画像認識を用いたAIとは、例えば、
**「良品に混じっている異物を検知するAI」**とか、**「損傷/劣化部分を検知するAI」**のことで、
大量の画像データをもとに画像を構成する特徴を抽出し、その特徴を用いて画像の分類を行うようなAIを指します。

営業マンとしては、AIに期待いただけるのは本当に嬉しいことです。
きちんとした導入の仕方をすれば、業務の省力化ないしは自動化に貢献する強力なツールかと思っています。

ただし、上記の質問については、営業マンとしては困惑混じりの微笑をするしかありません。
精度100%を達成するのは、実際のビジネスシーンを想定すると、達成するのはほぼ不可能と言えます。

なぜそう言えるのか？

それにお答えするのは本エントリーの目的です。

なお、前提として、私を含めた一般人がわかる表現を使いますので、
必ずしも学術的に正確な表現となっていない場合もあり、その点はご了承くださいませ。

逆に言うと、私のような一般人でも十分に理解できる表現とはなっているかと思いますので、ぜひお楽しみください。

<br>

#そもそも精度100%とは？

そもそもですが、精度100%とはどういう状況でしょうか。
これを表現するには精度に関する「適合率」と「再現率」という、２つの考え方を知らねばなりません。


###適合率：Precision

さて、いきなりですが、問題です。

ある工場において、ベルトコンベア上に流れる製品に混じっている不良品を
画像を元に検出したいという相談を頂きました。

依頼主の工場長はこう仰います。

**「不良品を100%検知したいんだ」**

さて、どういった提案をしましょうか？

<br>

トンチが利く方はピンと来るかもしれませんが、
一番簡単な方法は、**「全て不良品」と判定するAIを作ればよい**のです。（もはやAIである必要はありませんが、、）
そうすれば不良品は100%検知することができます。

ただ、これは実用的な解決策になっていないことは感覚的に明らかですが、
その理由をきちんと説明できますでしょうか？

これを説明するのが、「適合率：Precision」という指標で、
要は、**「どのくらい誤検知しているの？」**という指標です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310977/a1d7bf59-1a59-d564-cb67-e167b4d1bd08.png)

「不良品を100%検知したいんだ」という言葉の裏には、
**「ただし、良品は不良品と判定してないけない」**という暗黙のルールが隠れています。

これを精度として指標化したのが「適合率」で、以下のように表現します。
<br><br>

```math
適合率　＝　\frac{④不良品と判定した不良品}{（④不良品と判定した不良品）＋（②不良品と判定した良品＝『誤検知』）}
```
<br>
つまり、いくら不良品を検出したとしても、
同時に良品を不良品と判断してはこの指標を高めることはできなくなります。
**むやみやたらに不良品と判断することを監視**できるのが、「適合率」の役割です。

***

###再現率：Recall

「再現率」とは、適合率を導入したときと発想は同じで、
全てを良品と判断し、**「不良品を良品として見逃してしまうこと」**を防ぐ役割をするものです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310977/7e7c95ce-d32b-7b9a-f481-1fa321e86f08.png)

<br>

```math
再現率　＝　\frac{④不良品と判定した不良品}{（④不良品と判定した不良品）＋（③良品と判定した不良品＝『見逃し』）}
```

<br>

実際のビジネスシーンを考えると、日本の製造業において不良品がしょっちゅう混じっていることは考えづらいです。
むしろ、「99%は良品、1%が不良品で、ただ生産量が多いため、それを人手で確認すると業務負荷が高くなんとかしたい」
というご要望がほとんだと思います。

この状況下で全てを良品と判断すれば99%当たるAIとなるわけですが、
クライアントの悩みは一切解決できていない、見た目の精度を追求した全く的はずれな回答となってしまいます。

これを防ぐために再現率を定義することで、むやみな良品判定を抑制できます。
<br><br>



#これらを踏まえると？

さて話を戻すと、精度100%を考えるときはこの２つの考え方を踏まえねばなりません。
つまり、不良品を見極めつつも、**良品を誤検知しないかつ、不良品を見逃さない**ということです。

そして勘の良い方はわかるかと思いますが、この２つの考え方は**トレードオフの関係**になっています。
つまり**、誤検知を減らそうとして甘くすると見逃しが増え、見逃しを減らそうとして厳しくすると誤検知が増えます。**

ということは、厳しすぎず甘すぎない境界線を見つけることができればよいのですが、
ビジネスシーンではこういったパッキリとした境界線を引けないことがほとんどです。
そもそも不良の定義にしても、**厳密な定義などなく**、あったとしても**人によって判断が異なる**場合がほとんどです。

例えば、「腐っている魚とは？」を定性的に定義をすることはかなり難しいことがわかるかと思います。
そして、仮に定義できたとして、定性的なので人によって判断が異なる場合も多いかと思います。

では、定量的に判断すると、それはそもそもAIである必要がなく、従来から存在するルールベース的な手法で実現可能です。
（我々もそういったケースはAI導入ではなく、ルールベース的なアプローチをオススメしています。）

<br>

#まとめ

まとめますと、精度100%を実現しようと思ったら、まずは**精度とは？**ということについて考えねばなりません。

それにあたっては**「誤検知」「見逃し」のトレードオフ関係**を頭に入れた上で、
実際のビジネスシーンを想像したときにどういった塩梅で均衡させるのが良いのかを考えていく形になります。

例えば、
「少しの見逃しは発生するが、製造量を担保するために良品の誤検知を減らす方向にして、最終チェックの人員は残しておこう。」
といったビジネス的な判断のもと目指すべきAIを定義していかねばなりません。
これはもはやAI構築の話ではなく**オペレーション設計の話**です。

そのため、**ベンダーにAI開発を丸投げしてもうまくいくはずがなく**、
企業様と我々のようなベンダーは**二人三脚で取り組んでいかねばならない**と思っております。

もちろんこういったビジネス的な判断については、最終的には企業様の判断になっていくわけではありますが、
そういった<font color="Red">**意思決定やビジネス実装をデータを用いてご支援をしているのがブレインパッド**</font>という会社なので、
こういったお悩みがある際は、ぜひ弊社コーポレートサイトよりご連絡くださいませ。

[ブレインパッドお問い合わせフォーム](http://www.brainpad.co.jp/contact/)

<br>

と、、、営業らしく会社の宣伝をして終了とさせていただきます。

お粗末さまでした。