業務適用の前に知ってほしい!AIの評価基準のこと

AIの評価指標を使い分けることで、目的にあったAIモデルを構築する

人間にとって難しいことは、AIにとっても難しい

AIの民主化が進む中、実際にAIをビジネスに活用することは、できたらいいことから、できて当然のことに変わりつつあると感じています。

この記事を読んでくださっているあなたも、近年急速にAIが身近な技術に感じるようになったのではないでしょうか?

しかし、実際にAIを日頃の業務に役立たせるためには、目的にあうAIモデルを用意する必要があります。

近頃はすでに学習済みのモデル(既製品のモデル)がすぐに使える状態でいくつも公開されています。しかし規制品のAIモデルで目的を達成できない場合は、目的に合わせて再学習(転移学習)を行ったり、一から新しいAIモデルを構築・学習することになります。

さて、その際AIにはじめて触れる方は「AIがやれば 100%の精度で予測や判断が可能なんでしょ」と思われるかもしれません。

しかし実際には、人間が難しいことはAIにやらせても難しいのです。逆に人間が誰でも簡単にできることはAIにとっても簡単な場合が多く、AIが99%の精度でできることはたいてい、人間がやっても簡単に(とまでは言わなくても普通に)できてしまいます。

例えば、近年の深層学習による画像処理AIの発展により顔認証技術は実用レベルまで発展しました。

深層学習が使われてなかった頃の顔認証技術と比較するとその精度は格段に向上しましたが、考えてみれば私たち人間は特に特殊な訓練を受けていなくてもほぼ 100%の精度で人間を見分けることができますよね。

最新の顔認証AIでも双子の判別は難題になりますが、人間でしたら出会って数回の頃は悩むことがあるかもしれませんが、慣れれば見分けることができます(間違えたら失礼です)、さらに人間なら数年が経過して顔立ちが変化していたとしても、それを補正して同一人物か判断することができます。

玄関のモニター越しに知っている人が映っていることを確認すればドアの鍵を開けますが、玄関の解錠を顔認証で実施する人はいないですよね。

AIに期待されているのは、困難なタスク

AIを業務の中で活用して利益を生み出そうとする際、ほとんどのケースでは、人間にとって難しいことをAIにさせることになります。

世の中にあるタスクの全てが、人間にとってもAIにとっても難しいわけではありません。例えば一方通行の一本道(大通りとかではない)を通る人の数をカウントする場合、人にとってもAIにとってもそれほど難しいタスクではありません。でも、そういうタスクは既にAIとは違うシステムが実用化されているので、わざわざAIにさせるということにはならないのです。

では、AIに期待されているタスクはどのようなものでしょうか?先ほどの例に近いところで言うと 3 車線で乗用車もバイクもトラックも走る大通りで、トラックは何台、乗用車は何台、バイクは何台とカウントするようなタスクになります。人間の目視によってこのタスクをこなすのは非常に困難です。

他にも、需要予測というタスクであれば、ある程度明白な法則があり、簡単な数式で予測できるようなものではなく、数十の要因が複雑に絡みあった事象を元に、数ヶ月先の需要を予測するものだったりするのです。

この文章を読んでくださっている皆様が、もしAIに任せたいタスクがあるのでしたら、それは人間がやっても難しいことなのではないでしょうか?

そのような課題に対して 100%の精度でAIが正解を出したらわたしたちの日常に革命が起きるわけですが、残念ながらそんなことはなく、とりあえずある程度の精度で正解できたらヨシ!と許容することになります。

重要なことは100%正解することではなく、目的にあった指標でAIを評価すること

ということで、やっとに本題に入ります。

長々しい導入の中で間違わないAIを作ることは難しいと言うことを説明させていただきました。

それならば、目的に合わせてAIの間違い方を最適化すればいいのです。

そして、AIの学習の中ではAIの間違い方を最適化するために適切な評価指標を選択し、その指標の中で最高の性能が出るようにAIモデルを調整することになります。

混同行列とAIの評価に利用される4つの指標

まずは混同行列について説明させてください(すでに知ってますという方は読み飛ばしてください)。

