難易度:★★★★★
『気象』は人の生活に大きな影響を及ぼします。「雨」が降れば外に出かけることが億劫になる人は多いでしょうし、「気圧」の変化が頭痛や倦怠感といった症状を引き起こすこともあります。「台風」にいたっては、屋外のあらゆる活動を停止させるだけでなく、洪水や土砂災害といった2次災害を生み、死者が発生することも少なくありません。もし、『気象』を前もって正確に予測することができていれば、十分な対策のもとにこれらの被害を最小限に抑えることができるでしょう。
気象予測の世界で用いられるデータは、「画像」を用いること、「ビッグデータ(大量のデータ)」であること、などディープラーニングが得意とする特徴を満たしています。当クエストでは、現在物理方程式に基づくモデルを使用して行われることが一般的な「雲の動きの予測」を、近年活発に研究が行われているディープラーニング技術を応用して実践することに挑戦します。
※ 当コンテンツは、過去にSIGNATE上で開催されたコンペティション「Weather Challenge:雲画像予測(https://signate.jp/competitions/169)」によって得られた知見をもとに作成された教材となっています。
株式会社SIGNATEウェザーは、気象予測の新たな可能性を探るべく、「ディープラーニング技術による未来の衛星画像の生成」プロジェクトを立ち上げました。あなたはこのプロジェクトを担当することになったSIGNATEウェザーの新人データサイエンティストです。『このプロジェクトでいきなり良い成果を出すことができたら、出世間違いなしだ!』と意気込んだあなたは、題材となる2つのデータ「衛星画像データ」「気象データ」を受け取り、分析を開始します。
Mission 1
「衛星画像データ」と「気象データ」を受け取ったあなたは、早速、プログラム上でデータを読み込む作業に取り掛かります。それぞれのデータは、計測された日時情報に基づいて、異なるフォルダ上にバラバラの状態で保存されているようです。あなたはまず、これらのデータの「フォルダ名」「ファイル名」の規則性を捉えた上で効率よくデータを読み込み、その後の分析を楽にしようと試みます。
当クエストにおいて「入力データ」と「正解データ」の両方を兼ねる衛星画像(sat)の確認を行います。衛星画像データの読み込み、統計量の確認、画像の可視化を順に行い、データに対する理解を深めましょう。
当タスクでは、「気象データ」の確認を行います。当クエストで予測の対象となるのは「衛星画像」です。そのため、「気象データ」は特徴量としてはあくまでサブ的な立ち位置となりますが、予測精度の改善に役立てることができるのかという視点で探索的分析を行っていきましょう。
Mission 2
「衛星画像データ」及び「気象データ」のファイル数は膨大な量に及び、全てのデータを読み込むたびに数分〜数十分の待ち時間が生じてしまいます。そんな現状に辟易したあなたは、バラバラに保存されたこれらのデータをNumPy配列としてひとつにまとめ、新たなデータセットとしてファイルを作成することを決心します。
このタスクでは、データセットを作成する前段階として、学習期間、テスト期間のそれぞれにおいて、データが与えられている日付を取得し、リストにまとめます。
ミッション1では、衛星画像データ及び気象データが複雑なディレクトリ構造のもとバラバラに保存されていることを確認しました。このままでは、モデルの学習時、データを読み込むごとに膨大な量の処理が必要となることから、効率的ではありません。当タスクでは、衛星画像データを扱いやすいような形にまとめた上で、改めて1つのnpyファイルとして保存することを目標とします。
前回のタスクと同様に、バラバラに保存されたデータをまとめ1つのnpyファイルとして改めて保存するという処理を行います。今回は気象データを対象とします。
Mission 3
「衛星画像データ」「気象データ」をそれぞれNumPy配列として扱いやすい形にまとめたあなたは、次にデータに対する前処理に取り掛かります。時系列データ特有の扱い方に注意しながら、「学習データと検証データの分割」「入力データと正解データの分割」「正規化」といった前処理を実行しましょう。
前回のタスクでtrain_sat.npy, train_met.npyとして保存したデータを学習用データと検証用データに分割します。本クエストがデータの時系列情報を含めて扱っていることに注意して分割を実行しましょう。
このタスクでは、衛星画像データ及び気象データに対して、正規化を行います。
当クエストでは、予測対象が衛星画像データの未来の状態となっているため、モデルの学習時には衛星画像データが入力データと正解データの両方を兼ねることになります。当クエストのタスク内容を再度確認しながら、入力データと正解データが正しく対応するようなデータの分割方法を学びましょう。
Mission 4
データの前処理も済み、分析はいよいよモデリングの段階に入ります。あなたは、『Convolitional LSTM』という動画のフレーム予測に用いられるアルゴリズムを応用することで、「未来の画像を生成する」方針をとることに決めます。その他、時系列データを生成するためのアルゴリズム『seq2seq』の概念を取り入れることによって、24時間分の画像を一度に生成することのできるモデルの構築に挑戦しましょう。
当タスクでは、CNN(畳み込みニューラルネットワーク: Convolutional neural network)とLSTM(長・短期記憶: Long short-term memory)を組み合わせたネットワークであるConvolutionalLSTMを使用して、時系列で連続した画像データ(動画データ)に対応したモデルを作成します。その他、seq2seq(sequence to sequence)などの応用的な話題が含まれているので、これらの概念に慣れていない場合は難しく感じるかもしれません。少しずつ理解を進めていきましょう。
当タスクでは、モデルの学習を実行する際に便利な機能であるコールバックについて学びます。
前回のタスクまでに、「データの前処理」や「モデルの構築」といった作業を完了しました。次はいよいよ、モデルの学習を実行します。
Mission 5
ミッション4までの段階で、ディープラーニングを使用することによって一定の精度で雲の動きを予測することができるという事実を確認したあなたは、さらなる予測精度の改善に挑戦します。「気象データ」を新たな特徴量に加える方法を学び、改めて学習を行った結果を確認しましょう。
ミッション4では、入力データとして衛星画像データのみを使用したモデルの学習を行いました。ミッション5では、特徴量として気象データを加えた上で再度モデルの学習を実行し、未知のデータに対するモデルの予測性能にどんな変化が生じるのかを観察しましょう。
あなたは当クエストを通じて、「雲の動きを考慮した未来の衛星画像を生成する」という困難なタスクを実行するモデルを作成することができました。最後に、当クエストで学んだ内容を振り返りながら、さらなる予測精度の改善を実現するにはどんな工夫が考えられるのかといった点について、一緒に考察しましょう。
Competition
これまで学習したことを元に、SIGNATEのSOTAコンペティションに挑戦してみましょう。
Competitionに挑戦する