2018年2月28日水曜日

iteration と epoch

「H2Oで繰り返し回数を指定できました」と、後輩君。

「繰り返し回数」と聞き、何か行列の解法が必要だったか?と思ったのですが、epoch 数のことでした。下手に日本語にすると何を指しているのかわからなくなります。というか、epoch 数指定しないとダメでしょ。

と言いつつ、iteration と epoch の関係も忘れかけていたので整理。
例えば、データ件数 400 、ミニバッチサイズ 10 だと、40 iterations で 1 epochになります。

基本は損失関数の値と epoch 数のグラフにて、validation で最低になったあたりを採用しするようです。epoch 数が多すぎると過学習(過剰適合)となり、損失関数の値が上昇します。この手前でトレーニングデータでの学習を止めることになります。自動で止めることもできるようですが、挙動を見ていたほうが安心ですね。
Grid Search は flow で見当たりません。R か Python のコードはありますが、扱えないのでしょうか?

たまに使わないと、ダメですね。忘れないように使っていきましょう。


********************************
20180301
flow にもありました。目前に。なんと便利な。
https://github.com/h2oai/h2o-3/blob/master/h2o-docs/src/product/tutorials/random%20hyperparmeter%20search%20and%20roadmap.md


2018年2月25日日曜日

Deep Autoencoders

わからないまま寝かせていた AutoEncoder。

H2O の DeepLearningBooklet に、心電図の異常を検知するサンプルコード(R, Python)が入っていました。これ、シンプルでわかりやすいですね。

早速、動かしてみました。
損失関数として平均2乗誤差を用い、その値で異常を判別するようです。
結果は、後付けの3行だけきちんと誤差が大きくなっており、anomaly を検知できています。

R
Reconstruction.MSE
1          0.13085106
2          0.12570196
3          0.13255261
4          0.24606676
5          0.17121093
6          0.11661826
7          0.08483445
8          0.05173467
9          0.06877591
10         0.07171131
11         0.06153831
12         0.05756542
13         0.08888413
14         0.13048295
15         0.17475838
16         0.14830372
17         0.08939488
18         0.08795938
19         0.12276107
20         0.18216751
21         4.20185146
22        10.74289732
23         8.63992039



Python
Reconstruction.MSE
0.13300766148709225
0.1340553663250225
0.14216244835895137
0.26900527031422133
0.18108523873697785
0.1397391203015472
0.11732691621742322
0.07074293797762314
0.08611142459668913
0.08028534762964896
0.06783343065028946
0.07299167554971489
0.10603069145595591
0.14973342730955522
0.19851861019910494
0.16039747123615652
0.09621980071801449
0.1022931414569785
0.1267676964619905
0.2353023143453763
4.383158140645624
10.755036687539317
8.69490793593216


時系列データを扱えるところが強みですね。
例えば、道路の空洞調査では地中レーダの替わりに、ロードノイズを使えるかもしれません。実現すると、技術的にもコスト的にもハードルが下がりますね。

要求精度にもよりますが、時系列データから異常を検知できるツールとして、様々な分野で利用可能性を有しているように見えました。


***************************
20180228追記
以前試したデータにてリベンジを図りましたが、返り討ち。
ま、ほとんど変わらないコードでしたので当然でしょうか。
いずれ何とかしたいですね。
https://phreeqc.blogspot.jp/2017/11/autoencoder.html

install H20 in Python & R

Open-source machine learning の H2O を最新版にアップしました。
以下、サイトのコピペ。備忘録です。
まずはR。VS のプロジェクトからコマンドを打ち込んだところ、VS 再起動後に有効になりました。

Use H2O directly from R

Copy and paste these commands into R one line at a time:
# The following two commands remove any previously installed H2O packages for R.
if ("package:h2o" %in% search()) { detach("package:h2o", unload=TRUE) }
if ("h2o" %in% rownames(installed.packages())) { remove.packages("h2o") }

