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

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

Does Data Scientist Dream of Visualization?

続く写経

プログラミング冥府魔道

今日和。
「本業」のかたわら、写経を続けて「競プロ」の自習を続けています。

とにかくスピード勝負で、全体を通して復習って、そこからひとつひとつの課題を掘り下げて、深く探求していこうとしています。
何度もなんどもくり返して学習するのを念頭に。

写経を続ける

プログラミング冥府魔道

今晩和。
「本業」のかたわら、写経を続けて「競プロ」の自習を続けています。

とにかくスピード勝負で、参考書掲載のソースコードを打ち込み直すだけに専念しています。
1 日 10 題程度の進み方ですが、個人的にはまあまあ、という感じです。
とにかく小僧の手習いと思って書き写しています。

別に内容については上掲書を当たっていただければ十分なので説明しません。
でも大事なのは、競プロの問題を解くに当たっての「型がある」ことです。
引数としての配列の受け渡し方とか、要所にあたる変数はグローバル化してしまうとか、そういったことが意外と大事なんだなあ、と。
自分は学生時代から教科書や参考書は読んでマーキングするモノの、例題を具体的に紙と鉛筆で解く作業が足りなかったタイプで、いまになって苦労しているので、その欠点を補うために、近年は写経を率先しています。

もう四十代中盤になってしまいました。
これから学位を取るにせよ取らないにせよ、「残り時間」がどんどん減ってきているのを痛感しています。
正直、社会に出た初期のトラブルで障害を負ってしまったせいで、あまりにも大きすぎる loss をしてしまったのは悔やまれます。
でも、それもいまや所与の条件ですから、その制約のなかで最善を尽くしていくのみです。
がんばります。

『競プロ』の独学を再開する

プログラミング冥府魔道

今日和。
実は「本業」があるのですが、協業している方からのレスポンス待ちになっています。
そこで偶には好きなことを、という理由で、『競プロ』の独学を再開しました。
もう、スピード勝負、あんまり考えずに写経していきます。
何故なら、いまやっている章は学部生時代、それなりに独学したところだからです。
確認で済むところは徹底的に駆け足で。



以下は一番基本的なソート、『挿入ソート』のコードの写経です。
C++ となっていますが実質 C です。
コメント・アウトしてあるところに入力例が書き込んであるので、お手元でビルドして実行させてみると insertion sort の動作が一目瞭然で理解できるでしょう。

#include <iostream>
#include <cstdio>


const int MAX_N = 100;


void trace( int A[], int N ) {
    int i;
    
    for ( i = 0; i < N; i++ ) {
        if ( i > 0 ) printf(" ");
        printf( "%d", A[i] );
    }
    printf("\n");
}


void insertionSort( int A[], int N ) {
    int i, j, v;
    
    for ( i = 1; i < N; i++ ) {
        v = A[i];
        j = i - 1;
        
        while ( j >= 0 && A[j] > v ) {
            A[j+1] = A[j];
            j--;
        }
        
        A[j+1] = v;
        trace( A, N );
    }
    
    
    return;
}


int main(int argc, const char * argv[]) {
    int i, N;
    
    int A[MAX_N];
    
    scanf("%d", &N);
    for ( i = 0; i < N; i++ ) scanf("%d", &A[i]);
    
    trace( A, N );
    insertionSort( A, N );
    
    return 0;
}


/*
6
5 2 4 6 1 3
*/


こういうことを勉強し直して、いろいろと忘却の彼方にあったものを再確認できると、なかなかストレス発散になりますね。(苦笑)

マーキングの罠

プログラミング冥府魔道 数学の小径 物理の迷宮

今晩和。
きょうは自炊書籍を相手に暗闘していました。
赤ペンだけでマーキングしているならば、まだ手に負えるのです。具体的に云うと Photoshop による前処理でマーキングを取り除くことが出来る。
ところが此処に青ペンまで併用すると……青インクが純色じゃないんですよね、今回気付いたんですが(黒が入ってる)……おかげで赤・青 2 色併用しているマーキングだと、きっちりと除去することが出来ないのです。

それでも大量の赤ペン部分を除去できれば、ずいぶんと OCR に掛けやすくなるのも事実です。
さて、其処まで踏まえたうえで、既読書を再購入すべきか否や。
いや当然、重要な書籍に限って優先しますが。

ちょっと悩ましい日ですね。


追記:
あ、できました!(汗)
黒い印字部分、赤や青のマーキング部分それぞれを色域選択し、選択領域を若干拡張したうえで『マスキング素材』を生成してやりレイヤーとして累重させることで、大雑把にではありますが元の紙面をそれなりに復旧することができました。
でも、重要度の高い某シリーズだけは紙書籍として再購入する所存です(近年、2 色マーキングした書籍はそれら極一部に限られるので)。
アイタタタ!

