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

Does Data Scientist Dream of Visualization?

氷解する疑問

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

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

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

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

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

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 を使い分けていますが、とにかく一連の統計分析プロセスを明示的に記録してレポートの体裁にまとめることが重要なはずなのです。
ところが通信指導課題の問題をふり返ると、四択からささいな文言の違いを見つけて可否を選択するような設問に終止しており、困ったなあ、こんなことならレポート提出形式のほうがうれしいのに、とか思ったりします。

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

数学の歴史

今日和。
放送大学の期末試験対策をしています。
特に『数学の歴史』を重点的に。

これは学部生時代、科学史・科学哲学で習ったことですが、やはり数学の歴史ひとつ取っても複線系と申しますか、同時代的な思潮の流れとかあったなかで、とんでもない試行錯誤と紆余曲折の果てに「(科学的)発見」が為されるのです。そして、その発見も、後継者たちによってさらに批判的検討をされる過程で洗練化され、ようやく今日知られているような『理論』に一般化され消化/昇華される。

自分のやっていることをふり返っても勇気づけられるのです。
同時に、我が身の非才を呪うのですが、それでも一般的な大衆に比べて「多少は」数学ができる、物理ができる、情報科学ができる、というのは大きなアドヴァンテージのようです。勿論、上には上が居るのも承知です。

がんばらなきゃいけないなあ。

先日「いつもの店」で懇意にしている年配の女性に説教されたのですが、わたしももう中年です。
別になにがしかの業績を残す必要は本来ないのですが、それでもなにかひとつのことに傾注したほうがより確かな結実を生むかも知れません。
でも、やっぱり広く浅くやっていきたいんですけどね。
ニュートンの死後遺された蔵書は、数理科学のものより遙かに神学や歴史学錬金術についての書籍が多かったそうです。
馬鈴薯先生についていても痛感しますが、やはり広い関心はのちのち総合的・統合的な見解に結びつくようで。
ノーベル賞級の発見、というのはそういった観点から、ごくごく基礎的なことをあたらしい見解で捉えたときに出てくるように見えます。

期末試験に向けて

今晩和。
放送大学(学部)の期末試験が近づいています。
自分は今学期、数学系のコマを 4 つ受講しています。
そこで試験前の駆け込みで勉強を続けているのですが、残すところ 1 週間、相当余裕が少なくなりました。
そうなるともう「決め打ち」せざるを得ないんですよね。
都合の良いことに『通信指導課題』で与えられた問題群があります。「中間試験」代わりの前半と、『自習用問題』の後半と。
どうも、この『前後半』が期末試験の出題範囲です。
そうなると、そこで出題される内容について重点的な対策を考えたほうが良さそうと思いますよね。
「逆算してみよう」という話です。
幸か不幸か、副読本は山程買ってあります。
そこで自分に合っている解説を見繕って重点対策すれば、そこそこの得点はできそうな気がします。
あと 1 週間、必死にがんばらなくては。
これを乗り越えないと、本業に障りが出てくるので。
がんばるのです!(苦笑)

パンクしそう(シャレにならない)

今晩和。
ちょっとバタバタしておりますが、なかなか勉強の能率が上がりません。
来週、放送大学の試験が連続しているんですがね。
今日は月例の通院で、そのときに確認してみたんですが、五足の草鞋を履きそうになってます。
これは危険です(シャレじゃなく)。
頼まれごとやらなにやらあるんですが、自ずと commitment の量を限るしかありません。といいつつ、本業のほうがおろそかになってます。とにかく来週の試験を乗り切らないとどうにもならない感じです。それさえ乗り切れば軌道に乗るんでしょう。

先日「ラボに復帰した」と書きましたが、だまし討ちでしたね。(苦笑)
まあ、そういう手法も平気で取る「自覚症状は善人」の先生が相手ですから、致し方ないところでしょう。
高名な先生との連携も控えていますが、やはりこの研究案件も commit の量は限らなくてはなりません。
そうでなくても、これまでの持ち出しが 3 桁になって久しいのですから。

いろいろ困った感じですよ。
まあ、こういうときは周章てず騒がず、できるところから淡々と消化していくだけです。

テクストの執筆を完全に履歴管理したい

今晩和。
以前、ローカル Wiki として Gollum を導入したことはお知らせしました。
AsciiDoc で数式・画像ふくめて一元管理できるところまで持ち込んだんですが…… .docx にコンヴァートできない。
MS WORD で論文とか書いていると、校正機能は付いたものの、きちんと深い履歴管理ができずに困ったいたのです。
でも今日、ちょっと調べ物をして、Markdown + MathJax であれば、.md と .docx の相互変換が pandoc によって可能なことを確認できました。

つまり、これで生テクスト(LaTeX の数式つき)は Git で完全に履歴管理できるようになった訳です。
これと MS WORD の校正機能を併用すれば、そこそこきちんとしたテクスト執筆環境を用意できるのではないかと。

