読者です 読者をやめる 読者になる 読者になる

データ・サイエンティストは可視化の夢を見るか?

Does Data Scientist Dream of Visualization?

革新への確信

今晩和。
きょうは確定申告に行こうかと思ったのですが、家人が先に出かけたので留守番してました。
そこでこの数年担当してきたシステムをリリースするため、最終的な改修に着手しました。
そうすると出てくる出てくる不備の山、我ながらアタマが痛いです。
このシステムは某先生の理論がベースになっているんですが、これまでの実装は「なんちゃって」というか「なんとなく」であり、それらしいグラフを重ねて描画しているものの、数値解析的にきちんとした裏付けがないことがはっきりしました。

それで真夜中まで試行錯誤をくり返して、それなりのところにまで持っていきましたが、まだまだアヤシい。

某先生は数式は弄ることができますが、プログラムはまったくできません。
世の中には「数式さえしっかりしてればプログラムできる」と勘違いなさってる人も散見されますが、そうであれば『数値解析』などという分野は存在しないのです。離散データを取り扱う、というのは一筋縄ではいかないものがあり、そこでトレード・オフ関係を押さえながら、妥当な近似解への落とし込みをするところにプログラマーの腕の見せ所があります。すくなくとも私はそのように考えています。


でも、理解が足らなかったがためにイイカゲンにしてきましたことが多いのも事実です。
反省してます。
種々の問題点を把握できていなかったためです。


ほんとうに数式を展開するだけでシステムが構築できるならば、世の中のプログラマーの大半は苦労しないでしょう。
今回の場合は「物理現象」と「測定データ」と「計算結果」、さらには「副次計算」といくつかの要素が複雑に関係しているのです。
まだまだ調べなければならないことが山積してます。

困ったものですが、ある程度のところまでは持っていきたいですね。
広く衆知を募るのもありかも知れません。

旧交を温める

今晩和。
きょうは高校の同期たちと呑んできました。
いやあ、ほんとうにありがたい、いろいろ勉強になる次第です。
まあ、わたしが相談しているのだから、随分と判官贔屓のアドヴァイスになるのは自然の道理ですが、大学准教授をやっていたり、いくつかの組織を長年率いている親友たちとの対話は、ほんとうにためになります。
ありがたい話です。

おかげで我が意を強くいたしました。
と同時に涙ぐむような出逢いもまた別に。
「わたしはわたしの道を行くべき」、はっきりと確信する夜です。

今学期は?

今晩和。
さて、放送大学(学部)の選科履修生だかなんだかになって最初の学期、成績のほうは……? 実は 4 コマ中、マル A は 1 個という体たらくでした。

ん〜〜、ナサケナイ。

まあ、地道にがんばるしかないですねえ〜〜。

放心状態

今晩和。
今日は昨日のイヤなことがまとわりついて結局一日、養生に努めました。
まあ、仕方ないですね、我が身の不徳のいたすところです。
長い期間、こころの病を患ってきたから、もう若いときのようにはアタマが働きません。
学生時代に一生懸命やってきたことは雲散霧消してしまいました。
だから、いまさら放送大学などで学部のコマからやり直しています。
結局、身の丈からちょっと背伸びするくらいのところで勝負していくしかないんですよね、障害を負うと。
そのぶん、比較優位の取れる分野を狙っていくしかないし、若い頃のようにはいかなくなった心身を巧く使って一定の業績を上げていくしかないんです。

やはり某研究室の手伝い、再考すべきようです。
まあ、後任が見つかって良かった、安心して離れられる、とも言えます。

閉口

今日和。
昨日午後はひさしぶりのゼミでした。
そこで新人さんにこちらの担当システムを紹介したのですが、随分とイライラさせてしまいました。
相手は若者とはいえ俊英、こちらは年老いた駄馬、当然かも知れません。

やっぱり向いていないことは手掛けるべきではないですね。
前途有望な若者に任せて、これからは自分のやりたい、手の届くことに傾注していこうと思います。

高々いくら

今日和。
ほんとはもっとフーリエ解析ラプラス解析について勉強を深めなければならないのですが、なかなか手が着かず。
そこで改修された担当システムの、累積誤差の範囲の推定をやろうと、先日購入した『数値解析』系の類書を眺めています。

よくわかる数値計算―アルゴリズムと誤差解析の実際

よくわかる数値計算―アルゴリズムと誤差解析の実際

MATLABとOctaveによる科学技術計算

MATLABとOctaveによる科学技術計算

C言語による最新アルゴリズム事典 (ソフトウェアテクノロジー)

C言語による最新アルゴリズム事典 (ソフトウェアテクノロジー)

MATLAB/Scilabで理解する数値計算

MATLAB/Scilabで理解する数値計算

よくわかる数値解析演習―誤答例・評価基準つき

