2017年11月27日月曜日

気になる物理探査

平成29年秋季の物理探査学会講演論文集に目を通しました。

微動関連の報告が多くなっていますね。流行りでしょうか?
そういえば、アレー観測を私自身はまだ実施していません。先日、他部署の後輩が多数観測してきたそうですが、まだ解析していないようでした。私も忘れないうちに観測しないと。

気になった発表は以下の通り。

・気圧変動に伴う岩盤タンク周辺の傾斜変化の計測と空洞の安定性評価
高精度傾斜計により地下貯槽周辺の挙動を長期にわたり計測。シミュレーションと比較し、気圧応答が亀裂の影響を受け易いことを見出したとのこと。
検証に使えるほど精度よく亀裂構造を把握するのは難しいのですが、観測結果を反映できるように合わせこむことはできるでしょう。そういう意味で、気になった研究です。

・共振現象を利用したグラウンドアンカーの残存引張り力の非破壊評価法
アンカーの自由長部を、両端が固定された減とみなし、共振周波数により張力を推定する方法。
誤差はまだ大きなようですが、実用化に期待されるところです。結構、問題になっていますので。

・ニューラルクリギングを用いた比抵抗データからの葛根田地熱地域の温度構造の推定
比抵抗探査結果をニューラルクリギングで温度の空間分布に関連付け。
ニューラルクリギングを知りませんでした。こういった手法もあるんだなあと。ちょっと物理探査とは違いますが。

・地震被害推定のための広域地下構造モデルの構築
i微動とクラウド解析システムの開発。
単純に、欲しい!


2017年11月26日日曜日

Interferometry process

InSAR を理解するため、実際にいくつかのソフトを触ってみました。
ソフトや扱うデータによって、手順が異なったり省略できたりしましたが、概ね、以下の段階を踏んで画像を作成します。

1.SLC 画像の生成
2.干渉画像の作成
・画像マッチング(Registration)
・基線推定(ALOS の軌道制御は高精度のため、この補正を省略)
・干渉縞作成
・軌道縞と地形縞の除去
・結合処理
3.フィルター処理
4.アンラッピング
5.ジオコーディング
6.KML出力・可視化

まだまだこれから。
座学・実習で理解を進めましょう。

2017年11月20日月曜日

autoencoder

H2O Flow で行き詰っていた autoencoder。

データ個々の MSE を見てみたいと思い、Python で実装しました。
関連ライブラリを入れて、マニュや GitHub のサンプルコードをコピペし、修正するだけ。こちらも便利な世の中になりました。

で、計算!

が、いつも通り、うまくいきません。
OK のみのデータでモデルを作り、NGを含んだデータで検証してみたのですが、reconstructin.mse の値のばらつきは OK も NG も同じ傾向。

そもそも、属性が異常であれば(雨の量が多ければ)、それなりに異常な結果を返す(崩壊する)というのは正常なモデルなのかもしれません。属性が同じなのに(雨が少ないのに)結果が異なる(崩壊する)というのが異常であり、そのような場合に autoencoder の威力が発揮されるのではないかな?と考えるようになりました。

このあたり、もう少し理解が必要です。

2017年11月15日水曜日

無駄のあるマニュアル

先日、土質試験のプロと話をする機会がありました。

仕事の内容からだんだんそれて、ある分野の土質試験の仕様についての話題になりました。大学の先生方が作成されたマニュアルに従って仕様が記されており、マニアックな内容になっています。
で、その仕様内の「無駄な試験」についてプロが語ってくれました。

話を聞くと「なるほど」と思うことばかり。
私はその分野の仕事を数年実施していなかったため、最近の仕様を知らなかったのですが、もし仕事としてその仕様を示されると、そのまま実施していたと思います。仕様の理屈は理解できましたので。おそらく、マニュアルの改善点まで提案できなかったでしょうね。

プロによれば、そのマニュアルの無駄に気付かれた方はほとんどいらっしゃらないそうです(過去に1名だけいらっしゃったそうです)。私はその他大勢。
まだまだ努力が必要です。


2017年11月13日月曜日

SNAPHU 動きました

エラーで止まっていたSNAPHU。
https://phreeqc.blogspot.jp/2017/10/snaphu.html

#0  0x00007f5778318694 in _IO_vfprintf_internal (s=<optimized out>,
    format=<optimized out>, ap=ap@entry=0x7ffe286718b8) at vfprintf.c:1635
1635    process_string_arg (((struct printf_spec *) NULL));

あらためて動かしてみます。

snaphu v1.4.2
27 parameters input from file snaphu.conf (84 lines total)
Logging run-time parameters to file snaphu.log
Segmentation fault

ここで「Segmentation fault SNAPHU」で googling。で、即判明。
https://yunjunz.com/2015/02/10/doris-9-segmentation-fault-error-in-snaphu/

src/snaphu_io.c の include <sys/time.h> を <time.h>に変えるだけでした。