# Next, we download packages that H2O depends on.
pkgs <- c("RCurl","jsonlite")
for (pkg in pkgs) {
if (! (pkg %in% rownames(installed.packages()))) { install.packages(pkg) }
}

# Now we download, install and initialize the H2O package for R.
install.packages("h2o", type="source", repos="http://h2o-release.s3.amazonaws.com/h2o/rel-wolpert/2/R")

# Finally, let's load H2O and start up an H2O cluster
library(h2o)
h2o.init()


python はコマンドプロンプトから pip でOK。

Use H2O directly from Python

1. Prerequisite: Python 2.7.x, 3.5.x, or 3.6.x
2. Install dependencies (prepending with `sudo` if needed):

pip install requests
pip install tabulate
pip install scikit-learn
pip install colorama
pip install future
At the command line, copy and paste these commands one line at a time:

# The following command removes the H2O module for Python.
pip uninstall h2o
# Next, use pip to install this version of the H2O Python module.
pip install http://h2o-release.s3.amazonaws.com/h2o/rel-wolpert/2/Python/h2o-3.18.0.2-py2.py3-none-any.whl

2018年2月20日火曜日

3Dモデルを利用した説明

お客様側の担当者から前日に依頼がありました。
「明日、executives を連れて行くので結果の概要を説明してほしい」

急でしたが、ボーリング掘進毎に Civil3D+GEORAMA→InfraWorks のモデルを修正して毎日報告していましたので、それを利用することにしました。TV をノート PC に接続し、協議机の脇においておけば、準備完了。あとは写真、断面、平面程度の配布で十分です。

実際に TV に 3D モデルを映して動かしながら説明しました。
動画を用いない LIVE は初めてでしたが、これ、便利ですね。いつもは皆さんが資料のどこを見ているか確認しながら説明を進めるのですが、皆 TV に注視されていますので、そこに注意を払う必要がありません。皆が同じ映像を見ているという点で、参加者の意識が統一されており進行しやすいと感じました。
TV ですからプロジェクターより色濃く、艶良く、綺麗に見える点も良いですね。
また、3D モデルを動かしながら説明できるため、感覚的な話も理解を得やすいと感じました。社内の executives や設計担当者にも好評でした。

3Dモデル、今更ながら説明時の利点は多いと考えます。
積極的に利用していきましょう。

2018年2月19日月曜日

SNAP 6.0

esa の SNAP が Ver.6 にアップされました。

今度のVer.では ALOS2 のデータを正しく扱うことが可能か?と思い試してみました。
結論としてはダメでしたが、以下に手順を備忘録として残しておきます。次期 Ver. に期待しましょう。

ALOS2 を ZIP のまま file-open で開くことはできるが、2枚以上は開くことができない。
→展開してから import で読み込めば OK。

ALOS2 ファイルを直接 coregistration するとエラー。
→ import した ALOS2 を BEAM 形式で保存。それを開いて coregistration。(今回は18時間くらいで complete。)

Interferogram, filterは動くが、結果はダメ。
→?


2018年2月18日日曜日

極小アレイ+小アレイ

極小アレイに小アレイを組み合わせてみました。

今回は水平の堆積構造で、教科書的な地盤です。前回と異なり、急傾斜や地中構造物はありません。

得られたデータを BIDO で計算し、描画してみました。
まずは gnuplot での表示。
①\bin\gnpltbin¥wgnuplot.exe
②open(all files)で BIDO の結果フォルダ内の \RESULT\plot.gnplt
③paused OK を押して rayleigh 波を表示
④Axes-xrange 等変更し、paused cancel
⑤Replot を押すと、指定した範囲が拡大して描画される

鉛直動を見ると、SPAC、H0 を除けば大差ない分散曲線が得られています。
代表として CCA の結果を使って速度構造を計算してみました。