最近何かと医学的な検査が話題になるので、以前より一般的な概念になりましたが、AIモデルの予測の正解と不正解には、その予測が外れているか当たっているかによって、それぞれ2つのパターン(計4つのパターン)が存在します。さらに、それらの4つの値はよく混合行列と呼ばれる2x2の行列(というより表)であらわされます。

ここで、簡単な例を用いてそれぞれのパターンについて考えていきたいと思います。

https://isid-ai.jp/assets/images/column/column14/figure1.png

あなたは、上の写真のようなさまざまな木の実の中からそれぞれの見た目を見てどんぐりか否かを判断する(どんぐりであることを予測する)画像診断AIを構築しようとしているとします。

どんぐり診断AIが木の実をどんぐりと判断した場合は、その木の実はAIにより陽性(Positive)と判断されたことになります。逆に、AIがこれはどんぐりではないと判断した場合はその木の実はAIにより陰性(Negative)と判断されたことになります。

真陽性(True Positive)と偽陽性(False Positive)

さて、陽性(Positive)の中にも実際には二つのパターンが存在します。

その木の実がどんぐりだと(陽性・Positive)判断し、本当(True)にどんぐりだった場合(真陽性・True Positive)と、どんぐりだと(Positive)思ったが間違い(False)でどんぐりではなかった場合(偽陽性・FalsePositive)です。

ということで、AIが陽性と判断した際には真陽性(True Positive)と偽陽性(False Positive)が存在します。もちろん、真陽性ばかりならいいですが、学習によって偽陽性が全くないAIを構築することは難しく、タスクの難易度にもよりますか必ず「陽性だと思ったけど実は違った」というパターン(偽陽性)が存在します。

ですから、AIが陽性と判断した数(真陽性の数+偽陽性の数)の中で真陽性だった数を評価する必要性があり、この割合を適合率(Precision)と呼びます。

 適合率(Precision)= \frac{True Positive}{True Positive + False Positive}

適合率は高ければ高いほどそのAIの性能が高いことを意味します(もし偽陽性が存在しなければ適合率の値は1)。

さらに、実際にが陽性だった数(真陽性の数+偽陰性の数)の中で真陽性だった数を評価する再現率(Recall)という指標も存在します。

 再現率(Recall)= \frac{True Positive}{True Positive + False Negative}

適合率(Precision)を用いるケース

さて、この適合率を重視してAIを学習させると効果的なケースにはどういったものが存在するのか考えます。

適合率に関して重要なことは2点あります。1点目は「どんぐりだと判断したのにどんぐりではなかった」偽陽性が少なければ少ないほど適合率の値が良くなるということです。

そして2点目は、後述する「どんぐりではない(陰性・Negative)と判断したのに、間違い(False)でどんぐりだった」というケースに当たる偽陰性・False Negativeの存在は考慮されないことになります。

つまり、学習中のAIがどんなにどんぐりを見逃していても、どんぐりと判断した木の実がほぼ全てどんぐりであれば、そのAIは適合率において優秀なAIと評価されることになるのです。

さて、あくまで自分の主観ですがビジネスにおいてこのような判断が必要になる意外と多いです。

例えば、「一日に収穫された1万個のミカンから、最高級ブランドとして売り出す特に美味しいミカンを数百個選別する」というタスクをAIにさせるとします。

AIにはみかんひとつひとつの表面見た目や、重さ、大きさ、糖度、収穫場所などのさまざまなデータを入力し、総合的に美味しさを判断させることになりますが、もし、本当はブランドミカンとしての基準を満たしているミカンを見逃し、普通のミカンとして出荷してしまっても(偽陰性)、それをたまたま購入した消費者が喜ぶだけで、あまり問題にはならないはずです(安くて美味しいのに越したことないですよね?)。

しかしこのケースにおいて、AIが基準を満たすと判断しブランドミカンとして出荷されたのに、消費者が購入して食べてみたら全然美味しくなかった(偽陽性)となってしまったらクレーム物です。

したがって、この状況下においてはブランドミカンを識別するAIは適合率を最大にするようにAIを学習、調整する必要性があるわけです。