今回は make install も止まらず。
実行してもエラーは出ません。23時間で完走です。SNAPHU 動きました。
古いPCなので時間がかかりましたが、ま、良いでしょう。

が、結果はイマイチでした。orz

2017年11月12日日曜日

AI と土木

先日、災害科学研究所「AIの土木分野への応用」講習会に行ってきました。

残念ながら、「応用」ではなく、過去からの移行段階や「応用」するための研究段階の話でした。しかも AI といった広範囲の話ではなく、機械学習とか統計の範疇。大勢の方が「AI」の実務への「応用」を期待され聞きに来られたと思いますが、まだまだこれからのようです。ソフトウェアベンダーも来られていましたので、CIM 収束の次は AI での売り上げを狙われているのかもしれません。

それでも、いくつか興味を惹かれる話題がありました。
・Deep Learning で過学習を軽減するための2つの手法「Dropout」「ReLU」
・不飽和浸透流のパラメータを粒子フィルタで決定
・NN → SVM → Random Forest → Deeep Learning の順で精度向上してきた
・評価にF尺度を用いた


最近は実務でも ETC 2.0 プローブデータを用いた分析が進められています。これ、センサーの発達と普及、データの収集方法(ネット環境)の整備、PCの64bit 化や GPGPU 環境の整備、ソフト等の開発などが背景にあったのでしょう。ようやくビッグデータを扱える環境が整ったということです。
それに応ずべく、人間側でも「データサイエンティスト」なるプロが大学で育成されるようになりました(メンタリストみたいなおおざっぱな響きですが)。
ビッグデータ解析や機械学習のパッケージ化に伴い、今後、その職業や言葉が存続するかどうかはわかりません。が、基礎力を持ったプロの需要は今後も存続するでしょう。

統計なのか機械学習なのか、AIなのかはわかりませんが、手法の原理を理解し、いくつかの適切な手法を組み合わせてビッグデータから瞬時に有用な要因を見出す能力を備えることは必須です。「応用」には注意を払っておきましょう。

データマイニング

以下の図書を読んでみました。
「誰でもわかる 医療データマイニング -ビッグデータの活用-」SPP出版2014

こちらは決定木を利用したルール抽出のお話がメイン。医療分野での応用例が多く掲載されています。2014年ですから深層学習が流行る前ですね。このころは「データマイニング」という言葉が流行っていたのでしょうか?
決定木を採用された最大の理由は、DNN でブラックボックスをなる判別の根拠を明確にすることでしょう。根拠が明確になるので Evidence-Based Medicine に有用です。

決定木も機械学習に入るのかわかりませんが、random forest は H2O に入っています(木がいっぱいなので森)。決定木は R でも Python でも可。
個人的に R でできることは統計的手法だと思っていたのですが、そうでもないようですね。どこまでが統計で、どこから機械学習なのか、あるいはどこまで行くと AI と呼ぶべきなのかわからなくなりました。

とりあえず H2O で random forest  を試しましたが、結果はそれほど向上せず。当然、If-then ルールも出ません。
If-then ルールを明確にするには、R か Python で決定木を使えば良いでしょう。

で、今回は簡単そうな R を選択。
が、最初からエラー。手元の図書が古く、現在、mvpart は CRAN から外れてしまったようです。
Warning message:
package ‘mvpart’ is not available (for R version 3.3.2) 
素直にrpart を使用。題材はシンプルな泥質岩のみの土砂・軟岩・硬岩区分データに変更。読み込みは MSVS の R Tools を使用。読み込んだデータが RockClass。Class以外の属性データを全て分析に使用する場合は、2行目のシンプルな書式でOK。
library(rpart)
model = rpart(Class ~ ., data = RockClass) # 計算
plot(model) # 決定木の線を図化
text(model) #決定木の文字追加
あっけないほど簡単。4行で図化までできます。一瞬です。が、rpart の図だと見にくい。
で、rpart.plot を使用。オプションが豊富です。個人的には If-then ルールを作りやすそうな type0 のみでOK。
http://www.milbo.org/rpart-plot/prp.pdf
library(rpart.plot)
rpart.plot(model, type = 0)
今回の場合、以下の4点で判別が可能でした。
1.クッラクとして判別できるか否かで岩と土砂を区分
2.岩のうち、風化の進んだものを軟岩Iに区分
3.残りの中でコア長カテゴリーが3以下であれば中硬岩
4.残ったものを軟岩II

個人的には複雑な判別だと思っていた土軟硬区分ですが、案外、シンプルな判断をしているようです(単一地質故?)。第三者に対して説明する必要が出てきた場合や新人にポイントを教える場合に使えそうですね。ナレッジマネジメントにも利用できそうです。

気をよくして崩壊・非崩壊に題材を変更。
が、結果はダメ。
それでも、判別に重要な属性抽出といった意味ではラフセットに通ずるものがあり、理解の一助になりそうです。