結果は良好。
極小アレイが4~15m、小アレイで10~30m程度の結果が得られています。重複部は似たような値でした。
両者の同じ周波数での速度は平均して合成。GAで逆解析をかけて速度構造を推定し、さらにそれをN値に変換してみました。付近の既往ボーリングと比べると、まあこの程度でしょうというレベル。大きく外れているわけでもなく、ばっちり合っているわけでもない。傾向は得られています。ま、物理探査ですので。

小アレイの v はやや高周波側まできれいに出ていました。速度構造にすると6~40m程度。CCA の結果と比べると、やや速度値が異なりますが、こちらの方が既往ボーリングとあっています。面白いですね。

今回の結果を見る限り、地盤が水平構造であれば目的を達せるという、教科書のトレースは出来ました。探査深度に応じてアレー半径を選ぶことも教科書通りです(極小アレーでは期待したほど深部が得られず残念でしたが)。
今後は少しずつ条件を変化させて、データを集めてみましょう。

高精度粒子法

続きです。

高精度粒子法にも種類が多くあるようです。
(FEM でもそうでしたが、計算の安定化に係る話題はさすがに領域外のように思えて、いささか興味を失います。)

「3.2 Poisson方程式の高精度生成項」に安定化ISPHにかかわる解説がありました。案外、高精度化の初歩のようですね。2010年までの文献をベースに説明されていますので、既に研究段階は脱しているように思えます。心も頭もついていきませんでしたが、使用するツールに組み込まれている場合には理解が必要でしょう。

弾塑性モデルへの適用についても4章の最後に記載がありました。
文献を追いましたが、塑性化のスイッチに第2不変量を利用する、粒子間の切れた箇所は DEM と同様の扱いに切り替える、などと書かれていました。実際の現象と少しイメージが異なるため、まだ研究段階にあると思われます。が、トリガーを使って計算内容を変更している点は参考になりました。

こうしてみると、粒子法はやはり流体のものですね。現状では土砂を扱う分野ではメリットの少ないことが理解できました。
今後の発展に期待しましょう。

2018年2月12日月曜日

粒子法の種類(標準型)

先日の「安定化ISPH法」がよくわからなかったので、もう一度粒子法の図書を読み返すことにしました。

MPS の図書だったのですが、∆演算子の箇所で式が省略されていました。詳細は既刊にてとのことでしたので、ネットで検索。
すると、粒子法に関する新しい図書が発売されていました。

後藤仁志「粒子法 連続体・混相流・粒状体のための計算科学」

早速、書店に出向き購入。
まだ2章までと、その他の気になる箇所しか読めていませんが、個人的には丁度良いレベルの図書でした。1章で粒子法の歴史を含んだ概説、2章で SPH と MPS の両方の導出について記載がありました。数式も丁寧でわかりやすいと思います。

SPH と MPS は演算子の表現の違いと、陽的に解くか陰的に解くかの違いかと思っていました。が、その辺は昔の話で、今は結構混ざっているようです。

圧縮性粘性流体を陽的に解いていた SPH を出発点とし、非圧縮性流体に対応させようとした WCSPH(人工粘性導入)、MPS のように半陰解法で解く IPSH(人工粘性なし)、人工粘性の影響を避けやすい Riemann solver を使う GSPH。
非圧縮性流体を半陰解法で解く MPS を出発点とし、陽的に解く陽解法型 MPS(陽解法では、その先に並列化が見据えられています)。

このあたりは全て標準型粒子法で括られていました。この先に、大規模並列化を含む高精度粒子法なるものがあるようです。これは3章ですのでまだ読めていませんが、数多くありそうでした。安定化ISPHはこちらに該当するのでしょうか。

また、粒子法は格子法と異なり空間解像度を均一に扱うため、大規模なモデルに向かない(配置する粒子が多くなる)のですが、それを克服しようとする試みもあるようです。解像度可変型粒子法と呼ぶそうですね。知りませんでした。残念ながら高精度への発展には向かないようですが、面白いと思います。