もちろん、背景によってはこのように単純にいかない場合もあります。そのような場合は複数の指標を組み合わせてAIの評価を行うことになります。

https://isid-ai.jp/assets/images/column/column14/figure2.png

再現率(Recall)

先ほど紹介した適合率では、見のがし(偽陰性)の存在を一切考慮していませんでした。

ブランドミカンの例から見逃しが重要ではないケースが存在することはわかりましたが、現実にあるタスクはどんなに見のがしてもいいというものばかりではありませんよね?

ということで、ここで一度AIが陰性と判断するパターンをどんぐりの例を用いて説明したいと思います。

まず、先ほどの見のがしですが、混合行列の中では偽陰性(False Negative)と呼ばれます。つまり「どんぐりではない(陰性)と判断したら、間違い(False)でどんぐりだった」ということになります。

では、本当にどんぐりだったパターンはなんと呼ぶかというと、「どんぐりじゃない(Negative)と判断したら、本当(True)にどんぐりじゃなかった」なので真陰性(True Negative)になります(どんぐり、どんぐりってわけがわからなくなってきますね)。

ということで、混合行列ではこれらの4つのパターンをしたのような表であらわします。

https://isid-ai.jp/assets/images/column/column14/figure3.png

適合率では混合行列の一列目の部分である真陽性(True Positive)と偽陽性(False Positive)を比較しましたが、一行目に存在する真陽性(True Positive)、偽陰性(False Negative)を比較する場合は再現率(Recall)を用います。

再編率は適合率とは異なり、見のがしがないことを重視します。逆にAIによって陽性と判断されたのに本当は陰性だったという冤罪がいくらあっても気にしません(適合率が「疑わしきは罰せず」、再現率は「疑わしきは罰す」という観点でAIを評価します)。

再現率を用いるケースとして下のようなタスクを考えてみましょう。

今度はAIを用いて染色工場で染められた、複雑な模様を持つ生地の品質をチェックするとします。AIは生地の隅々まで画像でチェックし、染色もれや、はみだし、ほつれがないか検査し、何かしら問題があれば異常(陽性)として検出します。

https://isid-ai.jp/assets/images/column/column14/figure4.png

AIが異常として判断した生地をもう一度人間が検査して、異常が認められた場合は破棄されます。また、どこにも異常がなければAIの判断ミス(偽陽性)として他の正常な生地と一緒に出荷されます。

さらに、この染色工場ではAIが異常なし(陰性)と判断された場合は人のチェックなしで出荷されます。なので、AIが異常を見のがすこと(偽陰性)は許されません。

ということで、このAIの評価には再現率を用います。もちろん、適合率が高いAIの方が低いAIよりはいいですが、低かったとしても人が検査する生地の数が増えるだけで、出荷される記事の品質に関わりがないので、学習では再現率が向上にするように調整した方がいいというわけです。

このほかにも色々あるAIの評価指標

今回は、AIの評価資料の中でも基本中の基本となる2つの評価指標、適合率と再現率を紹介させていただきました。

例として挙げさせていただいたケースは自分が適当に考えたものですが、AITCでは日々、AIプロジェクトの中でこれらの指標を組み合わせて開発中のAIの評価を行っています。

AIプロジェクトで重要なのは未来に誇れる高性能なAIを構築することではありません。利用するユーザーの利益を最大化するためにAIを学習させていくことです。

そのためには、なんでもできるAIを作るのではなく、タスク・目的にフィットさせた、確実に役にたつAIを構築する必要性があります。

その指針となる評価指標は、今日紹介した適合率と再現率の他にも、F値やROC曲線、PR曲線などさまざまなものが存在します。今後機会があればAITCのサイト内でこれらの評価指標についても説明をさせていただきたいと思いますが、まずは上に挙げた二つの指標を理解していただければと思います。

単に、完璧を追求するのではなく、こだわるところ、こだわらないところを明確にして、真にユーザーの役に立つAIを構築していきましょう(これは自分への戒めでもあります)。

それでは。

執筆
AITC AIコンサルティンググループ
徳原 光