はじめに
ご覧いただきまして、ありがとうございます。
ニッセイ情報テクノロジー株式会社 プロダクト・サービス事業推進室の青木と申します。
本稿では、不正検知AIのエッジ化を検討した際の気づきについて記述いたします。エッジ化を検討し始めた当初は、エッジAIにはメリットしかないものと考えておりましたが、実際に作ってみると、これまで認識していなかったデメリットも存在し、使いどころの難しさがあることを知りました。具体的な内容についてご紹介いたします。
不正検知AIのエッジ化を検討した背景
弊社は保険業界向けにサービスを提供していますが、この保険業界において不正請求はつきものであり、古くから問題とされてきました。この対策の1つとして、AIによる不正の自動検知を検討しています。
例えば、医療機関が発行する退院証明書の入院期間を改竄して日数を伸ばし、不正に給付金額を増やそうとされる場合がありますが、この改竄した証明書の撮影画像をAIに入力すると、改ざん箇所を特定し、不正の有無を判断するようなAIです。
この不正検知AIを別のWEBアプリケーションサービスに組み込み、顧客企業様へ提供することを検討いたしました。この時障壁となったのは、AIの処理のために、サーバーサイドへ医療機関が発行する証明書のような機微情報を渡すことを嫌う顧客企業様がいらっしゃったことです。
そこで、エッジサイドで処理させることで機微情報の漏洩リスクを軽減することを検討しました。
不正検知AIをJavaScriptで実装してみた
元々はPythonで実装した画像処理による改竄検知AIをJavaScriptで実装し直しました。
- OpenCV等のライブラリについてはPython版からJavaScript版を利用
- numpy (数値計算ライブラリ) はJavaScript版が存在しないため代替になる関数を実装
JavaScript版(エッジAI)に対する期待
私のエッジAIに対するイメージは、ドライブレコーダーに搭載されたリアルタイム物体検出のような高速処理を実現できるものでした。
また、データをサーバーサイドに送信する必要がないため、ネットワークの負荷軽減や、機微情報がエッジサイドで処理されることによる情報漏洩リスクの軽減を期待していました。
Python版とJavaScript版の実行結果を比較してみた
私の期待はあっけなく裏切られました。
最も期待していた高速処理は実現できず、速度が1秒以上遅くなった上に、検知精度も低下するという結果になりました。
この原因は3つあると考えています。
1. 利用したライブラリのマイナーバージョンがJavaScript版の方が低い
2. エッジサイド(例:スマートフォン)の性能に依存するため、複雑な処理には限界がある
3. JavaScriptの処理の省力化が不十分であった
サーバーサイドで処理する場合は、高性能な計算リソースを利用できることや、常に最新のライブラリを利用できることから、ネットワーク負荷はある程度発生するものの、全体的に処理速度は速く、精度の高い結果が得られるケースが多いように感じます。
さいごに
今回の気づきとして、エッジ化を検討する際には、エッジサイドの性能に依存しないようにすることと、エッジ化する機能が複雑にならないように機能を限定することが大切だと学びました。
ドライブレコーダーには必要なリソースが内蔵されているのかもしれません。私が検討したようなスマートフォンの性能に依存するような形は、適切ではない可能性があります。不正検知AIのエッジ化について、引き続き研究していきたいと思います。
本稿で取り上げたWEBアプリケーションの詳細はこちらからご覧いただけます。
気になった方はぜひ、こちらもご覧ください。