2016年10月29日土曜日

水位予測 using deep learning その2

今度は雨量から水位を予測。正攻法です。

使うのは先日のコードとほぼ同じ。読みに行く先を水位から雨量に変更しただけです。

で、テスト開始!

がダメ。ロス関数が nan を返します。うーん、雨量の連続 0mm で引っかかっているのでしょうか?

雨量に0.1を足したらどうなるか?

ダメ。

では、30では?

これもダメ。データが原因ではないのでしょうか?


では、ロス関数を変更すればどうなるか?

optimizer を変更すればどうなるか?

活性化関数を変更すればどうなるか?

バッチ数を増やせばどうなるか?

隠れ層を減らすとどうなるか?


全てダメ。


うーん、小手先の操作だけでは対応できませんでした。素人だとここまででしょうか?
中身を理解して計算を追う必要があるのでしょうね。deep learning のアルゴには全く興味を惹かれないのですが、どうしましょう?


2016年10月28日金曜日

水位予測 using deep learning

まずは「24時間先まで予測させてみる」をテスト。optimizer は adam で変更なし。

24時間すべてでなく、24時間後のみを刻々と予測させる方針の方が見た目がよくなります。、コードの改変もほとんどありません。

過去10時間の水位データのみを使って、24時間先を予測。結果はこちら。


最高水位やピーク位置はあってないですが、 形状はあってます。ズレは24時間。実際に上がるのを確認してから、予測も追随して上がってくるのでしょう。当たり前ですか。



では、過去240時間(10日間)のデータで額種させるとどうでしょうか?


全くダメですね。考えすぎです。



では逆に、5時間に短縮するとどうなるか?


あ、これです。
ピークの形状は合いますが、ずれてます。HPの旅客データもそうでしたね。
http://machinelearningmastery.com/time-series-prediction-with-deep-learning-in-python-with-keras/
We can see that the model did a pretty poor job of fitting both the training and the test datasets. It basically predicted the same input value as the output.

そういうことだったのですか。違和感の正体ですね。全くダメです。
察するに、使用データが単純になる程、24時間先もそれに近い値を選択すれば誤差が少なくなる、というように学習したのでしょうね。賢いのか、ポンコツなのか。小賢しい能力です。

やはり雨量をトリガーとして教えないとだめでしょうか。

続きは後日。










2016年10月27日木曜日

ベテラン勢で弾性波探査

今日はベテラン勢4人で弾性波探査。

4人中3人は、本部を担当することができます(昔の調査屋さんは皆できたそうですが、今では少なくなりました)。

そのような面子でこなすので、指示なくとも連携良く、作業は速く、楽でした。ベストメンバーだったと思います。


帰りは私が運転していたのですが、後ろに陣取った2人は最初から寝る体制。ベテラン故、体力を使い切ったのでしょう。現場ではシャキシャキ動いていたのですが。

そういえば、探査の習得を希望する若い方はいないですね。おそらく、やらないといけないことに追われ、それどころではないのでしょう。ノルマや覚えないといけないことも多々あるのでしょうが、現場で踏査や探査を行うと、理解の仕方も違ってくるように思います。

ま、チャレンジしないといけないのは、若手もベテランも、関係ないですね。


 



2016年10月23日日曜日

多層ニューラルネットワークと時系列予測

先のコードを確認しながら、水位予測結果の(綺麗すぎる)一致の原因を探ってみました。

過去10時間の水位データを使って、1時間先の水位を予測しようという方針になります(時系列は「分」でも「日」でも等間隔であれば、特に気にしなくてよい部分です)。

ただし、若干の変更を加えました。
・データ長をフルで読めるように修正した。
・隠れ層を追加した。
・エポック数を減らした。
・格納されたデータを表示し、確認できるようにした。

ネットの情報や買ってきたPython の本を見ながら1行づつ確認したのですが、おかしなところは見つけられません。うーん、でも、納得できません。
これ、1時間後という設定がまずいのでしょうか?人の感覚でも、データが得られるたびに直近の勾配を延長しとけばある程度の挙動は一致するような気がします。機械学習の結果、近傍の勾配を重視するようなモデルを作り上げたのかもしれません。
ただ、旅客データでは、ここまで一致しなかったことを考えると、データの質の相違に起因する可能性が考えられます。水位の方が単純でノイズが少なく、予測しやすいとか。あー、傍にプロが欲しいですね。

私の知識ではコレ以上は分かりませんが、ま、正しい結果として受け入れるべきなのでしょうね。良いことではありますが。

今後の方針としては、以下の通りでしょう。
1. 24時間先まで予測させてみる。
1時間後という設定がまずいのであれば、さらに先まで予測させて状況を見てみるのが次の手でしょう。出力が24個になるので少し考えないといけないですね。
うまくいけば、WEBベースでデータ収集から結果表示までが可能となりますので、河川の防災情報などに使えそうですね。