よくわかる数値解析演習―誤答例・評価基準つき

精度保証付き数値計算 (現代非線形科学シリーズ)

精度保証付き数値計算 (現代非線形科学シリーズ)

特に役だったのが、内積計算の累積誤差について具体例で記述がある、最後の本です。
それで概算してみると高々 e^-10 程度の累積誤差はありうる。
逆に言えば、有効数字10桁ぐらいの精度の計算は、現状でも実現できていると思しいんですね。
まあ、自覚なく無理難題を振ってくる指導教授、次のゼミでどんな難癖(!)を付けてくるか分かりませんが、ほかの専門家にもお伺いを立ててみたところ、 MATLAB 標準の計算精度でふつうは問題を生じない、とのこと。

まあ、そうだろうなあ……指導教授は院生時代、低温物性物理を研究しており、そのときの経験からかブラック・ボックスのアルゴリズムを極端に嫌うのです。その所為で、計算精度にも(過度に)うるさいと思われます。そこまでクリティカルな精度の計算を必要とする気がしないんですが……まあ、これも勉強のうち、もう馬鈴薯先生には期待していないので、みずから率先垂範して研究を続けたいと思います。

いつ、博士号、取れるんでしょうね?(遠い目)


ああ、新システムの処理フローを模式図に起こしてみました。
ちゃんと中央集権型から地方分権型へと移行しつつあるのが、旧模式図との比較で一目瞭然です。
プログラマーとしてのスキルが向上しつつあるのを我ながら実感してます。

氷解する疑問

今晩和。
この週末は風邪を引いてしまって、自室に籠もって養生しています。
そこで次の本をマーキングしながら通読しました。

道具としてのフーリエ解析

道具としてのフーリエ解析

一年も二年も前に読んでおくべきだった、という内容です。
わたしがこの数年取り扱っているのは、とどのつまり『畳み込み積分』ですから。
それがフーリエ変換ラプラス変換との関連で位置づけられて、線形応答理論へと結びついていく。

とりあえず通読できたおかげで「概観」は得られた感じがします。
でもまだ理解度は少なめです。
ですから、次はこっちをやってみようと思ってます。

www.ic.is.tohoku.ac.jp

昔取った杵柄……(?)

今晩和。

ひさかたぶりに学部生時代の教科書プリントを引っ張り出しました。
『数値解析』のコマの。
担当しているシステムの誤差を推定しなければならないのですが、まったく基本を忘れているのです。
そこで、なつかしの老教授を思い出しながら、計算機イプシロンとかのコード(PASCAL!!)を読んで、MATLAB でも一番基本的ないくつかの項目を確認していきました。

でも、これでは埒が明かないのです。
きょうは所用で出かけたこともあり、書店に立ち寄って以下の本を購入してきました。

よくわかる数値計算―アルゴリズムと誤差解析の実際

よくわかる数値計算―アルゴリズムと誤差解析の実際

MATLABとOctaveによる科学技術計算

MATLABとOctaveによる科学技術計算

C言語による最新アルゴリズム事典 (ソフトウェアテクノロジー)

C言語による最新アルゴリズム事典 (ソフトウェアテクノロジー)

今月中旬にゼミが開催されるそうです。
そこで新人さん——私よりはるかに有能そうな——に向かって、説明をしなければなりません。
つまりフーリエ解析ラプラス解析)を短期間で理解しなければならない。
はてさて、どうなりますことやら?(頭痛がイタい。)


追記:
学部生時代の恩師の薦めで、こちらの本も取り寄せました。

精度保証付き数値計算 (現代非線形科学シリーズ)

精度保証付き数値計算 (現代非線形科学シリーズ)

反省

今日和。
一昨日昨日のがんばりが祟ったのか虚脱状態です。

そんな疲労感の中、今回の一件について反省しています。
旧システムはそれなりの計算結果を算出できるようになったものの、いろんな機能が組み込まれていくうちにゴテゴテと肥大化してしまっていました。まるで寄り合い所帯の大伽藍です。でも、その多くの機能は粒度の小さい関数に切り分けられるものです。中心となる『計算結果』のデータ構造体さえ共有できれば、此処の関数がそれを入力されることで、本番計算やグラフ描画、データ出力、多重ループなど別々の処理ができる筈なのです。そのように『分節化』できてしまえば、此処の機能を個別に好きなとき呼び出すことも簡単になります。つまりバザールのように、それぞれの処理はそれぞれの店に任せてしまうのです。そのあいだでデータを融通できればよいのですから。

要は、中央集権的な処理構造から脱却して、できるだけそれぞれの機能に権限を移譲していこう、という訳です。
そうすれば、此処の機能の改修がほかの機能に影響を加えることも低減するでしょうし、それぞれの機能は専門特化していくので、それだけ単体テストがラクになります。司令塔はユーザーが真っ先に触れる GUI 部分に担当させるのですが、そこがポータル機能に特化して、個別の機能を呼び出すことで全体的なワーク・フローからお望みの処理を融通無碍に使用できるようにする、それが目標です。

