2018年12月11日火曜日

S波速度はN値から?

設計者より質問を受けました。
「PS検層(ダウンホール)結果とN値からの推定で、表層部のS波速度が合わない。なぜ?」

なぜ?と問われても、知らない現場の話です。一般論を伝えました。

・盛土の不均質性
本試験30cmのN値は不均質性の影響を検層よりも受けやすい。

・手法上の問題
ダウンホールではoffsetが必要。表層は深さ方向の速度でない。

・補助的な探査
上記の理由により、補助的な探査を実施する場合がある。

・技術者のミス
初動走時の認定ミス。

個人的には、検層のS波が正解で、N値のばらつきが推定誤差の原因と判断すべきと考えます。平均的でないN値からS波速度を推定しても一致するわけがないのです。


先日、物理探査学会のH30講演論文集を読んでいて、それと同じことを発表されている方がいらっしゃるのに気づきました。

稲崎富士「PS検層をめぐる技術的課題(その3)S波速度データの活用と地盤物性との関連性検討」
「N値10の場合、Vsが100~350m/sの間でばらついており、推定精度が低いと言わざるを得ない」という趣旨のの指摘を受けた。
これに対し筆者は上述の標準貫入試験に関わる重大な問題点の存在を指摘するとともに「Vs200m/sの場合N値が2~50程度の間でばらついており、N値の測定精度が極めて低いことが端的に示されている」と反論した。
うまい表現だと思います。N値信仰もほどほどにしないとダメですね。

この論文のほかにも、手法の比較や信頼性の表現についての発表が掲載されていました。まだ数年はPS検層にかかわる検討を続けられるようですので、今後の報告を楽しみにしておきましょう。

タンクモデル その3

菅原正巳「続・流出解析法」1979年

自動最適化の話がメインです。というか、そこに至るまでの経緯が書かれていました。

序文にて悲しみに共感、読み始めて考え方に共感。人物像にひかれて googling すると、2011年に鬼籍に入られたようでした。

技術図書というよりか、読み物として面白かったです。
以下、印象に残った個所です。

p41
絶対誤差では流量の大きい箇所で大勢が決まってしまう。
相対誤差の利用: √((log推定流量ーlog実測流量)^2の平均)
p113
これは、ペナルティ関数で対応していた問題です。
誤差関数の選択肢は試してみましょう。

p67
自動最適化プログラムは試行錯誤法で十分良いパラメータが得られた後に用いるものである。
p69
試行錯誤が不十分な段階で自動最適化を行うと、あるいは収束しなかったり、非現実的な解に収束したりする。
p102、103
タンクモデルのパラメータはかなり鈍感で、かなり異なったパラメータの組が、似たハイドログラフを与えるのである。
これも心当たりがあります。妥当な値に収まるよう、探索範囲に制限をかける作業が必要でしょう。

p73
3段目タンクは15日とか1月を単位とし、4段目タンクは6か月とか1年を単位として入出力を解析する。
妥当な値の範囲として使えます。

p76
(α0+α1)が減衰の仕方を決める
α0:α1が流出量を決める
先日覚えた根本的な理論ですね。

p78、p97
出発モデル
気象庁のモデルと共に、出発点として使いましょう。

p105
最適解が得られることは審美感を満足させるし、実用上からは説得に便利であるから、重要視されるのは無理もないが、ある種の最適解は不安定で、条件や評価法のわずかな変化により、大きく揺れ動く。最適解と大差がない多くの解が広範囲に分布しているときは、前提条件や評価を少し変えることによって、最適解が広い範囲を動き回るのである。
 難しいですね。
p143
私には、自動化は現代の必要悪の一種に思われる。自動化によって、人間の考える自由、したいことをする自由、ものを創り出す喜びが失われ、感受性、判断力、行動力が失われていく。便利や、省力化の代償として、失われるものが時としてはあまりに大きいことがある。
この自動化プログラムを、試行錯誤法の際の一つの道具として使うことにより、人間の思考力、洞察力、感受性などが損なわれることなしに、能率が増進することになれば、手間が省けることにより、パラメータ探し以外の、大切な水文学的問題に、人間の思考力、洞察力、感受性等が向けられることになるならば、私としてはこれに過ぎたる幸せはないし、またそうなることを切望している。
前半は「流出解析法」を読んだ際に痛感させられた内容です。
最近読んだ文献では、パラメータの全自動最適化のみでなく、段数や横孔数といった構造まで自動で求めようとしていました。時間を作るために自動化されたものが、素人に考えるチャンスを奪ってしまう道具になりかねません。
後半は、まさにその通り。考える時間を生むために省力化を図るのであって、大量消費・高速処理自体が目的になってはいけません。これはすべてに共通する考え方です。

