論文を読みながら深層学習の活用可能性について考えてみる


 こちらの記事について、開発者が論文を公開してくれていて、内容が、「ディープラーニングを基礎から説明した上で、効果をちゃんと説明する」という、ありそうであまりみない初心者向けの構成となっていて、かつ、洪水予測というのは私の研究関心である「災害対策」に通じるので、読んでみようと思います。タイトルは、『ディープラーニングを用いた洪水予測モデルの開発と今後の展望』です。PDFで公開されているので探してみてください。

 なお当方機械学習は初心者です。間違いがあったらごめんなさい。

 時間のない方は6章のところまで読み飛ばしちゃってください。

論文を読み進めていく~2章・3章~

 章ごとに読んで、かんたんに感想を述べていく。

 2章では、ディープラーニングを説明する前座として、従来型?の機械学習についての説明がなされている。簡単に言えば最小二乗法のような回帰式による近似、将来予測について述べられている。三次の多項式にくらべて六次の多項式のほうが、観測データを近似しすぎるあまりめちゃくちゃな曲線になっていて将来予測が明らかにできなくなっているということを、図付きで説明してくれている。いわゆる「過学習」についてわかりやすく説明されている。このようなことはディープラーニングでもおそらく発生すると思う。

 n次の多項式を用いたところで、そこに含まれる”データ群の関連”の情報(エントロピー的な意味?)は少なく、ニューラルネットワークや、その進化した類型であるディープラーニングのほうが情報を多く含めるということだろうか。「回帰式よりも柔軟なモデル」としてのディープラーニング、という位置づけである。たとえば「従来型」機械学習でも手書き文字判別や顔認識(本当に顔を抽出するだけの認識。デジカメに搭載されてる。)はできる。しかしディープラーニングのほうがより『柔軟に』認識できるのだろう。この『柔軟』の意味を取り違えると後々痛い目を見そうな気がする。以前、「ディープラーニングは最小二乗法」発言が悪い意味で話題になったが、「学習させるデータに暗に含まれている情報以上のことを学習によって得られることはない」、即ち、「ディープラーニングは近似でしかない」ということをものすごーーーーーーーーーーく端的に言うとそういうことなんだろう。

 3章。ニューラルネットワークの概要。ニューラルネットワークの一般的な説明ではなく、洪水予測で用いたモデルを解説しているが、使用する関数・数式が一般的なものが多いので一般的な説明にもおそらくなっていると思う。入力値に重み付けをし和を求め、バイアスを足した上でuを求める。それを活性化関数に放り込むと出力値の完成である。その「素子」をネットワークにしてやることで複雑な学習を可能とする。

 ネットワークというのはソーシャルネットワークのようなネットワークと同じである。炎上ネタがタイムラインに流れてきたツイッターユーザーが関数に従って文句をツイートし、その文句がフォロワーに届いてまた新たな反応を生んでいく、というようなツイッターランドのような、「ネットワーク」である。この例えだと、最終的に「ネット世論」という出力ができるようなイメージでもいいかもしれない。ただしツイッターランドには入力層も出力層も定義されてない点には注意したい()

 シグモイド関数はまあ簡単に言えばゼロイチで答えを出さなきゃいけないとき、ゼロになるかイチになるかをゆるかに判断してくれるようなものなんだと思う。詳しくないからよくわかんないけど。

 で、さっきの「重み付け」に関連した話が出てくる。ツイッターで言えば例えば仲のいい人のツイートは目につきやすく、自分の興味ないツイートが多い人はスルーしがち、みたいなのが、重み、という意味である。その「仲の良さ」は最初はランダムに設定してある。ツイッターをはじめて見た時は誰がどんな感じの人なのかとかよくわからない、というような感じである。それを、誰と仲良くなれそうかというのを探っていくのが、「勾配降下法」である。(数式はこの時点ではちゃんと理解できてないので雑な説明です。すみません。)

 このページの例えが直感的なので引用する。

