画像トラッキングのタスクを通じて機械学習システムの構築手法を学ぶ
機械学習の教科書には,機械学習における典型的な問題(分類,回帰)が紹介されていますが,具体的な応用となると,なかなか形にならないことが多いのではないかと思います.
ここでは,Google Research で説明してくださっていた,機械学習技術の適用事例を紹介します.これは,山火事が広がっている境界 (wildfire boundary) を衛星画像から追跡するシステムです.必ずしも境界を検出するために,直接機械学習技術を使っているわけではないところがポイントです.また,深層学習ではなく,典型的な CNN (畳み込みニューラルネットワーク) を利用しているところも実際的だと思います.
タスクの概要と入力画像
昨今,地球温暖化の影響で,広範囲にわたる山火事が多発するようになりました.特に欧米における山火事の被害は大きく,生態系だけでなく人間の生命や財産に,直接大きな影響を与えています.そこで,Google Research では,衛星画像を利用して,どこまで山火事が広がっているか,リアルタイムで追跡するタスクにトライすることになりました.このシステムが実現すれば,Google Maps などのサービスと合わせて,避難経路に関する情報や安全情報を市民に提供できるようになることが期待できます.
使用する衛星には,北米をカバーする衛星として GOES-16 と GOES-18 を利用し,オーストラリアをカバーする気象衛星として,ひまわり9号 と GK2A を利用しました.これらの衛星は地球上の気象を観測する気象衛星と呼ばれる衛星で,静止衛星の一種です.
静止衛星というのは,いつも地球上の同じ範囲を観測し続けることができる衛星です.この衛星は,地球の自転と同じ周期で地球の周りを回っています.このため,地上から見ると,衛星が止まって見えます.そこでこれらの衛星を,静止衛星と呼ぶわけです.
問題の所在
静止衛星を見れば,どこで山火事が起きているのか,一目瞭然のようにも思えますよね.しかし,実際の衛星画像は,実際に燃えている部分以外にも,さまざまな要素が写り込んでしまいます.
上の画像は,2018年に起きたカリフォルニア森林火災の衛星画像です.これを見ても分かる通り,火災にともなって,大量の煙が排出されています.煙は風に流されるので,煙のある場所が燃えているわけではありません.また,煙があると火災のある場所があいまいになってしまう問題もあります.つまり,火災の範囲を観測するにあたって,この煙の要素に邪魔されてしまうと,どこまで火災が広がっているのか,この画像だけから識別するのは困難なのです.
また,衛星画像には,火災の煙に似た要素として,雲が写り込んでいます.したがって,火災の範囲を見極めるには,そこにある煙状の画像が雲なのか火災の煙なのかも見分ける必要があります.
そこでここでは,衛星画像からの入力画像として,可視光線の画像だけでなく,赤外線チャンネルの画像も利用することにしたそうです.赤外線は熱放射があると観測することができるので,火災を検知することができるだろう,という算段です.
もっとも,赤外線の画像があったとしても,正確に火災の位置や範囲を同定できるわけではありません.なぜなら,火災の炎にも強度に差があるし,火災以外にもさまざまな気象現象によって赤外線が放射されたり反射されたりしているからです.
そこで Google Research では,これらの画像から,入力された画像ピクセルが雲なのか火災の煙なのかを識別する識別器を構成することにしたそうです.この識別器を火災検知の前処理に入れることで,火災の位置の検出精度を改善できることが期待できます.この識別器をモデル化するにあたっては,畳み込みニューラルネットワーク (CNN) を利用します.
モデルの構築
畳み込みニューラルネットワーク (CNN; Convolutional Neural Network) は,1989年頃に提案された伝統的な機械学習の手法で,画像データの識別などで広く利用されています.ニューラルネットワークというと,深層学習 (Deep Learning) が思い浮かぶかもしれませんが,それよりも軽量なモデルで規模もそれほど大きくありません.
ここでは,衛星からの画像を入力として,上図のような CNN モデルを作成したそうです.これはオーストラリアの識別に最適化したモデルで,北米版はまた別のモデルを使用しているそうです.
気になるのは教師データですが,これには,MODIS と VIIRS という火災検知用の気象衛星から送られた画像を使用しています.この画像で火災の箇所が分かるので,ラベルを付けることができるわけです.
もしかしたら,「そんな衛星画像があるなら,そもそも気象衛星の画像を使って火災の位置を画像識別する必要ないじゃない?」と思われる方がいらっしゃるかもしれませんね.残念ながら,MODIS や VIIRS は静止衛星ではなく,極軌道衛星と呼ばれる衛星なので,一点をリアルタイムで観測できないのです.この衛星は,地球の周りを極方向(赤道に対してほぼ直角)に回っている衛星で,同じ場所を数時間に1回しか観測することができません.したがって,やはり静止衛星からのリアルタイムな画像を元にして,識別する必要があるわけですね.
一方,衛星から送られてくる画像に写っている画像は,(あたりまえですが)ほとんどが燃えていない領域です.燃えていないサンプルが燃えている箇所のサンプルよりも多いと,学習時のバイアスになってしまい,適切な分類器を構成できない可能性があります.そこで,燃えている箇所をアップサンプリングした上で,forcal loss というテクニックを使い,分類が難しいレアケース(燃えている箇所)の損失関数を補正しているそうです.なかなか一筋縄ではいきませんね.
モデルの評価
最後に,このモデルを評価方法を見てみましょう.
この評価も難しいもので,教師データである極軌道衛星からの画像自体にもラベリングのエラーがあるそうです.このため,識別器の評価にあたっては,地方自治体によって測定された火災の傷跡を利用したそうです.実際に燃えているときの領域ではなく,消火活動が終わった後に測定された火災の痕跡を頼りにして,正解・不正解を判断しているということですね.
ここまで道具立てがそろえば,ここからは,いつも通りの精度評価を行うことができます.詳しい数字については,原文を参照いただければと思います.
機械学習システム構築の実際
昨今は,機械学習技術を利用した技術成果が多く発表されていますが,多くは実験室における要素技術のデモンストレーションにとどまっており,具体的なアプリケーションとして表舞台に出ることはあまりありません.また,機械学習や人工知能を使っているという触れ込みで売り出されている具体的な製品も,具体的にどのようにシステムが構築されているのか,(本当に機械学習技術を利用しているのかも含め)内容がブラックボックスになっていることも少なくありません.
この点,今回 Google Research で紹介いただいた事例は,実用的な精度が出ているかはともかくとしても,現実における機械学習システム構築の実際をかなり忠実に追っていると思います.
特に,注目すべきこととして,機械学習技術を採用する際に,目的に合わせた技術選定を行っていることと,問題を極力単純な問題に落し込んでシステム上の一機能として落とし込んでいるところが挙げられます.
まず,目的に合わせた技術選定というのは,CNN という単純で軽量なモデルを利用しているところに表れています.今どきであれば,深層学習のような豪華で見栄えのする要素技術を使えるわけですが,画像識別器の原点に立ち返って CNN から試している点は,非常に実際的だと感じました.
また,問題を極力単純な問題に落し込んでいる点も実際的です.私の経験でも,機械学習のアプリケーションで,機械学習の機能そのものをフィーチャするものはあまりなく,機能セットの一部として組み込まれることが多い印象があります.今回の事例も,雲と煙の二値識別という前処理に利用されていました.
機械学習技術は,決定論的に取り扱えない問題を取り扱うところに,本質のひとつがあります.不確実性のない(低い)問題で機械学習技術を適用することは,意味がないだけでなく,適切な結果を却って得られない可能性があります.機械学習のような華々しい要素技術は,ともすると,適用する必要のないところにまで無駄に適用してしまいがちです.その点,不確実性をはらんでいる問題領域をなるべく狭めた上で,機械学習技術を適用する今回の方針は,本来的な技術適用のありかたを知る上で,非常に参考になるのではないかと思います.
残された問題としては,精度の問題もあるのですが,アプリケーションの要件として,決定理論における意思決定の問題も考慮する必要があると感じました.
山火事の境界検出システムは,そもそも,住人の生命や財産を守るために利用されるもので,避難に使われます.このようなクリティカルな問題においては,false positive (火事だと思って逃げたけれど火事ではなかった) よりも,false negative (火事じゃないと思って逃げなかったら火事だった) の方が深刻な結果になり得るわけです.実際のシステム構築に当たっては,このような判断も必要になるのではないかと思います.