各方面において様々な技術が目覚ましい進歩を遂げ、私たちの社会は日々暮らしやすく、より豊かなものへと進化している。しかしその一方で、未だ解決が待たれる社会課題が山積しているのもまた事実。その一つが、急激な人口の増加だ。世界人口は増加の一途を辿り、現在では約75億人にものぼると言われている。 このペースで増加を続ければ、2050年には約100億人に達するとの見方もあり、人口増加が収まる気配はない。この人口と共に増え続けているのが、人間の生活拠点である建物だ。今後も増え続ける人間たちの生活拠点を確保するためには、新しい建物をどこに、どの程度建築するかという問題が付いて回る。こういった問題を踏まえた上で効率的な都市計画を実現するための一歩として「新建造物検知アルゴリズム作成」コンペティションが開催される運びとなった。 合成開口レーダー(SAR)により得られた画像を用いて、新規に建築された建物を検出するアルゴリズムを作成する本コンペティションにおいて、高校生という若さで入賞を果たしたのが、kobababaさんだ。3位入賞という結果を残すことができた、これまでのAI学習法やコンペティションにおける工夫についてお話を伺った。
▼動画はコチラ▼
「なぜこんなことができるのか?」純粋な疑問が興味へと変わっていった。
初めてAIに興味を持ったのは、中学1、2年の頃だったと思います。TV番組でAIの特集が組まれていて、内容はディープラーニングを用いた特徴抽出というようなテーマでした。「一体どうしてこんなことができるのだろう?」。タネのわからないマジックのように感じ、子供ながらに好奇心をくすぐられました。それからすぐにAI学習を始めたわけではありませんが、AIというものはなんだか面白そうだ、と頭の隅にずっと残っていたのです。 それから半年くらい経った頃、今度は機械学習関連の記事を見つけました。TVを見たことをきっかけにAIについて気になっていたこともあり、やっぱり面白そうだから勉強してみようと。わからないなりに色々と調べてみたところ、どうやら数学の基礎知識がないと厳しそうだったため、まずは数学の勉強から着手しました。参考書などを読みながら、ある程度数学の基礎が理解できたかなと感じた頃に、ちょうど中学が夏休みに入ったこともあり、本格的にAIについての学習を開始しました。
eラーニングと書籍で基礎を固め、コンペで実践的な学びへと昇華させる。
AI学習はeラーニングを中心に行いました。評判の良いものを調べ、その中から私は「Coursera」を活用しました。AIの基礎的なスキルを学ぶのにとても役立ちましたが、当然わからない箇所も出てくるので、そうした部分はネットで調べたり、書籍を読んだりして一つずつクリアにしていきました。 書籍の中で特に参考になったのは「ゼロから作るDeep Learning」ですね。解説だけでなく実装課題も織り交ぜられているので、手を動かしながら読み進めることで理解が深まっていきました。C++は小学生の頃から触っていて知識はあったのですが、Pythonについて理解を深められたのはこの書籍のおかげです。 eラーニングと書籍の併用で、AIへの理解は順調に深まっていきました。そうすると今度は、学んだ内容を実践したくなって、実践の場としてコンペティションに目をつけました。ただ分析用として用意された仮の課題ではなく、社会が抱えている実課題をAIで解決する。そんな実践的なスキルを身につけられる点に魅力を感じました。また、他の参加者と競い合いながらスコアを高めていく形式なので、モチベーションを維持しやすいのもコンペティションならではのメリットだと思います。
以前参加したコンペティションのリベンジマッチと位置付けて臨んだ。
コンペティションには、中3の夏頃に初めて参加し、それから定期的に参加し続けていました。その中の一つが、この「新建造物検知アルゴリズム作成」コンペティションです。実は、以前にもSIGNATEさんのセグメンテーションコンペに参加したことがありました。一応上位に入ってメダルは獲得できたのですが、個人的には全然満足できていなくて。あまり時間が使えなかったこともあり、画像処理の細かい部分にもこだわりきれませんでしたし、訓練できたモデルも一つだけ。不完全燃焼というか、やり残した感覚がありました。そこで、似たテーマである今回のコンペで、今度こそ妥協せずにできることをやり切ろうと思い、参加することを決めました。 データに目を通して注目した点は大きく2つ。まず、評価指標が独特だという点。よく目にするIoUではなく、今回採用されていたのはFBetaScoreというもの。スコアを高めるには、モデルをこの指標に最適化する必要があると考えました。そして2点目は画像データが少ない点。用意されたデータが少ない中で精度を担保するためには、何かしらの工夫が必要になるはず。この2つのポイントに注力しながらアルゴリズムを作成していきました。
3位入賞の決め手は、画像ごとの閾値調整と大胆なオーギュメンテーション。
評価指標に関しては、まずはFBetaScoreを直接最適化する損失関数を探しました。その中で見つけた論文の中にあった手法が、画像内の正例と負例のウェイトを用いて損失関数の重みを変えて最適化するもの。それを参考に、画像ごとに予測出力のための閾値を調整する手法を採用しました。これにより、バリデーションスコアも向上。他の方の解法にはこうした手法は採用されていなかったので、差別化して入賞することができたポイントの一つだと思っています。 また、訓練画像の少なさに関しては、オーギュメンテーションを丁寧に行うことでカバーしました。思いつく変換はほぼ全て試すくらい気持ちで、かなり重めにオーギュメンテーションをかけたのが、好成績に結びついたのかなと思っています。こちらに関しては、他の入賞者の方もそれぞれに工夫を凝らしていたので、私独自のものではありませんが、今回のコンペのキーとも言える部分を見落とさずに対応できたことは、自信に繋がりました。 前回のコンペティションで心残りだった部分にもきちんとこだわって、3位に入賞できたので、リベンジは果たせたかなと。ただ、反省点もあります。特にバリデーションに関しては、確認したところ過学習してしまっていたようで、より正確にモデルの評価ができていればスコアもさらに伸びたかもしれません。これは、次回コンペティションへの宿題として持ち帰り、再リベンジマッチができればと思います。
今後の目標
興味がある限りAIについては学び続けたいと思っています。学校で学んでいるというわけでもなく、単純な興味からこの世界に飛び込んで、今も楽しいから続けているのが率直な気持ち。これからも、将来のためとか、誰かに言われたからではなく、自分が好きだからというモチベーションで学び続けたいですね。 <株式会社スペースシフト「新建造物検知アルゴリズム作成」コンペティションの詳細はこちら>