あらゆる方向を見てどの道が最も急に下っているのかを見極め、その方向に進むことです。(略)たまに小さな凹みや谷に嵌るかもしれません。その場合は、勢いをつけてもう少し進むことで抜け出すことができます。細かな欠点は置いておくとして、この戦略に従えば最終的には麓まで辿り着くことができます。

 で、この、勾配降下法では、重み付けがちゃんとできてるかを評価する必要があり、その方法が、誤差逆伝搬法である。

勾配降下法を使用するには、勾配情報が必要となるが、この勾配を求めるための手法が“誤差逆伝播法”と呼ばれるものである。これは、出力側に近い勾配の値を算出し、順々に入力側の勾配を求めていくことから、逆伝播と呼ばれている

4章・5章

 ここまでで、機械学習とディープラーニングを概観できた。ここからはいよいよ河川水位予測である。4章は見せ場だってはっきり分かんだね。

 自己符号化器は、深い階層のネットワークの学習に用いる、「勾配消失問題」に対応する手法である。3章で出てきた勾配降下法・誤差逆伝播法であるが、深い階層で「勾配消失問題」を起こす。それに対応するのが自己符号化器を用いた「事前学習」である。(わかってない顔)

 機械学習・統計を知っている人にとっては、「主成分分析のようなもの」といえば簡単である。「ニューラルネットワークを用いた主成分分析」である。たとえば30変数について多変量解析をしたいときに、流石に多すぎる、というか、大して結果に関係ない変数について平等に扱っても仕方ないので次元削減をする、そのイメージである。ただし自己符号化器についていえば、次元削減ではなく、「データの特徴を予め把握しておく」である。以下参考記事。

 自己符号化器の重みを、ネットワークの重みに導入する。さっき、「重みは最初ランダムに決定する」と言ったが、ツイッターの例で言えば、ランダムにしてしまうと、女性ユーザーが明らかに地雷なおっさんと積極的に絡まなければならなくなったり、スパムやBOTにリプライを飛ばさなきゃいけなくなるなど、明らかに不毛なことが起きるだろう。それを回避するというイメージで良いのかもしれない。でも結局それをしたあとに勾配降下法をする。

 ドロップアウトは一定確率で強制的に素子を無効化してしまう。過学習を避けられるらしい。

 これで学習のモデルの完成である。その結果を見ていこう。なおこの結果の詳細は土木学会論文集・河川技術論文集に掲載されているらしい。

 研究対象地域は多分下図である。14の雨量観測所における5時間分の時間雨量、5の水位観測所における1時間あたりの推移変化が3時間分、樋渡水位観測所の2時間分の水量が入力層に用いられ、樋渡の水位変化を予測する。

画像1

 ケーススタディによりモデルを最適化した、と書いてあるので、このあたりで経験則で人間の手が加わる余地があるのであろう。結局こうやってデータに向き合っていた人のほうが有利なのかもしれない。

 4つの洪水について、すべての平均でディープラーニングが最も精度が高かったと言っている。従来型のニューラルネットワークもそこそこの精度が出ている。時間経過に従って徐々に誤差が増えている。ただ、ニューラルネットワークに関してはその誤差の増加がかなりゆるやかに見える。

 分布型モデルというのはおそらく物理演算である。そのあたりは土木がわかっている前提で書かれているので読んでもよくわからない。分布型モデルだと一時間後の予測がさっそく誤差が大きいが、ディープラーニングはほとんど誤差がないのが驚きである。物理演算を超える知能ってなんだ…

 なお、線形回帰でも一時間後の予測は誤差が少ないが、それこそ線形に誤差が増加し、6時間後の誤差は1mを突破している。

 図11を見ると分布型が一番誤差が少ないように見える。論文中では、「顕著な差はない」と書かれている。