いろいろと示唆するものが多いなあ、と個人的に感じています。

一気呵成

おはようございます。
やっぱり眠れません。
そりゃそうです、100 g ぐらいの豆を使って特濃コーヒーを淹れたんですから。

というわけで、残っていた作業に取りかかりました。
一気呵成、というぐらいに進みました。
そして同時に、自分の当該分野への理解が深まっていくことを実感したのです。
かなり佳い感じです。

以前の同システムでは、いちいちの計算結果から得られるヴェクトルのサイズが前後して困っていました。
だから無理矢理、整形して別の記録用マトリックスに流し込んでいたのでした。
ですが、それは無理解に端を発するもの、と痛感。
ひとつひとつの手順を追いながらリファクタリングをしていくと、驚くほど簡素な構造に近づいていきました。

これまで 2 種類のモードはそれぞれ似て非なるコードの組合せになっていて、DRY 原則が厳密には運用できていませんでした。ですが、いまでは各関数が一元化され、ほんとに見通しが良くなっています。

半年ぐらい掛けるはずだったシステム全体の書き直し作業が、数週間で終わるかも知れません。
成る程、よくよく沈思黙考して、ひとつひとつ作業を進めるべきですね。
そのほうが結果が格段に良くなるようです。
TDD に移行できつつあるのは非常にうれしいです。

作り直すべきときが来た

今晩和。
きょうは午前中、本業のほうをやっていたんですが、途中で独断で進むには問題のある局面に遭遇して、判断を仰ぐために中断してしまいました。


ですから、兼ねてからの懸案であったラボの仕事に着手しました。
TDD へと段階的に移行しよう、という話です。
ところが、これがまた伏魔殿で。
自分でソースコードを見直せば見直すほどアラが出てきます。


MATLAB での単体テストの導入は以下を参考にして。
qiita.com



まず、基本となる関数、最小限に絞って単体テストができるように実装し直しました。
組込関数のマニュアルを読んで、きちんとそれを実装し直す、という感じです。
ベースとなる計算をヴェクトル同士の内積に帰着できたので、組込関数よりおおよそ倍の速度で計算できるようになりました。
数値的にも、ある程度の tolerance であれば遜色ない計算結果です。

ちなみに同じ自作関数の for ループを parfor ループに書き換え “tic(); 〜〜; toc();” で実行時間を計測してみました。
並列計算させようとすると却って遅いんですね。
成る程、並列できるように、それだけメモリ上に領域を確保してデータを書き込み、そのうえで実際の計算をするのですから、裏目に出るケースもあるんですね。特にふつうの MBP が処理環境の場合。

とりあえず、きちんとお望みの計算結果が出せるようになったので安堵しました。
でも、話はそこで終わらない。


いま、わたしが取り扱っている話は「時間発展をともなう関数」なんですが、この基準となる時間の推移と、逐次与える 2 種の部分信号列の与え方を間違えると、最終結果に大きな問題が発生することが分かりました。
「なんと!?」という気分です。
何故なら、いま目指しているのは、この解析システムのリアルタイム動作であるからです。
ところがどうも、重要な正規化用パラメーターの算出方法を間違ってしまった。
ちゃんと初期時間に依存したかたちに書き直さねばならないのです。


いやあ、いろんなところにトラップがあるなあ、と。
今晩はもう寝て、明日に備えようかな?
おやつに強烈に濃いコーヒーを淹れて飲んだのを忘れているようです。 orz......

御無沙汰してます

今晩和。
ちょっと御無沙汰してます。
そのあいだ、なにもしてなかった訳ではなくて、本業のほうの仕事に着手して進めていました。
しばらくはその「本業」のほうに傾注しなくてはならないのですが、それだけでは飽きてしまうし、此処までやってきた勉強も忘れてしまう。

ですから、統計分析の勉強や競プロへの挑戦もすこしづつ継続していこうと思ってます。


それにしても時代は変わりましたね。
先日も、とある会合に参加してきたのです。
草の根ベースの活動に関わりはじめて、ああ、やっと自分の力を活かせる場所に辿り着いたみたい、と実感を強くしています。


まあ、国際情勢という意味では予断を許さぬ状況になりつつあります。
積年の夢だった海外移民はもはや果たせそうもありません。
そうなると今の境遇で、できうるだけのことをする、それだけになります。
人間、できることしかできないし、やれることをやるしかないのです。
それだけで百点満点なのですから。

期末試験終了♪

今晩和。
放送大学のコマ 4 つ、すべての期末試験が終了しました。
同輩の皆様もおつかれさま。
わたしは独り、行きつけの店で打ち上がってきました。

