皆様こんにちは!JX通信社で機械学習エンジニアを担っているファンヨンテです。
弊社提供のビックデータ リスク情報サービスFASTALERTでは、Deep Learningを使ってSNSの投稿をリアルタイムに解析し、火事や事故などのリスク情報の検知を行っています。
SNSの投稿には、文字だけでなく、画像、動画などの情報も含まれているため、SNS解析にはよくマルチモーダルなAIモデルが用いられます。今回は「SNS の投稿からのリスク情報の判定」というタスクをテーマに、マルチモーダルなAIモデルの判定根拠の可視化や、精度を上げるための工夫などをご紹介します。
FASTALERT(ファストアラート)について
「FASTALERT」は、SNSをはじめとする各種ビッグデータから、AIがリスク情報を検知・配信するビックデータ リスク情報サービスです。報道に必要不可欠なツールとしてNHKと全ての民放キー局、全ての一般紙に採用されるなど、国内の大半の報道機関に浸透しています。また、最近では防災やBCP、障害監視やサプライチェーンのリスク管理など広範なニーズに対応する情報ツールとして、政府・自治体やインフラ企業をはじめとする幅広い業種の顧客に導入されています。URL:https://fastalert.jp
リスク検知タスクの課題
SNSからリスク情報を検知するというタスクの性質上、AIモデルには以下の4点の性質が求められます。
- 画像やテキスト等あらゆる情報を統合して判定したい!(マルチモーダル)
- リスク度だけでなく、リスク情報のカテゴリー(災害、事件、事故など)まで予測したい!
- リスク情報の検知漏れが起こってはならない!
- モデルに説明可能性をもたせたい!
マルチモーダルでマルチタスクができるAIのモデルアーキテクチャ
冒頭にも書いた通り、SNSの投稿にはテキストや画像、動画などの情報が含まれています。
また、FASTALERTでは、リスク情報を検知して配信するだけでなく、カテゴリー(災害、事件、事故などの区分)まで解析して、フィルタリングできるようにしています。リスク度の判定+リスクのカテゴリー予測を1つのモデルでマルチタスクで予想させると、ビジネス的な要件を満たすだけでなく、リスクの検知力自体を上げる効果もあります。
まとめると、SNS からのリスク検知タスクに対しては、
- 入力データ
- テキスト
- 画像
- 出力データ
- リスク検知
- カテゴリー(災害、事件、事故などの区分)
が可能な【”マルチモーダル”で”マルチタスク”ができるAI】が最適です。
AIの説明可能性
リスク情報を検知するというAIの性質上、AIの判断根拠を可視化することで、人間による監視や改善に役立てることができます。しかし、一般に公開されている多くのAIは”ブラックボックス”と言われ、判断根拠をうまく示すことができません。したがって、今回は判断根拠を示せるAIを開発し、実験を行いました。
AIの判断根拠を理解するためには、”挙動の理解”または”仕組みの理解”の2つの方針があります。
”挙動の理解”は何かを変化させたときの出力の変化を見ることで、判断根拠を理解する方針であり、Grad_CAM, LIME, SHAP等が有名な方法です。しかし、マルチモーダルなモデルだと根拠の解釈が直感的ではないことや、計算時間が余計にかかり、リアルタイム性が失われてしまうことなどから、実装を見送りました。
”仕組みの理解”はAIモデルの仕組みを理解する事で判断根拠を見出す方針であり、Attentionが有名な方法です。Attentionを用いると、
- 注目箇所が可視化されるので解釈があまり困らない
- forwardの1回の計算で完結するので、計算時間が余計にかからない
のメリットがあるため、今回はAttentionを用いてAIが着目した部分を明瞭化し、判断根拠の可視化を行うことにしました。
実験
リスク検知力について
今回作成したモデルでは、全リスク情報ツイートの内99%を検知できるような再現率を達成することができました。弊社のFASTALERTでは、AIだけでなく最終的には有人による24時間体制の監視も加えて、リスク情報を漏れなく素早く検知し、より高品質な配信を実現しています。
モデルの判断根拠について
リスク情報を検知する判断根拠となる箇所を、わかりやすく可視化することで、さらに改善のための指標を得やすいようにしました。
以下に、火事、水害、横転事故のTweetを解析した例をあげました。画像は左がオリジナルで右がAIの注目箇所を表示しています。赤みが強いほど、AIがより注目したことを意味しています。
※ 以下の事例は実際のツイートではなく、ブログでの公開用に擬似的に作成したデータです(学習自体は実際のツイートで行っています)
これら結果を眺めていると、AIは各単語の関連性や、画像の情報と総合して判断箇所を注目していることがわかります。例えば、図2の火事の情報では、テキストは”消防車”と”火事”が、画像は炎の領域が注目されていることがわかります。この結果と図4の横転事故の情報を見比べてみましょう。すると”消防車”は、横転事故のときはあまり注目度が高くないのが見て取れます。図3の大雨の情報と、図4の横転事故を見比べても”道”という単語の注目度は変化してます。更に、興味深い点として、図4の横転事故のテキストの中で、最初に現れる”事故”は注目されていますが、後半の”事故”には注目されていないことがわかります。つまり、同じ文章内でも、重要度の区別をAIができていることを意味しています。
このように単純な単語のマッチングでは対応できない、複雑な言語の表現に対応した,マルチモーダルで説明可能なAIを作成することができました。
補足1:その他の前処理の工夫
リスク情報を漏らさないことを目的として、前処理をいくつか行ってます。その一つとして、絵文字の扱いを紹介します。
SNSにはテキスト情報の中に絵文字が含まれることがあります。自然言語処理を行う際にはノイズになるため絵文字は削除されることも多いのですが、リスク情報を検知する上では絵文字は重要な情報となりえます。 例えば以下のようなテキスト情報はリスク情報を含む可能性があります。
- 東京⚡️やばい → 落雷・豪雨
- 神田駅前🧑✈️👩✈️いっぱいいる。なにごと? → 事件
- 東名高速で🚕 が🔥 → 交通事故
詳細な技術の説明は省きますがFASTALARTのAIはこれらの絵文字の情報も取りこぼすことなくリスク検知に役立てることで、情報の検知漏れがないようにしています。
補足2:チームでR&Dに取り組む工夫
JX通信社のMLチームにはインターン生がおり、今回の実験に関しても、インターンの小川遼人さんにサポートしていただきました。
過去にもエンジニアブログでご紹介しましたが、Pytorch Lightningをベースとした、テンプレートコードを用いて学習を行うことで、チームで効率よく実験ができるようにしています。
興味があれば以下のブログも読んてみてください tech.jxpress.net
我々とともに挑戦する仲間を求めています
我々とともに成長しながら、より良い社会のためのMLを開発したい仲間を社員・インターン問わず積極的に募集しています!また、MLエンジニアはもちろん、あらゆる職種のエンジニアを求めています!
正社員、インターン、そして副業・復業として体験的に働くことで、当社のカルチャーや働き方等を知っていただいたうえで正式入社を見極めていただくことが可能な「おためし入社」制度などもあります!ほんの少しでも興味を持たれた方はこちらを覗いてみてください!