6章と、深層学習の活用可能性についての私見。

 まとめの章である。そしてここで私の意見のまとめと、「深層学習の活用可能性」という重大な問題についても言及する。

 6章では、冒頭早速、機械学習について

 本質的な物理特性が反映されていない

ということが指摘されている。雨量に基づいて水量を物理演算するほうが、気象学的には普通な気はする。ただ、雨がどのくらい土に染み込むのか土壌をすべて検査するわけにもいかないだろうし、局所的に、木が多いとかで染み込みやすさに違いが出たりすることまで考えると、物理演算モデルはとんでもないことになると思う。その点、「土地の特性」を総合的に学習してしまう機械学習のほうが優れているのかもしれない。また、

 未経験の洪水規模に対する予測精度が担保されない

とあり、たとえば、2010年の時点で今までの地震計で記録された地震を分析しても、東日本大震災には対応できないであろう。「未曾有の災害」が問題にされる3・11以降の社会においてこれではまずい。しかし、東日本大震災にしても地震は地震(ただし海溝型地震と直下型地震はだいぶ違う点に注意)であり、同様の海溝型地震は規模が違えど日本にはデータがあるはずである(関東大震災や、確か日本海側でもなんかあったと思う)。「未曾有の災害」を、「予測との誤差が大きかっただけ」と捉えれば、できるだけ誤差を多めに見積もっておけば予測は可能なのかもしれない。それが、本文中の、『入力層の工夫やハイブリッドモデルによる適用性向上』である。

 ハイブリッドモデルとは、物理演算による流量予測を、学習済モデルでの予測を行う前に行い、その予測数値を入力データに含めてしまう(ということだと思う)というものである。実際に例えば国土交通省や気象庁が警告を出すときはこのような運用が想定されるのであろう。物理演算にもディープラーニングにも、どっちも長所短所がある。相補すれば最強の予測となるのであろう。

 しかし、都市河川では流路が不明であり、したがっておそらく物理演算も難しい(のだと思う…)。どのくらい難しいのかは土木の専門家に聞いてほしい…。都市の利点として観測網整備が進んでいることがある。大量のデータが有ればディープラーニングに突っ込めるし、都市はディープラーニングに向いているのかもしれない(?)

 自己学習モデルとは、まあようするに学習まで自動でやってくれるようなシステムを作ってしまえばシステムの言うことを聞いてるだけで何も考えずに災害対策ができるよね、ってことだと思う。これこそ人工知能!という感じであるが、別に汎用人工知能ではないし、中で何が行われているかの勉強は必要だと思う。勉強さえしておけば煩雑なプログラミングを工数をかけてやる必要はないと思うし、そういう未来が理想だと思う。勉強、しよう!

斜面災害予測や、高潮予測、インフラの維持管理(劣化予測)をはじめ、土木分野に関わらず様々な分野への適用
洪水予測を通じて蓄積されたAI技術を応用して様々な分野への展開を図っていきたい

 ここまでちゃんと見ていけば、このような応用を考えることも可能である。自分の好きな分野でまずディープラーニングの基礎的知見を実践とともに身に着けてみて、そこから横展開を考えていくのが、学習方法として良いと思う。

私見まとめ

 情報学研究には学際的要素がある。理系・文系に囚われず様々な分野で、なにか×情報学、というのをやっていける。しかしそれは、「ディープラーニングのいうことを聞いていればどの分野でも結果を出せる」というようなものではない。土木分野でいえば、線形回帰だけでなく物理演算との組み合わせも必要である。経済なら今までの経済モデルと組み合わせる必要があるだろう。そして、ディープラーニングには利点と欠点がある。ディープラーニングのプログラミングができる必要はないし、ディープラーニングを正確に理解する必要はないと思うが、利点と欠点くらいは真面目に勉強して把握しておいたほうが良い。ただし、その勉強は自分の好きな分野を取っ掛かりにできるので楽しい。アニメでも音楽でもなんでも良いと思う。

おいしゅうまい

この記事が気に入ったらサポートをしてみませんか?