この方の話、直接伺ってみたかったですね。

2018年12月9日日曜日

タンクモデル その2

菅原正巳「流出解析法」

この図書の出版が1972年(昭和47年)。直列貯留型ができたのは1956年(昭和31年)。
当時、タンクモデルは手計算とか、手回し計算機?が主流のようで、後半は OKITAC?とかが使われていたようです。いずれにしても、多変数を数秒~数分で最適化できるような能力はなかったでしょう。

ではどうしたか?

人の能力は大したもので、経験である程度のパラメータのあたりをつけることができたようです。そのうえで調整を行っていたらしい。この図書にはその手順が書かれていました。昔の人は本当にすごい(作ったEXCELツールが、なんとも薄っぺらく感じます)。
幸い、丁寧にまとめられていましたので、その理論・ノウハウ等は理解できました。ありがたいですね。案外簡単なので、1段目くらいは私でも大丈夫でしょう。

あたりをつけて EXCEL での探索範囲を絞ったり、経験上の値と照らし合わせたり、異常な結果が出ていないかチェックしたり。これでまともな計算ができそうです。
いえ、危なかったですね。




2018年12月8日土曜日

タンクモデル

タンクモデルのパラメータ最適化に、SCE-UAでなく、EXCEL ソルバーを使おうと考えました。

理由は「簡単だから」&「文献であったから」。

わざわざプログラミングしなくても、大域的最適解(らしきもの)をソルバーで求められます。四則演算のみで負荷のかかる計算ではありません。VBA も必要ないので、ペナルティ関数やタンクの段数、横穴の数などカスタマイズが容易になります。パラメータ推定が終わればグラフも自動で更新されるので EXCEL の方が数段便利。

気象庁のホームページに3段の式とパラメータがあります。まずはこれを手本に組んでみました。が、タイムステップの取り方がイマイチわかりにくい表現になっており、また配信されている土壌雨量指数は補正がかかっているので、正しく組めているのか検証できません。
何か検算できる資料はないか、と古い資料「流出計算例題集2」を引っ張り出してきました。が、この計算例も時間の取り方が怪しい。

ま、基本に返りましょうと、菅原正巳「流出解析法」を見直し。というか、以前は眺めただけでしたね。数式部分を少し補足しながら書き下しておきましょう。


*********************************************
降雨を0とすると貯留高Sの時間変化(減少)は
-dS/dt=αS+βS=(α+β)S

λ=α+βとおくと、放射性元素の半減期と全く同じ式となり、変数分離型の解法が使えます。
-dS/dt=λS
-dS=λSdt
∫(1/S)dS=-λ∫dt
lnS=-λt+c

t=0のときS=S0とおくと
S=S0e^(-λt)
S0=e^c

半減期t=TのときS=S0/2で
1/2=e^(-λT)
2=e^λT
ln2=λT
T=0.693/λ

つまり、(α+β)によって半減期が決まる。
というか、タンクモデルは指数関数型で多段の場合はその重ね合わせになっているのね。今まで理解していませんでした。


Δtにおける貯留高の変化は
S0-S0e^-λΔt
=S0(1-e^(-λΔt))

Δt当たりの流出高は、マクローリン展開で
S0(1-e^(-λΔt))(α/λ)
=αS0(1/λ-(e^(-λΔt)/λ)
=αS0(1/λ-(1-λΔt/1!+λ^2Δt^2/2!-λ^3Δt^3/3!・・・・)/λ)
=αS0(1/λ-(1/λ-Δt/1+λΔt^2/2-λ^2Δt^3/6・・・・))
=αS0(Δt-λΔt^2/2+λ^2Δt^3/6・・・・))

α+βやΔtが小さいときは2項以下を無視して
≒αS0Δt

単位時間当たりの流出高の変化は
≒αS0

ってことでしょう。実測流量にあわせこむ際には、数項分の影響を考慮したαが得られるということ。
***********************************************

理屈では、タイムステップの取り方に間違いはありません。組み込みの際のミスチェックに何らかの検証は必要ですが、ひとまず、ペナルティ付き・1~4段タンク・最大18パラメータの最適化付き EXCEL シートができました。


2018年12月6日木曜日

多変量正規分布

確率密度関数を扱っていて、ふと思いつきました。

「今取り扱っているデータの分布って、2次元正規分布で近似できるのでは?」

早速、EXCELで組んでみることに。

っと、式がわかりません。1次元の確率密度関数を掛け合わせて、回転させるだけだった?と思いながら検索。