忘れていた、ナレッジ・マネジメントへの一里塚

プログラミング冥府魔道 数学の小径 物理の迷宮

今晩和。
きょう、とある方の tweet で "Papers" という文献管理アプリを知りました。
以前は ReadCube を愛用しようとしていたのですが、どうも OCR (e-Typist NEO)で生成した透明テクストを受け付けないんですね。そこで Mendeley とも比較してみたんですが、まだまだ荒削りでも Papers が便利なのでは?と思い始めました。いや、ネットで検索した論文 PDF を取り扱うには RC か Mndl が便利かも知れませんが、ちょっと Papers で暫定的な運用をしてみようと。

自炊した書籍 PDF が数百冊分になります。
これに「手書き/手描きのノート」を付け加えて管理したい。
これまでは一元的に管理しようとしてきましたが、どうも「手書き」も、となると中々ふさわしいアプリが見つからない。
そこで Papers と GEMBA Note を併用することにしました。
GEMBA Note はこれまで使い込んできたこともあって、ノートを取るには打ってつけなのです。でも、ドキュメント管理には著しく不向き、クラウド容量が小さいことも大きな要因です。

でも、どうせ(付加情報のついた)PDF を扱っているのには変わりがありません。
だったら Papers のような文献管理アプリで、引用のためのマーキングや注釈を付けながら、どうしても手書きしたいところは GEMBA Note で補記してやって、Papers に取り込んでやれば良いのです。そうすれば擬似的に(PDF として)ドキュメントの一元管理ができます。いや、Papers にも iOS 版には手描き機能が実装されているのですよ(でも、まだまだ不便)。

以前述べたとおり、デジタルなテクストやプログラムについては既に Gollum で一元管理しています。
将来の目標は此処にすべてを一元化することです。
ですが暫定的に、いまは論文や自炊書籍は Papers で、デジタル・データやプログラムについては Gollum で、と二段構えの運用を試みてみます。


追記:
やっぱり Mendeley のほうが一日の長があるかも知れないので、しばらく比較検討するテスト運用で。

「紙と鉛筆」信者

プログラミング冥府魔道 数学の小径 物理の迷宮

今晩和。
世の中には「『紙と鉛筆』信者」という方たちがいらっしゃるそうです。
どうすんですかね、これからの時代?
ただでさえ、管理すべきドキュメント量は増えているのに。
将来をきちんと見据えているのかどうか、率直に疑問。


わたしは GEMBA Note を愛用してます。


まあ、バカはバカなりにマイ・ペースで努力を続けるしかない、という暫定的結論です。

f:id:renpoo:20161031214918j:plainf:id:renpoo:20161031214912j:plainf:id:renpoo:20161031214921j:plainf:id:renpoo:20161031214925j:plainf:id:renpoo:20161031214928j:plainf:id:renpoo:20161031214931j:plainf:id:renpoo:20161031214935j:plainf:id:renpoo:20161031214938j:plainf:id:renpoo:20161031214943j:plainf:id:renpoo:20161031214947j:plainf:id:renpoo:20161031214950j:plainf:id:renpoo:20161031214953j:plainf:id:renpoo:20161031214957j:plainf:id:renpoo:20161031215000j:plain


これらの試行錯誤をキレイにまとめると以下のように……。

f:id:renpoo:20161101135706p:plain

『復活』を聴いて物想う

プログラミング冥府魔道 数学の小径 物理の迷宮

今晩和。
思うところあって、マーラーの『復活』のクライマックスがふと脳裡に浮かびました。
それをトラヴェリング自己相関関数(traveling ACF)とトラヴェリング相互相関関数(traveling ICCF)によって可視化してみました。

f:id:renpoo:20170226195828p:plain
f:id:renpoo:20170226195833p:plain

ほんとうに重層的な構造をしていることは一目瞭然ですが、それ以上のことは複雑すぎて分かりません。
それは当然でこの研究は端緒についたばかりであって、徹底的に基本的な音源について、解析の試行錯誤をくり返すことによって知見を深めていくことが必要だからです。

でも、もう、あまりにも専門外の分野のことについて関わるのは疲れました。
『人生、得手に帆をあげて』、自分の興味が湧くことに傾注していくことにします。

観音

プログラミング冥府魔道 数学の小径 物理の迷宮

今晩和。
きょうもしゃかりきになってプログラムの改修を急ぎました。
これを終えたら、もう手を引くことができるだろうから。

結果がこれです。

f:id:renpoo:20170226001005p:plain