ここまで読んで DualSPHysics のマニュアルを見返してみました。
WCSPH、GSPHで大規模並列化に対応していました。単なる SPH といった認識でしかなかったですね。無知は怖いですね。

さ、あらためて己のレベルが分かったところで、続きを読みましょう。

2018年2月11日日曜日

空洞を有する石灰岩の基礎

琉球石灰岩のコアは砂礫状になりやすく、空隙の多いイメージがあります。

硬質・軟質・空隙が混在しており、基礎の支持層として評価する場合は難しい場合が多いようですね。
そのような岩なのですが、調査を密に実施したり、杭の載荷試験を実施したりして評価を試みる努力をされているようです。採用されていませんが、ケーソンを検討に入れられた例も発表されています。

琉球石灰岩を支持層とする港湾構造物基礎の設計・施工技術について
琉球石灰岩層を支持層とする構造物の検討について
http://www.dc.ogb.go.jp/Kyoku/kengyo/kokudo_kenkyukai/20170626_sougou/pdf/ronbun/19_nahakouwan_morita.pdf

山口県のカルスト台地でも、空洞を有する石灰岩の基礎について検討されています。
コチラの石灰岩は琉球石灰岩に比べると塊状で硬いイメージがあります。ただ、空洞はあるでしょうね。
以下の発表では、横に連続する空洞ではなく、縦亀裂が発達という見解をもって、杭施工時にコンクリートを流し込んで対応されたようです。

空洞が内在する石灰岩を杭基礎の支持地盤とした場合の調査事例
http://dl.ndl.go.jp/view/download/digidepo_10443721_po_ART0005425863.pdf?contentNo=1&alternativeNo=
空洞を有する地盤を支持層とする橋梁基礎の検討
https://www.web-gis.jp/e-Forum/2006/034.pdf

どちらも、事前調査が重要となっています。
妥協せずに深部まで確認しておくことがシンプルかつ唯一の解決法で、後々重要となります。
調査・施工側だけでなく、施主側も終わりが見えず嫌になるかもしれません。が、そこは我慢して、妥協しないようにしなければなりません。


2018年2月8日木曜日

固相、液相と粒子法

DualSPHysics のアップデートのアナウンスが出ました。

時期 Ver. は3月とのこと。pre も改良されるようですね。
個人的にはニュートン流体ではなく、摩擦性材料を扱いたいのですが、おそらく対応されてないでしょうね。

以前、どうせなら自分で組もうかと考え始めたことがあります。
漠然と「大変形なら粒子法が良いでしょう」などと思い、少し考えてあきらめました。
破壊するまでは弾塑性、破壊後の流下はナビエ・ストークスなどと式を区分しないと、私の頭はついていきません。仮に土と水をすべて粒子でモデル化できると組むのも簡単でしょうが、その後の実モデルでの計算に皺寄せが来てしまいます。静摩擦・動摩擦のようにパラメータの変換も必要になってくるでしょう。そのトリガーを速度にすることも考えられますが、その設定根拠や妥当性の説明も必要になってきます。結局、合わせこみになるのなら、現在のように分けて計算すれば良いのでは?と1周して着地してしまいました。

昨日、風呂に入りながらぼーっと考えていますと、ふと良い案が浮かびました。
「浸透流と地表流の連成に粒子法が使えるのでは?」
地表流は得意とする分野です。浸透への適用例は知りませんが、PDE なので離散化はできるでしょう。
基礎的な問題なので、教科書レベルであるのでは?などと思い検索すると、ありました。

森本ほか「安定化ISPH法による拡張ダルシー則とナビエ・ストークス方程式の統一解法」

2014年の時点でまだ研究レベルですが、理想的な計算です。内容は ISPH あたりでわからなくなってしまいましたが、何とかなりそうな感じがします。
ただ、1次元の計算に7万個も必要になるのは厳しいですね。実務向きではありません。一長一短です。

