この実験では未来予測を学びます。でも、きっと正体を知ってしまうと「なんだぁ・・・」と思ってしまうかもしれません。未来を予想するといっても簡単なものだからです。具体的には、関数 cos t の行く末について予想します。tが時間だと考えてください。図1は人工知能に最初の関数の値(t=0~200の範囲の青点)の動きを学習させて、赤い線でT=201以降の動きを推測させています。ノイズがあっても大体当ててくれます。
ここでは、すべてのウェブサイトは、一例として紹介しています。利用規約などを遵守の上、自己の責任において御利用ください。よろしくお願いします。
教師あり学習はターゲット関数(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 以外の関数やノイズの影響を大きくするなどして予想精度がどうなるか調べてください。
Python プログラムの基礎は、例えば以下の本で勉強すると良いと思います。
・Bill Lubanovic (2015-12) Python 3 入門 (長尾高弘 訳)、オライリージャパン
掲載大学 学部 |
長崎大学 工学部 | 長崎大学 工学部のページへ>> |
私たちが考える未来/地球を救う科学技術の定義 | 現在、環境問題や枯渇資源問題など、さまざまな問題に直面しています。 これまでもわたしたちの生活を身近に支えてきた”工学” が、これから直面する問題を解決するために重要な役割を担っていると考えます。 |