これは、あの、『トゥーランガリーラ交響曲』第1楽章(全体)の可視化です。
ラトル版第1楽章の音声に、時間発展をともなう相互相関関数を適用しました。
これはまるで音の顕微鏡のようなものです。
相互相関関数の場合、音の解析を通じて時空間を可視化していることになります。音源の大きさや、マイクに対して見込んだ左右の位置などが分かります。
自己相関関数の場合は、可聴域に於ける音程のピッチや、倍音の構成、音符の長さ、などが可視化されます。
『顕微鏡』になぞらえましたが、倍率によって見えるものが変わってくるんですね。

このグラデーションする山脈は、オーケストラがホールで録音していて、あちこちで楽器が鳴り、側壁反射でいろんなリヴァーブが掛かっていることが一目瞭然です。
ポップスやロックの、パートごとにスタジオ別録りのもの——それが下手なミキシングをされているものを試しに解析すると、このような時空間的拡がりに乏しいのが分かります。
それ以上のことは馬鈴薯先生ではない、わたしには分かりませんが。

ああ、高校のときの感動がよみがえります。
これで私も成仏できる、というものです。


「人」も「箱」も大事、という音楽の原点が明確化されたグラフに見えます。
わたしはいまのラボの手伝いを早々に辞すつもりです。
ただ、このシステムについては公開して、広く衆知を募ることができれば、と考えています。

猛省

プログラミング冥府魔道 数学の小径 物理の迷宮

今晩和。
きょうはちょっと風邪をこじらせてしまい、長めの昼寝をしました。
夕方になってから、懸案となっている作業の続きをはじめ、深夜には GUI からのシステム起動がそれなりに動くところまで持ってきました。
日々、勉強です。


と同時に「悪縁断つべし、良縁保つべし」とも痛感。
やはり、相性の悪い人たちといっしょにやっていても双方がスポイルされてしまう。
ならば、みずから遠ざかるのみです。


実は昨日、定例の禅の勉強会に参加してきました。
そこで実感するのが「自分は人の縁にだけは恵まれているなあ」とのひと言です。
先日の同級生との会食、ネット界隈の会食も大きな力になっています。
そうでなければ、これだけの不幸のなか生き抜いてこられなかったでしょうから。
支えてくれた親友たちに感謝してます。
彼らに報いることができればいいですね。

美は細部に宿る——然は然りながら………

プログラミング冥府魔道 数学の小径 物理の迷宮

おはようございます。
世に『美は細部に宿る』と申します。
そして、その細部に敏感な人が業績を残す、と仰る方もいます。
ですが、その人のデジタル機器の扱い方は雑で、きちんと設定をしてないので、それだけ高精度のデータを取り扱えていなかったりします。
こういうのを「ザル」というのです。

だって、コンピューターで扱えるのは基本的に浮動小数点という離散表現であるんですから。
Machine Epsilon 以上に高精度のデータというのは記録すらできないんですね。
ふつう、いまどきの PC は倍精度浮動小数点ぐらいの計算はできるし、それを倍々精度にすることも容易にできますが、入力するデータ自体の記録精度がそれなりならば、いくら計算で工夫しても一定以上の有効数字桁数が期待できるはずもありません。でも、そういう指摘をしても、ああだこうだとその場で理屈をこねて躱してしまう『馬の耳に念仏』であるならば、そんな先生のもとからは立ち去るほうがいいですよね。


たとえばですね、いまどきの PC は 64 bit です。これって凡そ 1844 京階調の計算が可能になります。いや、倍精度浮動小数点を使うとして、指数部と仮数部(と符号)に分かれて、仮数部には約 52 bit が割り当てられているとします。そうすると、有効数字 16 桁程度の精度は期待できる訳です。

ところが現代主流の録音機器で .wav 形式の音声を録音したとします。サンプリング・レートは 96k とか 192k に設定したとしましょう。でも、ビット深度の上限は 24 bit だったりするんですね。つまり凡そ 1678 万階調しか表現できない訳です。フルに使っても有効数字でたった 8 桁程度です。


さらに、二十数年前ならいざ知らず、いまの開発環境の組込関数は単体テストで徹底的に検証され、自作するより余程高度な計算をしていたりするはずです。
そうであるかないかは(組込関数はブラックボックスとして取り扱われていることが多いので)自作関数と計算結果や実行速度を比較・検証することでしか確認できません。
なんで『数値解析』という分野が進展せざるを得なかったかという話になれば、もうちょっといろいろな必然があります。


ですが、これ以上あれこれ語るのは止しましょう。
私もわたしの学習がありますから。

革新への確信

プログラミング冥府魔道 数学の小径 物理の迷宮

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

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

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


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


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

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

旧交を温める

プログラミング冥府魔道 数学の小径 物理の迷宮

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

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

今学期は?

MOOCs 数学の小径 物理の迷宮

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

ん〜〜、ナサケナイ。

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

放心状態

プログラミング冥府魔道 数学の小径 物理の迷宮

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

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

閉口

プログラミング冥府魔道 数学の小径 物理の迷宮

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

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