さあ、今晩はこれからラボです。
服を着替えて行ってきます。

ゼロ・ベースでの作りなおしを

今晩和。
お察しの方はお察しでしょうが、某ラボでとあるシステムのプログラミングを担当しております。
いわば物理数学を使った『音の顕微鏡』になります。


このシステムは本業がヒマだった時期に大体2,3ヶ月、しゃかりきになってコーディングしました。
それも 2 年くらい前のことです。
それなりの結果は出せているんですが、どこまで厳密に計算できているか、誤差はどの程度か、といったことを検証するには、ちょっとコードが煩雑すぎるきらいがあります。

個人的に、このシステムを抜本的に書き直してしまいたいと感じてます。
ゼロ・ベースで再構築したい、と。
その際に、さらに粒度の小さい関数群に切り分け単体テストがしやすいように書き換えてしまいたいのです。
つまり Test Driven Development (テスト駆動開発)に移行して、回帰テストがやりやすいようにしたいんですね。
そうじゃないと、たとえば純音(正弦波)を入力したときの計算結果が正しいかどうかなどの検証が難しい、と判断しているのです。
あらたに高名な先生がプロジェクトに参加なさったのですが、彼のレヴェルの業績に報いるためにはしっかりと基盤から作り直すべきだと。


そこには現状のプロジェクトに対する危惧もあります。
ラボでプログラミングを担当できるメンバーはもう一人居るのですが、指導教授をふくめ彼らとソースコードを共有しているのに、システム自体に対するノウ・ハウが全然周知できていない感が強いのです。わたしはきわめて「なんちゃってプログラマー」ですが、それなりのキャリアもあるので、それなりに分かりやすいコードは書いている自覚はあります。でも、そのコードを共有するだけでは巧く行ってない。だから、もう一度ゼロ・ベースでシステムを再構築する過程で、いろいろなノウ・ハウを周知・共有できたら、と思っているのです。技術移管するのに、わざとプロジェクトをゼロからやり直すのが有効だと思ってる訳ですね。私自身もいろいろと不具合を修正しつつ、知識を整理できるし。


はてさて、巧く行きますことやら?
明日は、週に一度のラボの日です。
ほかにもいろいろ立て込んでいるのに準備しなくては。
まあ、メンバーで一番ヒマなのは私ですが。(汗)


f:id:renpoo:20160803210627p:plain

あけましておめでとうございます

謹賀新年、あけましておめでとうございます。
もう、正月も 3 日になりましたが、ちゃんとお休みになりましたか?

放送大学の試験が月末に迫っております。
ここからハッパかけてがんばらないと、大変マズい雲行きです。
ですが正直、行き詰まりを感じる今日この頃。
そこで永野 裕之 氏の入門書で数学の問題の解き方を軽いタッチで復習してみました。

大人のための数学勉強法 ― どんな問題も解ける10のアプローチ

大人のための数学勉強法 ― どんな問題も解ける10のアプローチ

よく書けている本です。
にもかかわらず、あまり自分の血肉になっていません。
何度も読み返さないからですね、こんなに平易な内容なのに。

此の本には数学の問題を解くうえでの 10 種の方略が書かれています。
詳しくは同書に譲るとして列挙すると……。

  1. 次数を下げる
  2. 周期性を見つける
  3. 対称性を見つける
  4. 逆を考える
  5. 和よりも積を考える
  6. 相対化する
  7. 帰納的に思考実験する
  8. 視覚化する
  9. 同値変形を意識する
  10. ゴールからスタートへたどる

要は、「法則を見つける」「遡る」「裏から見る」「情報量を増やす」「大ざっぱなところからスタートする」「具体例で考える」などなどといったことについて、過不足のない説明がされています。
これは多くの人にオススメです。

今回の読書では、自炊して PDF 化した電子文書にちょっと多めのマーキングをしました。
何度も何度も読み返しながら、放送大学のコマの学習を進めたいところです。


恩師に言われたことですが、多少なりとも数学が分かる、というのは希少な人材だそうです。
自分は不出来で、数学は苦手だなあ、と痛感するのですが、それでもすこしはできるし、あんまり数学アレルギーもない。
これは自分が幸運にも受けることができた高等教育の賜物でしょうし、苦労して倹約してまで、その機会を作ってくれた母には感謝しなければなりません。実家に居候とはいえ母子家庭ですから。先の大戦を経験した、北野 武 氏のお母さんが先日テレヴィ番組で「身に着けた教育だけは誰にも奪えない」との主旨を言っていたそうです。まさにそうですね。同意するとともに、それだけの幸運に恵まれた責任を感じます。自分から言っていても恥ずかしいですが、ノブレス・オブリージュというのは単なるお題目ではなく、この世界に必要なことです。理想的に言っても、功利的に言っても。

やれることはやらなければなりません。
天命を感じています。
此処のところ、関わるプロジェクトが増えつつあるのです。
もう、正月休みは終わり。