トップページ > おもしろ科学実験室(工学のふしぎな世界) > 深層学習を使った未来予測

おもしろ科学実験室(工学のふしぎな世界)

深層学習を使った未来予測

2020年5月22日
長崎大学 情報データ科学部
高田 寛之

はじめに

 この実験では未来予測を学びます。でも、きっと正体を知ってしまうと「なんだぁ・・・」と思ってしまうかもしれません。未来を予想するといっても簡単なものだからです。具体的には、関数 cos t の行く末について予想します。tが時間だと考えてください。図1は人工知能に最初の関数の値(t=0~200の範囲の青点)の動きを学習させて、赤い線でT=201以降の動きを推測させています。ノイズがあっても大体当ててくれます。

注意点

 ここでは、すべてのウェブサイトは、一例として紹介しています。利用規約などを遵守の上、自己の責任において御利用ください。よろしくお願いします。

図1:未来予測の例、横軸が時間t、縦軸が関数の値、青い点がcos t にノイズがついたもの、赤い線はt=0,…,200 を学習して作った人工知能がt=201以降の青い点を予測して描いたもの図1:未来予測の例、横軸が時間t、縦軸が関数の値、青い点がcos t にノイズがついたもの、赤い線はt=0,…,200 を学習して作った人工知能がt=201以降の青い点を予測して描いたもの

準備

  • インターネットに接続されたパソコン
    Google chrome かFirefoxが使えて、Google colaboratory が動作可能なもの
  • Google のアカウント
    Googleのサイトにログインする→Googleドライブの画面で、左上の方にある「+新規」というボタンを押して、「その他」→「+アプリを追加」で Google colaboratory を探してサービスを使えるようにしてください。
  • 動作確認は、 次のサイトのPythonで書かれたサンプルコードで行ってください。
    なお、サイトを見るときにはGoogleのアカウントでログインする必要があります。
    -高田寛之 LSTMによる未来予測サンプルコード
    -高田寛之 深層分位点回帰による未来予測サンプルコード

基礎知識

 教師あり学習はターゲット関数(cos t) を別の関数(ニューラルネットワーク関数)で近似することです。ミラクルひかるが青汁のCMのおばあちゃんをモノマネするのと同じです。学習(モノマネ)をするためには、学習中の関数の結果と教師データの違いを損失関数として、最小化問題を解きます。

 ここでは、Long Short Term Memory (LSTM) というニューラルネットワークを使います。これは、時系列を記憶できる能力があるとだけ理解してください。

 深層分位点回帰は、損失関数を分位点が満たすべき最小化問題の目的関数と定めて学習させる方法で、区間での推定を可能にします。なぜ区間で推定するかというと、点よりも区間の方が当てやすいからです。

実習(基礎課題)

 参考をはじめ、検索などでもいろいろ調べて、“LSTMによる未来予測サンプルコード”の内容を理解してください。

(ヒント1)おおきく分けて、データの生成、人工知能ライブラリに学ばせるための教師データに整形、学習、予測、グラフ表示の5つのステップからなっています。2つ目のステップ以外はライブラリを調べることで意味がわかると思います。

(ヒント2)2つ目のステップのデータ整形は、「1,2,3 ときたら次は何か?」に対して「4」 というような感じで、入力が過去の数値の羅列で、その羅列のあとに何がでるかを出力としています。効率よくプログラムするためにwindowedというスライドウィンドウ作成の関数を利用しています。

“LSTMによる未来予測サンプルコード”のいろんなパラメータや最適化アルゴリズムの種類、関数の種類、ランダムノイズの分布などを変えて遊んでみてください。

実習(発展課題)

“深層分位点回帰による未来予測サンプルコード”のプログラムを理解してみましょう。

(ヒント)損失関数の部分が書き換えられています。3つの線を書くために3つのモデルを別々に作って表示しています。50%(図2の緑線)が不要であれば2つの線に対応した部分だけで十分です。

(ヒント)赤い枠の中に青い点が95以上含まれていれば予想できたということになります。

 関数 “深層分位点回帰による未来予測サンプルコード”のプログラムを理解してみましょう。

(ヒント)損失関数の部分が書き換えられています。3つの線を書くために3つのモデルを別々に作って表示しています。50%(図2の緑線)が不要であれば2つの線に対応した部分だけで十分です。

(ヒント)赤い枠の中に青い点が95以上含まれていれば予想できたということになります。

 関数cos t 以外の関数やノイズの影響を大きくするなどして予想精度がどうなるか調べてください。

図2:“深層分位点回帰による未来予測サンプルコード”のプログラムを動作させたときの95%予想区間図2:“深層分位点回帰による未来予測サンプルコード”
のプログラムを動作させたときの95%予想区間

もっと勉強したい方へ

 Python プログラムの基礎は、例えば以下の本で勉強すると良いと思います。

参考

・Bill Lubanovic (2015-12) Python 3 入門 (長尾高弘 訳)、オライリージャパン

※このページに含まれる情報は、掲載時点のものになります。

関連記事

2017-03-31

生レポート!卒業生の声

あなたの可能性を広げる工学部

千葉大学工学部

2018-03-15

工学ホットニュース

完全自動運転の実用化に向けて

群馬大学理工学部

2012-10-18

生レポート!現役学生の声

難しいことをおもしろく

富山大学工学部

2010-08-27

生レポート!卒業生の声

エンジニアに必要な体系的な知識

九州工業大学情報工学部

2017-03-03

なんでも探検隊

人間並みに言葉を操る知的システムの実現を目指して

静岡大学情報学部

2011-11-30

生レポート!現役学生の声

東京湾の安全を守るため、将来を見据えた研究・訓練の日々

東京海洋大学海洋工学部

長崎大学
工学部

  • 工学科

学校記事一覧

おもしろ科学実験室(工学のふしぎな世界)
バックナンバー

このサイトは、国立大学56工学系学部長会議が運営しています。
(>>会員用ページ)
私たちが考える未来/地球を救う科学技術の定義 現在、環境問題や枯渇資源問題など、さまざまな問題に直面しています。
これまでもわたしたちの生活を身近に支えてきた”工学” が、これから直面する問題を解決するために重要な役割を担っていると考えます。