ありました。高校数学でした。orz
多変量正規分布の式。これの最も簡単な形が1次元ですね。

まずはテスト。
シート1に2次元正規分布の値を計算で入れます。
シート2に別の値。
シート3に誤差。
目的変数は RMSE にしました。
シート2で使用したパラメータ6つをソルバーで解くだけ。簡単。

結果は完璧。
正規分布は正規分布で完璧に近似できるというだけのチェックでした。
で、実際のデータ。

結果は惨敗。
正規分布ではなかったということ。
他の確率密度関数で試してみますか。


2018年12月5日水曜日

Win10 + Ubuntu + Fortran

windows10 で Fortaran コードを編集・コンパイルしたいとのこと。

少し古い方に相談されていたみたいで、Cygwin + gfortran を進められていました。が、Cygwin がうまく入らないとのこと。
それなら、ということで Windows Subsystem for Linux をお勧め。Windows10 に Ubuntu を入れ、gfortran を使えるように。

フォルダ・ファイル等の permition の変更、ディレクトリの表現に気を付ける必要はありますが、Win とのファイルのやり取りは容易。Win からファイルを Ubuntu の home/ユーザーフォルダ内に移動して、コンパイル。そのまま計算して結果を Win +EXCELへ。

ま、ちょっとした計算ならコンパイラーを買うまでもないですし、デュアルブート を構築することもないでしょう。
Win10では、ずいぶん手軽になりました。

2018年12月3日月曜日

Amazon SageMaker

SageMaker の ハンズオンに参加。

内容は初心者向けでしたが、私には非常に効果的なレベル。というかギリセーフでした。半年前なら全く理解できていなかったでしょう。
参加者の顔ぶれを見ると働き盛りの若い方が多く、健全な分野と感じます。講習会といえばおじさんばかりの建設業界の異常さをあらためて認識させられました。

以下、備忘録です。
****************************************
フロー
①Sagemaker で開発
②Dodker 利用で学習環境に移行、学習、API化
③推論は API 利用
開発・学習はSagemaker、推論はオンプレミスというように、部分利用可


アルゴリズム
①AWS ビルトイン利用
・学習データのみ
②TensorFlow 等、一般的なモデルを使用
・学習データと開発したコードが必要
・Docekerでコンテナ作成
③それ以外
・学習コードと推論用 Web サーバが入ったコンテナを ECR に push
・学習データは S3 へ


開発と学習・・・データサイエンティストが SageMaker SDK を使ってJupyterで。
デプロイ~推論・・・機械学習と関連のないエンジニアリングが大半・・・インフラエンジニアが AWS SDK を利用
役割の違うチームがそれぞれに合ったツールを利用


ビルトインで気になったアルゴリズム・・・Image Classification(教師あり)
・ゼロからトレーニング or 大量のデータを用意できない場合に転移学習を使用
・ResNet を使用。
https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-algo-docker-registry-paths.html


学習時のTips

・分散学習
instance_count を2以上で自動で分散学習
⇒基本はデータを分割
Tensorflow/Chainer/PyTorch/MXNet → instance_countに加えてコードも分散学習に対応させる必要あり。

・ハイパーパラメーターの自動チューニング
Estimater 初期化時に hyperparameters で引き渡すパラメータに関し自動チューニング
Tensorflow/Chainer/PyTorch/MXNetでも利用可

・学習ジョブの評価
CloudWatchLogs、後から集計

・Tensorflow
AWS 側で Tensorflow の分散学習に最適な Docker コンテナイメージ用意
https://github.com/aws/sagemaker-tensorflow-container

・大量データの読み込みにpipeモード
PIPE:学習用データを必要なタイミングで必要な分だけ S3 API 経由でストリーム処理
Tensorflow : TFRecord フォーマット
MXNet : RecordIO フォーマット


推論時のTips
・オートスケーリング
・Tensorflow
AWS 側で Tensorflow の推論に最適な Docker コンテナイメージ用意


セキュリティ
学習時の入出力データ、インスタンス、ストレージ、バッチ推論時の入出力データは暗号化可能

amazon-sagemaker-examples
https://github.com/awslabs/amazon-sagemaker-examples
SageMaker SDK
https://github.com/aws/sagemaker-python-sdk

出席者
Tensorflow 半数
次いでChaneir 、Keras
Pytorch 0
MXnet 0


不要な課金を避けるため、
エンドポイントの削除
ノートブックの削除
※停止でも良いが、S3に保存したデータは課金される
s3の削除
ログの削除
※ログは微々たるもの。置いたままでもOK
※トレーニングジョブは課金対象でなく、日がたつと自動で削除される。
ロールを削除
※課金対象ではない。