まあ、試験の難易度は全般的に言ってやさしめで楽勝ペースでしたね。
最後の入門微分積分はこちらの勉強が足らずに、ちょっと減点されているはずです。
ただ、だからといって単元の内容をきちんと理解しているか、血肉化できているか、といえば疑問符が付きます。
今学期はほかにもやるべきことがあったとはいえ反省点です。
来学期は、ちょっと履修科目数を減らして、ほかの案件にリソースを回せるように工夫しつつ、履修科目の内容への習熟を目指すところです。

今回、はじめて学んだ『数学の歴史』はそれなりに勉強になりました。
ただ、ロバート・フラッドアタナシウス・キルヒャー、ジョン・ディーなど「知る人ぞ知る」人物たちが、なんの解説もなくひとことだけ登場してきていたのは、ちょっと首をかしげましたね。なんで、彼らみたいな人々が数学史(科学史)のなかで重要なのか、そこについて多少は説明しないと、ふつうの学部生には分からない筈なんです。

ただ、やっぱり学問は愉しい。
学部生時代にやったこと、やってないことをやり直してみると、いろいろと忘れていたことを思い出したり、あたらしい見方を身に着けたり。
これが、これからの研究や仕事に役立つことを願わずには居られません。
先日、大学時代の数学の恩師と会食したのですが、彼には「その場その場で必要なことを勉強すると良いよ。ゼロからやり直していると終わらないよ」と忠告されたのでした。放送大学で学問をやり直すにしても、ちょっと、どんなコマを履修していくか戦略的に再検討する必要がありますね………自分の目標は学問自体をやり直すことにはなく、それを活かして、実人生の課題を解決していくことにあるのですから。

駆け込み学習

今晩和。
放送大学期末試験に向けての駆け込み学習、どうやら先が見えてきました。
昨日・今日で微分積分線形代数の出題範囲から要点となるところを復習ってみたのですが、なんとかなりそうな感じです。
まだ数日、時間があるので、そのあいだに問題の意味を考えて例題を解きながら構造的な理解に結びつけたいところです。
出題範囲全部をカヴァーできるほどの理解度になっていないのは非常に問題ですが、これはこれから本業で忙しい最中、時間を割いて丁寧に覚えていくしかないでしょう。

以前の自分だったら、教科書の先頭から順繰りに読んでいって(マーキングは過度なぐらいで)、どこかで理解が行き詰まるとそのまま沈没、というケースが散見されました。

いまでは、とにかく全体を通して眺めて概観を努めることにしています。
一度目の流し読みで理解できなくとも、全体の把握が漠然としてでもできてくれば、二度三度と読んでいくうちに定理のあいだの関係性や、何故そんな公式があるのかの必然性が理解できるようになってくるようです。

「三つ子の魂百まで」、自分はなかなか変われるタイプではありません。
それでも、こうやって自覚的に訓練を続ければ多少の変化はもたらせる、そんな老獪さが身に着いてきました。
もう中年ですから、自分自身にブレイク・スルーを起こしていかないと、先端分野で生きていくことはできません。
いや、最前線で戦うことは目的ではありません。
ただ、自分に向いたスキルを血肉化して、比較優位のある分野でがんばっていきたい。
そこで得た余力を社会的活動などに振りわけていきたい。
十年以上かけて制作した CG 人体も、あともう一歩のところでブレイク・スルーできてません。

先日、年の離れた親友から説教されたのですが、ふつう、この歳になったらやるべきことを制限して専門特化しないと業績が残せないでしょう。ですが業績とかもうどうでも良いのです。自分の好きなこと、そして、他人の役に立つことの実現を両立させたいのです。
自分の能力は限られている。それでもできることはある。そのことをポジティヴに捉えて、禅者らしい利他行に傾注していきたい。
そんな感じです。

調子を取り戻す(?)

今晩和。
期末試験対策、数学史の勉強がひと段落ついたので、今度は統計分析のコマの追い込みに入りました。
マーキングが簡単に進みます。
個人的な向き不向きがあるのかも知れませんが、どうも授業の内容・密度に違いがある気がしてなりません。
ただ、マーキングが速く進むからといって、きちんと内容を理解しているかといえば……疑問符が付きかねません。
そもそも、この授業は R Studio を使った実習形式(の録画)になっています。
わたしも R については R Studio や Jupyter Notebook を使い分けていますが、とにかく一連の統計分析プロセスを明示的に記録してレポートの体裁にまとめることが重要なはずなのです。
ところが通信指導課題の問題をふり返ると、四択からささいな文言の違いを見つけて可否を選択するような設問に終止しており、困ったなあ、こんなことならレポート提出形式のほうがうれしいのに、とか思ったりします。

まあ、とっとと済ませるしかないですね。