ブログ

水も滴るいいりんご – 下町ディープラーニング #11

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

 前回の「粋でいなせな人工知能」では、学習データが少ない中でデータを分析し、現状に即した形でAIを利用できるようにしていくという話をしました。

 今回は自然言語のデータのオーグメンテーション(水増し)についてお話ししたいと思います。

真っ赤なりんご

 機械学習の分野ではとてもよく登場する言葉に「データオーグメンテーション」という言葉があります。「オーグメンテーション」というのは、イメージとしてはデータの「水増し」を行うもので、学習するためのデータを擬似的に増やし、対応できる対象を広げていくとか、AIの精度を上げるために行われます。

 わかりやすいので画像の例で説明しようと思います。例えば我らが下町DL工場で、りんごを検知するAIを作っているとします。

 真っ赤で綺麗に写った画像のデータしかない状態で学習したAIは、少しでも状況が変わると検知ができなくなるような融通の効かないものになりがちです。

 例えば下の図のようにりんごが葉っぱなどで隠れてしまっている場合、人間には簡単にりんごだということがわかりますが、AIの場合は学習データによって左右されてしまうのでうまく認識することができません。

りんごの画像は Abhijit Tembhekar from Mumbai, India CC BY 2.0 ウィキメディア・コモンズ経由で

データを水増しすると

 りんごが葉っぱに隠れているということを例に挙げましたが、実際の世界では角度が異なっていたり、大きさが異なっていたり、写真で撮られたように綺麗に写っていない場合が多いと思います。

 そのような場合以外にも、データが多様であることは、特定の学習データに依存しにくいという点でとても重要になってきます。

 データが少ない時に使うという側面ももちろんありますが、オーグメンテーションをする、つまりデータを水増しするという方法は、精度の良いAIを作る上でとても大切なものです。

画像の水増しの方法

 画像のオーグメンテーションにはいろいろな方法があり、現在では機械学習を行うためのツール自体にオーグメンテーションを行うことができる機能が実装されています。下の図はオーグメンテーションで行う画像の変形の例です。

りんごの画像は Abhijit Tembhekar from Mumbai, India CC BY 2.0 ウィキメディア・コモンズ経由で

 このようにして、画像データであればそこそこ簡単にオーグメンテーションを行うことができ、学習データの内容を充実させることが可能です。

言い換えて水増しをする

 では日本語のような文章をオーグメンテーションする場合はどうすれば良いでしょうか。

 自然言語のオーグメンテーションの方法は、画像ほどあまり多くないのですが、例えば「言い換えの辞書」を使ってデータを増やすという方法があります。

 例えば以下の文章を例に考えてみます。

「今日は、福島県郡山市では、最高気温25°Cとなるでしょう」

 この文章を「天気予報」と分類したい場合、「福島県郡山市」という箇所が別の地名になっても成立します。なので地名を他のものに言い換え、データを水増ししていきます。

言い換えの問題点

 言い換えで辞書を作っていく場合、天気予報のニュースのように出てくる単語が明確に分けられ、表記揺れも無いような文章には効果的です。「福島県」という単語が一致すれば、それを他の都道府県ごとに入れ替えるだけで大丈夫そうですね。

 しかしユーザーが自由入力で投稿した文章の場合、表現方法も多様なので機械的に一律に処理をすることが難しいことがあります。

 例えば以下のような文章の「お風呂」を「入浴」と言い換えた場合は成功します。

「お風呂の時間を忘れる」=>「入浴の時間を忘れる」
「お風呂を嫌がる」=>「入浴を嫌がる」

 では以下の例ではどうでしょうか。

「お風呂に入らないと大きな声を出す」=>「入浴に入らないと大きな声を出す」
「家のお風呂しか使用しない」=>「家の入浴しか使用しない」

自由入力文ならでは

 このように、「お風呂」には「入浴をする行為」と「浴槽そのもの」を表す二つのパターンがあるため、少し意味の通らない文章になります。BERTで学習を行う場合、「お風呂」と「入力」の言語の中の位置は似ているのでそこまで大きな問題にはなりませんが、

  1. 言い換えるための辞書を作り
  2. さまざまなパターンを考え
  3. 機械的に処理できるようにする

という作業の重さが、見返りよりもあまり多くならないのではないかという議論がありました。特に認知症関連の言葉をそのまま素人考えで言い換えたとしても、適切になるかどうかがわからないため、その辞書自体は専門医に作成してもらう必要がありました。

 ニュース記事や専門家が書くような文章では、比較的表記は統一されているため問題にならない点が、ユーザーの自由入力文を扱う場合には少し問題になってきました。

 僕たちが問題にしていたのは「言い換えの難しさ」ではなく「作業の多さ」です。

 ではこの問題に対して僕たちはどのようにアプローチしたのか。

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