Blog

下町AI工場

火事と喧嘩は江戸の花だが – 下町ディープラーニング #2

更新日: 2024/10/22 公開日: 2024/10/16
下町AI工場
下町AI工場

火事と喧嘩は江戸の花だが – 下町ディープラーニング #2

更新日: 2024/10/22 公開日: 2024/10/16

みなさんこんにちは。dottの清水です。

前回の記事「人工知能の3尺3寸」では災害や事故などの「危機管理情報」を扱うニュースを判定する「NewsPic」というシステムの概要について説明しました。

元々あった自動化の仕組みの課題を解決するため、株式会社レスキューナウ(以下、RSQ社)様と一緒に新しい自分たちだけのAIを作ろうという試みが始まり、ルールベースでは難しく、機械学習・ディープラーニングを利用するという方針が決まったのが前回までのお話です。

最終的にこれまで約77%だった正解率(危機管理情報とそうでないものを、正しく判定できた割合)を約85%に改善することができたのですが、今日はルールベースでなぜうまくいかないかという話をしたいと思います。

文章分類ゲーム

唐突ですが、まず以下の「二つの文章を分類するルール」を作るゲームをやってみてください。プログラムの知識がなくてもできるので、なぜルールベースでの文章分類が難しいのかを体感してもらえればと思います。

A「15日未明、​​新浜市港北ニュータウンで大規模な火事があり、少なくとも50人以上が重症、20名以上が火傷などの軽い怪我を負っています」
B「新浜市議会議員選挙には、現職・新人合わせて30名の候補者が出馬しました」

Aは負傷者数の情報があるニュースなのでNewsPicでは危機管理情報として判定したいもので、反対にBは死傷者や建物等の被害もないため不要なニュースです。

みなさんは何に注目してAだけを抽出するルールを作りますか?

自分で考えてみると…

まず単純に考えて「火事」などの災害に関するものと「怪我」「重体」という被害の種類に関連するキーワードがあれば危機管理情報として扱うというルールを思いつきました。これなら少なくともAとBのニュースを選別することができそうです。

火事か被害か

では以下の文はどう分類されるでしょうか?

C「昨日発生し、多くの怪我人を出した新浜市港北ニュータウンでの大規模な火事について、新浜市長は記者会見を開きました」

Cは火災が発生した後で記者会見が行われたことを伝えるだけのニュースなので、不要な情報としたいところですが、先ほど考えた「火事」や「怪我」というキーワードでニュースを抽出するルールでは、このCのニュースも抽出されてしまいます。

苦肉の策として「記者会見」という単語があった場合ニュースを除外するというルールを作成したとしても、Cの文章の後に「記者会見によると、死者は53名、負傷者は83名、約100棟が全焼したとのことです」といった文章が続けばまたルールが破綻します。

NewsPicで抽出したいニュースはあくまで「人や建物にどれだけ被害があったのか」という情報を持っているニュースなので、「火事について書かれているか」という観点だけではなく、「火事による被害の内容について書かれているか」という基準で取捨選択する必要があります。

このことがゲームを複雑にしている原因であり、RSQ社に必要なAIにオーダーメイドが必要だという理由そのものです。

ハウルの動く城

このシンプルなゲームでも、ルールベースで文章を分類しようとすると、複雑で膨大な量の計画と定義が必要になりそうだということがわかります。キーワードマッチだけではなく、もう少し高度な、例えば「係り受け解析」などをしたとしても同じことが言えます。

もしそれを開発できたとしても「ハウルの動く城」のように複雑で大きなものを運用することは明らかなアンチパターンだと思いますし、他の方法を考える必要がありました。

それが機械学習・ディープラーニングによる自然言語処理です。

機械学習での文章分類

機械学習を利用した文章分類では「ルールを人間が決めない」ということが、ルールベースなどと比較して最も異なるところです。

ディープラーニングでの自然言語処理をする場合、研究開発の初期に用いた「Word2Vec」や「Doc2Vec」、そして現在運用状態にある「BERT」などの仕組みを使うことが多いと思います。近年ではもっと汎用的なLLM(大規模言語モデル)である「ChatGPT」のようなものも出てきており、それを使って分類の元になるデータを獲得るすこともできます。

それぞれ仕組みは細かく見れば違いますが、自然言語の分類問題のAIを作る場合、どれも基本的な流れは以下のようになっています。

 1.データに正解のラベルを付ける、またはラベルがある
 2.データを学習させ、モデルを作成する
 3.モデルを使って、新しいデータを分類する

もちろん性能の良いモデルを作るために試行錯誤しますが、ルールについて人間が作成することはありません。

前半にも書いた通り、これまで約77%だった正解率を約85%に改善することができたので、機械学習・ディープラーニングを利用した自然言語処理の分野がいかに進歩したかがわかります。

ただし、モデルの評価を測る際や実際に使う時に大切なのは「正解率」だけではありません。

その話はまた、次回の記事で。

このブログを書いた人

株式会社dott CTO / AI開発部門
GDG Fuksuhima, GDG Cloud Fuksuhima オーガナイザー。Googleに魂を売った絵画修復士。

2008年イタリア・フィレンツェの絵画修復学校をアジア人として初めて首席として卒業。イタリア・トスカーナ州公認絵画修復技術士(絵画)。専門は絵画修復における化学。

帰国後フリーランスの修復士として活動を続ける傍ら、10歳の頃に出会ったWEBやプログラミングの分野でもフリーランスとして活動。

2011年の東日本大震災において放射線量を可視化するサイト「RADIATIONDOSE」を立ち上げ、同じように技術による復興支援を行っていたHack for Japanとの出会いからスタッフとして参加。しばらくはエンジニアの道に専念することに。

2016年、Hack for Japanの活動を通して出会った盟友浅井渉と株式会社dottを設立。現在は主に機械学習による自然言語処理の研究開発を行なっている。

2024年より脳のfMRI画像とAIを研究するため、新潟医療福祉大学大学院に在籍中。

arrow ブログ一覧に戻る

月別一覧を見る arrow