2. 雨量から予測させてみる。
複数の入力値から1つの値を予測するといったこのコードは、どちらかというと雨量からの予測に適しているように思えてきました。トレーニング等に使用した水位データを雨量に変更し、水位予測をしてみましょう。これまでの実効雨量計算に対し、多層ニューラルネットワークを利用するといった方針です。これがうまくいけば、施工の影響についても今まで通り、判定できますね。

*******************************************************
参考にしたネットの情報
https://keras.io/ja/optimizers/#adam
https://arxiv.org/pdf/1412.6980v8.pdf ←後で読むこと
https://keras.io/ja/activations/

2016年10月20日木曜日

Python

カレントディレクトリは、以下のコマンドで見ることができました。_φ(・_・

import os
print(os.getcwd())

os というライブラリ?を読み込んで、get したカレントワーキングディレクトリをprintする、という流れでしょう。

 画面には新規プロジェクトのフォルダが指定されていました。あ、そうですね。VS のプロジェクトですから。

Python は初めてですが、とっつきやすいと感じます。この方のコードが読みやすいからでしょうか?難しいところはライブラリ任せになっているからでしょうか?いずれにしても、ネットの情報だけで読み進めることはできました。

カレントディレクトリにデータを置いて、コードを実行してからしばらく待ちますと、掲載された図と同じものが表示されました。成功です。

手元にあった水位データでも予測をかけてみましたが、異常なほど綺麗に一致しています。表示された誤差はほぼ0。いえ、これは何か設定があってないのでしょうね。まだ、どこがおかしいのか分からないレベルですが。
いずれにせよ、案外簡単に環境は整いました。あとは使う側のアイデアと努力次第です。 
まずは Python と ライブラリの中身の理解からでしょうね。以前より少し興味が出てきました。


2016年10月19日水曜日

Python + Keras + Win10

昨日の HP にソースが紹介されていますので、試してみない手はないでしょう。

まずは環境を整えることに。
Keras と Python が使えないと話になりません。


確か VS Comunity 2015 でも Python の項目を見かけたなあ、と思い立ち上げてみると、ありました。
新規プロジェクトで Python を選んでみると、何かDLしろとの指示。で、素直にDL。

Keras の方は WinPython に含まれているようですので、これをDL。(VS要らなかったか。)

で、VS から 新規プロジェクトを作って、コードをコピペ。で、実行!

「Pythonが見つからない」との返答!

ま、そりゃそうですね。
どこかに環境設定があるはず、と思い 探してみますと、ありました。
「表示 」メニュー>その他のウィンドウ> Python Environments
これで python.exe 等の保存先を指定。
ついでに Open interactive window をクリックして、実行中の状況が分かるように。


 interactive window に貼り付けもう一度。

今度は 「ファイルがない!」と吐き出してくれます。うーん、親切ですね。


いったい、どこを見に行っているのか?Python は初めてなので、カレントディレクトリを表示させるコマンドが分かりません。少なくとも、Python Environments で指定した path ではないようです。
このレベルからか。Python の本でも買ってきましょうか。

ま、使う側はダメダメですが、Python と Keras は Windows10 で正しく動作してくれているようです。

続きは後日。




2016年10月18日火曜日

機械学習と時系列データの予測

 これ、面白いです!

Time Series Prediction With Deep Learning in Keras
http://machinelearningmastery.com/time-series-prediction-with-deep-learning-in-python-with-keras/

先週末に目にし、最初はなんとなく眺めていたのですが、読み進めるうちに引き込まれるのが分かりました。
これ、画期的ではないでしょうか?それとも、機械学習分野では当たり前のレベルなのでしょうか?Deep Learning と書いていありますが、本当にそれを利用しているのでしょうか?ド素人なので、そのレベルですらわかりません。が、適用可能な分野は限りない、ということだけは理解できます。

過去のデータから、今後の挙動を予測する。過去のデータには様々な要因が反映されており、その特徴を AI が見つけ、予測に反映してくれます。因果関係の判断がつかななくても、結果だけを見せればこの先どうなるか?を判断してくれるのです。特に複数の要因を反映している現象については(今後の精度向上次第ですが)利用価値が高いように思われます。
 
一方、AI は予測に使った判断根拠を教えてくれません。原因は分からないのですが、モデルは構築できているという点で、統計と同じニオイがします。理学屋さんには受けが悪いでしょうね。

これからはツールの一つとしてAI を所有しておくべき世の中になりそうです。この流れ?に取り残されるわけにはいかないでしょう。
手を動かしてみましょう。