ま、急いでいるわけではないので、他の文献も探してゆっくり読んでみましょう


2018年2月5日月曜日

InfraWorks で AR 失敗

iPad 用 InfraWorks 360 には AR 機能が実装されています。

作成されたモデルは座標系を有していますので、デバイス内蔵のGPSとコンパスを利用すれば実写の前面にモデルを作画できるという仕組みです。

先日、現場で試してみました。が、残念ながらダメ。使えませんでした。
GPSの精度がイマイチなのでしょう。位置が大きくずれて表示されます。なかなか良い機能だと思うのですが。

そう思うと、ポケ GO はうまく作られていますね。web上では平面を認識しているという記載もあります。InfraWorks も地形の起伏を認識し、モデルを合わこむ計算を取り入れると、もう少し使えるようになるかもしれません。

VR は一度の体験者が限られます。しかし、ARだと一般的なデバイスで、集まった方々全ての位置から同時に体験していただけます。さらに、実写とCGでは、効果も比ではありません。

なかなか難しいと思いますが、頑張ってほしいですね。

2018年2月4日日曜日

リフトオフ試験

アンカーに問題の生じた現場では、リフトオフ試験が実施されました。

個人的にこの試験の経験は浅く、実際に手を動かしたことはありません。以前に見せて頂いたのもずいぶん昔。
その後、資料でよく見ていましたが、実際見てみると手軽になったのが実感できました。

リフトオフ試験の概要は地盤工学会「グラウンドアンカー設計・施工基準、同解説」に示されています。残存引っ張り力、リフトオフ後の勾配をつかって健全度を評価します。その評価基準は土研の維持管理マニュアルからの引用です。が、閾値の根拠は不明。1.1 や 0.8 の根拠は何でしょうか?
先輩に聞いたところ、いくつかの見解を得ました。が、マニュアルに明記されていない以上、推定の域を出ません。

数値計算で応力ー変位の再現はできるでしょう。が、勾配が理論値より寝てれば塑性部分が含まれているということでしょうから、ダメなものにお金をかけて分析する理由はないということかもしれません。ま、そこから周面摩擦を見直すということになれば別でしょうが。

いずれにしても、点検結果に対する対応はこれからが本番です。どのような流れになるか注目しておきましょう。




2018年2月3日土曜日

永久アンカーの老朽化

今年度は、アンカーに問題の生じた斜面にいくつか遭遇しました。

切断されたモノを見たのが2か所、写真や話だけで済んだのが2か所。
4か所中3か所は、点検を始めて見つかった現場でした。また、同じく4か所中3か所は施工中に問題が生じていました(残り1か所は問題が生じてから施工に入っています)。旧タイプだけではありません。これからまだまだ出てくるでしょう。

人が山から土を切り取った分だけ、その背後を支えるのに必要な力をアンカーに分担させています。が、その力が年とともに軽くなることはないでしょう(逆はあり得ます)。人が無理を通そうとしても、山は道理をひっこめてくれません。アンカーが老朽化して機能を果たせなくなるまでじっと待っています。永遠に。
また、山の評価やすべり面の推定を誤っていた場合には、考えていたよりも大きな力の加わることにがあります。今年度遭遇した問題はこれでしょう。

また、「永久アンカー」は永久ではありません。数十年たてば老朽化して壊れるものと考えた方が良いでしょう。若いころは元気に山を支えますが、年を取ると支えられなくなります。メンテナンスをすればいくらか寿命は延びますが、いつかはダメになります。寿命が尽きる前に若いアンカーをもう一度打てば、そこからさらに数十年もちます。が、それも年を取ります。もう、次に打てる場所はないでしょう。

近年、メーカーがお考えの寿命100年だとすると、2回の打設で200年。既に1回目の打設から年月が経ち老朽化が始まっています。
残された時間で「永久アンカーは仮設」と言えるくらいの代替え案の開発が必要ということです。